if(!isQuantified()) {
ss << "QF_";
}
+ if (d_theories[THEORY_SEP])
+ {
+ ss << "SEP_";
+ ++seen;
+ }
if(d_theories[THEORY_ARRAYS]) {
ss << (d_sharingTheories == 1 ? "AX" : "A");
++seen;
ss << "FS";
++seen;
}
- if(d_theories[THEORY_SEP]) {
- ss << "SEP";
- ++seen;
- }
if(seen != d_sharingTheories) {
Unhandled("can't extract a logic string from LogicInfo; at least one "
"active theory is unknown to LogicInfo::getLogicString() !");
} else {
enableQuantifiers();
}
+ if (!strncmp(p, "SEP_", 4))
+ {
+ enableSeparationLogic();
+ p += 4;
+ }
if(!strncmp(p, "AX", 2)) {
enableTheory(THEORY_ARRAYS);
p += 2;
enableTheory(THEORY_SETS);
p += 2;
}
- if(!strncmp(p, "SEP", 3)) {
- enableTheory(THEORY_SEP);
- p += 3;
- }
}
}
enableHigherOrder();
}
+void LogicInfo::enableSeparationLogic()
+{
+ enableTheory(THEORY_SEP);
+ enableTheory(THEORY_UF);
+ enableTheory(THEORY_SETS);
+}
+
void LogicInfo::enableIntegers() {
PrettyCheckArgument(!d_locked, *this, "This LogicInfo is locked, and cannot be modified");
d_logicString = "";
* This means enabling quantifiers, datatypes, UF, integers, and higher order.
*/
void enableSygus();
+ /**
+ * Enable everything that is needed for separation logic. This means enabling
+ * the theories of separation logic, UF and sets.
+ */
+ void enableSeparationLogic();
// these are for arithmetic
info.arithOnlyLinear();
info.disableIntegers();
info.lock();
- TS_ASSERT_EQUALS( info.getLogicString(), "AUFBVFPDTLRASEP" );
+ TS_ASSERT_EQUALS(info.getLogicString(), "SEP_AUFBVFPDTLRA");
info = info.getUnlockedCopy();
TS_ASSERT( !info.isLocked() );
info.disableQuantifiers();
info.lock();
- TS_ASSERT_EQUALS( info.getLogicString(), "QF_AUFBVFPDTLRASEP" );
+ TS_ASSERT_EQUALS(info.getLogicString(), "QF_SEP_AUFBVFPDTLRA");
info = info.getUnlockedCopy();
TS_ASSERT( !info.isLocked() );
info.enableIntegers();
info.disableReals();
info.lock();
- TS_ASSERT_EQUALS( info.getLogicString(), "QF_AUFFPLIASEP" );
+ TS_ASSERT_EQUALS(info.getLogicString(), "QF_SEP_AUFFPLIA");
info = info.getUnlockedCopy();
TS_ASSERT( !info.isLocked() );