Apply extended rewriting on PBE static symmetry breaking. (#2735)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Tue, 4 Dec 2018 22:04:47 +0000 (16:04 -0600)
committerGitHub <noreply@github.com>
Tue, 4 Dec 2018 22:04:47 +0000 (16:04 -0600)
src/theory/quantifiers/sygus/sygus_pbe.cpp

index e8aa0a7f0b5a60133e7dac1cad037e8596831f66..7891814be5591f9714f28a2393a229e9132b757f 100644 (file)
@@ -272,6 +272,10 @@ bool SygusPbe::initialize(Node n,
         Assert(!ag.isNull());
         disj.push_back(ag.negate());
         Node lem = disj.size() == 1 ? disj[0] : nm->mkNode(OR, disj);
+        // Apply extended rewriting on the lemma. This helps utilities like
+        // SygusEnumerator more easily recognize the shape of this lemma, e.g.
+        // ( ~is-ite(x) or ( ~is-ite(x) ^ P ) ) --> ~is-ite(x).
+        lem = d_tds->getExtRewriter()->extendedRewrite(lem);
         Trace("sygus-pbe") << "  static redundant op lemma : " << lem
                            << std::endl;
         // Register as a symmetry breaking lemma with the term database.