diff options
author | Morgan Deters <mdeters@gmail.com> | 2012-06-12 21:11:15 +0000 |
---|---|---|
committer | Morgan Deters <mdeters@gmail.com> | 2012-06-12 21:11:15 +0000 |
commit | 9348417ac5f12e8269a52a7c9b5a01a4aa558c74 (patch) | |
tree | 0b983b0eed731d24bf102aecb2f5a9892984be8b | |
parent | bd346889a03d0b1c6ab56d18d39d966f4782a58c (diff) |
Fix to SMT-LIBv1 parser: QF_UF declares sort "U", but other *UF* logics do not (e.g. QF_UFLIA).
Also fix a syntax error in a regression test (CVC4 is too lenient to catch it though---CVC3 tripped over it).
Also add additional parts for "make submission" in the top-level makefile
-rw-r--r-- | Makefile | 19 | ||||
-rw-r--r-- | src/parser/smt/smt.cpp | 42 | ||||
-rw-r--r-- | src/parser/smt/smt.h | 1 | ||||
-rw-r--r-- | test/regress/regress0/uflia/error0.smt2 | 2 |
4 files changed, 40 insertions, 24 deletions
@@ -44,13 +44,30 @@ examples: all YEAR := $(shell date +%Y) submission: if [ ! -e configure ]; then ./autogen.sh; fi - ./configure competition --disable-shared --enable-static-binary --with-cln + ./configure competition --disable-shared --enable-static-binary --with-cln --with-portfolio $(MAKE) strip builds/bin/cvc4 $(MAKE) regress1 + strip builds/bin/pcvc4 + $(MAKE) regress1 BINARY=pcvc4 + # main track mkdir -p cvc4-smtcomp-$(YEAR) cp -p builds/bin/cvc4 cvc4-smtcomp-$(YEAR)/cvc4 ( echo '#!/bin/sh'; \ echo 'exec ./cvc4 -L smt2 --no-interactive' ) > cvc4-smtcomp-$(YEAR)/run chmod 755 cvc4-smtcomp-$(YEAR)/run tar cf cvc4-smtcomp-$(YEAR).tar cvc4-smtcomp-$(YEAR) + # parallel track + mkdir -p cvc4-parallel-smtcomp-$(YEAR) + cp -p builds/bin/pcvc4 cvc4-parallel-smtcomp-$(YEAR)/pcvc4 + ( echo '#!/bin/sh'; \ + echo 'exec ./pcvc4 -L smt2 --no-interactive' ) > cvc4-parallel-smtcomp-$(YEAR)/run + chmod 755 cvc4-parallel-smtcomp-$(YEAR)/run + tar cf cvc4-parallel-smtcomp-$(YEAR).tar cvc4-parallel-smtcomp-$(YEAR) + # application track + mkdir -p cvc4-application-smtcomp-$(YEAR) + cp -p builds/bin/cvc4 cvc4-application-smtcomp-$(YEAR)/cvc4 + ( echo '#!/bin/sh'; \ + echo 'exec ./cvc4 -L smt2 --no-interactive --incremental' ) > cvc4-application-smtcomp-$(YEAR)/run + chmod 755 cvc4-application-smtcomp-$(YEAR)/run + tar cf cvc4-application-smtcomp-$(YEAR).tar cvc4-application-smtcomp-$(YEAR) diff --git a/src/parser/smt/smt.cpp b/src/parser/smt/smt.cpp index 4d3c1d086..e554cee10 100644 --- a/src/parser/smt/smt.cpp +++ b/src/parser/smt/smt.cpp @@ -175,11 +175,6 @@ bool Smt::logicIsSet() { return d_logicSet; } -inline void Smt::addUf() { - addTheory(Smt::THEORY_EMPTY); - addOperator(kind::APPLY_UF); -} - void Smt::setLogic(const std::string& name) { d_logicSet = true; d_logic = toLogic(name); @@ -209,24 +204,25 @@ void Smt::setLogic(const std::string& name) { case QF_UFLIA: case QF_UFNIA:// nonstandard logic addTheory(THEORY_INTS); - addUf(); + addOperator(kind::APPLY_UF); break; case QF_UFLRA: case QF_UFNRA: addTheory(THEORY_REALS); - addUf(); + addOperator(kind::APPLY_UF); break; case QF_UFLIRA:// nonstandard logic case QF_UFNIRA:// nonstandard logic addTheory(THEORY_INTS); addTheory(THEORY_REALS); - addUf(); + addOperator(kind::APPLY_UF); break; case QF_UF: - addUf(); + addTheory(THEORY_EMPTY); + addOperator(kind::APPLY_UF); break; case QF_BV: @@ -239,25 +235,25 @@ void Smt::setLogic(const std::string& name) { break; case QF_UFBV: - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_BITVECTORS); break; case QF_AUFBV: - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_ARRAYS_EX); addTheory(THEORY_BITVECTORS); break; case QF_AUFBVLIA: - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_ARRAYS_EX); addTheory(THEORY_BITVECTORS); addTheory(THEORY_INTS); break; case QF_AUFBVLRA: - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_ARRAYS_EX); addTheory(THEORY_BITVECTORS); addTheory(THEORY_REALS); @@ -265,13 +261,13 @@ void Smt::setLogic(const std::string& name) { case QF_AUFLIA: addTheory(THEORY_INT_ARRAYS_EX); - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_INTS); break; case QF_AUFLIRA: addTheory(THEORY_INT_INT_REAL_ARRAY_ARRAYS_EX); - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_INTS); addTheory(THEORY_REALS); break; @@ -281,14 +277,14 @@ void Smt::setLogic(const std::string& name) { /* fall through */ case QF_ALL_SUPPORTED: addTheory(THEORY_ARRAYS_EX); - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_INTS); addTheory(THEORY_REALS); addTheory(THEORY_BITVECTORS); break; case AUFLIA: - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_INTS); addTheory(THEORY_INT_ARRAYS_EX); addTheory(THEORY_QUANTIFIERS); @@ -296,7 +292,7 @@ void Smt::setLogic(const std::string& name) { case AUFLIRA: case AUFNIRA: - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_INTS); addTheory(THEORY_REALS); addTheory(THEORY_INT_INT_REAL_ARRAY_ARRAYS_EX); @@ -304,20 +300,24 @@ void Smt::setLogic(const std::string& name) { break; case LRA: + addTheory(THEORY_REALS); + addTheory(THEORY_QUANTIFIERS); + break; + case UFNIA: - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_INTS); addTheory(THEORY_QUANTIFIERS); break; case UFNIRA: - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_INTS); addTheory(THEORY_REALS); addTheory(THEORY_QUANTIFIERS); break; case UFLRA: - addUf(); + addOperator(kind::APPLY_UF); addTheory(THEORY_REALS); addTheory(THEORY_QUANTIFIERS); break; diff --git a/src/parser/smt/smt.h b/src/parser/smt/smt.h index 7b1dfc345..b82d3a01c 100644 --- a/src/parser/smt/smt.h +++ b/src/parser/smt/smt.h @@ -116,7 +116,6 @@ public: private: void addArithmeticOperators(); - void addUf(); static std::hash_map<const std::string, Logic, CVC4::StringHashFunction> newLogicMap(); };/* class Smt */ diff --git a/test/regress/regress0/uflia/error0.smt2 b/test/regress/regress0/uflia/error0.smt2 index 614645cb4..73177a252 100644 --- a/test/regress/regress0/uflia/error0.smt2 +++ b/test/regress/regress0/uflia/error0.smt2 @@ -3,7 +3,7 @@ (declare-sort U 0) (set-info :source "Currently this example asserts both a literal and its negation to a theory.") (set-info :status unsat) -(set-info :category industrial) +(set-info :category "industrial") (set-info :difficulty 0) (declare-fun arg0 () Int) (declare-fun arg1 () Int) |