Similar to #6031, this PR implements suggestions from iwyu to reduce the number of includes in header files by introducing forward declarations and moving includes to source files.
#include <cstdio>
#include <cstdlib>
#include <cstring>
+#include <sstream>
#include <string>
#include "base/check.h"
namespace CVC4 {
+std::string Exception::toString() const
+{
+ std::stringstream ss;
+ toStream(ss);
+ return ss.str();
+}
+
thread_local LastExceptionBuffer* LastExceptionBuffer::s_currentBuffer = nullptr;
LastExceptionBuffer::LastExceptionBuffer() : d_contents(nullptr) {}
#ifndef CVC4__EXCEPTION_H
#define CVC4__EXCEPTION_H
-#include <cstdarg>
-#include <cstdlib>
#include <exception>
#include <iosfwd>
-#include <sstream>
-#include <stdexcept>
#include <string>
namespace CVC4 {
* toString(), there is no stream, so the parameters are default
* and you'll get exprs and types printed using the AST language.
*/
- std::string toString() const
- {
- std::stringstream ss;
- toStream(ss);
- return ss.str();
- }
+ std::string toString() const;
/**
* Printing: feel free to redefine toStream(). When overridden in
#include "base/listener.h"
-#include <list>
-
-#include "base/check.h"
-
namespace CVC4 {
Listener::Listener(){}
#include "expr/node.h"
#include "options/decision_options.h"
#include "options/smt_options.h"
+#include "util/resource_manager.h"
using namespace std;
#ifndef CVC4__DECISION__DECISION_ENGINE_H
#define CVC4__DECISION__DECISION_ENGINE_H
-#include <vector>
-
#include "base/output.h"
+#include "context/cdo.h"
#include "decision/decision_strategy.h"
#include "expr/node.h"
#include "prop/cnf_stream.h"
-#include "prop/prop_engine.h"
+#include "prop/sat_solver.h"
#include "prop/sat_solver_types.h"
-#include "smt/smt_engine_scope.h"
-#include "smt/term_formula_removal.h"
+#include "util/result.h"
-using namespace std;
using namespace CVC4::prop;
using namespace CVC4::decision;
**/
#include "justification_heuristic.h"
+#include "decision/decision_attributes.h"
+#include "decision/decision_engine.h"
#include "expr/kind.h"
#include "expr/node_manager.h"
#include "options/decision_options.h"
-#include "theory/rewriter.h"
-#include "smt/term_formula_removal.h"
#include "smt/smt_statistics_registry.h"
+#include "smt/term_formula_removal.h"
+#include "theory/rewriter.h"
#include "util/random.h"
namespace CVC4 {
+namespace decision {
JustificationHeuristic::JustificationHeuristic(CVC4::DecisionEngine* de,
context::UserContext* uc,
{
if(options::decisionThreshold() > 0) {
bool stopSearchTmp = false;
- SatLiteral lit = getNextThresh(stopSearchTmp, options::decisionThreshold());
- if(lit != undefSatLiteral) {
+ prop::SatLiteral lit =
+ getNextThresh(stopSearchTmp, options::decisionThreshold());
+ if (lit != prop::undefSatLiteral)
+ {
Assert(stopSearchTmp == false);
return lit;
}
for(JustifiedSet::key_iterator i = d_justified.key_begin();
i != d_justified.key_end(); ++i) {
TNode n = *i;
- SatLiteral l = d_decisionEngine->hasSatLiteral(n) ?
- d_decisionEngine->getSatLiteral(n) : -1;
- SatValue v = tryGetSatValue(n);
+ prop::SatLiteral l = d_decisionEngine->hasSatLiteral(n)
+ ? d_decisionEngine->getSatLiteral(n)
+ : -1;
+ prop::SatValue v = tryGetSatValue(n);
Trace("justified") <<"{ "<<l<<"}" << n <<": "<<v << std::endl;
}
}
// Commenting out. See bug 374. In short, to do with how CNF stream works.
// Assert( tryGetSatValue(d_assertions[i]) != SAT_VALUE_FALSE);
- SatValue desiredVal = SAT_VALUE_TRUE;
- SatLiteral litDecision;
+ prop::SatValue desiredVal = prop::SAT_VALUE_TRUE;
+ prop::SatLiteral litDecision;
litDecision = findSplitter(d_assertions[i], desiredVal);
- if(litDecision != undefSatLiteral) {
+ if (litDecision != prop::undefSatLiteral)
+ {
setPrvsIndex(i);
Trace("decision") << "jh: splitting on " << litDecision << std::endl;
++d_helpfulness;
// SAT solver can stop...
stopSearch = true;
- if(d_curThreshold == 0)
- d_decisionEngine->setResult(SAT_VALUE_TRUE);
+ if (d_curThreshold == 0) d_decisionEngine->setResult(prop::SAT_VALUE_TRUE);
return prop::undefSatLiteral;
}
-
-inline void computeXorIffDesiredValues
-(Kind k, SatValue desiredVal, SatValue &desiredVal1, SatValue &desiredVal2)
+inline void computeXorIffDesiredValues(Kind k,
+ prop::SatValue desiredVal,
+ prop::SatValue& desiredVal1,
+ prop::SatValue& desiredVal2)
{
Assert(k == kind::EQUAL || k == kind::XOR);
bool shouldInvert =
- (desiredVal == SAT_VALUE_TRUE && k == kind::EQUAL) ||
- (desiredVal == SAT_VALUE_FALSE && k == kind::XOR);
+ (desiredVal == prop::SAT_VALUE_TRUE && k == kind::EQUAL)
+ || (desiredVal == prop::SAT_VALUE_FALSE && k == kind::XOR);
- if(desiredVal1 == SAT_VALUE_UNKNOWN &&
- desiredVal2 == SAT_VALUE_UNKNOWN) {
+ if (desiredVal1 == prop::SAT_VALUE_UNKNOWN
+ && desiredVal2 == prop::SAT_VALUE_UNKNOWN)
+ {
// CHOICE: pick one of them arbitarily
- desiredVal1 = SAT_VALUE_FALSE;
+ desiredVal1 = prop::SAT_VALUE_FALSE;
}
if(desiredVal2 == SAT_VALUE_UNKNOWN) {
DecisionWeight JustificationHeuristic::getExploredThreshold(TNode n)
{
- return
- d_exploredThreshold.find(n) == d_exploredThreshold.end() ?
- numeric_limits<DecisionWeight>::max() : d_exploredThreshold[n];
+ return d_exploredThreshold.find(n) == d_exploredThreshold.end()
+ ? std::numeric_limits<DecisionWeight>::max()
+ : d_exploredThreshold[n];
}
void JustificationHeuristic::setExploredThreshold(TNode n)
} else {
if(k == kind::OR) {
- dW1 = numeric_limits<DecisionWeight>::max(), dW2 = 0;
+ dW1 = std::numeric_limits<DecisionWeight>::max(), dW2 = 0;
for(TNode::iterator i=n.begin(); i != n.end(); ++i) {
- dW1 = min(dW1, getWeightPolarized(*i, true));
- dW2 = max(dW2, getWeightPolarized(*i, false));
+ dW1 = std::min(dW1, getWeightPolarized(*i, true));
+ dW2 = std::max(dW2, getWeightPolarized(*i, false));
}
} else if(k == kind::AND) {
- dW1 = 0, dW2 = numeric_limits<DecisionWeight>::max();
+ dW1 = 0, dW2 = std::numeric_limits<DecisionWeight>::max();
for(TNode::iterator i=n.begin(); i != n.end(); ++i) {
- dW1 = max(dW1, getWeightPolarized(*i, true));
- dW2 = min(dW2, getWeightPolarized(*i, false));
+ dW1 = std::max(dW1, getWeightPolarized(*i, true));
+ dW2 = std::min(dW2, getWeightPolarized(*i, false));
}
} else if(k == kind::IMPLIES) {
- dW1 = min(getWeightPolarized(n[0], false),
- getWeightPolarized(n[1], true));
- dW2 = max(getWeightPolarized(n[0], true),
- getWeightPolarized(n[1], false));
+ dW1 = std::min(getWeightPolarized(n[0], false),
+ getWeightPolarized(n[1], true));
+ dW2 = std::max(getWeightPolarized(n[0], true),
+ getWeightPolarized(n[1], false));
} else if(k == kind::NOT) {
dW1 = getWeightPolarized(n[0], false);
dW2 = getWeightPolarized(n[0], true);
} else {
dW1 = 0;
for(TNode::iterator i=n.begin(); i != n.end(); ++i) {
- dW1 = max(dW1, getWeightPolarized(*i, true));
- dW1 = max(dW1, getWeightPolarized(*i, false));
+ dW1 = std::max(dW1, getWeightPolarized(*i, true));
+ dW1 = std::max(dW1, getWeightPolarized(*i, false));
}
dW2 = dW1;
}
}
- d_weightCache[n] = make_pair(dW1, dW2);
+ d_weightCache[n] = std::make_pair(dW1, dW2);
}
return polarity ? d_weightCache[n].get().first : d_weightCache[n].get().second;
}
{
DecisionWeight dW = 0;
for (TNode::iterator i = n.begin(); i != n.end(); ++i)
- dW = max(dW, getWeight(*i));
+ dW = std::max(dW, getWeight(*i));
n.setAttribute(DecisionWeightAttr(), dW);
}
else if (combiningFn == options::DecisionWeightInternal::SUM
{
DecisionWeight dW = 0;
for (TNode::iterator i = n.begin(); i != n.end(); ++i)
- dW = max(dW, getWeight(*i));
+ dW = std::max(dW, getWeight(*i));
n.setAttribute(DecisionWeightAttr(), dW);
}
else
return n.getAttribute(DecisionWeightAttr());
}
-typedef vector<TNode> ChildList;
+typedef std::vector<TNode> ChildList;
TNode JustificationHeuristic::getChildByWeight(TNode n, int i, bool polarity) {
if(options::decisionUseWeight()) {
// TODO: Optimize storing & access
SkolemMap::iterator it2 = d_skolemAssertions.find(n[i]);
if (it2 != d_skolemAssertions.end())
{
- l.push_back(make_pair(n[i], (*it2).second));
+ l.push_back(std::make_pair(n[i], (*it2).second));
Assert(n[i].getNumChildren() == 0);
}
if (d_visitedComputeSkolems.find(n[i]) == d_visitedComputeSkolems.end())
{
if(options::decisionUseWeight() &&
getWeightPolarized(node1, desiredVal1) > getWeightPolarized(node2, desiredVal2)) {
- swap(node1, node2);
- swap(desiredVal1, desiredVal2);
+ std::swap(node1, node2);
+ std::swap(desiredVal1, desiredVal2);
}
if ( tryGetSatValue(node1) != invertValue(desiredVal1) ) {
{
if(options::decisionUseWeight() &&
getWeightPolarized(node1, desiredVal1) > getWeightPolarized(node2, desiredVal2)) {
- swap(node1, node2);
- swap(desiredVal1, desiredVal2);
+ std::swap(node1, node2);
+ std::swap(desiredVal1, desiredVal2);
}
bool noSplitter = true;
return noSplitter ? NO_SPLITTER : DONT_KNOW;
}
-} /* namespace CVC4 */
+} /* namespace decision */
+} /* namespace CVC4 */
\ No newline at end of file
#define CVC4__DECISION__JUSTIFICATION_HEURISTIC
#include <unordered_set>
+#include <utility>
#include "context/cdhashmap.h"
#include "context/cdhashset.h"
#include "context/cdlist.h"
-#include "decision/decision_attributes.h"
-#include "decision/decision_engine.h"
+#include "context/cdo.h"
#include "decision/decision_strategy.h"
#include "expr/node.h"
-#include "preprocessing/assertion_pipeline.h"
+#include "options/decision_weight.h"
#include "prop/sat_solver_types.h"
+#include "util/statistics_registry.h"
namespace CVC4 {
namespace decision {
// TRUE FALSE MEH
enum SearchResult {FOUND_SPLITTER, NO_SPLITTER, DONT_KNOW};
- typedef std::vector<pair<TNode, TNode> > SkolemList;
+ typedef std::vector<std::pair<TNode, TNode> > SkolemList;
typedef context::CDHashMap<TNode, SkolemList, TNodeHashFunction> SkolemCache;
typedef std::vector<TNode> ChildList;
- typedef context::CDHashMap<TNode,pair<ChildList,ChildList>,TNodeHashFunction> ChildCache;
+ typedef context::
+ CDHashMap<TNode, std::pair<ChildList, ChildList>, TNodeHashFunction>
+ ChildCache;
typedef context::CDHashMap<TNode,TNode,TNodeHashFunction> SkolemMap;
- typedef context::CDHashMap<TNode,pair<DecisionWeight,DecisionWeight>,TNodeHashFunction> WeightCache;
+ typedef context::CDHashMap<TNode,
+ std::pair<DecisionWeight, DecisionWeight>,
+ TNodeHashFunction>
+ WeightCache;
// being 'justified' is monotonic with respect to decisions
typedef context::CDHashSet<Node,NodeHashFunction> JustifiedSet;
std::unordered_set<TNode, TNodeHashFunction> d_visitedComputeSkolems;
/** current decision for the recursive call */
- SatLiteral d_curDecision;
+ prop::SatLiteral d_curDecision;
/** current threshold for the recursive call */
DecisionWeight d_curThreshold;
/* getNext with an option to specify threshold */
prop::SatLiteral getNextThresh(bool &stopSearch, DecisionWeight threshold);
- SatLiteral findSplitter(TNode node, SatValue desiredVal);
+ prop::SatLiteral findSplitter(TNode node, prop::SatValue desiredVal);
/**
* Do all the hard work.
*/
- SearchResult findSplitterRec(TNode node, SatValue value);
+ SearchResult findSplitterRec(TNode node, prop::SatValue value);
/* Helper functions */
void setJustified(TNode);
void setPrvsIndex(int);
int getPrvsIndex();
DecisionWeight getWeightPolarized(TNode n, bool polarity);
- DecisionWeight getWeightPolarized(TNode n, SatValue);
+ DecisionWeight getWeightPolarized(TNode n, prop::SatValue);
static DecisionWeight getWeight(TNode);
bool compareByWeightFalse(TNode, TNode);
bool compareByWeightTrue(TNode, TNode);
/* If literal exists corresponding to the node return
that. Otherwise an UNKNOWN */
- SatValue tryGetSatValue(Node n);
+ prop::SatValue tryGetSatValue(Node n);
/* Get list of all term-ITEs for the atomic formula v */
JustificationHeuristic::SkolemList getSkolems(TNode n);
/* Compute all term-removal skolems in a node recursively */
void computeSkolems(TNode n, SkolemList& l);
- SearchResult handleAndOrEasy(TNode node, SatValue desiredVal);
- SearchResult handleAndOrHard(TNode node, SatValue desiredVal);
- SearchResult handleBinaryEasy(TNode node1, SatValue desiredVal1,
- TNode node2, SatValue desiredVal2);
- SearchResult handleBinaryHard(TNode node1, SatValue desiredVal1,
- TNode node2, SatValue desiredVal2);
- SearchResult handleITE(TNode node, SatValue desiredVal);
+ SearchResult handleAndOrEasy(TNode node, prop::SatValue desiredVal);
+ SearchResult handleAndOrHard(TNode node, prop::SatValue desiredVal);
+ SearchResult handleBinaryEasy(TNode node1,
+ prop::SatValue desiredVal1,
+ TNode node2,
+ prop::SatValue desiredVal2);
+ SearchResult handleBinaryHard(TNode node1,
+ prop::SatValue desiredVal1,
+ TNode node2,
+ prop::SatValue desiredVal2);
+ SearchResult handleITE(TNode node, prop::SatValue desiredVal);
SearchResult handleEmbeddedSkolems(TNode node);
};/* class JustificationHeuristic */
#include "context/cdhashmap.h"
#include "expr/proof_generator.h"
-#include "expr/proof_step_buffer.h"
namespace CVC4 {
class ProofNodeManager;
+class ProofStep;
/**
* The proof generator for buffered steps. This class is a context-dependent
**/
#include "expr/dtype.h"
+#include <sstream>
+
#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "expr/type_matcher.h"
** \todo document this file
**/
+#include <sstream>
+
#include "expr/kind.h"
namespace CVC4 {
#include "expr/lazy_proof.h"
#include "expr/proof_ensure_closed.h"
+#include "expr/proof_node.h"
#include "expr/proof_node_manager.h"
using namespace CVC4::kind;
#ifndef CVC4__EXPR__LAZY_PROOF_H
#define CVC4__EXPR__LAZY_PROOF_H
-#include <unordered_map>
-#include <vector>
-
#include "expr/proof.h"
-#include "expr/proof_generator.h"
namespace CVC4 {
+class ProofGenerator;
class ProofNodeManager;
/**
#include "expr/proof.h"
#include "expr/proof_ensure_closed.h"
+#include "expr/proof_node.h"
#include "expr/proof_node_algorithm.h"
#include "expr/proof_node_manager.h"
#include "options/proof_options.h"
#ifndef CVC4__EXPR__LAZY_PROOF_CHAIN_H
#define CVC4__EXPR__LAZY_PROOF_CHAIN_H
-#include <unordered_map>
#include <vector>
#include "context/cdhashmap.h"
**/
#include "expr/node.h"
-#include <iostream>
#include <cstring>
+#include <iostream>
+#include <sstream>
#include "base/exception.h"
#include "base/output.h"
#include "expr/proof.h"
+#include "expr/proof_checker.h"
+#include "expr/proof_node.h"
#include "expr/proof_node_manager.h"
using namespace CVC4::kind;
#ifndef CVC4__EXPR__PROOF_H
#define CVC4__EXPR__PROOF_H
-#include <map>
#include <vector>
#include "context/cdhashmap.h"
#include "expr/node.h"
#include "expr/proof_generator.h"
-#include "expr/proof_node.h"
#include "expr/proof_step_buffer.h"
namespace CVC4 {
+class ProofNode;
class ProofNodeManager;
/**
#include "expr/proof_checker.h"
+#include "expr/proof_node.h"
#include "expr/skolem_manager.h"
#include "options/proof_options.h"
#include "smt/smt_statistics_registry.h"
#include <map>
#include "expr/node.h"
-#include "expr/proof_node.h"
+#include "expr/proof_rule.h"
#include "util/statistics_registry.h"
namespace CVC4 {
class ProofChecker;
+class ProofNode;
/** A virtual base class for checking a proof rule */
class ProofRuleChecker
#include "expr/proof_ensure_closed.h"
+#include <sstream>
+
+#include "expr/proof_generator.h"
+#include "expr/proof_node.h"
#include "expr/proof_node_algorithm.h"
#include "options/proof_options.h"
#include "options/smt_options.h"
#define CVC4__EXPR__PROOF_ENSURE_CLOSED_H
#include "expr/node.h"
-#include "expr/proof_generator.h"
-#include "expr/proof_node.h"
namespace CVC4 {
+class ProofGenerator;
+class ProofNode;
+
/**
* Debug check closed on Trace c. Context ctx is string for debugging.
* This method throws an assertion failure if pg cannot provide a closed
#include "expr/proof_generator.h"
+#include <sstream>
+
#include "expr/proof.h"
+#include "expr/proof_node.h"
#include "expr/proof_node_algorithm.h"
#include "options/smt_options.h"
#define CVC4__EXPR__PROOF_GENERATOR_H
#include "expr/node.h"
-#include "expr/proof_node.h"
namespace CVC4 {
class CDProof;
+class ProofNode;
/** An overwrite policy for CDProof */
enum class CDPOverwrite : uint32_t
#include "expr/proof_node_algorithm.h"
+#include "expr/proof_node.h"
+
namespace CVC4 {
namespace expr {
#include <vector>
#include "expr/node.h"
-#include "expr/proof_node.h"
namespace CVC4 {
+
+class ProofNode;
+
namespace expr {
/**
#include "expr/proof_node_manager.h"
#include "expr/proof.h"
+#include "expr/proof_checker.h"
+#include "expr/proof_node.h"
#include "expr/proof_node_algorithm.h"
#include "options/proof_options.h"
#include "theory/rewriter.h"
#include <vector>
-#include "expr/proof_checker.h"
-#include "expr/proof_node.h"
+#include "expr/node.h"
+#include "expr/proof_rule.h"
namespace CVC4 {
+class ProofChecker;
+class ProofNode;
+
/**
* A manager for proof node objects. This is a trusted interface for creating
* and updating ProofNode objects.
#include "expr/proof_node_to_sexpr.h"
#include <iostream>
+#include <sstream>
+#include "expr/proof_node.h"
#include "options/proof_options.h"
using namespace CVC4::kind;
#include <map>
#include "expr/node.h"
-#include "expr/proof_node.h"
+#include "expr/proof_rule.h"
namespace CVC4 {
+class ProofNode;
+
/** A class to convert ProofNode objects to s-expressions */
class ProofNodeToSExpr
{
#include "expr/lazy_proof.h"
#include "expr/proof_ensure_closed.h"
#include "expr/proof_node_algorithm.h"
+#include "expr/proof_node_manager.h"
namespace CVC4 {
#define CVC4__EXPR__PROOF_NODE_UPDATER_H
#include <map>
-#include <unordered_set>
+#include <memory>
-#include "expr/proof.h"
+#include "expr/node.h"
#include "expr/proof_node.h"
-#include "expr/proof_node_manager.h"
namespace CVC4 {
+class CDProof;
+class ProofNode;
+class ProofNodeManager;
+
/**
* A virtual callback class for updating ProofNode. An example use case of this
* class is to eliminate a proof rule by expansion.
#include "expr/proof_step_buffer.h"
+#include "expr/proof_checker.h"
+
using namespace CVC4::kind;
namespace CVC4 {
#include <vector>
#include "expr/node.h"
-#include "expr/proof_checker.h"
#include "expr/proof_rule.h"
namespace CVC4 {
+class ProofChecker;
+
/**
* Information for constructing a step in a CDProof. Notice that the conclusion
* of the proof step is intentionally not included in this data structure.
#ifndef CVC4__RECORD_H
#define CVC4__RECORD_H
-#include <functional>
#include <iostream>
#include <string>
#include <vector>
#include "expr/sequence.h"
+#include <sstream>
#include <vector>
#include "expr/node.h"
#include "expr/subs.h"
+#include <sstream>
+
#include "theory/rewriter.h"
namespace CVC4 {
#include "expr/sygus_datatype.h"
+#include <sstream>
+
using namespace CVC4::kind;
namespace CVC4 {
#include <map>
#include <memory>
-#include <set>
#include <string>
#include "api/cvc4cpp.h"
#include "expr/tconv_seq_proof_generator.h"
+#include <sstream>
+
+#include "expr/proof_node_manager.h"
+
namespace CVC4 {
TConvSeqProofGenerator::TConvSeqProofGenerator(
#include "context/cdhashmap.h"
#include "expr/node.h"
#include "expr/proof_generator.h"
-#include "expr/proof_node_manager.h"
#include "theory/trust_node.h"
namespace CVC4 {
+class ProofNodeManager;
+
/**
* The term conversion sequence proof generator. This is used for maintaining
* a fixed sequence of proof generators that provide proofs for rewrites
#include "expr/term_canonize.h"
+#include <sstream>
+
// TODO #1216: move the code in this include
#include "theory/quantifiers/term_util.h"
#define CVC4__EXPR__TERM_CONTEXT_NODE_H
#include "expr/node.h"
-#include "expr/term_context.h"
namespace CVC4 {
class TCtxStack;
+class TermContext;
/**
* A (term-context) sensitive term. This is a wrapper around a Node that
#include "expr/term_context_stack.h"
+#include "expr/term_context.h"
+
namespace CVC4 {
TCtxStack::TCtxStack(const TermContext* tctx) : d_tctx(tctx) {}
#include "expr/term_conversion_proof_generator.h"
+#include "expr/proof_checker.h"
+#include "expr/proof_node.h"
+#include "expr/term_context.h"
#include "expr/term_context_stack.h"
using namespace CVC4::kind;
#include "context/cdhashmap.h"
#include "expr/lazy_proof.h"
#include "expr/proof_generator.h"
-#include "expr/proof_node_manager.h"
-#include "expr/term_context.h"
namespace CVC4 {
+class ProofNodeManager;
+class TermContext;
+
/** A policy for how rewrite steps are applied in TConvProofGenerator */
enum class TConvPolicy : uint32_t
{
#include "expr/type.h"
#include <iostream>
+#include <sstream>
#include <string>
#include <vector>
** TypeChecker implementation.
**/
+#include <sstream>
+
#include "expr/node_manager.h"
#include "expr/node_manager_attributes.h"
#include "expr/type_checker.h"
#include "cvc4_private.h"
+#include <sstream>
+
#include "expr/kind.h"
#include "expr/node.h"
#include "expr/node_manager.h"
#include <vector>
-#include "expr/node.h"
#include "expr/type_node.h"
namespace CVC4 {
#include "options/language.h"
+#include <sstream>
+
+#include "base/exception.h"
+#include "options/option_exception.h"
+
namespace CVC4 {
namespace language {
#ifndef CVC4__LANGUAGE_H
#define CVC4__LANGUAGE_H
-#include <sstream>
+#include <ostream>
#include <string>
-#include "base/exception.h"
-#include "options/option_exception.h"
-
namespace CVC4 {
namespace language {
bool isOutputLang_smt2(OutputLanguage lang) CVC4_PUBLIC;
/**
- * Is the language smtlib 2.5 or above? If exact=true, then this method returns
- * false if the input language is not exactly SMT-LIB 2.6.
- */
+ * Is the language smtlib 2.5 or above? If exact=true, then this method returns
+ * false if the input language is not exactly SMT-LIB 2.5.
+ */
bool isInputLang_smt2_5(InputLanguage lang, bool exact = false) CVC4_PUBLIC;
bool isOutputLang_smt2_5(OutputLanguage lang, bool exact = false) CVC4_PUBLIC;
/**
#ifndef CVC4__OPEN_OSTREAM_H
#define CVC4__OPEN_OSTREAM_H
+#include <iosfwd>
#include <map>
-#include <ostream>
#include <string>
#include <utility>
-#include "options/option_exception.h"
-
namespace CVC4 {
class OstreamOpener {
#include <ostream>
#include <string>
-#include "base/modal_exception.h"
#include "options/base_handlers.h"
#include "options/bv_options.h"
#include "options/decision_options.h"
#include "options/language.h"
#include "options/option_exception.h"
-#include "options/options.h"
#include "options/printer_modes.h"
#include "options/quantifiers_options.h"
namespace CVC4 {
+
+class Options;
+
namespace options {
/**
#include "expr/node_manager.h"
#include "options/smt_options.h"
#include "proof/proof_manager.h"
+#include "smt/preprocess_proof_generator.h"
#include "theory/builtin/proof_checker.h"
#include "theory/rewriter.h"
#include <vector>
#include "expr/node.h"
-#include "expr/proof_generator.h"
-#include "expr/proof_node_manager.h"
-#include "smt/preprocess_proof_generator.h"
-#include "smt/term_formula_removal.h"
#include "theory/trust_node.h"
namespace CVC4 {
+
+class ProofGenerator;
+namespace smt {
+class PreprocessProofGenerator;
+}
+
namespace preprocessing {
using IteSkolemMap = std::unordered_map<size_t, Node>;
**/
#include "preprocessing/passes/ackermann.h"
+
#include <cmath>
+
#include "base/check.h"
#include "expr/node_algorithm.h"
#include "options/options.h"
#include "options/smt_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
using namespace CVC4;
using namespace CVC4::theory;
* a sufficient bit-vector size.
* Populate usVarsToBVVars so that it maps variables with uninterpreted sort to
* the fresh skolem BV variables. variables */
-void collectUSortsToBV(const unordered_set<TNode, TNodeHashFunction>& vars,
+void collectUSortsToBV(const std::unordered_set<TNode, TNodeHashFunction>& vars,
const USortToBVSizeMap& usortCardinality,
SubstitutionMap& usVarsToBVVars)
{
#define CVC4__PREPROCESSING__PASSES__ACKERMANN_H
#include <unordered_map>
+
#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
+#include "theory/logic_info.h"
+#include "theory/substitutions.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/apply_substs.h"
#include "context/cdo.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "theory/rewriter.h"
#include "theory/substitutions.h"
#define CVC4__PREPROCESSING__PASSES__APPLY_SUBSTS_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
+
+class PreprocessingPassContext;
+
namespace passes {
class ApplySubsts : public PreprocessingPass
#include "base/map_util.h"
#include "expr/node.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "smt/smt_statistics_registry.h"
+#include "theory/bv/theory_bv_utils.h"
#include "theory/rewriter.h"
#include "theory/theory.h"
#ifndef CVC4__PREPROCESSING__PASSES__BOOL_TO_BV_H
#define CVC4__PREPROCESSING__PASSES__BOOL_TO_BV_H
+#include "expr/node.h"
#include "options/bv_options.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
-#include "theory/bv/theory_bv_utils.h"
#include "util/statistics_registry.h"
namespace CVC4 {
#include <vector>
#include "options/bv_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "theory/bv/theory_bv.h"
#include "theory/rewriter.h"
+#include "theory/theory_engine.h"
namespace CVC4 {
namespace preprocessing {
#define CVC4__PREPROCESSING__PASSES__BV_ABSTRACTION_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/bv_eager_atoms.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
+#include "theory/theory_engine.h"
#include "theory/theory_model.h"
namespace CVC4 {
#define CVC4__PREPROCESSING__PASSES__BV_EAGER_ATOMS_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/bv_gauss.h"
+#include <unordered_map>
+#include <vector>
+
#include "expr/node.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "theory/bv/theory_bv_rewrite_rules_normalization.h"
#include "theory/bv/theory_bv_utils.h"
#include "theory/rewriter.h"
#include "util/bitvector.h"
-#include <unordered_map>
-#include <vector>
-
-
using namespace CVC4;
using namespace CVC4::theory;
using namespace CVC4::theory::bv;
#ifndef CVC4__PREPROCESSING__PASSES__BV_GAUSS_ELIM_H
#define CVC4__PREPROCESSING__PASSES__BV_GAUSS_ELIM_H
+#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include <unordered_map>
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "theory/bv/theory_bv_rewrite_rules_simplification.h"
#include "theory/rewriter.h"
#define CVC4__PREPROCESSING__PASSES__BV_INTRO_POW2_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "expr/node.h"
#include "expr/node_visitor.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "smt/smt_statistics_registry.h"
+#include "theory/bv/theory_bv_utils.h"
#include "theory/rewriter.h"
#include "theory/theory.h"
#ifndef CVC4__PREPROCESSING__PASSES__BV_TO_BOOL_H
#define CVC4__PREPROCESSING__PASSES__BV_TO_BOOL_H
+#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
-#include "theory/bv/theory_bv_utils.h"
#include "util/statistics_registry.h"
namespace CVC4 {
#include "preprocessing/passes/bv_to_int.h"
#include <cmath>
+#include <sstream>
#include <string>
#include <unordered_map>
#include <vector>
#include "expr/node_traversal.h"
#include "options/smt_options.h"
#include "options/uf_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "theory/bv/theory_bv_rewrite_rules_operator_elimination.h"
#include "theory/bv/theory_bv_rewrite_rules_simplification.h"
#include "theory/rewriter.h"
namespace preprocessing {
namespace passes {
+using namespace std;
using namespace CVC4::theory;
using namespace CVC4::theory::bv;
#define __CVC4__PREPROCESSING__PASSES__BV_TO_INT_H
#include "context/cdhashmap.h"
-#include "context/cdo.h"
-#include "context/context.h"
+#include "context/cdhashset.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
#include "theory/arith/nl/iand_utils.h"
namespace CVC4 {
* @return a node representing the shift.
*
*/
- Node createShiftNode(vector<Node> children,
+ Node createShiftNode(std::vector<Node> children,
uint64_t bvsize,
bool isLeftShift);
*/
Node reconstructNode(Node originalNode,
TypeNode resultType,
- const vector<Node>& translated_children);
+ const std::vector<Node>& translated_children);
/**
* A useful utility function.
* that have children.
*/
Node translateWithChildren(Node original,
- const vector<Node>& translated_children);
+ const std::vector<Node>& translated_children);
/**
* Performs the actual translation to integers for nodes
#include "preprocessing/passes/extended_rewriter_pass.h"
#include "options/smt_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "theory/quantifiers/extended_rewrite.h"
namespace CVC4 {
#define CVC4__PREPROCESSING__PASSES__EXTENDED_REWRITER_PASS_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/foreign_theory_rewrite.h"
#include "expr/node_traversal.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
+#include "theory/rewriter.h"
#include "theory/strings/arith_entail.h"
namespace CVC4 {
#define CVC4__PREPROCESSING__PASSES__FOREIGN_THEORY_REWRITE_H
#include "context/cdhashmap.h"
-#include "context/cdo.h"
-#include "context/context.h"
+#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
/** construct a node with the same operator as originalNode whose children are
* processedChildren
*/
- static Node reconstructNode(Node originalNode, vector<Node> newChildren);
+ static Node reconstructNode(Node originalNode, std::vector<Node> newChildren);
/** A cache to store the simplified nodes */
CDNodeMap d_cache;
};
#include "preprocessing/passes/fun_def_fmf.h"
+#include <sstream>
+
#include "options/smt_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "proof/proof_manager.h"
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/term_database.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/rewriter.h"
using namespace std;
using namespace CVC4::kind;
#define CVC4__PREPROCESSING__PASSES__FUN_DEF_FMF_H
#include <map>
-#include <string>
#include <vector>
+#include "context/cdlist.h"
#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include <vector>
#include "expr/node.h"
+#include "preprocessing/assertion_pipeline.h"
#include "theory/rewriter.h"
using namespace std;
#ifndef CVC4__PREPROCESSING__PASSES__GLOBAL_NEGATE_H
#define CVC4__PREPROCESSING__PASSES__GLOBAL_NEGATE_H
+#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "expr/node_algorithm.h"
#include "options/quantifiers_options.h"
+#include "preprocessing/assertion_pipeline.h"
#include "theory/rewriter.h"
#include "theory/uf/theory_uf_rewriter.h"
#ifndef __CVC4__PREPROCESSING__PASSES__HO_ELIM_PASS_H
#define __CVC4__PREPROCESSING__PASSES__HO_ELIM_PASS_H
+#include <map>
+#include <unordered_map>
+#include <unordered_set>
+
+#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "expr/node.h"
#include "expr/node_traversal.h"
#include "options/smt_options.h"
+#include "preprocessing/assertion_pipeline.h"
#include "theory/rewriter.h"
#include "theory/theory.h"
namespace preprocessing {
namespace passes {
+using namespace std;
using namespace CVC4::theory;
using NodeMap = std::unordered_map<Node, Node, NodeHashFunction>;
#define CVC4__PREPROCESSING__PASSES__INT_TO_BV_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/ite_removal.h"
#include "options/smt_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
+#include "proof/proof_manager.h"
+#include "prop/prop_engine.h"
#include "theory/rewriter.h"
#include "theory/theory_preprocessor.h"
#ifndef CVC4__PREPROCESSING__PASSES__ITE_REMOVAL_H
#define CVC4__PREPROCESSING__PASSES__ITE_REMOVAL_H
-#include <unordered_set>
-#include <vector>
-
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include <vector>
#include "options/smt_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "smt/smt_statistics_registry.h"
#include "smt_util/nary_builder.h"
#include "theory/arith/arith_ite_utils.h"
+#include "theory/rewriter.h"
+#include "theory/theory_engine.h"
+using namespace std;
using namespace CVC4;
using namespace CVC4::theory;
#define CVC4__PREPROCESSING__PASSES__ITE_SIMP_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
+#include "preprocessing/util/ite_utilities.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/miplib_trick.h"
+#include <sstream>
#include <vector>
#include "expr/node_self_iterator.h"
#include "options/arith_options.h"
#include "options/smt_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "smt/smt_statistics_registry.h"
#include "smt_util/boolean_simplification.h"
#include "theory/booleans/circuit_propagator.h"
+#include "theory/theory_engine.h"
#include "theory/theory_model.h"
#include "theory/trust_substitutions.h"
namespace preprocessing {
namespace passes {
+using namespace std;
using namespace CVC4::theory;
namespace {
#ifndef CVC4__PREPROCESSING__PASSES__MIPLIB_TRICK_H
#define CVC4__PREPROCESSING__PASSES__MIPLIB_TRICK_H
+#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/nl_ext_purify.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "theory/rewriter.h"
namespace CVC4 {
namespace preprocessing {
namespace passes {
+using namespace std;
using namespace CVC4::theory;
Node NlExtPurify::purifyNlTerms(TNode n,
#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "context/cdo.h"
#include "options/smt_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
+#include "smt/preprocess_proof_generator.h"
#include "smt/smt_statistics_registry.h"
+#include "theory/booleans/circuit_propagator.h"
+#include "theory/theory.h"
+#include "theory/theory_engine.h"
#include "theory/theory_model.h"
#include "theory/trust_substitutions.h"
<< "Resize non-clausal learned literals to " << j << std::endl;
learned_literals.resize(j);
- unordered_set<TNode, TNodeHashFunction> s;
+ std::unordered_set<TNode, TNodeHashFunction> s;
for (size_t i = 0, size = assertionsToPreprocess->size(); i < size; ++i)
{
Node assertion = (*assertionsToPreprocess)[i];
#ifndef CVC4__PREPROCESSING__PASSES__NON_CLAUSAL_SIMP_H
#define CVC4__PREPROCESSING__PASSES__NON_CLAUSAL_SIMP_H
-#include <vector>
-
-#include "expr/lazy_proof.h"
+#include "context/cdlist.h"
#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
-#include "smt/preprocess_proof_generator.h"
#include "theory/trust_node.h"
namespace CVC4 {
+
+class LazyCDProof;
+class ProofNodeManager;
+
+namespace smt {
+class PreprocessProofGenerator;
+}
+namespace theory {
+class TrustSubstitutionMap;
+}
+
namespace preprocessing {
namespace passes {
#include "preprocessing/passes/pseudo_boolean_processor.h"
#include "base/output.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "theory/arith/arith_utilities.h"
#include "theory/arith/normal_form.h"
#include "theory/rewriter.h"
#include "context/cdhashmap.h"
#include "context/cdo.h"
-#include "context/context.h"
#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
#include "theory/substitutions.h"
#include "util/maybe.h"
#include "util/rational.h"
#include "options/quantifiers_options.h"
#include "options/smt_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
+#include "proof/proof_manager.h"
#include "smt/smt_engine.h"
#include "smt/smt_engine_scope.h"
#include "theory/arith/arith_msum.h"
#include "theory/quantifiers/term_util.h"
#include "theory/quantifiers_engine.h"
#include "theory/rewriter.h"
+#include "theory/theory_engine.h"
using namespace std;
using namespace CVC4::theory;
#define CVC4__PREPROCESSING__PASSES__QUANTIFIER_MACROS_H
#include <map>
-#include <string>
#include <vector>
#include "expr/node.h"
-#include "expr/type_node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/quantifiers_preprocess.h"
#include "base/output.h"
+#include "preprocessing/assertion_pipeline.h"
#include "theory/quantifiers/quantifiers_rewriter.h"
#include "theory/rewriter.h"
namespace preprocessing {
namespace passes {
+using namespace std;
using namespace CVC4::theory;
QuantifiersPreprocess::QuantifiersPreprocess(PreprocessingPassContext* preprocContext)
#define CVC4__PREPROCESSING__PASSES__QUANTIFIERS_PREPROCESS_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include <string>
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "theory/arith/arith_msum.h"
#include "theory/rewriter.h"
#include "theory/theory_model.h"
namespace preprocessing {
namespace passes {
+using namespace std;
using namespace CVC4::theory;
Node RealToInt::realToIntInternal(TNode n, NodeMap& cache, std::vector<Node>& var_eq)
#ifndef CVC4__PREPROCESSING__PASSES__REAL_TO_INT_H
#define CVC4__PREPROCESSING__PASSES__REAL_TO_INT_H
-#include <unordered_map>
#include <vector>
#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/rewrite.h"
+#include "preprocessing/assertion_pipeline.h"
#include "theory/rewriter.h"
namespace CVC4 {
#define CVC4__PREPROCESSING__PASSES__REWRITE_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include <vector>
#include "expr/node.h"
+#include "preprocessing/assertion_pipeline.h"
#include "theory/quantifiers/quant_util.h"
#include "theory/rewriter.h"
#include "theory/theory.h"
namespace preprocessing {
namespace passes {
+using namespace std;
using namespace CVC4::theory;
namespace {
#define CVC4__PREPROCESSING__PASSES__SEP_SKOLEM_EMP_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "options/smt_options.h"
#include "options/uf_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "smt/dump_manager.h"
+#include "smt/smt_engine_scope.h"
#include "theory/rewriter.h"
#include "theory/sort_inference.h"
+#include "theory/theory_engine.h"
using namespace std;
#ifndef CVC4__PREPROCESSING__PASSES__SORT_INFERENCE_PASS_H_
#define CVC4__PREPROCESSING__PASSES__SORT_INFERENCE_PASS_H_
-#include <map>
-#include <string>
-#include <vector>
-
-#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include <string>
#include "expr/node.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "theory/rewriter.h"
+#include "theory/theory_engine.h"
namespace CVC4 {
namespace preprocessing {
#define CVC4__PREPROCESSING__PASSES__STATIC_LEARNING_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/strings_eager_pp.h"
-#include "theory/strings/theory_strings_preprocess.h"
+#include "preprocessing/assertion_pipeline.h"
#include "theory/rewriter.h"
+#include "theory/strings/theory_strings_preprocess.h"
using namespace CVC4::theory;
#define CVC4__PREPROCESSING__PASSES__STRINGS_EAGER_PP_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/sygus_inference.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "smt/smt_engine.h"
#include "smt/smt_engine_scope.h"
#include "smt/smt_statistics_registry.h"
#include "theory/quantifiers/quantifiers_rewriter.h"
#include "theory/quantifiers/sygus/sygus_grammar_cons.h"
#include "theory/quantifiers/sygus/sygus_utils.h"
+#include "theory/rewriter.h"
#include "theory/smt_engine_subsolver.h"
using namespace std;
#ifndef CVC4__PREPROCESSING__PASSES__SYGUS_INFERENCE_H_
#define CVC4__PREPROCESSING__PASSES__SYGUS_INFERENCE_H_
-#include <map>
-#include <string>
#include <vector>
#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/synth_rew_rules.h"
+#include <sstream>
+
#include "expr/sygus_datatype.h"
#include "expr/term_canonize.h"
#include "options/base_options.h"
#include "options/quantifiers_options.h"
+#include "preprocessing/assertion_pipeline.h"
#include "printer/printer.h"
#include "theory/quantifiers/candidate_rewrite_database.h"
#include "theory/quantifiers/quantifiers_attributes.h"
#define CVC4__PREPROCESSING__PASSES__SYNTH_REW_RULES_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/theory_preprocess.h"
#include "options/smt_options.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
+#include "proof/proof_manager.h"
+#include "prop/prop_engine.h"
#include "theory/rewriter.h"
#include "theory/theory_engine.h"
d_preprocContext->spendResource(ResourceManager::Resource::PreprocessStep);
IteSkolemMap& imap = assertions->getIteSkolemMap();
- PropEngine* propEngine = d_preprocContext->getPropEngine();
+ prop::PropEngine* propEngine = d_preprocContext->getPropEngine();
// Remove all of the ITE occurrences and normalize
for (unsigned i = 0, size = assertions->size(); i < size; ++i)
{
#define CVC4__PREPROCESSING__PASSES__THEORY_PREPROCESS_H
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
namespace CVC4 {
namespace preprocessing {
#include "preprocessing/passes/theory_rewrite_eq.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
#include "theory/theory_engine.h"
using namespace CVC4::theory;
#ifndef CVC4__PREPROCESSING__PASSES__THEORY_REWRITE_EQ_H
#define CVC4__PREPROCESSING__PASSES__THEORY_REWRITE_EQ_H
+#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
#include "theory/trust_node.h"
namespace CVC4 {
#include "preprocessing/passes/unconstrained_simplifier.h"
#include "expr/dtype.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
+#include "smt/logic_exception.h"
#include "smt/smt_statistics_registry.h"
#include "theory/logic_info.h"
#include "theory/rewriter.h"
namespace preprocessing {
namespace passes {
+using namespace std;
using namespace CVC4::theory;
UnconstrainedSimplifier::UnconstrainedSimplifier(
#include <unordered_map>
#include <unordered_set>
-#include <vector>
-#include "context/context.h"
#include "expr/node.h"
#include "preprocessing/preprocessing_pass.h"
-#include "preprocessing/preprocessing_pass_context.h"
-#include "theory/logic_info.h"
#include "theory/substitutions.h"
#include "util/statistics_registry.h"
namespace CVC4 {
+namespace context {
+class Context;
+}
namespace preprocessing {
namespace passes {
#include "preprocessing/preprocessing_pass.h"
+#include "preprocessing/assertion_pipeline.h"
+#include "preprocessing/preprocessing_pass_context.h"
+#include "printer/printer.h"
#include "smt/dump.h"
+#include "smt/output_manager.h"
+#include "smt/smt_engine_scope.h"
#include "smt/smt_statistics_registry.h"
-#include "printer/printer.h"
namespace CVC4 {
namespace preprocessing {
#include <string>
-#include "preprocessing/assertion_pipeline.h"
-#include "preprocessing/preprocessing_pass_context.h"
-#include "smt/smt_engine_scope.h"
-#include "theory/logic_info.h"
+#include "util/statistics_registry.h"
namespace CVC4 {
namespace preprocessing {
+class AssertionPipeline;
+class PreprocessingPassContext;
+
/**
* Preprocessing passes return a result which indicates whether a conflict has
* been detected during preprocessing.
#ifndef CVC4__PREPROCESSING__PREPROCESSING_PASS_CONTEXT_H
#define CVC4__PREPROCESSING__PREPROCESSING_PASS_CONTEXT_H
-#include "context/cdo.h"
-#include "context/context.h"
-#include "decision/decision_engine.h"
-#include "preprocessing/util/ite_utilities.h"
+#include "context/cdhashset.h"
#include "smt/smt_engine.h"
-#include "smt/term_formula_removal.h"
-#include "theory/booleans/circuit_propagator.h"
-#include "theory/theory_engine.h"
#include "theory/trust_substitutions.h"
#include "util/resource_manager.h"
namespace CVC4 {
+class SmtEngine;
+class TheoryEngine;
+namespace theory::booleans {
+class CircuitPropagator;
+}
+namespace prop {
+class PropEngine;
+}
namespace preprocessing {
class PreprocessingPassContext
#ifndef CVC4__PREPROCESSING__PREPROCESSING_PASS_REGISTRY_H
#define CVC4__PREPROCESSING__PREPROCESSING_PASS_REGISTRY_H
-#include <memory>
+#include <functional>
#include <string>
#include <unordered_map>
-#include "preprocessing/preprocessing_pass.h"
-
namespace CVC4 {
namespace preprocessing {
+class PreprocessingPass;
class PreprocessingPassContext;
/**
#include <utility>
+#include "preprocessing/assertion_pipeline.h"
#include "preprocessing/passes/rewrite.h"
#include "smt/smt_statistics_registry.h"
#include "theory/rewriter.h"
#include <vector>
#include "expr/node.h"
-#include "preprocessing/assertion_pipeline.h"
#include "util/hash.h"
#include "util/statistics_registry.h"
namespace CVC4 {
namespace preprocessing {
+
+class AssertionPipeline;
+
namespace util {
-class IncomingArcCounter;
-class TermITEHeightCounter;
class ITECompressor;
class ITESimplifier;
class ITECareSimplifier;
#ifndef CVC4__PRINTER__LET_BINDING_H
#define CVC4__PRINTER__LET_BINDING_H
-#include <map>
#include <vector>
#include "context/cdhashmap.h"
#ifndef CVC4__PRINTER__PRINTER_H
#define CVC4__PRINTER__PRINTER_H
-#include <map>
#include <string>
#include "expr/node.h"
#ifndef CVC4__CNF_PROOF_H
#define CVC4__CNF_PROOF_H
-#include <iosfwd>
#include <unordered_map>
#include <unordered_set>
#include "context/cdhashmap.h"
#include "proof/clause_id.h"
-#include "proof/sat_proof.h"
-#include "util/maybe.h"
+#include "proof/proof_manager.h"
namespace CVC4 {
namespace prop {
#ifndef CVC4__PROOF_MANAGER_H
#define CVC4__PROOF_MANAGER_H
-#include <iosfwd>
#include <memory>
#include <unordered_map>
#include <unordered_set>
#include "context/cdhashset.h"
#include "expr/node.h"
#include "proof/clause_id.h"
-#include "util/statistics_registry.h"
namespace CVC4 {
#ifndef BVMinisat_SimpSolver_h
#define BVMinisat_SimpSolver_h
-#include "context/context.h"
#include "proof/clause_id.h"
#include "prop/bvminisat/core/Solver.h"
#include "prop/bvminisat/mtl/Queue.h"
-#include "util/statistics_registry.h"
namespace CVC4 {
+
+namespace context {
+class Context;
+}
+
namespace BVMinisat {
//=================================================================================================
#include "proof/proof_manager.h"
#include "prop/proof_cnf_stream.h"
#include "prop/registrar.h"
-#include "prop/theory_proxy.h"
+#include "prop/sat_solver_types.h"
namespace CVC4 {
namespace prop {
class ProofCnfStream;
+class PropEngine;
+class SatSolver;
/** A policy for how literals for formulas are handled in cnf_stream */
enum class FormulaLitPolicy : uint32_t
#include "prop/minisat/utils/Options.h"
#include "prop/sat_proof_manager.h"
#include "theory/theory.h"
+#include "util/resource_manager.h"
namespace CVC4 {
template <class Solver> class TSatProof;
#include "proof/proof_manager.h"
#include "prop/cnf_stream.h"
#include "prop/minisat/minisat.h"
+#include "prop/prop_proof_manager.h"
#include "prop/sat_solver.h"
#include "prop/sat_solver_factory.h"
#include "prop/theory_proxy.h"
d_resourceManager(rm),
d_outMgr(outMgr)
{
- Debug("prop") << "Constructing the PropEngine" << endl;
+ Debug("prop") << "Constructing the PropEngine" << std::endl;
d_decisionEngine.reset(new DecisionEngine(satContext, userContext, rm));
d_decisionEngine->init(); // enable appropriate strategies
}
PropEngine::~PropEngine() {
- Debug("prop") << "Destructing the PropEngine" << endl;
+ Debug("prop") << "Destructing the PropEngine" << std::endl;
d_decisionEngine->shutdown();
d_decisionEngine.reset(nullptr);
delete d_cnfStream;
void PropEngine::assertFormula(TNode node) {
Assert(!d_inCheckSat) << "Sat solver in solve()!";
- Debug("prop") << "assertFormula(" << node << ")" << endl;
+ Debug("prop") << "assertFormula(" << node << ")" << std::endl;
d_decisionEngine->addAssertion(node);
assertInternal(node, false, false, true);
}
void PropEngine::assertSkolemDefinition(TNode node, TNode skolem)
{
Assert(!d_inCheckSat) << "Sat solver in solve()!";
- Debug("prop") << "assertFormula(" << node << ")" << endl;
+ Debug("prop") << "assertFormula(" << node << ")" << std::endl;
d_decisionEngine->addSkolemDefinition(node, skolem);
assertInternal(node, false, false, true);
}
bool removable)
{
Node node = trn.getNode();
- Debug("prop::lemmas") << "assertLemma(" << node << ")" << endl;
+ Debug("prop::lemmas") << "assertLemma(" << node << ")" << std::endl;
bool negated = trn.getKind() == theory::TrustNodeKind::CONFLICT;
Assert(!isProofEnabled() || trn.getGenerator() != nullptr);
assertInternal(trn.getNode(), negated, removable, false, trn.getGenerator());
}
void PropEngine::requirePhase(TNode n, bool phase) {
- Debug("prop") << "requirePhase(" << n << ", " << phase << ")" << endl;
+ Debug("prop") << "requirePhase(" << n << ", " << phase << ")" << std::endl;
Assert(n.getType().isBoolean());
SatLiteral lit = d_cnfStream->getLiteral(n);
void PropEngine::printSatisfyingAssignment(){
const CnfStream::NodeToLiteralMap& transCache =
d_cnfStream->getTranslationCache();
- Debug("prop-value") << "Literal | Value | Expr" << endl
+ Debug("prop-value") << "Literal | Value | Expr" << std::endl
<< "----------------------------------------"
- << "-----------------" << endl;
+ << "-----------------" << std::endl;
for(CnfStream::NodeToLiteralMap::const_iterator i = transCache.begin(),
end = transCache.end();
i != end;
++i) {
- pair<Node, SatLiteral> curr = *i;
+ std::pair<Node, SatLiteral> curr = *i;
SatLiteral l = curr.second;
if(!l.isNegated()) {
Node n = curr.first;
SatValue value = d_satSolver->modelValue(l);
- Debug("prop-value") << "'" << l << "' " << value << " " << n << endl;
+ Debug("prop-value") << "'" << l << "' " << value << " " << n << std::endl;
}
}
}
Result PropEngine::checkSat() {
Assert(!d_inCheckSat) << "Sat solver in solve()!";
- Debug("prop") << "PropEngine::checkSat()" << endl;
+ Debug("prop") << "PropEngine::checkSat()" << std::endl;
// Mark that we are in the checkSat
ScopedBool scopedBool(d_inCheckSat);
printSatisfyingAssignment();
}
- Debug("prop") << "PropEngine::checkSat() => " << result << endl;
+ Debug("prop") << "PropEngine::checkSat() => " << result << std::endl;
if(result == SAT_VALUE_TRUE && d_theoryEngine->isIncomplete()) {
return Result(Result::SAT_UNKNOWN, Result::INCOMPLETE);
}
{
Assert(!d_inCheckSat) << "Sat solver in solve()!";
d_satSolver->push();
- Debug("prop") << "push()" << endl;
+ Debug("prop") << "push()" << std::endl;
}
void PropEngine::pop()
{
Assert(!d_inCheckSat) << "Sat solver in solve()!";
d_satSolver->pop();
- Debug("prop") << "pop()" << endl;
+ Debug("prop") << "pop()" << std::endl;
}
void PropEngine::resetTrail()
{
d_satSolver->resetTrail();
- Debug("prop") << "resetTrail()" << endl;
+ Debug("prop") << "resetTrail()" << std::endl;
}
unsigned PropEngine::getAssertionLevel() const
d_interrupted = true;
d_satSolver->interrupt();
- Debug("prop") << "interrupt()" << endl;
+ Debug("prop") << "interrupt()" << std::endl;
}
void PropEngine::spendResource(ResourceManager::Resource r)
#ifndef CVC4__PROP_ENGINE_H
#define CVC4__PROP_ENGINE_H
-#include <sys/time.h>
-
-#include "base/modal_exception.h"
+#include "context/cdlist.h"
#include "expr/node.h"
-#include "options/options.h"
-#include "proof/proof_manager.h"
-#include "prop/minisat/core/Solver.h"
-#include "prop/minisat/minisat.h"
-#include "prop/proof_cnf_stream.h"
-#include "prop/prop_proof_manager.h"
-#include "prop/sat_solver_types.h"
+#include "theory/output_channel.h"
#include "theory/trust_node.h"
-#include "theory/theory_inference_manager.h"
-#include "util/resource_manager.h"
#include "util/result.h"
-#include "util/unsafe_interrupt_exception.h"
namespace CVC4 {
class OutputManager;
class TheoryEngine;
-namespace theory {
- class TheoryRegistrar;
-}/* CVC4::theory namespace */
-
namespace prop {
class CnfStream;
class CDCLTSatSolverInterface;
-
-class PropEngine;
+class ProofCnfStream;
+class PropPfManager;
/**
* PropEngine is the abstraction of a Sat Solver, providing methods for
#include "expr/proof_ensure_closed.h"
#include "expr/proof_node_algorithm.h"
+#include "prop/prop_proof_manager.h"
+#include "prop/sat_solver.h"
namespace CVC4 {
namespace prop {
namespace prop {
+class CDCLTSatSolverInterface;
+
/**
* This class is responsible for managing the proof output of PropEngine, both
* building and checking it.
#include "expr/buffered_proof_generator.h"
#include "expr/lazy_proof_chain.h"
#include "expr/node.h"
-#include "expr/proof.h"
-#include "expr/proof_node_manager.h"
#include "prop/minisat/core/SolverTypes.h"
-#include "prop/cnf_stream.h"
#include "prop/sat_solver_types.h"
namespace Minisat {
}
namespace CVC4 {
+
+class ProofNodeManager;
+
namespace prop {
+class CnfStream;
+
/**
* This class is responsible for managing the proof production of the SAT
* solver. It tracks resolutions produced during solving and stores them,
// Optional blocks below will be unconditionally included
#define CVC4_USE_MINISAT
-#include <iosfwd>
#include <unordered_set>
-#include "context/cdhashmap.h"
#include "context/cdqueue.h"
#include "expr/node.h"
#include "prop/registrar.h"
-#include "prop/sat_solver.h"
+#include "prop/sat_solver_types.h"
#include "theory/theory.h"
#include "theory/theory_preprocessor.h"
#include "theory/trust_node.h"
#include "util/resource_manager.h"
-#include "util/statistics_registry.h"
namespace CVC4 {
#include "smt/abduction_solver.h"
+#include <sstream>
+
#include "options/smt_options.h"
#include "smt/smt_engine.h"
#include "theory/quantifiers/quantifiers_attributes.h"
#include "options/language.h"
#include "options/smt_options.h"
#include "proof/proof_manager.h"
+#include "smt/abstract_values.h"
#include "smt/smt_engine.h"
using namespace CVC4::theory;
#include <vector>
#include "context/cdlist.h"
-#include "context/context.h"
#include "expr/node.h"
#include "preprocessing/assertion_pipeline.h"
-#include "smt/abstract_values.h"
namespace CVC4 {
namespace smt {
+class AbstractValues;
+
/**
* Contains all information pertaining to the assertions of an SMT engine.
*
#include "smt/check_models.h"
#include "options/smt_options.h"
+#include "smt/model.h"
#include "smt/node_command.h"
#include "smt/preprocessor.h"
+#include "smt/smt_solver.h"
#include "theory/rewriter.h"
#include "theory/substitutions.h"
#include "theory/theory_engine.h"
#include "context/cdlist.h"
#include "expr/node.h"
-#include "smt/model.h"
-#include "smt/smt_solver.h"
namespace CVC4 {
namespace smt {
+class Model;
+class SmtSolver;
+
/**
* This utility is responsible for checking the current model.
*/
#define CVC4__COMMAND_H
#include <iosfwd>
-#include <map>
#include <sstream>
#include <string>
#include <vector>
} // namespace api
class SymbolManager;
-class UnsatCore;
-class SmtEngine;
class Command;
class CommandStatus;
#include <memory>
#include <vector>
-#include "context/cdlist.h"
+#include "context/context.h"
#include "expr/node.h"
namespace CVC4 {
class NodeCommand;
+namespace context {
+class UserContext;
+}
+
namespace smt {
/**
#include <utility>
#include "expr/node_manager_attributes.h"
+#include "preprocessing/assertion_pipeline.h"
#include "smt/defined_function.h"
#include "smt/smt_engine.h"
+#include "smt/smt_engine_stats.h"
#include "theory/theory_engine.h"
using namespace CVC4::preprocessing;
#include <unordered_map>
#include "expr/node.h"
-#include "expr/term_conversion_proof_generator.h"
-#include "preprocessing/assertion_pipeline.h"
-#include "smt/smt_engine_stats.h"
-#include "util/resource_manager.h"
+#include "theory/trust_node.h"
namespace CVC4 {
+class ProofNodeManager;
+class ResourceManager;
class SmtEngine;
+class TConvProofGenerator;
+
+namespace preprocessing {
+class AssertionPipeline;
+}
namespace smt {
+struct SmtEngineStatistics;
+
/**
* Module in charge of expanding definitions for an SMT engine.
*
#include "smt/interpolation_solver.h"
+#include <sstream>
+
#include "options/smt_options.h"
#include "smt/smt_engine.h"
#include "theory/quantifiers/quantifiers_attributes.h"
#include <ostream>
-#include "options/open_ostream.h"
-#include "smt/update_ostream.h"
-
namespace CVC4 {
+class OstreamOpener;
+
/** This abstracts the management of ostream memory and initialization. */
class ManagedOstream {
public:
#include <vector>
#include "expr/node.h"
-#include "theory/theory_model.h"
-#include "util/cardinality.h"
namespace CVC4 {
class SmtEngine;
+namespace theory {
+class TheoryModel;
+}
+
namespace smt {
class Model;
#include "expr/node.h"
#include "expr/node_algorithm.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/rewriter.h"
+#include "theory/theory_model.h"
using namespace CVC4::kind;
#include "expr/node.h"
#include "options/smt_options.h"
-#include "theory/theory_model.h"
namespace CVC4 {
+namespace theory {
+class TheoryModel;
+}
+
/**
* A utility for blocking the current model.
*/
#include "smt/node_command.h"
+#include <sstream>
+
#include "printer/printer.h"
namespace CVC4 {
#ifndef CVC4__SMT__OPTIONS_MANAGER_H
#define CVC4__SMT__OPTIONS_MANAGER_H
-#include "options/options.h"
#include "options/options_listener.h"
#include "smt/managed_ostreams.h"
namespace CVC4 {
-class SmtEngine;
class LogicInfo;
+class Options;
class ResourceManager;
+class SmtEngine;
namespace smt {
#include "smt/preprocess_proof_generator.h"
#include "expr/proof.h"
+#include "expr/proof_checker.h"
+#include "expr/proof_node.h"
#include "options/proof_options.h"
#include "theory/rewriter.h"
#include <map>
#include "context/cdhashmap.h"
-#include "context/cdlist.h"
#include "expr/lazy_proof.h"
#include "expr/proof_set.h"
#include "expr/proof_generator.h"
#include "expr/proof_node_manager.h"
-#include "theory/eager_proof_generator.h"
#include "theory/trust_node.h"
namespace CVC4 {
#include "smt/abstract_values.h"
#include "smt/assertions.h"
#include "smt/dump.h"
+#include "smt/preprocess_proof_generator.h"
#include "smt/smt_engine.h"
+using namespace std;
using namespace CVC4::theory;
using namespace CVC4::kind;
#ifndef CVC4__SMT__PREPROCESSOR_H
#define CVC4__SMT__PREPROCESSOR_H
-#include <vector>
+#include <memory>
-#include "preprocessing/preprocessing_pass_context.h"
#include "smt/expand_definitions.h"
#include "smt/process_assertions.h"
#include "theory/booleans/circuit_propagator.h"
namespace CVC4 {
+namespace preprocessing {
+class PreprocessingPassContext;
+}
namespace smt {
class AbstractValues;
#include "printer/printer.h"
#include "smt/defined_function.h"
#include "smt/dump.h"
+#include "smt/expand_definitions.h"
#include "smt/smt_engine.h"
+#include "smt/smt_engine_stats.h"
#include "theory/logic_info.h"
#include "theory/theory_engine.h"
+using namespace std;
using namespace CVC4::preprocessing;
using namespace CVC4::theory;
using namespace CVC4::kind;
#ifndef CVC4__SMT__PROCESS_ASSERTIONS_H
#define CVC4__SMT__PROCESS_ASSERTIONS_H
-#include <map>
+#include <unordered_map>
-#include "context/cdhashmap.h"
#include "context/cdlist.h"
#include "expr/node.h"
#include "expr/type_node.h"
#include "preprocessing/preprocessing_pass.h"
#include "preprocessing/preprocessing_pass_context.h"
#include "smt/assertions.h"
-#include "smt/expand_definitions.h"
-#include "smt/smt_engine_stats.h"
#include "util/resource_manager.h"
namespace CVC4 {
namespace smt {
+class ExpandDefs;
+struct SmtEngineStatistics;
+
/**
* Module in charge of processing assertions for an SMT engine.
*
{
/** The types for the recursive function definitions */
typedef context::CDList<Node> NodeList;
- typedef unordered_map<Node, bool, NodeHashFunction> NodeToBoolHashMap;
+ typedef std::unordered_map<Node, bool, NodeHashFunction> NodeToBoolHashMap;
public:
ProcessAssertions(SmtEngine& smt,
#include "smt/proof_manager.h"
+#include "expr/proof_checker.h"
#include "expr/proof_node_algorithm.h"
+#include "expr/proof_node_manager.h"
#include "options/base_options.h"
#include "options/proof_options.h"
#include "smt/assertions.h"
#include "smt/defined_function.h"
+#include "smt/preprocess_proof_generator.h"
+#include "smt/proof_post_processor.h"
namespace CVC4 {
namespace smt {
#define CVC4__SMT__PROOF_MANAGER_H
#include "context/cdhashmap.h"
-#include "context/cdlist.h"
#include "expr/node.h"
-#include "expr/proof_checker.h"
-#include "expr/proof_node.h"
-#include "expr/proof_node_manager.h"
-#include "smt/preprocess_proof_generator.h"
-#include "smt/proof_post_processor.h"
namespace CVC4 {
+class ProofChecker;
+class ProofNode;
+class ProofNodeManager;
class SmtEngine;
namespace smt {
class Assertions;
class DefinedFunction;
+class PreprocessProofGenerator;
+class ProofPostproccess;
/**
* This class is responsible for managing the proof output of SmtEngine, as
#include "smt/proof_post_processor.h"
+#include "expr/proof_node_manager.h"
#include "expr/skolem_manager.h"
#include "options/proof_options.h"
#include "options/smt_options.h"
#include "expr/proof_node_updater.h"
#include "smt/witness_form.h"
+#include "util/statistics_registry.h"
namespace CVC4 {
#include "printer/printer.h"
#include "proof/proof_manager.h"
#include "proof/unsat_core.h"
+#include "prop/prop_engine.h"
#include "smt/abduction_solver.h"
#include "smt/abstract_values.h"
#include "smt/assertions.h"
#include "smt/check_models.h"
#include "smt/defined_function.h"
+#include "smt/dump.h"
#include "smt/dump_manager.h"
#include "smt/interpolation_solver.h"
#include "smt/listeners.h"
/* ....................................................................... */
private:
/* ....................................................................... */
- /** The type of our internal assertion list */
- typedef context::CDList<Node> AssertionList;
// disallow copy/assignment
SmtEngine(const SmtEngine&) = delete;
#include "smt/preprocessor.h"
#include "smt/smt_engine.h"
#include "smt/smt_engine_state.h"
+#include "smt/smt_engine_stats.h"
#include "theory/theory_engine.h"
#include "theory/theory_traits.h"
+using namespace std;
+
namespace CVC4 {
namespace smt {
* are unregistered by the obsolete PropEngine object before registered
* again by the new PropEngine object */
d_propEngine.reset(nullptr);
- d_propEngine.reset(new PropEngine(d_theoryEngine.get(),
- d_smt.getContext(),
- d_smt.getUserContext(),
- d_rm,
- d_smt.getOutputManager(),
- d_pnm));
+ d_propEngine.reset(new prop::PropEngine(d_theoryEngine.get(),
+ d_smt.getContext(),
+ d_smt.getUserContext(),
+ d_rm,
+ d_smt.getOutputManager(),
+ d_pnm));
Trace("smt-debug") << "Setting up theory engine..." << std::endl;
d_theoryEngine->setPropEngine(getPropEngine());
* statistics are unregistered by the obsolete PropEngine object before
* registered again by the new PropEngine object */
d_propEngine.reset(nullptr);
- d_propEngine.reset(new PropEngine(d_theoryEngine.get(),
- d_smt.getContext(),
- d_smt.getUserContext(),
- d_rm,
- d_smt.getOutputManager(),
- d_pnm));
+ d_propEngine.reset(new prop::PropEngine(d_theoryEngine.get(),
+ d_smt.getContext(),
+ d_smt.getUserContext(),
+ d_rm,
+ d_smt.getOutputManager(),
+ d_pnm));
d_theoryEngine->setPropEngine(getPropEngine());
// Notice that we do not reset TheoryEngine, nor does it require calling
// finishInit again. In particular, TheoryEngine::finishInit does not
#include <vector>
#include "expr/attribute.h"
+#include "expr/lazy_proof.h"
#include "expr/node_algorithm.h"
#include "expr/skolem_manager.h"
+#include "expr/term_context_stack.h"
+#include "expr/term_conversion_proof_generator.h"
#include "options/smt_options.h"
#include "proof/proof_manager.h"
#pragma once
-#include <unordered_map>
+#include <unordered_set>
#include <vector>
#include "context/cdinsert_hashmap.h"
#include "context/context.h"
-#include "expr/lazy_proof.h"
#include "expr/node.h"
-#include "expr/term_context_stack.h"
-#include "expr/term_conversion_proof_generator.h"
-#include "theory/eager_proof_generator.h"
+#include "expr/term_context.h"
#include "theory/trust_node.h"
-#include "util/bool.h"
#include "util/hash.h"
namespace CVC4 {
+class LazyCDProof;
+class ProofNodeManager;
+class TConvProofGenerator;
+
class RemoveTermFormulas {
public:
RemoveTermFormulas(context::UserContext* u, ProofNodeManager* pnm = nullptr);
#include "theory/arith/delta_rational.h"
+#include <sstream>
+
using namespace std;
namespace CVC4 {
#include "theory/arith/arith_utilities.h"
#include "theory/arith/inference_manager.h"
#include "theory/arith/nl/nl_model.h"
+#include "theory/rewriter.h"
#include "util/iand.h"
using namespace CVC4::kind;
#include "theory/booleans/proof_circuit_propagator.h"
+#include <sstream>
+
#include "expr/proof_node_manager.h"
namespace CVC4 {
#include "prop/sat_solver_types.h"
#include "smt/smt_engine_scope.h"
#include "theory/bv/bitblast/bitblast_strategies_template.h"
+#include "theory/theory.h"
#include "theory/valuation.h"
#include "util/resource_manager.h"
#include <unordered_map>
+#include "context/cdqueue.h"
#include "prop/cnf_stream.h"
#include "prop/sat_solver.h"
#include "theory/bv/bitblast/simple_bitblaster.h"
#include "theory/datatypes/sygus_datatype_utils.h"
+#include <sstream>
+
#include "expr/dtype.h"
#include "expr/dtype_cons.h"
#include "expr/node_algorithm.h"
#include "theory/datatypes/theory_datatypes.h"
#include <map>
+#include <sstream>
#include "base/check.h"
#include "expr/dtype.h"
#include "theory/inference_id.h"
+#include <iostream>
+
namespace CVC4 {
namespace theory {
#include "expr/node.h"
#include "expr/proof_generator.h"
+#include "expr/proof_node.h"
#include "expr/proof_node_manager.h"
namespace CVC4 {
**/
#include "theory/quantifiers/single_inv_partition.h"
+#include <sstream>
+
#include "expr/node_algorithm.h"
#include "theory/quantifiers/term_util.h"
#include "theory/rewriter.h"
#define CVC4__THEORY__QUANTIFIERS__CEGIS_CORE_CONNECTIVE_H
#include <unordered_set>
+
#include "expr/node.h"
#include "expr/node_trie.h"
-
#include "theory/evaluator.h"
#include "theory/quantifiers/sygus/cegis.h"
+#include "util/result.h"
namespace CVC4 {
namespace theory {
#include "theory/quantifiers/sygus/sygus_abduct.h"
+#include <sstream>
+
#include "expr/dtype.h"
#include "expr/node_algorithm.h"
#include "expr/sygus_datatype.h"
#include "theory/quantifiers/sygus/sygus_interpol.h"
+#include <sstream>
+
#include "expr/dtype.h"
#include "expr/node_algorithm.h"
#include "options/smt_options.h"
#include "theory/quantifiers/sygus/sygus_utils.h"
+#include <sstream>
+
#include "expr/node_algorithm.h"
#include "theory/quantifiers/quantifiers_attributes.h"
#include "theory/quantifiers/sygus/sygus_grammar_cons.h"
#include "theory/quantifiers/quantifiers_inference_manager.h"
#include "theory/quantifiers/quantifiers_state.h"
#include "theory/quantifiers/term_util.h"
+#include "theory/rewriter.h"
using namespace CVC4::kind;
#include "smt/smt_engine.h"
#include "smt/smt_engine_scope.h"
#include "theory/quantifiers/lazy_trie.h"
+#include "theory/rewriter.h"
#include "util/bitvector.h"
#include "util/random.h"
#include "util/sampler.h"
#include "theory/strings/regexp_operation.h"
+#include <sstream>
+
#include "expr/node_algorithm.h"
#include "options/strings_options.h"
#include "theory/rewriter.h"
#include "theory/strings/theory_strings_utils.h"
+#include <sstream>
+
#include "options/strings_options.h"
#include "theory/rewriter.h"
#include "theory/strings/arith_entail.h"
#include "theory/theory_engine.h"
+#include <sstream>
+
#include "base/map_util.h"
#include "decision/decision_engine.h"
#include "expr/attribute.h"
#include "theory/theory_engine_proof_generator.h"
+#include <sstream>
+
+#include "expr/proof_node.h"
+
using namespace CVC4::kind;
namespace CVC4 {
#include "theory/theory_id.h"
+#include <sstream>
+
#include "base/check.h"
#include "lib/ffs.h"
#include "theory/uf/cardinality_extension.h"
+#include <sstream>
+
#include "options/smt_options.h"
#include "options/uf_options.h"
#include "theory/quantifiers/term_database.h"
#include "base/configuration.h"
#include "expr/proof.h"
+#include "expr/proof_checker.h"
#include "options/uf_options.h"
namespace CVC4 {
#include "theory/uf/theory_uf.h"
#include <memory>
+#include <sstream>
#include "expr/node_algorithm.h"
#include "expr/proof_node_manager.h"
#define CVC4__BITVECTOR_H
#include <iosfwd>
+#include <iostream>
+#include "base/exception.h"
#include "util/integer.h"
namespace CVC4 {
#include "util/cardinality.h"
#include <ostream>
+#include <sstream>
#include "base/check.h"
#include "base/exception.h"
#ifndef CVC4__INTEGER_H
#define CVC4__INTEGER_H
+#include <gmpxx.h>
+
#include <iosfwd>
-#include <limits>
#include <string>
-#include "base/exception.h"
-#include "util/gmp_util.h"
-
namespace CVC4 {
class Rational;
#include <poly/polyxx.h>
#include <map>
+#include <sstream>
#include "base/check.h"
#include "maybe.h"
#include <string>
-#include "base/exception.h"
+#include "util/gmp_util.h"
#include "util/integer.h"
#include "util/maybe.h"
#include <algorithm>
#include <cctype>
#include <iostream>
+#include <sstream>
#include <string>
#include "base/check.h"
#ifndef CVC4__RESULT_H
#define CVC4__RESULT_H
-#include <iostream>
+#include <iosfwd>
#include <string>
-#include "base/exception.h"
#include "options/language.h"
namespace CVC4 {
#include "safe_print.h"
+#include <time.h>
#include <unistd.h>
+#include <cstdlib>
+
/* Size of buffers used */
#define BUFFER_SIZE 20
#include <unistd.h>
#include <cstring>
-#include <type_traits>
-
-#include "lib/clock_gettime.h"
-#include "util/result.h"
+#include <string>
namespace CVC4 {
#include "util/sampler.h"
+#include <sstream>
+
#include "base/check.h"
#include "util/bitvector.h"
+#include "util/random.h"
namespace CVC4 {
#define CVC4__UTIL_FLOATINGPOINT_SAMPLER_H
#include "util/floatingpoint.h"
-#include "util/random.h"
namespace CVC4 {
#ifndef CVC4__SEXPR_H
#define CVC4__SEXPR_H
-#include <iomanip>
#include <iosfwd>
#include <string>
#include <vector>
-#include "base/exception.h"
#include "options/language.h"
#include "util/integer.h"
#include "util/rational.h"
#ifndef CVC4__UTIL__STRING_H
#define CVC4__UTIL__STRING_H
-#include <functional>
-#include <ostream>
+#include <iosfwd>
#include <string>
#include <vector>
+
#include "util/rational.h"
namespace CVC4 {
#include "context/context.h"
#include "expr/node.h"
#include "expr/node_manager.h"
+#include "preprocessing/assertion_pipeline.h"
#include "preprocessing/passes/bv_gauss.h"
#include "smt/smt_engine.h"
#include "smt/smt_engine_scope.h"
#include "prop/cnf_stream.h"
#include "prop/prop_engine.h"
#include "prop/registrar.h"
+#include "prop/sat_solver.h"
#include "prop/theory_proxy.h"
#include "test_smt.h"
#include "theory/arith/theory_arith.h"
#include <sstream>
#include <string>
+#include "base/exception.h"
#include "test.h"
#include "util/cardinality.h"
#include "util/integer.h"
#include <limits>
#include <sstream>
+#include "base/exception.h"
#include "test.h"
#include "util/integer.h"