summaryrefslogtreecommitdiff
path: root/src/theory/theory_model_builder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/theory_model_builder.cpp')
-rw-r--r--src/theory/theory_model_builder.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/theory/theory_model_builder.cpp b/src/theory/theory_model_builder.cpp
index e43cb26c8..2acbe2388 100644
--- a/src/theory/theory_model_builder.cpp
+++ b/src/theory/theory_model_builder.cpp
@@ -21,6 +21,7 @@
#include "options/smt_options.h"
#include "options/theory_options.h"
#include "options/uf_options.h"
+#include "smt/env.h"
#include "theory/rewriter.h"
#include "theory/uf/theory_uf_model.h"
@@ -31,6 +32,8 @@ using namespace cvc5::context;
namespace cvc5 {
namespace theory {
+TheoryEngineModelBuilder::TheoryEngineModelBuilder(Env& env) : d_env(env) {}
+
void TheoryEngineModelBuilder::Assigner::initialize(
TypeNode tn, TypeEnumeratorProperties* tep, const std::vector<Node>& aes)
{
@@ -64,8 +67,6 @@ Node TheoryEngineModelBuilder::Assigner::getNextAssignment()
return n;
}
-TheoryEngineModelBuilder::TheoryEngineModelBuilder() {}
-
Node TheoryEngineModelBuilder::evaluateEqc(TheoryModel* m, TNode r)
{
eq::EqClassIterator eqc_i = eq::EqClassIterator(r, m->d_equalityEngine);
@@ -129,7 +130,7 @@ bool TheoryEngineModelBuilder::isAssignable(TNode n)
{
// selectors are always assignable (where we guarantee that they are not
// evaluatable here)
- if (!options::ufHo())
+ if (!d_env.getLogicInfo().isHigherOrder())
{
Assert(!n.getType().isFunction());
return true;
@@ -151,7 +152,7 @@ bool TheoryEngineModelBuilder::isAssignable(TNode n)
else
{
// non-function variables, and fully applied functions
- if (!options::ufHo())
+ if (!d_env.getLogicInfo().isHigherOrder())
{
// no functions exist, all functions are fully applied
Assert(n.getKind() != kind::HO_APPLY);
@@ -1228,7 +1229,7 @@ bool TheoryEngineModelBuilder::processBuildModel(TheoryModel* m)
void TheoryEngineModelBuilder::assignFunction(TheoryModel* m, Node f)
{
- Assert(!options::ufHo());
+ Assert(!d_env.getLogicInfo().isHigherOrder());
uf::UfModelTree ufmt(f);
Node default_v;
for (size_t i = 0; i < m->d_uf_terms[f].size(); i++)
@@ -1273,7 +1274,7 @@ void TheoryEngineModelBuilder::assignFunction(TheoryModel* m, Node f)
void TheoryEngineModelBuilder::assignHoFunction(TheoryModel* m, Node f)
{
- Assert(options::ufHo());
+ Assert(d_env.getLogicInfo().isHigherOrder());
TypeNode type = f.getType();
std::vector<TypeNode> argTypes = type.getArgTypes();
std::vector<Node> args;
@@ -1397,7 +1398,7 @@ void TheoryEngineModelBuilder::assignFunctions(TheoryModel* m)
Trace("model-builder") << "Assigning function values..." << std::endl;
std::vector<Node> funcs_to_assign = m->getFunctionsToAssign();
- if (options::ufHo())
+ if (d_env.getLogicInfo().isHigherOrder())
{
// sort based on type size if higher-order
Trace("model-builder") << "Sort functions by type..." << std::endl;
@@ -1424,7 +1425,7 @@ void TheoryEngineModelBuilder::assignFunctions(TheoryModel* m)
Trace("model-builder") << " Function #" << k << " is " << f << std::endl;
// std::map< Node, std::vector< Node > >::iterator itht =
// m->d_ho_uf_terms.find( f );
- if (!options::ufHo())
+ if (!d_env.getLogicInfo().isHigherOrder())
{
Trace("model-builder") << " Assign function value for " << f
<< " based on APPLY_UF" << std::endl;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback