d_internal->propagate(e);
}
-void TheoryArith::collectModelInfo( TheoryModel* m, bool fullModel ){
- d_internal->collectModelInfo(m, fullModel);
+void TheoryArith::collectModelInfo( TheoryModel* m ){
+ d_internal->collectModelInfo(m);
}
void TheoryArith::notifyRestart(){
bool getCurrentSubstitution( int effort, std::vector< Node >& vars, std::vector< Node >& subs, std::map< Node, std::vector< Node > >& exp );
bool isExtfReduced( int effort, Node n, Node on, std::vector< Node >& exp );
- void collectModelInfo( TheoryModel* m, bool fullModel );
+ void collectModelInfo( TheoryModel* m );
void shutdown(){ }
return belowMin;
}
-void TheoryArithPrivate::collectModelInfo( TheoryModel* m, bool fullModel ){
+void TheoryArithPrivate::collectModelInfo( TheoryModel* m ){
AlwaysAssert(d_qflraStatus == Result::SAT);
//AlwaysAssert(!d_nlIncomplete, "Arithmetic solver cannot currently produce models for input with nonlinear arithmetic constraints");
Rational deltaValueForTotalOrder() const;
- void collectModelInfo( TheoryModel* m, bool fullModel );
+ void collectModelInfo( TheoryModel* m );
void shutdown(){ }
/////////////////////////////////////////////////////////////////////////////
-void TheoryArrays::collectModelInfo( TheoryModel* m, bool fullModel )
+void TheoryArrays::collectModelInfo( TheoryModel* m )
{
set<Node> termSet;
public:
- void collectModelInfo(TheoryModel* m, bool fullModel);
+ void collectModelInfo(TheoryModel* m);
/////////////////////////////////////////////////////////////////////////////
// NOTIFICATIONS
return d_needsLastCallCheck;
}
-void TheoryBV::collectModelInfo( TheoryModel* m, bool fullModel ){
+void TheoryBV::collectModelInfo( TheoryModel* m ){
Assert(!inConflict());
if (options::bitblastMode() == theory::bv::BITBLAST_MODE_EAGER) {
- d_eagerSolver->collectModelInfo(m, fullModel);
+ d_eagerSolver->collectModelInfo(m, true);
}
for (unsigned i = 0; i < d_subtheories.size(); ++i) {
if (d_subtheories[i]->isComplete()) {
- d_subtheories[i]->collectModelInfo(m, fullModel);
+ d_subtheories[i]->collectModelInfo(m, true);
return;
}
}
Node explain(TNode n);
- void collectModelInfo( TheoryModel* m, bool fullModel );
+ void collectModelInfo( TheoryModel* m );
std::string identify() const { return std::string("TheoryBV"); }
Trace("dt-cg-summary") << "...done, # pairs = " << n_pairs << std::endl;
}
-void TheoryDatatypes::collectModelInfo( TheoryModel* m, bool fullModel ){
+void TheoryDatatypes::collectModelInfo( TheoryModel* m ){
Trace("dt-cmi") << "Datatypes : Collect model info " << d_equalityEngine.consistent() << std::endl;
Trace("dt-model") << std::endl;
printModelDebug( "dt-model" );
void presolve();
void addSharedTerm(TNode t);
EqualityStatus getEqualityStatus(TNode a, TNode b);
- void collectModelInfo( TheoryModel* m, bool fullModel );
+ void collectModelInfo( TheoryModel* m );
void shutdown() { }
std::string identify() const { return std::string("TheoryDatatypes"); }
/** equality engine */
//do nothing
}
-void TheoryQuantifiers::collectModelInfo(TheoryModel* m, bool fullModel) {
- if(fullModel) {
- for(assertions_iterator i = facts_begin(); i != facts_end(); ++i) {
- if((*i).assertion.getKind() == kind::NOT) {
- Debug("quantifiers::collectModelInfo") << "got quant FALSE: " << (*i).assertion[0] << endl;
- m->assertPredicate((*i).assertion[0], false);
- } else {
- Debug("quantifiers::collectModelInfo") << "got quant TRUE : " << *i << endl;
- m->assertPredicate(*i, true);
- }
+void TheoryQuantifiers::collectModelInfo(TheoryModel* m) {
+ for(assertions_iterator i = facts_begin(); i != facts_end(); ++i) {
+ if((*i).assertion.getKind() == kind::NOT) {
+ Debug("quantifiers::collectModelInfo") << "got quant FALSE: " << (*i).assertion[0] << endl;
+ m->assertPredicate((*i).assertion[0], false);
+ } else {
+ Debug("quantifiers::collectModelInfo") << "got quant TRUE : " << *i << endl;
+ m->assertPredicate(*i, true);
}
}
}
void check(Effort e);
Node getNextDecisionRequest( unsigned& priority );
Node getValue(TNode n);
- void collectModelInfo( TheoryModel* m, bool fullModel );
+ void collectModelInfo( TheoryModel* m );
void shutdown() { }
std::string identify() const { return std::string("TheoryQuantifiers"); }
void setUserAttribute(const std::string& attr, Node n, std::vector<Node> node_values, std::string str_value);
/////////////////////////////////////////////////////////////////////////////
-void TheorySep::collectModelInfo( TheoryModel* m, bool fullModel ){
+void TheorySep::collectModelInfo( TheoryModel* m ){
set<Node> termSet;
// Compute terms appearing in assertions and shared terms
public:
- void collectModelInfo(TheoryModel* m, bool fullModel);
+ void collectModelInfo(TheoryModel* m);
void postProcessModel(TheoryModel* m);
/////////////////////////////////////////////////////////////////////////////
d_internal->check(e);
}
-void TheorySets::collectModelInfo(TheoryModel* m, bool fullModel) {
- d_internal->collectModelInfo(m, fullModel);
+void TheorySets::collectModelInfo(TheoryModel* m) {
+ d_internal->collectModelInfo(m);
}
void TheorySets::computeCareGraph() {
void check(Effort);
- void collectModelInfo(TheoryModel*, bool fullModel);
+ void collectModelInfo(TheoryModel* m);
void computeCareGraph();
/******************** Model generation ********************/
-void TheorySetsPrivate::collectModelInfo(TheoryModel* m, bool fullModel) {
+void TheorySetsPrivate::collectModelInfo(TheoryModel* m) {
Trace("sets-model") << "Set collect model info" << std::endl;
set<Node> termSet;
// Compute terms appearing in assertions and shared terms
void check(Theory::Effort);
- void collectModelInfo(TheoryModel*, bool fullModel);
+ void collectModelInfo(TheoryModel* m);
void computeCareGraph();
/////////////////////////////////////////////////////////////////////////////
-void TheoryStrings::collectModelInfo( TheoryModel* m, bool fullModel ) {
- Trace("strings-model") << "TheoryStrings : Collect model info, fullModel = " << fullModel << std::endl;
+void TheoryStrings::collectModelInfo( TheoryModel* m ) {
+ Trace("strings-model") << "TheoryStrings : Collect model info" << std::endl;
Trace("strings-model") << "TheoryStrings : assertEqualityEngine." << std::endl;
//AJR : no use doing this since we cannot preregister terms with finite types that don't belong to strings.
// MODEL GENERATION
/////////////////////////////////////////////////////////////////////////////
public:
- void collectModelInfo(TheoryModel* m, bool fullModel);
+ void collectModelInfo(TheoryModel* m);
/////////////////////////////////////////////////////////////////////////////
// NOTIFICATIONS
* Get all relevant information in this theory regarding the current
* model. This should be called after a call to check( FULL_EFFORT )
* for all theories with no conflicts and no lemmas added.
- * If fullModel is true, then we must specify sufficient information for
- * the model class to construct constant representatives for each equivalence
- * class.
*/
- virtual void collectModelInfo( TheoryModel* m, bool fullModel ){ }
+ virtual void collectModelInfo( TheoryModel* m ){ }
/** if theories want to do something with model after building, do it here */
virtual void postProcessModel( TheoryModel* m ){ }
if(d_logicInfo.isQuantified()) {
// quantifiers engine must pass effort last call check
d_quantEngine->check(Theory::EFFORT_LAST_CALL);
- // if returning incomplete or SAT, we have ensured that d_curr_model has been built with fullModel=true
+ // if returning incomplete or SAT, we have ensured that d_curr_model has been built
} else if(options::produceModels() && !d_curr_model->isBuilt()) {
// must build model at this point
d_curr_model_builder->buildModel(d_curr_model);
return true;
}
-void TheoryEngine::collectModelInfo( theory::TheoryModel* m, bool fullModel ){
- Assert( fullModel ); // AJR : FIXME : remove/simplify fullModel argument everywhere
+void TheoryEngine::collectModelInfo( theory::TheoryModel* m ){
//have shared term engine collectModelInfo
- // d_sharedTerms.collectModelInfo( m, fullModel );
+ // d_sharedTerms.collectModelInfo( m );
// Consult each active theory to get all relevant information
// concerning the model.
for(TheoryId theoryId = theory::THEORY_FIRST; theoryId < theory::THEORY_LAST; ++theoryId) {
if(d_logicInfo.isTheoryEnabled(theoryId)) {
Trace("model-builder") << " CollectModelInfo on theory: " << theoryId << endl;
- d_theoryTable[theoryId]->collectModelInfo( m, fullModel );
+ d_theoryTable[theoryId]->collectModelInfo( m );
}
}
// Get the Boolean variables
/**
* collect model info
*/
- void collectModelInfo( theory::TheoryModel* m, bool fullModel );
+ void collectModelInfo( theory::TheoryModel* m );
/** post process model */
void postProcessModel( theory::TheoryModel* m );
Trace("model-builder") << "TheoryEngineModelBuilder: buildModel" << std::endl;
TheoryModel* tm = (TheoryModel*)m;
- // buildModel with fullModel = true should only be called once in any context
+ // buildModel should only be called once per check
Assert(!tm->isBuilt());
tm->d_modelBuilt = true;
// Collect model info from the theories
Trace("model-builder") << "TheoryEngineModelBuilder: Collect model info..." << std::endl;
- d_te->collectModelInfo(tm, true);
+ d_te->collectModelInfo(tm);
// model-builder specific initialization
if( !preProcessBuildModel(tm) ){
* This function tells the model that n should be the representative of its equivalence class.
* It should be called during model generation, before final representatives are chosen. In the
* case of TheoryEngineModelBuilder, it should be called during Theory's collectModelInfo( ... )
- * functions where fullModel = true.
+ * functions.
*/
void assertRepresentative(TNode n);
public:
return mkAnd(assumptions);
}
-void TheoryUF::collectModelInfo( TheoryModel* m, bool fullModel ){
+void TheoryUF::collectModelInfo( TheoryModel* m ){
set<Node> termSet;
// Compute terms appearing in assertions and shared terms
void preRegisterTerm(TNode term);
Node explain(TNode n);
- void collectModelInfo( TheoryModel* m, bool fullModel );
+ void collectModelInfo( TheoryModel* m );
void ppStaticLearn(TNode in, NodeBuilder<>& learned);
void presolve();