summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/term_database.cpp
diff options
context:
space:
mode:
authorajreynol <reynolds@larapc05.epfl.ch>2014-06-03 14:01:01 +0200
committerajreynol <reynolds@larapc05.epfl.ch>2014-06-03 14:01:08 +0200
commit6480823e5620b316b4c319453f45f6d7d452e2b1 (patch)
treec94fbf4956aa983906d99105d7d89906739d6290 /src/theory/quantifiers/term_database.cpp
parent30e1feed2331bb44338363228fe73e82ab7c7c3d (diff)
Support E-matching/QCF for Set operators.
Diffstat (limited to 'src/theory/quantifiers/term_database.cpp')
-rw-r--r--src/theory/quantifiers/term_database.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/src/theory/quantifiers/term_database.cpp b/src/theory/quantifiers/term_database.cpp
index 5636e0c5f..9f25b0825 100644
--- a/src/theory/quantifiers/term_database.cpp
+++ b/src/theory/quantifiers/term_database.cpp
@@ -73,25 +73,21 @@ unsigned TermDb::getNumGroundTerms( Node f ) {
Node TermDb::getOperator( Node n ) {
//return n.getOperator();
-
- if( n.getKind()==SELECT || n.getKind()==STORE ){
+ Kind k = n.getKind();
+ if( k==SELECT || k==STORE || k==UNION || k==INTERSECTION || k==SUBSET || k==SETMINUS || k==MEMBER || k==SET_SINGLETON ){
//since it is parametric, use a particular one as op
- TypeNode tn1 = n[0].getType();
- TypeNode tn2 = n[1].getType();
+ TypeNode tn = n[0].getType();
Node op = n.getOperator();
- std::map< Node, std::map< TypeNode, std::map< TypeNode, Node > > >::iterator ito = d_par_op_map.find( op );
+ std::map< Node, std::map< TypeNode, Node > >::iterator ito = d_par_op_map.find( op );
if( ito!=d_par_op_map.end() ){
- std::map< TypeNode, std::map< TypeNode, Node > >::iterator it = ito->second.find( tn1 );
+ std::map< TypeNode, Node >::iterator it = ito->second.find( tn );
if( it!=ito->second.end() ){
- std::map< TypeNode, Node >::iterator it2 = it->second.find( tn2 );
- if( it2!=it->second.end() ){
- return it2->second;
- }
+ return it->second;
}
}
- d_par_op_map[op][tn1][tn2] = n;
+ d_par_op_map[op][tn] = n;
return n;
- }else if( inst::Trigger::isAtomicTrigger( n ) ){
+ }else if( inst::Trigger::isAtomicTriggerKind( k ) ){
return n.getOperator();
}else{
return Node::null();
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback