diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2018-07-07 07:49:11 +0100 |
---|---|---|
committer | Andres Noetzli <andres.noetzli@gmail.com> | 2018-07-06 23:49:11 -0700 |
commit | ad454857a1f57386f7b132c01ad460750ca8d3aa (patch) | |
tree | 24644b6532e1b38e659d8aca8a792f464de2d408 /src/theory/quantifiers/extended_rewrite.h | |
parent | 97ab81d20887f58c90365ba622c7c84148ca8033 (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.h | 17 |
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 }; |