From 36bdf14e005556c3834fc280e134a1ec440da14b Mon Sep 17 00:00:00 2001 From: Andrew Reynolds Date: Mon, 8 Jan 2018 13:21:29 -0600 Subject: Improvements to quant+BV/Bool variable elimination (#1495) --- src/theory/quantifiers/quantifiers_rewriter.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/theory/quantifiers/quantifiers_rewriter.h') diff --git a/src/theory/quantifiers/quantifiers_rewriter.h b/src/theory/quantifiers/quantifiers_rewriter.h index b179110e7..149380b84 100644 --- a/src/theory/quantifiers/quantifiers_rewriter.h +++ b/src/theory/quantifiers/quantifiers_rewriter.h @@ -52,7 +52,16 @@ private: static bool computeVariableElimLit( Node n, bool pol, std::vector< Node >& args, std::vector< Node >& var, std::vector< Node >& subs, std::map< Node, std::map< bool, std::map< Node, bool > > >& num_bounds ); static Node computeVarElimination2( Node body, std::vector< Node >& args, QAttributes& qa ); -public: + /** variable eliminate for bit-vector literals + * + * If this returns a non-null value ret, then var is updated to a member of + * args, and lit is equivalent to ( var = ret ). + */ + static Node computeVariableElimLitBv(Node lit, + std::vector& args, + Node& var); + + public: static Node computeElimSymbols( Node body ); static Node computeMiniscoping( std::vector< Node >& args, Node body, QAttributes& qa ); static Node computeAggressiveMiniscoping( std::vector< Node >& args, Node body ); -- cgit v1.2.3