summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcontrib/run-script-cascj7-fnt14
-rwxr-xr-xcontrib/run-script-cascj7-fof17
-rwxr-xr-xcontrib/run-script-cascj7-tff12
-rw-r--r--src/theory/quantifiers/first_order_model.cpp10
-rw-r--r--src/theory/quantifiers/full_model_check.cpp6
-rw-r--r--src/theory/quantifiers/instantiation_engine.cpp12
-rw-r--r--src/theory/quantifiers_engine.cpp1
7 files changed, 48 insertions, 24 deletions
diff --git a/contrib/run-script-cascj7-fnt b/contrib/run-script-cascj7-fnt
index 5d51381da..073a9f297 100755
--- a/contrib/run-script-cascj7-fnt
+++ b/contrib/run-script-cascj7-fnt
@@ -2,16 +2,15 @@
cvc4=cvc4
bench="$1"
-let "to = $2 - 70"
file=${bench##*/}
filename=${file%.*}
-echo "Run $bench at $2"
+echo "------- cvc4-fnt $bench at $2..."
# use: trywith [params..]
-# to attempt a run. Only thing printed on stdout is "sat" or "unsat", in
-# which case this run script terminates immediately. Otherwise, this
+# to attempt a run. If an SZS ontology result is printed, then
+# the run script terminates immediately. Otherwise, this
# function returns normally.
function trywith {
limit=$1; shift;
@@ -24,9 +23,14 @@ function trywith {
esac; exit 1)
if [ ${PIPESTATUS[1]} -eq 0 ]; then exit 0; fi
}
+function finishwith {
+ echo "--- Run $@ at $limit...";
+ $cvc4 --no-checking --no-interactive --dump-models --produce-models "$@" $bench
+}
trywith 30 --finite-model-find --sort-inference --uf-ss-fair
trywith 30 --finite-model-find --mbqi=gen-ev --uf-ss-totality --decision=internal --sort-inference --uf-ss-fair
trywith 10 --finite-model-find --disable-uf-ss-min-model --sort-inference --uf-ss-fair
-trywith $to --finite-model-find --mbqi=abs --pre-skolem-quant --sort-inference --uf-ss-fair
+trywith 30 --finite-model-find --mbqi=abs --pre-skolem-quant --sort-inference --uf-ss-fair
+finishwith --finite-model-find --mbqi=abs --pre-skolem-quant --sort-inference --uf-ss-fair --mbqi-one-inst-per-round
echo "% SZS status" "GaveUp for $filename"
diff --git a/contrib/run-script-cascj7-fof b/contrib/run-script-cascj7-fof
index eb0478e24..582a14952 100755
--- a/contrib/run-script-cascj7-fof
+++ b/contrib/run-script-cascj7-fof
@@ -2,14 +2,15 @@
cvc4=cvc4
bench="$1"
-let "to = $2 - 85"
file=${bench##*/}
filename=${file%.*}
+echo "------- cvc4-fof $bench at $2..."
+
# use: trywith [params..]
-# to attempt a run. Only thing printed on stdout is "sat" or "unsat", in
-# which case this run script terminates immediately. Otherwise, this
+# to attempt a run. If an SZS ontology result is printed, then
+# the run script terminates immediately. Otherwise, this
# function returns normally.
function trywith {
limit=$1; shift;
@@ -22,10 +23,16 @@ function trywith {
esac; exit 1)
if [ ${PIPESTATUS[1]} -eq 0 ]; then exit 0; fi
}
+function finishwith {
+ echo "--- Run $@ at $limit...";
+ $cvc4 --no-checking --no-interactive --dump-instantiations "$@" $bench
+}
trywith 30 --full-saturate-quant
-trywith 10 --decision=internal --full-saturate-quant
+trywith 15 --decision=internal --full-saturate-quant
trywith 30 --finite-model-find --fmf-inst-engine --mbqi=gen-ev
+trywith 30 --relevant-triggers --full-saturate-quant
trywith 15 --finite-model-find --decision=justification-stoponly
-trywith $to --quant-cf --full-saturate-quant
+trywith 30 --pre-skolem-quant --full-saturate-quant
+finishwith --quant-cf --full-saturate-quant
echo "% SZS status" "GaveUp for $filename"
diff --git a/contrib/run-script-cascj7-tff b/contrib/run-script-cascj7-tff
index 893b69572..8033bed1f 100755
--- a/contrib/run-script-cascj7-tff
+++ b/contrib/run-script-cascj7-tff
@@ -2,11 +2,12 @@
cvc4=cvc4
bench="$1"
-let "to = $2 - 170"
file=${bench##*/}
filename=${file%.*}
+echo "------- cvc4-tff $bench at $2..."
+
# use: trywith [params..]
# to attempt a run. Only thing printed on stdout is "sat" or "unsat", in
# which case this run script terminates immediately. Otherwise, this
@@ -22,11 +23,16 @@ function trywith {
esac; exit 1)
if [ ${PIPESTATUS[1]} -eq 0 ]; then exit 0; fi
}
+function finishwith {
+ echo "--- Run $@ at $limit...";
+ $cvc4 --no-checking --no-interactive --dump-instantiations "$@" $bench
+}
trywith 15 --cbqi-recurse --full-saturate-quant
trywith 15 --decision=internal --full-saturate-quant
trywith 30 --quant-cf --qcf-tconstraint --full-saturate-quant
trywith 20 --finite-model-find
-trywith 90 --full-saturate-quant
-trywith $to --cbqi-recurse --full-saturate-quant --pre-skolem-quant
+trywith 30 --full-saturate-quant
+trywith 60 --quant-cf --full-saturate-quant
+finishwith --cbqi-recurse --full-saturate-quant --pre-skolem-quant
echo "% SZS status" "GaveUp for $filename"
diff --git a/src/theory/quantifiers/first_order_model.cpp b/src/theory/quantifiers/first_order_model.cpp
index 3edf97467..e3514d949 100644
--- a/src/theory/quantifiers/first_order_model.cpp
+++ b/src/theory/quantifiers/first_order_model.cpp
@@ -38,9 +38,13 @@ d_qe( qe ), d_axiom_asserted( c, false ), d_forall_asserts( c ), d_isModelSet( c
}
void FirstOrderModel::assertQuantifier( Node n ){
- d_forall_asserts.push_back( n );
- if( n.getAttribute(AxiomAttribute()) ){
- d_axiom_asserted = true;
+ if( n.getKind()==FORALL ){
+ d_forall_asserts.push_back( n );
+ if( n.getAttribute(AxiomAttribute()) ){
+ d_axiom_asserted = true;
+ }
+ }else if( n.getKind()==NOT ){
+ Assert( n[0].getKind()==FORALL );
}
}
diff --git a/src/theory/quantifiers/full_model_check.cpp b/src/theory/quantifiers/full_model_check.cpp
index 63df56392..5cf5a4c72 100644
--- a/src/theory/quantifiers/full_model_check.cpp
+++ b/src/theory/quantifiers/full_model_check.cpp
@@ -679,6 +679,9 @@ bool FullModelChecker::doExhaustiveInstantiation( FirstOrderModel * fm, Node f,
if( d_qe->addInstantiation( f, inst ) ){
Trace("fmc-debug-inst") << "** Added instantiation." << std::endl;
d_addedLemmas++;
+ if( options::fmfOneInstPerRound() ){
+ break;
+ }
}else{
Trace("fmc-debug-inst") << "** Instantiation was duplicate." << std::endl;
//this can happen if evaluation is unknown
@@ -796,6 +799,9 @@ bool FullModelChecker::exhaustiveInstantiate(FirstOrderModelFmc * fm, Node f, No
if( d_qe->addInstantiation( f, inst ) ){
Trace("fmc-exh-debug") << " ...success.";
addedLemmas++;
+ if( options::fmfOneInstPerRound() ){
+ break;
+ }
}else{
Trace("fmc-exh-debug") << ", failed.";
}
diff --git a/src/theory/quantifiers/instantiation_engine.cpp b/src/theory/quantifiers/instantiation_engine.cpp
index 123dc02b6..53c6d9e27 100644
--- a/src/theory/quantifiers/instantiation_engine.cpp
+++ b/src/theory/quantifiers/instantiation_engine.cpp
@@ -393,17 +393,15 @@ void InstantiationEngine::debugSat( int reason ){
}
}
}
+ if( options::recurseCbqi() && !options::preSkolemQuant() && d_setIncomplete ){
+ Debug("quantifiers-sat") << "Cannot conclude SAT with nested quantifiers in recursive strategy." << std::endl;
+ //TODO : only when existentials with inst constants
+ d_quantEngine->getOutputChannel().setIncomplete();
+ }
//}
Debug("quantifiers-sat") << "return SAT: Cbqi, no quantifier is active. " << std::endl;
- //static bool setTrust = false;
- //if( !setTrust ){
- // setTrust = true;
- // Notice() << "trust-";
- //}
}else if( reason==SAT_INST_STRATEGY ){
Debug("quantifiers-sat") << "return SAT: No strategy chose to add an instantiation." << std::endl;
- //Notice() << "sat ";
- //Unimplemented();
}
}
diff --git a/src/theory/quantifiers_engine.cpp b/src/theory/quantifiers_engine.cpp
index a16f46ace..53163cd5f 100644
--- a/src/theory/quantifiers_engine.cpp
+++ b/src/theory/quantifiers_engine.cpp
@@ -266,7 +266,6 @@ void QuantifiersEngine::registerPattern( std::vector<Node> & pattern) {
}
void QuantifiersEngine::assertNode( Node f ){
- Assert( f.getKind()==FORALL );
d_model->assertQuantifier( f );
for( int i=0; i<(int)d_modules.size(); i++ ){
d_modules[i]->assertNode( f );
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback