Minor simplifications to theory quantifiers (#2953)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Tue, 16 Apr 2019 15:38:35 +0000 (10:38 -0500)
committerGitHub <noreply@github.com>
Tue, 16 Apr 2019 15:38:35 +0000 (10:38 -0500)
src/options/quantifiers_options.toml
src/theory/quantifiers/theory_quantifiers.cpp
src/theory/quantifiers/theory_quantifiers.h
test/regress/regress0/quantifiers/ARI176e1.smt2
test/regress/regress0/quantifiers/nested-delta.smt2
test/regress/regress0/quantifiers/nested-inf.smt2

index 1ff85c96dd778aea77fcbfac8145c068492635b9..1c13590eb17e8c89721dfab4423e87eeb60cbbac 100644 (file)
@@ -1464,15 +1464,6 @@ header = "options/quantifiers_options.h"
   default    = "false"
   help       = "turns on full effort counterexample-based quantifier instantiation, which may resort to model-value instantiation"
 
-[[option]]
-  name       = "recurseCbqi"
-  category   = "regular"
-  long       = "cbqi-recurse"
-  type       = "bool"
-  default    = "true"
-  read_only  = true
-  help       = "turns on recursive counterexample-based quantifier instantiation"
-
 [[option]]
   name       = "cbqiSat"
   category   = "regular"
index ac6e194eb38e5af8a7f044f4ba4017685a2b6246..f24a4bb2be3cbe23df1516b40e7d2ad3a39f48d5 100644 (file)
@@ -38,8 +38,6 @@ using namespace CVC4::theory::quantifiers;
 TheoryQuantifiers::TheoryQuantifiers(Context* c, context::UserContext* u, OutputChannel& out, Valuation valuation, const LogicInfo& logicInfo) :
     Theory(THEORY_QUANTIFIERS, c, u, out, valuation, logicInfo)
 {
-  d_numInstantiations = 0;
-  d_baseDecLevel = -1;
   out.handleUserAttribute( "axiom", this );
   out.handleUserAttribute( "conjecture", this );
   out.handleUserAttribute( "fun-def", this );
@@ -71,13 +69,6 @@ void TheoryQuantifiers::preRegisterTerm(TNode n) {
     return;
   }
   Debug("quantifiers-prereg") << "TheoryQuantifiers::preRegisterTerm() " << n << endl;
-  if (options::cbqi() && !options::recurseCbqi()
-      && TermUtil::hasInstConstAttr(n))
-  {
-    Debug("quantifiers-prereg")
-        << "TheoryQuantifiers::preRegisterTerm() done, unused " << n << endl;
-    return;
-  }
   // Preregister the quantified formula.
   // This initializes the modules used for handling n in this user context.
   getQuantifiersEngine()->preRegisterQuantifier(n);
@@ -135,7 +126,7 @@ void TheoryQuantifiers::check(Effort e) {
     Trace("quantifiers-assert") << "quantifiers::assert(): " << assertion << std::endl;
     switch(assertion.getKind()) {
     case kind::FORALL:
-      assertUniversal( assertion );
+      getQuantifiersEngine()->assertQuantifier(assertion, true);
       break;
     case kind::INST_CLOSURE:
       getQuantifiersEngine()->addTermToDatabase( assertion[0], false, true );
@@ -150,7 +141,7 @@ void TheoryQuantifiers::check(Effort e) {
       {
         switch( assertion[0].getKind()) {
         case kind::FORALL:
-          assertExistential( assertion );
+          getQuantifiersEngine()->assertQuantifier(assertion[0], false);
           break;
         case kind::EQUAL:
           //do nothing
@@ -171,20 +162,6 @@ void TheoryQuantifiers::check(Effort e) {
   getQuantifiersEngine()->check( e );
 }
 
-void TheoryQuantifiers::assertUniversal( Node n ){
-  Assert( n.getKind()==FORALL );
-  if( !options::cbqi() || options::recurseCbqi() || !TermUtil::hasInstConstAttr(n) ){
-    getQuantifiersEngine()->assertQuantifier( n, true );
-  }
-}
-
-void TheoryQuantifiers::assertExistential( Node n ){
-  Assert( n.getKind()== NOT && n[0].getKind()==FORALL );
-  if( !options::cbqi() || options::recurseCbqi() || !TermUtil::hasInstConstAttr(n[0]) ){
-    getQuantifiersEngine()->assertQuantifier( n[0], false );
-  }
-}
-
 void TheoryQuantifiers::setUserAttribute(const std::string& attr, Node n, std::vector<Node> node_values, std::string str_value){
   QuantAttributes::setUserAttribute( attr, n, node_values, str_value );
 }
index 09cda76fbf1431f1db347071a71cbfd5179996b1..f6e19f7005bc8c6bd009ca7833c199d560aa7d2e 100644 (file)
@@ -56,13 +56,6 @@ class TheoryQuantifiers : public Theory {
                         std::vector<Node> node_values,
                         std::string str_value) override;
 
- private:
-  void assertUniversal( Node n );
-  void assertExistential( Node n );
-  /** number of instantiations */
-  int d_numInstantiations;
-  int d_baseDecLevel;
-
 };/* class TheoryQuantifiers */
 
 }/* CVC4::theory::quantifiers namespace */
index caed9c603221a00b05f5960ea7d2f45edea7b385..36dccc21f8fc3f383e9d189065a91eb7de52cb47 100644 (file)
@@ -1,5 +1,4 @@
-; COMMAND-LINE: --cbqi-recurse
-; EXPECT: unsat
 (set-logic LIA)
+(set-info :status unsat)
 (assert (forall ((U Int) (V Int)) (not (= (* 3 U) (+ 22 (* (- 5) V)))) ) )
 (check-sat)
index 9352f0410ad8d77949a902ab1dadfd97035cbd21..137a5eee30638ec1f839bb9cd5fc1e4516458945 100644 (file)
@@ -1,6 +1,4 @@
-; COMMAND-LINE: --cbqi-recurse
-; EXPECT: sat
 (set-logic LRA)
 (set-info :status sat)
 (assert (forall ((x Real)) (or (exists ((y Real)) (and (< y 0) (< y x))) (<= x 0))))
-(check-sat)
\ No newline at end of file
+(check-sat)
index f27a876dbf454c3cc750964c672a15c3b7947ab1..ea397f8dba482bbef21ac4ce3325208e4354a0ea 100644 (file)
@@ -1,6 +1,4 @@
-; COMMAND-LINE: --cbqi-recurse
-; EXPECT: sat
 (set-logic LRA)
 (set-info :status sat)
 (assert (forall ((x Real)) (exists ((y Real)) (> y x))))
-(check-sat)
\ No newline at end of file
+(check-sat)