summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/quant_util.cpp
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2015-10-31 10:00:52 +0100
committerajreynol <andrew.j.reynolds@gmail.com>2015-10-31 10:00:52 +0100
commit5bc200446b4165814db47e6e3639972af31ad0a6 (patch)
tree6a62e2f1296468b286b7bc513d448ca29ec353e1 /src/theory/quantifiers/quant_util.cpp
parentb035877b01e8b8c2ea902d9f3732cf84bfed0fdf (diff)
Improvements to handling of mixed Int/Real quantifiers.
Diffstat (limited to 'src/theory/quantifiers/quant_util.cpp')
-rw-r--r--src/theory/quantifiers/quant_util.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/theory/quantifiers/quant_util.cpp b/src/theory/quantifiers/quant_util.cpp
index 026293e02..0b212d696 100644
--- a/src/theory/quantifiers/quant_util.cpp
+++ b/src/theory/quantifiers/quant_util.cpp
@@ -137,6 +137,24 @@ int QuantArith::isolate( Node v, std::map< Node, Node >& msum, Node & veq, Kind
return 0;
}
+int QuantArith::isolate( Node v, std::map< Node, Node >& msum, Node & veq_c, Node & val, Kind k ) {
+ Node vatom;
+ //isolate pv in the inequality
+ int ires = isolate( v, msum, vatom, k, true );
+ if( ires!=0 ){
+ val = vatom[ ires==1 ? 1 : 0 ];
+ Node pvm = vatom[ ires==1 ? 0 : 1 ];
+ //get monomial
+ if( pvm!=v ){
+ Node veq_v;
+ if( QuantArith::getMonomial( pvm, veq_c, veq_v ) ){
+ Assert( veq_v==v );
+ }
+ }
+ }
+ return ires;
+}
+
Node QuantArith::negate( Node t ) {
Node tt = NodeManager::currentNM()->mkNode( MULT, NodeManager::currentNM()->mkConst( Rational(-1) ), t );
tt = Rewriter::rewrite( tt );
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback