summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/extended_rewrite.h
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-07-07 07:49:11 +0100
committerAndres Noetzli <andres.noetzli@gmail.com>2018-07-06 23:49:11 -0700
commitad454857a1f57386f7b132c01ad460750ca8d3aa (patch)
tree24644b6532e1b38e659d8aca8a792f464de2d408 /src/theory/quantifiers/extended_rewrite.h
parent97ab81d20887f58c90365ba622c7c84148ca8033 (diff)
sygusComp2018: improve extended rewriter for Bool (#2107)
Diffstat (limited to 'src/theory/quantifiers/extended_rewrite.h')
-rw-r--r--src/theory/quantifiers/extended_rewrite.h17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/theory/quantifiers/extended_rewrite.h b/src/theory/quantifiers/extended_rewrite.h
index 37c179f94..4d3f08b1d 100644
--- a/src/theory/quantifiers/extended_rewrite.h
+++ b/src/theory/quantifiers/extended_rewrite.h
@@ -87,6 +87,12 @@ class ExtendedRewriter
* strictly decrease the term size of n.
*/
Node extendedRewriteIte(Kind itek, Node n, bool full = true);
+ /** Rewrite AND/OR
+ *
+ * This implements BCP, factoring, and equality resolution for the Boolean
+ * term n whose top symbolic is AND/OR.
+ */
+ Node extendedRewriteAndOr(Node n);
/** Pull ITE, for example:
*
* D=C2 ---> false
@@ -127,6 +133,15 @@ class ExtendedRewriter
*/
Node extendedRewriteBcp(
Kind andk, Kind ork, Kind notk, std::map<Kind, bool>& bcp_kinds, Node n);
+ /** (type-independent) factoring, for example:
+ *
+ * ( A V B ) ^ ( A V C ) ----> A V ( B ^ C )
+ * ( A ^ B ) V ( A ^ C ) ----> A ^ ( B V C )
+ *
+ * This function takes as arguments the kinds that specify AND, OR, NOT.
+ * We assume that the children of n do not contain duplicates.
+ */
+ Node extendedRewriteFactoring(Kind andk, Kind ork, Kind notk, Node n);
/** (type-independent) equality resolution, for example:
*
* ( A V C ) & ( A = B ) ---> ( B V C ) & ( A = B )
@@ -211,7 +226,7 @@ class ExtendedRewriter
//--------------------------------------theory-specific top-level calls
/** extended rewrite arith */
- Node extendedRewriteArith(Node ret, bool& pol);
+ Node extendedRewriteArith(Node ret);
//--------------------------------------end theory-specific top-level calls
};
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback