void ArithStaticLearner::replaceWithPseudoboolean(TNode var) {
AssertArgument(var.getMetaKind() == kind::metakind::VARIABLE, var);
+ // [MGD 10/21/2011] disable pseudobooleans for now (as discussed in today's meeting)
+ /*
TypeNode pbType = NodeManager::currentNM()->pseudobooleanType();
Node pbVar = NodeManager::currentNM()->mkVar(string("PB[") + var.toString() + ']', pbType);
d_pbSubstitutions.addSubstitution(var, pbVar);
Expr::printtypes::Scope pts(Debug("pb"), true);
Debug("pb") << "will replace " << var << " with " << pbVar << endl;
}
+ */
}
void ArithStaticLearner::iteMinMax(TNode n, NodeBuilder<>& learned){
*
* @param n - a theory lemma valid at decision level 0
* @param removable - whether the lemma can be removed at any point
+ * @return the user level at which the lemma resides; it will be
+ * removed when this user level pops
*/
- virtual void lemma(TNode n, bool removable = false) throw(TypeCheckingExceptionPrivate, AssertionException) = 0;
+ virtual unsigned lemma(TNode n, bool removable = false) throw(TypeCheckingExceptionPrivate, AssertionException) = 0;
/**
* Request a split on a new theory atom. This is equivalent to
d_engine->propagate(literal, d_theory);
}
- void lemma(TNode lemma, bool removable = false) throw(TypeCheckingExceptionPrivate, AssertionException) {
+ unsigned lemma(TNode lemma, bool removable = false) throw(TypeCheckingExceptionPrivate, AssertionException) {
Trace("theory") << "EngineOutputChannel<" << d_theory << ">::lemma(" << lemma << ")" << std::endl;
++ d_statistics.lemmas;
- d_engine->lemma(lemma, false, removable);
+ return d_engine->lemma(lemma, false, removable);
}
void setIncomplete() throw(AssertionException) {
/**
* Adds a new lemma
*/
- void lemma(TNode node, bool negated, bool removable) {
+ unsigned lemma(TNode node, bool negated, bool removable) {
if(Dump.isOn("t-lemmas")) {
Dump("t-lemmas") << CommentCommand("theory lemma: expect valid") << std::endl
// Mark that we added some lemmas
d_lemmasAdded = true;
+
+ // Lemma analysis isn't online yet; this lemma may only live for this
+ // user level.
+ return d_userContext->getLevel();
}
public:
--disable-arithmetic-propagation turns on arithmetic propagation\n\
--disable-symmetry-breaker turns off UF symmetry breaker (Deharbe et al., CADE 2011)\n\
--incremental | -i enable incremental solving\n\
- --time-limit=MS enable time limiting (give milliseconds)\n\
- --time-limit-per=MS enable time limiting per query (give milliseconds)\n\
- --limit=N enable resource limiting\n\
- --limit-per=N enable resource limiting per query\n";
+ --tlimit=MS enable time limiting (give milliseconds)\n\
+ --tlimit-per=MS enable time limiting per query (give milliseconds)\n\
+ --rlimit=N enable resource limiting\n\
+ --rlimit-per=N enable resource limiting per query\n";
#warning "Change CL options as --disable-variable-removal cannot do anything currently."
DISABLE_SYMMETRY_BREAKER,
TIME_LIMIT,
TIME_LIMIT_PER,
- LIMIT,
- LIMIT_PER
+ RESOURCE_LIMIT,
+ RESOURCE_LIMIT_PER
};/* enum OptionValue */
/**
{ "disable-variable-removal", no_argument, NULL, ARITHMETIC_VARIABLE_REMOVAL },
{ "disable-arithmetic-propagation", no_argument, NULL, ARITHMETIC_PROPAGATION },
{ "disable-symmetry-breaker", no_argument, NULL, DISABLE_SYMMETRY_BREAKER },
- { "time-limit" , required_argument, NULL, TIME_LIMIT },
- { "time-limit-per", required_argument, NULL, TIME_LIMIT_PER },
- { "limit" , required_argument, NULL, LIMIT },
- { "limit-per" , required_argument, NULL, LIMIT_PER },
+ { "tlimit" , required_argument, NULL, TIME_LIMIT },
+ { "tlimit-per" , required_argument, NULL, TIME_LIMIT_PER },
+ { "rlimit" , required_argument, NULL, RESOURCE_LIMIT },
+ { "rlimit-per" , required_argument, NULL, RESOURCE_LIMIT_PER },
{ NULL , no_argument , NULL, '\0' }
};/* if you add things to the above, please remember to update usage.h! */
perCallMillisecondLimit = (unsigned long) i;
}
break;
- case LIMIT:
+ case RESOURCE_LIMIT:
{
int i = atoi(optarg);
if(i < 0) {
cumulativeResourceLimit = (unsigned long) i;
}
break;
- case LIMIT_PER:
+ case RESOURCE_LIMIT_PER:
{
int i = atoi(optarg);
if(i < 0) {