Added an option that allow empty dependencies when attempting to minimize preprocessi...
authorguykatzz <katz911@gmail.com>
Thu, 6 Oct 2016 06:39:48 +0000 (23:39 -0700)
committerguykatzz <katz911@gmail.com>
Thu, 6 Oct 2016 06:39:48 +0000 (23:39 -0700)
src/options/proof_options
src/proof/proof_manager.cpp

index 322ef5a9ca7be3f920873ed444ee6bd9122d78d5..789513334b02a1676295df35f0bbec1ee7636253 100644 (file)
@@ -12,6 +12,9 @@ option aggressiveCoreMin --aggressive-core-min bool :default false
  turns on aggressive unsat core minimization (experimental)
 
 option fewerPreprocessingHoles --fewer-preprocessing-holes bool :default false :read-write
-  try to eliminate preprocessing holes in proofs
+ try to eliminate preprocessing holes in proofs
+
+option allowEmptyDependencies --allow-empty-dependencies bool :default false
+ if unable to track the dependencies of a rewritten/preprocessed assertion, fail silently
 
 endmodule
index 1c9bb0ff0558d2fdbad67b20b055da6cb6543f7b..5ce615366716901134481a2f965360e351b4fe77 100644 (file)
@@ -272,6 +272,10 @@ void ProofManager::traceDeps(TNode n, ExprSet* coreAssertions) {
   } else {
     Debug("cores") << " -- NOT IN INPUT CORE LIST!" << std::endl;
     if(d_deps.find(n) == d_deps.end()) {
+      if (options::allowEmptyDependencies()) {
+        Debug("cores") << " -- Could not track cause assertion. Failing silently." << std::endl;
+        return;
+      }
       InternalError("Cannot trace dependence information back to input assertion:\n`%s'", n.toString().c_str());
     }
     Assert(d_deps.find(n) != d_deps.end());