summaryrefslogtreecommitdiff
path: root/src/theory/logic_info.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2014-04-10 10:31:47 -0500
committerAndrew Reynolds <andrew.j.reynolds@gmail.com>2014-04-10 10:33:24 -0500
commitc431410d0bd4a688d5d446f906d80634424dcd53 (patch)
tree8b13a5598a0ed201744e0a44669f8ade1eac2af3 /src/theory/logic_info.cpp
parentfccff6adcc0a69273a54110596214f7927a96033 (diff)
Add support for cardinality constraints logic UFC. Add regressions in fmf/. Fix datatypes E-matching bug. Change defaults : mbqi=fmc, decision heuristic stoponly=false for quantified logics, decision=justification for ALL_SUPPORTED, full-saturate-quant=false. Minor fix for fmc models. Add infrastructure to datatypes to prepare for next commit.
Diffstat (limited to 'src/theory/logic_info.cpp')
-rw-r--r--src/theory/logic_info.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/theory/logic_info.cpp b/src/theory/logic_info.cpp
index c079eecf9..78f4996b8 100644
--- a/src/theory/logic_info.cpp
+++ b/src/theory/logic_info.cpp
@@ -37,6 +37,7 @@ LogicInfo::LogicInfo() :
d_reals(true),
d_linear(true),// for now, "everything enabled" doesn't include non-linear arith
d_differenceLogic(false),
+ d_cardinalityConstraints(false),
d_locked(false) {
for(TheoryId id = THEORY_FIRST; id < THEORY_LAST; ++id) {
@@ -52,6 +53,7 @@ LogicInfo::LogicInfo(std::string logicString) throw(IllegalArgumentException) :
d_reals(false),
d_linear(false),
d_differenceLogic(false),
+ d_cardinalityConstraints(false),
d_locked(false) {
setLogicString(logicString);
@@ -66,6 +68,7 @@ LogicInfo::LogicInfo(const char* logicString) throw(IllegalArgumentException) :
d_reals(false),
d_linear(false),
d_differenceLogic(false),
+ d_cardinalityConstraints(false),
d_locked(false) {
setLogicString(logicString);
@@ -97,6 +100,9 @@ std::string LogicInfo::getLogicString() const {
ss << "UF";
++seen;
}
+ if( d_cardinalityConstraints ){
+ ss << "C";
+ }
if(d_theories[THEORY_BV]) {
ss << "BV";
++seen;
@@ -191,6 +197,10 @@ void LogicInfo::setLogicString(std::string logicString) throw(IllegalArgumentExc
enableTheory(THEORY_UF);
p += 2;
}
+ if(!strncmp(p, "C", 1 )) {
+ d_cardinalityConstraints = true;
+ p += 1;
+ }
// allow BV or DT in either order
if(!strncmp(p, "BV", 2)) {
enableTheory(THEORY_BV);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback