Remove miscellaneous unused code (#2333)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Fri, 17 Aug 2018 19:18:16 +0000 (14:18 -0500)
committerGitHub <noreply@github.com>
Fri, 17 Aug 2018 19:18:16 +0000 (14:18 -0500)
src/theory/quantifiers/equality_query.cpp
src/theory/quantifiers/equality_query.h
src/theory/quantifiers/fmf/model_engine.cpp
src/theory/quantifiers/quant_conflict_find.cpp
src/theory/quantifiers/quant_conflict_find.h
src/theory/quantifiers/quantifiers_rewriter.cpp
src/theory/quantifiers/quantifiers_rewriter.h
src/theory/sets/theory_sets_rels.cpp
src/theory/sets/theory_sets_rels.h
src/theory/sets/theory_sets_rewriter.cpp

index ac07e13fb8a7d35d6723ddc482ebdcafd65b3b2f..ae560c5e5ebc23244563d9bcccfe6b27908cde6e 100644 (file)
@@ -210,79 +210,6 @@ Node EqualityQueryQuantifiersEngine::getInternalRepresentative(Node a,
   }
 }
 
-void EqualityQueryQuantifiersEngine::flattenRepresentatives( std::map< TypeNode, std::vector< Node > >& reps ) {
-  //make sure internal representatives currently exist
-  for( std::map< TypeNode, std::vector< Node > >::iterator it = reps.begin(); it != reps.end(); ++it ){
-    if( it->first.isSort() ){
-      for( unsigned i=0; i<it->second.size(); i++ ){
-        Node r = getInternalRepresentative( it->second[i], Node::null(), 0 );
-      }
-    }
-  }
-  Trace("internal-rep-flatten") << "---Flattening representatives : " << std::endl;
-  for( std::map< TypeNode, std::map< Node, Node > >::iterator itt = d_int_rep.begin(); itt != d_int_rep.end(); ++itt ){
-    for( std::map< Node, Node >::iterator it = itt->second.begin(); it != itt->second.end(); ++it ){
-      Trace("internal-rep-flatten") << itt->first << " : irep( " << it->first << " ) = " << it->second << std::endl;
-    }
-  }
-  //store representatives for newly created terms
-  std::map< Node, Node > temp_rep_map;
-
-  bool success;
-  do {
-    success = false;
-    for( std::map< TypeNode, std::map< Node, Node > >::iterator itt = d_int_rep.begin(); itt != d_int_rep.end(); ++itt ){
-      for( std::map< Node, Node >::iterator it = itt->second.begin(); it != itt->second.end(); ++it ){
-        if( it->second.getKind()==APPLY_UF && it->second.getType().isSort() ){
-          Node ni = it->second;
-          std::vector< Node > cc;
-          cc.push_back( it->second.getOperator() );
-          bool changed = false;
-          for( unsigned j=0; j<ni.getNumChildren(); j++ ){
-            if( ni[j].getType().isSort() ){
-              Node r = getRepresentative( ni[j] );
-              if( itt->second.find( r )==itt->second.end() ){
-                Assert( temp_rep_map.find( r )!=temp_rep_map.end() );
-                r = temp_rep_map[r];
-              }
-              if( r==ni ){
-                //found sub-term as instance
-                Trace("internal-rep-flatten-debug") << "...Changed " << it->second << " to subterm " << ni[j] << std::endl;
-                itt->second[it->first] = ni[j];
-                changed = false;
-                success = true;
-                break;
-              }else{
-                Node ir = itt->second[r];
-                cc.push_back( ir );
-                if( ni[j]!=ir ){
-                  changed = true;
-                }
-              }
-            }else{
-              changed = false;
-              break;
-            }
-          }
-          if( changed ){
-            Node n = NodeManager::currentNM()->mkNode( APPLY_UF, cc );
-            Trace("internal-rep-flatten-debug") << "...Changed " << it->second << " to " << n << std::endl;
-            success = true;
-            itt->second[it->first] = n;
-            temp_rep_map[n] = it->first;
-          }
-        }
-      }
-    }
-  }while( success );
-  Trace("internal-rep-flatten") << "---After flattening : " << std::endl;
-  for( std::map< TypeNode, std::map< Node, Node > >::iterator itt = d_int_rep.begin(); itt != d_int_rep.end(); ++itt ){
-    for( std::map< Node, Node >::iterator it = itt->second.begin(); it != itt->second.end(); ++it ){
-      Trace("internal-rep-flatten") << itt->first << " : irep( " << it->first << " ) = " << it->second << std::endl;
-    }
-  }
-}
-
 eq::EqualityEngine* EqualityQueryQuantifiersEngine::getEngine(){
   return d_qe->getActiveEqualityEngine();
 }
index a9a3cb1855859923e408444f41ad6c22df7cd0cb..8f836f9c6e2ee4758cc579b9e7172c0afd8ffe2c 100644 (file)
@@ -114,8 +114,6 @@ class EqualityQueryQuantifiersEngine : public EqualityQuery
   Node getInstance( Node n, const std::vector< Node >& eqc, std::unordered_map<TNode, Node, TNodeHashFunction>& cache );
   /** get score */
   int getRepScore( Node n, Node f, int index, TypeNode v_tn );
-  /** flatten representatives */
-  void flattenRepresentatives( std::map< TypeNode, std::vector< Node > >& reps );
 }; /* EqualityQueryQuantifiersEngine */
 
 }/* CVC4::theory::quantifiers namespace */
index 6763a0ad36447567409fc29130a52be01cc7eea2..81ecf9e770b8c2f9bc5061a214ebc4dc50905d27 100644 (file)
@@ -166,11 +166,6 @@ bool ModelEngine::optOneQuantPerRound(){
 int ModelEngine::checkModel(){
   FirstOrderModel* fm = d_quantEngine->getModel();
 
-  //flatten the representatives
-  //Trace("model-engine-debug") << "Flattening representatives...." << std::endl;
-  // d_quantEngine->getEqualityQuery()->flattenRepresentatives(
-  // fm->getRepSet()->d_type_reps );
-
   //for debugging, setup
   for (std::map<TypeNode, std::vector<Node> >::iterator it =
            fm->getRepSetPtr()->d_type_reps.begin();
index 3006a07bfd491b0a0b2d174f1fc97630d7942453..02c9aedf52537c589929394e93fa90ddf4ccd896 100644 (file)
@@ -1870,33 +1870,6 @@ bool QuantConflictFind::areMatchDisequal( TNode n1, TNode n2 ) {
   //}
 }
 
-//-------------------------------------------------- handling assertions / eqc
-
-void QuantConflictFind::assertNode( Node q ) {
-  /*
-  if( d_quantEngine->hasOwnership( q, this ) ){
-    Trace("qcf-proc") << "QCF : assertQuantifier : ";
-    debugPrintQuant("qcf-proc", q);
-    Trace("qcf-proc") << std::endl;
-  }
-  */
-}
-
-/** new node */
-void QuantConflictFind::newEqClass( Node n ) {
-
-}
-
-/** merge */
-void QuantConflictFind::merge( Node a, Node b ) {
-
-}
-
-/** assert disequal */
-void QuantConflictFind::assertDisequal( Node a, Node b ) {
-
-}
-
 //-------------------------------------------------- check function
 
 bool QuantConflictFind::needsCheck( Theory::Effort level ) {
index e4eefe9ad984e4ef3688452054c141b08535d141..d76495b527c31729cc00db22b3916b232d689244 100644 (file)
@@ -236,14 +236,6 @@ public:
   void registerQuantifier(Node q) override;
 
  public:
-  /** assert quantifier */
-  void assertNode(Node q) override;
-  /** new node */
-  void newEqClass( Node n );
-  /** merge */
-  void merge( Node a, Node b );
-  /** assert disequal */
-  void assertDisequal( Node a, Node b );
   /** needs check */
   bool needsCheck(Theory::Effort level) override;
   /** reset round */
index 37451b7769119713d23da35fa75ee297ecbc55d6..cff14e0c36609dad2ebb24081aa0e0dc843d89bf 100644 (file)
@@ -32,25 +32,6 @@ namespace CVC4 {
 namespace theory {
 namespace quantifiers {
 
-bool QuantifiersRewriter::isClause( Node n ){
-  if( isLiteral( n ) ){
-    return true;
-  }else if( n.getKind()==NOT ){
-    return isCube( n[0] );
-  }else if( n.getKind()==OR ){
-    for( int i=0; i<(int)n.getNumChildren(); i++ ){
-      if( !isClause( n[i] ) ){
-        return false;
-      }
-    }
-    return true;
-  }else if( n.getKind()==IMPLIES ){
-    return isCube( n[0] ) && isClause( n[1] );
-  }else{
-    return false;
-  }
-}
-
 bool QuantifiersRewriter::isLiteral( Node n ){
   switch( n.getKind() ){
   case NOT:
@@ -73,23 +54,6 @@ bool QuantifiersRewriter::isLiteral( Node n ){
   return true;
 }
 
-bool QuantifiersRewriter::isCube( Node n ){
-  if( isLiteral( n ) ){
-    return true;
-  }else if( n.getKind()==NOT ){
-    return isClause( n[0] );
-  }else if( n.getKind()==AND ){
-    for( int i=0; i<(int)n.getNumChildren(); i++ ){
-      if( !isCube( n[i] ) ){
-        return false;
-      }
-    }
-    return true;
-  }else{
-    return false;
-  }
-}
-
 void QuantifiersRewriter::addNodeToOrBuilder( Node n, NodeBuilder<>& t ){
   if( n.getKind()==OR ){
     for( int i=0; i<(int)n.getNumChildren(); i++ ){
index bd0192d9eb9045cb82aa74f5880375f4a0931a9b..963e737019f06c6c9abaf81d1ae62ee7958f38ca 100644 (file)
@@ -32,9 +32,7 @@ class QuantifiersRewriter {
 private:
   static int getPurifyIdLit2( Node n, std::map< Node, int >& visited );
 public:
-  static bool isClause( Node n );
   static bool isLiteral( Node n );
-  static bool isCube( Node n );
 private:
   static bool addCheckElimChild( std::vector< Node >& children, Node c, Kind k, std::map< Node, bool >& lit_pol, bool& childrenChanged );
   static void addNodeToOrBuilder( Node n, NodeBuilder<>& t );
index 29cd492c75634c04468a2a9aa767f78578826c06..ebfa6f8bb2626a0219d06f99a4622ad1bec0bfb1 100644 (file)
@@ -1670,41 +1670,6 @@ typedef std::map< Node, std::map< Node, std::unordered_set< Node, NodeHashFuncti
     }
   }
 
-
-  Node TheorySetsRels::mkAnd( std::vector<TNode>& conjunctions ) {
-    Assert(conjunctions.size() > 0);
-    std::set<TNode> all;
-
-    for (unsigned i = 0; i < conjunctions.size(); ++i) {
-      TNode t = conjunctions[i];
-      if (t.getKind() == kind::AND) {
-        for(TNode::iterator child_it = t.begin();
-            child_it != t.end(); ++child_it) {
-          Assert((*child_it).getKind() != kind::AND);
-          all.insert(*child_it);
-        }
-      }
-      else {
-        all.insert(t);
-      }
-    }
-    Assert(all.size() > 0);
-    if (all.size() == 1) {
-      // All the same, or just one
-      return conjunctions[0];
-    }
-
-    NodeBuilder<> conjunction(kind::AND);
-    std::set<TNode>::const_iterator it = all.begin();
-    std::set<TNode>::const_iterator it_end = all.end();
-    while (it != it_end) {
-      conjunction << *it;
-      ++ it;
-    }
-
-    return conjunction;
-  }/* mkAnd() */
-
   void TheorySetsRels::printNodeMap(const char* fst,
                                     const char* snd,
                                     const NodeMap& map)
index a95948bc70783c35dd524092695633e13b86596d..161b5195e7b140dc5e00267279a0e31d54850ecd 100644 (file)
@@ -185,7 +185,6 @@ private:
   bool areEqual( Node a, Node b );
   Node getRepresentative( Node t );
   bool exists( std::vector<Node>&, Node );
-  Node mkAnd( std::vector< TNode >& assumptions );
   inline void addToMembershipDB( Node, Node, Node  );
   static void printNodeMap(const char* fst,
                            const char* snd,
index 17f001a559267ea41d4974546756ff691898421a..a3f1f989324950bdcc33c50b99eb4211f03d793f 100644 (file)
@@ -25,104 +25,6 @@ namespace CVC4 {
 namespace theory {
 namespace sets {
 
-typedef std::set<TNode> Elements;
-typedef std::unordered_map<TNode, Elements, TNodeHashFunction> SettermElementsMap;
-
-struct FlattenedNodeTag {};
-typedef expr::Attribute<FlattenedNodeTag, bool> flattened;
-
-
-/**
- * flattenNode looks for children of same kind, and if found merges
- * them into the parent.
- *
- * It simultaneously handles a couple of other optimizations: 
- * - trivialNode - if found during exploration, return that node itself
- *    (like in case of OR, if "true" is found, makes sense to replace
- *     whole formula with "true")
- * - skipNode - as name suggests, skip them
- *    (like in case of OR, you may want to skip any "false" nodes found)
- *
- * Use a null node if you want to ignore any of the optimizations.
- */
-RewriteResponse flattenNode(TNode n, TNode trivialNode, TNode skipNode)
-{
-  if(n.hasAttribute(flattened()) && n.getAttribute(flattened())) {
-    return RewriteResponse(REWRITE_DONE, n);
-  }
-
-  typedef std::unordered_set<TNode, TNodeHashFunction> node_set;
-
-  node_set visited;
-  visited.insert(skipNode);
-
-  std::vector<TNode> toProcess;
-  toProcess.push_back(n);
-
-  Kind k = n.getKind();
-  typedef std::vector<TNode> ChildList;
-  ChildList childList;   //TNode should be fine, since 'n' is still there
-
-  Debug("sets-rewrite-flatten") << "[sets-rewrite-flatten] " << n << std::endl;
-  for (unsigned i = 0; i < toProcess.size(); ++ i) {
-    TNode current = toProcess[i];
-    Debug("sets-rewrite-flatten") << "[sets-rewrite-flatten]   > Processing " << current << std::endl;
-    for(unsigned j = 0, j_end = current.getNumChildren(); j < j_end; ++ j) {
-      TNode child = current[j];
-      if(visited.find(child) != visited.end()) {
-        continue;
-      } else if(child == trivialNode) {
-        return RewriteResponse(REWRITE_DONE, trivialNode);
-      } else {
-        visited.insert(child);
-        if(child.getKind() == k) {
-          toProcess.push_back(child);
-        } else {
-          childList.push_back(child);
-        }
-      }
-    }
-  }
-  if (childList.size() == 0) return RewriteResponse(REWRITE_DONE, skipNode);
-  if (childList.size() == 1) return RewriteResponse(REWRITE_AGAIN, childList[0]);
-
-  sort(childList.begin(), childList.end());
-
-  /* Make sure we are under number of children possible in a node */
-  NodeManager* nodeManager = NodeManager::currentNM();
-  static const unsigned MAX_CHILDREN = (1u << __CVC4__EXPR__NODE_VALUE__NBITS__NCHILDREN ) - 1;
-  AlwaysAssert(childList.size() < MAX_CHILDREN, "do not support formulas this big");
-
-  ChildList::iterator cur = childList.begin(), en = childList.end();
-  Node ret = (*cur);
-  ++cur;
-  while( cur != en ) {
-    ret = nodeManager->mkNode(k, ret, *cur);
-    ret.setAttribute(flattened(), true);
-    ++cur;
-  }
-  Trace("sets-postrewrite") << "flatten Sets::postRewrite returning " << ret << std::endl;
-  if(ret != n) {
-    return RewriteResponse(REWRITE_AGAIN, ret); // again for constants
-  } else {
-    return RewriteResponse(REWRITE_DONE, ret);
-  }
-  // if (childList.size() < MAX_CHILDREN) {
-  //   Node retNode = nodeManager->mkNode(k, childList);
-  //   return RewriteResponse(REWRITE_DONE, retNode);
-  // } else {
-  //   Assert(childList.size() < size_t(MAX_CHILDREN) * size_t(MAX_CHILDREN) );
-  //   NodeBuilder<> nb(k);
-  //   ChildList::iterator cur = childList.begin(), next, en = childList.end();
-  //   while( cur != en ) {
-  //     next = min(cur + MAX_CHILDREN, en);
-  //     nb << (nodeManager->mkNode(k, ChildList(cur, next) ));
-  //     cur = next;
-  //   }
-  //   return RewriteResponse(REWRITE_DONE, nb.constructNode());
-  // }
-}
-
 bool checkConstantMembership(TNode elementTerm, TNode setTerm)
 {
   if(setTerm.getKind() == kind::EMPTYSET) {
@@ -543,9 +445,8 @@ RewriteResponse TheorySetsRewriter::postRewrite(TNode node) {
 
   default:
     break;
-  }//switch(node.getKind())
+  }
 
-  // This default implementation
   return RewriteResponse(REWRITE_DONE, node);
 }