Only save farkas+tightening proofs. Error on holes
authorAlex Ozdemir <aozdemir@hmc.edu>
Mon, 16 Mar 2020 19:17:43 +0000 (12:17 -0700)
committerAlex Ozdemir <aozdemir@hmc.edu>
Mon, 16 Mar 2020 23:52:50 +0000 (16:52 -0700)
I'll remove the error later

src/proof/arith_proof.cpp
src/theory/arith/theory_arith_private.cpp

index 7deb22d48c05deaa1016077667ab3c49a862f044..2660f723fdd8e2cb8979d24131484466cfc3b3e2 100644 (file)
@@ -1156,8 +1156,10 @@ void LFSCArithProof::printTheoryLemmaProof(std::vector<Expr>& lemma,
   }
   else
   {
+    AlwaysAssert(false) << "arith hole!";
     os << "\n; Arithmetic proofs which use reasoning more complex than Farkas "
-          "proofs are currently unsupported\n(clausify_false trust)\n";
+          "proofs and bound tightening are currently unsupported\n"
+          "(clausify_false trust)\n";
   }
 }
 
index 6c226bb617fea62b0e0fd4ec0ae74960adef41b8..fb71bb1b16cda04a28664eb9326a9e25a8a749b4 100644 (file)
@@ -2188,8 +2188,11 @@ void TheoryArithPrivate::outputConflicts(){
         }
 
         Assert(conflict.getNumChildren() == pf.d_farkasCoefficients->size());
-        d_containing.d_proofRecorder->saveFarkasCoefficients(
-            conflictInFarkasCoefficientOrder, pf.d_farkasCoefficients);
+        if (confConstraint->hasSimpleFarkasProof())
+        {
+          d_containing.d_proofRecorder->saveFarkasCoefficients(
+              conflictInFarkasCoefficientOrder, pf.d_farkasCoefficients);
+        }
       })
       if(Debug.isOn("arith::normalize::external")){
         conflict = flattenAndSort(conflict);
@@ -4951,8 +4954,11 @@ bool TheoryArithPrivate::rowImplicationCanBeApplied(RowIndex ridx, bool rowUp, C
         Assert(coeffs != RationalVectorPSentinel);
         Assert(conflictInFarkasCoefficientOrder.getNumChildren()
                == coeffs->size());
-        d_containing.d_proofRecorder->saveFarkasCoefficients(
-            conflictInFarkasCoefficientOrder, coeffs);
+        if (implied->hasSimpleFarkasProof())
+        {
+          d_containing.d_proofRecorder->saveFarkasCoefficients(
+              conflictInFarkasCoefficientOrder, coeffs);
+        }
       })
       outputLemma(clause);
     }else{