diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2017-11-27 19:23:49 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-27 19:23:49 -0600 |
commit | d552ca179b8723a93c6e0dae61242ceb1ccaa717 (patch) | |
tree | 428a0bd7fb91432edea38cedb9fd323a90a66535 | |
parent | f3270fb3629cbc62012ae7eb30843a1bc6d4e3c2 (diff) |
Fix models for --solve-real-as-int. (#1371)
-rw-r--r-- | src/smt/smt_engine.cpp | 2 | ||||
-rw-r--r-- | test/regress/regress0/nl/Makefile.am | 1 | ||||
-rw-r--r-- | test/regress/regress0/nl/real-as-int.smt2 | 10 |
3 files changed, 13 insertions, 0 deletions
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp index 1a35c9901..65dae6b8f 100644 --- a/src/smt/smt_engine.cpp +++ b/src/smt/smt_engine.cpp @@ -2805,6 +2805,8 @@ Node SmtEnginePrivate::realToInt(TNode n, NodeMap& cache, std::vector< Node >& v if( !n.getType().isInteger() ){ ret = NodeManager::currentNM()->mkSkolem("__realToInt_var", NodeManager::currentNM()->integerType(), "Variable introduced in realToInt pass"); var_eq.push_back( n.eqNode( ret ) ); + TheoryModel* m = d_smt.d_theoryEngine->getModel(); + m->addSubstitution(n,ret); } } } diff --git a/test/regress/regress0/nl/Makefile.am b/test/regress/regress0/nl/Makefile.am index 9881b3e72..9fb581565 100644 --- a/test/regress/regress0/nl/Makefile.am +++ b/test/regress/regress0/nl/Makefile.am @@ -51,6 +51,7 @@ TESTS = \ div-mod-partial.smt2 \ all-logic.smt2 \ sqrt-problem-1.smt2 \ + real-as-int.smt2 \ nta/bad-050217.smt2 \ nta/cos-bound.smt2 \ nta/cos-sig-value.smt2 \ diff --git a/test/regress/regress0/nl/real-as-int.smt2 b/test/regress/regress0/nl/real-as-int.smt2 new file mode 100644 index 000000000..9599b6e6b --- /dev/null +++ b/test/regress/regress0/nl/real-as-int.smt2 @@ -0,0 +1,10 @@ +; COMMAND-LINE: --solve-real-as-int +; EXPECT: sat +(set-logic QF_NRA) +(set-info :status sat) +(declare-fun a () Real) +(declare-fun b () Real) +(assert (= (* a a) 4)) +(assert (= (* b b) 0)) +(assert (= (+ (* a a) (* b b)) 4)) +(check-sat) |