Register lower bound for str.to_int (#4408)
authorAndres Noetzli <andres.noetzli@gmail.com>
Tue, 28 Apr 2020 20:10:16 +0000 (13:10 -0700)
committerGitHub <noreply@github.com>
Tue, 28 Apr 2020 20:10:16 +0000 (15:10 -0500)
This commit changes the term registration for str.to_int terms. Before, we were not sending out any lemmas when registering str.to_int terms. Now, we send a simple lemma that asserts that the value is greater or equal to negative one.

src/theory/strings/term_registry.cpp

index 4f1e41ebb87abe198de0f8700828c82192c9ff8c..3d898b40b9879e45e9755df325ef1d2aa015ddcb 100644 (file)
@@ -225,6 +225,10 @@ void TermRegistry::registerTerm(Node n, int effort)
                             nm->mkNode(GEQ, n, nm->mkConst(Rational(-1))),
                             nm->mkNode(LEQ, n, len));
   }
+  else if (n.getKind() == STRING_STOI)
+  {
+    regTermLem = nm->mkNode(GEQ, n, nm->mkConst(Rational(-1)));
+  }
   if (!regTermLem.isNull())
   {
     Trace("strings-lemma") << "Strings::Lemma REG-TERM : " << regTermLem