summaryrefslogtreecommitdiff
path: root/src/theory/strings/theory_strings.h
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-09-30 15:41:57 -0500
committerGitHub <noreply@github.com>2018-09-30 15:41:57 -0500
commit5a19b4d2d2fce73b0d29ff3d40d52c7ef1f4246b (patch)
tree5221dd7be5ec31a40b73af480fbf11ec87d765ba /src/theory/strings/theory_strings.h
parent464470c311de4d26b59a2f4ddca6960c3161997a (diff)
Add rewrite for solving stoi (#2532)
Diffstat (limited to 'src/theory/strings/theory_strings.h')
-rw-r--r--src/theory/strings/theory_strings.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/theory/strings/theory_strings.h b/src/theory/strings/theory_strings.h
index 2fd7b3525..6c653bf05 100644
--- a/src/theory/strings/theory_strings.h
+++ b/src/theory/strings/theory_strings.h
@@ -580,7 +580,12 @@ private:
void doPendingFacts();
void doPendingLemmas();
bool hasProcessed();
+ /**
+ * Adds equality a = b to the vector exp if a and b are distinct terms. It
+ * must be the case that areEqual( a, b ) holds in this context.
+ */
void addToExplanation(Node a, Node b, std::vector<Node>& exp);
+ /** Adds lit to the vector exp if it is non-null */
void addToExplanation(Node lit, std::vector<Node>& exp);
/** Register term
@@ -602,6 +607,22 @@ private:
* effort, the call to this method does nothing.
*/
void registerTerm(Node n, int effort);
+ //-------------------------------------send inferences
+ /** send internal inferences
+ *
+ * This is called when we have inferred exp => conc, where exp is a set
+ * of equalities and disequalities that hold in the current equality engine.
+ * This method adds equalities and disequalities ~( s = t ) via
+ * sendInference such that both s and t are either constants or terms
+ * that already occur in the equality engine, and ~( s = t ) is a consequence
+ * of conc. This function can be seen as a "conservative" version of
+ * sendInference below in that it does not introduce any new non-constant
+ * terms to the state.
+ *
+ * The argument c is a string identifying the reason for the interference.
+ * This string is used for debugging purposes.
+ */
+ void sendInternalInference(std::vector<Node>& exp, Node conc, const char* c);
// send lemma
void sendInference(std::vector<Node>& exp,
std::vector<Node>& exp_n,
@@ -615,6 +636,7 @@ private:
void sendLemma(Node ant, Node conc, const char* c);
void sendInfer(Node eq_exp, Node eq, const char* c);
bool sendSplit(Node a, Node b, const char* c, bool preq = true);
+ //-------------------------------------end send inferences
/** mkConcat **/
inline Node mkConcat(Node n1, Node n2);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback