summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2017-05-31 15:51:35 -0500
committerajreynol <andrew.j.reynolds@gmail.com>2017-05-31 15:51:40 -0500
commit73a60e60a6036f635e8819c672c227156b351964 (patch)
tree7a6693b16d956eb8c676d453b0a289f4be94420b /src
parentd121faf54238a0859cdc2cf1d3d2889631cbfa3a (diff)
Fix model construction for BV with cbqi. Minor change to defaults.
Diffstat (limited to 'src')
-rw-r--r--src/smt/smt_engine.cpp1
-rw-r--r--src/theory/bv/aig_bitblaster.cpp18
-rw-r--r--src/theory/bv/bv_subtheory_core.cpp3
3 files changed, 9 insertions, 13 deletions
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index ace33a164..aba4f3ffc 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -1855,6 +1855,7 @@ void SmtEngine::setDefaults() {
if( d_logic.isQuantified() &&
( ( options::decisionMode()!=decision::DECISION_STRATEGY_INTERNAL &&
( d_logic.isTheoryEnabled(THEORY_ARITH) || d_logic.isTheoryEnabled(THEORY_DATATYPES) || d_logic.isTheoryEnabled(THEORY_BV) ) ) ||
+ d_logic.isPure(THEORY_ARITH) || d_logic.isPure(THEORY_BV) ||
options::cbqiAll() ) ){
if( !options::cbqi.wasSetByUser() ){
options::cbqi.set( true );
diff --git a/src/theory/bv/aig_bitblaster.cpp b/src/theory/bv/aig_bitblaster.cpp
index 934e2fffd..a726a0fcd 100644
--- a/src/theory/bv/aig_bitblaster.cpp
+++ b/src/theory/bv/aig_bitblaster.cpp
@@ -232,12 +232,6 @@ Abc_Obj_t* AigBitblaster::bbFormula(TNode node) {
result = node.getConst<bool>() ? mkTrue<Abc_Obj_t*>() : mkFalse<Abc_Obj_t*>();
break;
}
- case kind::VARIABLE:
- case kind::SKOLEM:
- {
- result = mkInput(node);
- break;
- }
case kind::EQUAL:
{
if( node[0].getType().isBoolean() ){
@@ -251,8 +245,12 @@ Abc_Obj_t* AigBitblaster::bbFormula(TNode node) {
//else, continue...
}
default:
- bbAtom(node);
- result = getBBAtom(node);
+ if( isVar(node) ){
+ result = mkInput(node);
+ }else{
+ bbAtom(node);
+ result = getBBAtom(node);
+ }
}
cacheAig(node, result);
@@ -315,9 +313,7 @@ void AigBitblaster::makeVariable(TNode node, Bits& bits) {
Abc_Obj_t* AigBitblaster::mkInput(TNode input) {
Assert (!hasInput(input));
Assert(input.getKind() == kind::BITVECTOR_BITOF ||
- (input.getType().isBoolean() &&
- (input.getKind() == kind::VARIABLE ||
- input.getKind() == kind::SKOLEM)));
+ (input.getType().isBoolean() && input.isVar()));
Abc_Obj_t* aig_input = Abc_NtkCreatePi(currentAigNtk());
// d_aigCache.insert(std::make_pair(input, aig_input));
d_nodeToAigInput.insert(std::make_pair(input, aig_input));
diff --git a/src/theory/bv/bv_subtheory_core.cpp b/src/theory/bv/bv_subtheory_core.cpp
index c59da27f4..ccce819e6 100644
--- a/src/theory/bv/bv_subtheory_core.cpp
+++ b/src/theory/bv/bv_subtheory_core.cpp
@@ -238,8 +238,7 @@ void CoreSolver::buildModel() {
TNode repr = *eqcs_i;
++eqcs_i;
- if (repr.getKind() != kind::VARIABLE &&
- repr.getKind() != kind::SKOLEM &&
+ if (!repr.isVar() &&
repr.getKind() != kind::CONST_BITVECTOR &&
!d_bv->isSharedTerm(repr)) {
continue;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback