Changes needed to compile at Google, plus some bug fixes from Google.
authorClark Barrett <clarkbarrett@google.com>
Tue, 21 Apr 2015 23:34:15 +0000 (16:34 -0700)
committerClark Barrett <clarkbarrett@google.com>
Tue, 21 Apr 2015 23:34:15 +0000 (16:34 -0700)
45 files changed:
proofs/lfsc_checker/check.h
src/context/context.h
src/decision/justification_heuristic.cpp
src/decision/justification_heuristic.h
src/expr/node.h
src/expr/node_manager.cpp
src/expr/node_value.cpp
src/expr/node_value.h
src/expr/pickler.h
src/expr/type_node.cpp
src/expr/type_node.h
src/printer/printer.h
src/prop/bvminisat/mtl/Map.h
src/prop/minisat/core/SolverTypes.h
src/prop/minisat/mtl/Map.h
src/prop/sat_solver.h
src/smt/smt_engine.cpp
src/theory/arith/bound_counts.h
src/theory/arith/callbacks.h
src/theory/arith/linear_equality.h
src/theory/arith/matrix.h
src/theory/arith/simplex.h
src/theory/bv/bitblaster_template.h
src/theory/bv/lazy_bitblaster.cpp
src/theory/bv/theory_bv.cpp
src/theory/fp/theory_fp_rewriter.cpp
src/theory/quantifiers/ambqi_builder.h
src/theory/quantifiers/bounded_integers.h
src/theory/quantifiers/candidate_generator.h
src/theory/quantifiers/ce_guided_single_inv.h
src/theory/quantifiers/conjecture_generator.h
src/theory/quantifiers/first_order_model.cpp
src/theory/quantifiers/first_order_model.h
src/theory/quantifiers/full_model_check.h
src/theory/quantifiers/inst_match_generator.h
src/theory/quantifiers/inst_strategy_cbqi.h
src/theory/quantifiers/model_builder.h
src/theory/quantifiers/quant_conflict_find.h
src/theory/quantifiers/rewrite_engine.h
src/theory/strings/options
src/theory/strings/regexp_operation.cpp
src/theory/theory_engine.cpp
src/theory/theory_model.cpp
src/theory/theory_model.h
src/util/didyoumean.cpp

index a70599b0ff05329c9a6d641574da4a1d74a0702d..756bb4db6cf75510bbd6f1a8849be66723a13b1e 100644 (file)
@@ -80,7 +80,7 @@ inline char our_getc() {
 #endif
     colnum = 1;
     break;
-  case EOF:
+  case char(EOF):
     break;
   default:
     colnum++;
@@ -95,7 +95,7 @@ inline char non_ws() {
   while(isspace(c = our_getc()));
   if (c == ';') {
     // comment to end of line
-    while((c = our_getc()) != '\n' && c != EOF);
+    while((c = our_getc()) != '\n' && c != char(EOF));
     return non_ws();
   }
   return c;
@@ -115,7 +115,7 @@ extern char idbuf[];
 inline const char *prefix_id() {
   int i = 0;
   char c = idbuf[i++] = non_ws();
-  while (!isspace(c) && c != '(' && c != ')' && c != EOF) {
+  while (!isspace(c) && c != '(' && c != ')' && c != char(EOF)) {
     if (i == IDBUF_LEN)
       report_error("Identifier is too long");
     
index 02d82a6d35a7ed24ead2d6feb53166653106605b..9c631b2023ed595d45405a46302a1ba3e3625931 100644 (file)
@@ -613,7 +613,7 @@ public:
   /**
    * Destructor does nothing: subclass must explicitly call destroy() instead.
    */
-  virtual ~ContextObj() {}
+  virtual ~ContextObj() throw(AssertionException) {}
 
   /**
    * If you want to allocate a ContextObj object on the heap, use this
index c9a6b7e1b9ad934d4d375307c2111bbdddabc14c..082f3cdbf69b17dac1330d3f66729d191e5d7517 100644 (file)
@@ -55,7 +55,7 @@ JustificationHeuristic::JustificationHeuristic(CVC4::DecisionEngine* de,
   Trace("decision") << "Justification heuristic enabled" << std::endl;
 }
 
-JustificationHeuristic::~JustificationHeuristic() {
+JustificationHeuristic::~JustificationHeuristic() throw() {
   StatisticsRegistry::unregisterStat(&d_helfulness);
   StatisticsRegistry::unregisterStat(&d_giveup);
   StatisticsRegistry::unregisterStat(&d_timestat);
index 9177ba44d64c533fab5592b6ccf3f124791d4ab2..e1ed431d1f27ddf28a6fe473d5e68e1daf8aa593 100644 (file)
@@ -114,7 +114,7 @@ public:
                          context::UserContext *uc,
                          context::Context *c);
 
-  ~JustificationHeuristic();
+  ~JustificationHeuristic() throw();
 
   prop::SatLiteral getNext(bool &stopSearch);
 
index 080034e70533140907dff2af744fc838fd9bc425..2a884d35a56ae6ebb5b17244b052375c8c87e06e 100644 (file)
@@ -261,7 +261,7 @@ public:
                   std::hash_map<TNode, TNode, TNodeHashFunction>& cache) const;
 
   /** Default constructor, makes a null expression. */
-  NodeTemplate() : d_nv(&expr::NodeValue::s_null) { }
+  NodeTemplate() : d_nv(&expr::NodeValue::null()) { }
 
   /**
    * Conversion between nodes that are reference-counted and those that are
@@ -322,7 +322,7 @@ public:
    */
   bool isNull() const {
     assertTNodeNotExpired();
-    return d_nv == &expr::NodeValue::s_null;
+    return d_nv == &expr::NodeValue::null();
   }
 
   /**
@@ -1026,7 +1026,7 @@ setAttribute(const AttrKind&, const typename AttrKind::value_type& value) {
 }
 
 template <bool ref_count>
-NodeTemplate<ref_count> NodeTemplate<ref_count>::s_null(&expr::NodeValue::s_null);
+NodeTemplate<ref_count> NodeTemplate<ref_count>::s_null(&expr::NodeValue::null());
 
 // FIXME: escape from type system convenient but is there a better
 // way?  Nodes conceptually don't change their expr values but of
@@ -1039,7 +1039,7 @@ NodeTemplate<ref_count>::NodeTemplate(const expr::NodeValue* ev) :
   if(ref_count) {
     d_nv->inc();
   } else {
-    Assert(d_nv->d_rc > 0 || d_nv == &expr::NodeValue::s_null,
+    Assert(d_nv->d_rc > 0 || d_nv == &expr::NodeValue::null(),
            "TNode constructed from NodeValue with rc == 0");
   }
 }
index 48aacddf2b6a9485d3f8f8b7e0e02390d9fd642d..4eb5dd6805072d3a1b8d744cb5d41a4461afbcb4 100644 (file)
@@ -112,7 +112,7 @@ NodeManager::NodeManager(ExprManager* exprManager,
 }
 
 void NodeManager::init() {
-  poolInsert( &expr::NodeValue::s_null );
+  poolInsert( &expr::NodeValue::null() );
 
   for(unsigned i = 0; i < unsigned(kind::LAST_KIND); ++i) {
     Kind k = Kind(i);
@@ -163,7 +163,7 @@ NodeManager::~NodeManager() {
     reclaimZombies();
   }
 
-  poolRemove( &expr::NodeValue::s_null );
+  poolRemove( &expr::NodeValue::null() );
 
   if(Debug.isOn("gc:leaks")) {
     Debug("gc:leaks") << "still in pool:" << endl;
index 8af056f62d7da2bd76df6c70e29d358e416d979a..6b48fd9b7f341df7ca0e31cfb23311a70b8182b6 100644 (file)
@@ -32,12 +32,10 @@ using namespace std;
 namespace CVC4 {
 namespace expr {
 
-NodeValue NodeValue::s_null(0);
-
 string NodeValue::toString() const {
   stringstream ss;
 
-  OutputLanguage outlang = (this == &s_null) ? language::output::LANG_AUTO : options::outputLanguage();
+  OutputLanguage outlang = (this == &null()) ? language::output::LANG_AUTO : options::outputLanguage();
   toStream(ss, -1, false, false, outlang);
   return ss.str();
 }
index a6e7a6053915e7cfabae5dff07d913576322ce4f..785f8909f5654dbc084f74d6bc70ee9ff6808d91 100644 (file)
@@ -74,9 +74,6 @@ namespace expr {
  */
 class NodeValue {
 
-  /** A convenient null-valued expression value */
-  static NodeValue s_null;
-
   static const unsigned NBITS_REFCOUNT = __CVC4__EXPR__NODE_VALUE__NBITS__REFCOUNT;
   static const unsigned NBITS_KIND = __CVC4__EXPR__NODE_VALUE__NBITS__KIND;
   static const unsigned NBITS_ID = __CVC4__EXPR__NODE_VALUE__NBITS__ID;
@@ -278,8 +275,9 @@ public:
     return (d == kindMask) ? kind::UNDEFINED_KIND : Kind(d);
   }
 
-  static inline const NodeValue& null() {
-    return s_null;
+  static inline NodeValue& null() {
+    static NodeValue* s_null = new NodeValue(0);
+    return *s_null;
   }
 
   /**
index f1cdd1c65fd4fa9f3d0e9d72eb99d526c3e6e572..8c3da5f4002f4c97951da03db87fa236aa085e28 100644 (file)
@@ -74,7 +74,7 @@ protected:
 
 public:
   Pickler(ExprManager* em);
-  ~Pickler();
+  virtual ~Pickler();
 
   /**
    * Constructs a new Pickle of the node n.
index 9dbcb628f1d2678f6919eaf395dd732d8e61c5fd..1f2963e183733820781202525e958e4fb017907c 100644 (file)
@@ -24,7 +24,7 @@ using namespace std;
 
 namespace CVC4 {
 
-TypeNode TypeNode::s_null( &expr::NodeValue::s_null );
+TypeNode TypeNode::s_null( &expr::NodeValue::null() );
 
 TypeNode TypeNode::substitute(const TypeNode& type,
                               const TypeNode& replacement,
index 5129b75813748742456c653519510c09e25a2870..4f9e497eaf1727a0dae46d5d318024ef72f6ed6f 100644 (file)
@@ -107,7 +107,7 @@ private:
 public:
 
   /** Default constructor, makes a null expression. */
-  TypeNode() : d_nv(&expr::NodeValue::s_null) { }
+  TypeNode() : d_nv(&expr::NodeValue::null()) { }
 
   /** Copy constructor */
   TypeNode(const TypeNode& node);
@@ -404,7 +404,7 @@ public:
    * @return true if null
    */
   bool isNull() const {
-    return d_nv == &expr::NodeValue::s_null;
+    return d_nv == &expr::NodeValue::null();
   }
 
   /**
index e0b80ddfc5def86201314a74fd2e49f16c328a25..fcc0df93c1497605767c3ffe54c88a03284bf264 100644 (file)
@@ -44,6 +44,7 @@ class Printer {
 protected:
   // derived classes can construct, but no one else.
   Printer() throw() {}
+  virtual ~Printer() {}
 
   /** write model response to command */
   virtual void toStream(std::ostream& out, const Model& m, const Command* c) const throw() = 0;
index 8bd5659bc9d5b752833748bf90a2d5487bc23259..4e61d65824deda5b31a19a9021977cf57c7adb60 100644 (file)
@@ -29,16 +29,17 @@ namespace BVMinisat {
 // Default hash/equals functions
 //
 
+static inline uint32_t hash(uint32_t x){ return x; }
+static inline uint32_t hash(uint64_t x){ return (uint32_t)x; }
+static inline uint32_t hash(int32_t x) { return (uint32_t)x; }
+static inline uint32_t hash(int64_t x) { return (uint32_t)x; }
+
 template<class K> struct Hash  { uint32_t operator()(const K& k)               const { return hash(k);  } };
 template<class K> struct Equal { bool     operator()(const K& k1, const K& k2) const { return k1 == k2; } };
 
 template<class K> struct DeepHash  { uint32_t operator()(const K* k)               const { return hash(*k);  } };
 template<class K> struct DeepEqual { bool     operator()(const K* k1, const K* k2) const { return *k1 == *k2; } };
 
-static inline uint32_t hash(uint32_t x){ return x; }
-static inline uint32_t hash(uint64_t x){ return (uint32_t)x; }
-static inline uint32_t hash(int32_t x) { return (uint32_t)x; }
-static inline uint32_t hash(int64_t x) { return (uint32_t)x; }
 
 
 //=================================================================================================
index bc60542e78969a4f3153c1df36503fbc486643e8..46c2666c8823f33b0f3f8f0e8549a364201b3b44 100644 (file)
@@ -175,6 +175,7 @@ inline std::ostream& operator <<(std::ostream& out, Minisat::lbool val) {
 namespace CVC4 {
 class ProofProxyAbstract {
 public:
+  virtual ~ProofProxyAbstract() {}
   virtual void updateCRef(Minisat::CRef oldref, Minisat::CRef newref) = 0; 
 };
 }
index dda6c73d13c8482a2964f7be1b5594ca4750374f..72563e6d3d7c68122aa4c08ecaa09ac04c218fcf 100644 (file)
@@ -29,16 +29,17 @@ namespace Minisat {
 // Default hash/equals functions
 //
 
+static inline uint32_t hash(uint32_t x){ return x; }
+static inline uint32_t hash(uint64_t x){ return (uint32_t)x; }
+static inline uint32_t hash(int32_t x) { return (uint32_t)x; }
+static inline uint32_t hash(int64_t x) { return (uint32_t)x; }
+
 template<class K> struct Hash  { uint32_t operator()(const K& k)               const { return hash(k);  } };
 template<class K> struct Equal { bool     operator()(const K& k1, const K& k2) const { return k1 == k2; } };
 
 template<class K> struct DeepHash  { uint32_t operator()(const K* k)               const { return hash(*k);  } };
 template<class K> struct DeepEqual { bool     operator()(const K* k1, const K* k2) const { return *k1 == *k2; } };
 
-static inline uint32_t hash(uint32_t x){ return x; }
-static inline uint32_t hash(uint64_t x){ return (uint32_t)x; }
-static inline uint32_t hash(int32_t x) { return (uint32_t)x; }
-static inline uint32_t hash(int64_t x) { return (uint32_t)x; }
 
 
 //=================================================================================================
index b718445905a5e5fc1bce3b03be68b4915ff1497d..8effa818947666b96f833410b17d3abcc28ee176 100644 (file)
@@ -36,7 +36,7 @@ class SatSolver {
 public:
 
   /** Virtual destructor */
-  virtual ~SatSolver() { }
+  virtual ~SatSolver() throw(AssertionException) { }
 
   /** Assert a clause in the solver. */
   virtual void addClause(SatClause& clause, bool removable, uint64_t proof_id) = 0;
@@ -80,6 +80,7 @@ public:
 class BVSatSolverInterface: public SatSolver {
 public:
 
+  virtual ~BVSatSolverInterface() throw(AssertionException) {}
   /** Interface for notifications */
   class Notify {
   public:
index 229cc7c7cf6a42f2ac682b513ce834350c23f7bb..04af80281b9b81380abfa6e42c10566fcb1978ae 100644 (file)
@@ -474,7 +474,7 @@ public:
     d_resourceManager = NodeManager::currentResourceManager();
   }
 
-  ~SmtEnginePrivate() {
+  ~SmtEnginePrivate() throw() {
     if(d_propagatorNeedsFinish) {
       d_propagator.finish();
       d_propagatorNeedsFinish = false;
index 472eff883b968602f3a666b6f8b4a4dda6420c26..c1f0ce5452d3c099f6bbe5c49044156de6bc4786 100644 (file)
@@ -226,6 +226,7 @@ inline std::ostream& operator<<(std::ostream& os, const BoundsInfo& inf){
 }
 class BoundUpdateCallback {
 public:
+  virtual ~BoundUpdateCallback() {}
   virtual void operator()(ArithVar v, const BoundsInfo&  up) = 0;
 };
 
index ad88aea86f1cc9121ab8ffcb871b65544c960af7..734c605c6202c9e661aa694d371fc4de63f885bc 100644 (file)
@@ -36,6 +36,7 @@ namespace arith {
  */
 class ArithVarCallBack {
 public:
+  virtual ~ArithVarCallBack() {}
   virtual void operator()(ArithVar x) = 0;
 };
 
@@ -45,22 +46,26 @@ public:
  */
 class ArithVarMalloc {
 public:
+  virtual ~ArithVarMalloc() {}
   virtual ArithVar request() = 0;
   virtual void release(ArithVar v) = 0;
 };
 
 class TNodeCallBack {
 public:
+  virtual ~TNodeCallBack() {}
   virtual void operator()(TNode n) = 0;
 };
 
 class NodeCallBack {
 public:
+  virtual ~NodeCallBack() {}
   virtual void operator()(Node n) = 0;
 };
 
 class RationalCallBack {
 public:
+  virtual ~RationalCallBack() {}
   virtual Rational operator()() const = 0;
 };
 
index f6717d141643ab9ede77e85ba32d4632c3df795d..99ec6e52ce35fa86e49e3796dc3fd5945fe6e13c 100644 (file)
@@ -159,7 +159,8 @@ public:
   }
 
   void dropNonZeroes(){
-    std::remove_if(d_vec.begin(), d_vec.end(), &Border::nonZero);
+    d_vec.erase(std::remove_if(d_vec.begin(), d_vec.end(), &Border::nonZero),
+                d_vec.end());
   }
 
   const Border& top() const {
index 73235d49018af45e71acb6dd325787686201e074..6c218eb0b7a27f40309dee3dd08bda08be5be139 100644 (file)
@@ -39,6 +39,7 @@ const RowIndex ROW_INDEX_SENTINEL  = std::numeric_limits<RowIndex>::max();
 
 class CoefficientChangeCallback {
 public:
+  virtual ~CoefficientChangeCallback() {}
   virtual void update(RowIndex ridx, ArithVar nb, int oldSgn, int currSgn) = 0;
   virtual void multiplyRow(RowIndex ridx, int Sgn) = 0;
   virtual bool canUseRow(RowIndex ridx) const = 0;
index ada9b5efd9d175ae3f9b954d70ab3cf4c77e2f83..2d7fc597ae55920640c0ce6f104161c08a0e521c 100644 (file)
@@ -135,7 +135,7 @@ protected:
 
 public:
   SimplexDecisionProcedure(LinearEqualityModule& linEq, ErrorSet& errors, RaiseConflict conflictChannel, TempVarMalloc tvmalloc);
-  ~SimplexDecisionProcedure();
+  virtual ~SimplexDecisionProcedure();
 
   /**
    * Tries to update the assignments of variables such that all of the
@@ -217,4 +217,3 @@ protected:
 }/* CVC4::theory::arith namespace */
 }/* CVC4::theory namespace */
 }/* CVC4 namespace */
-
index 79434102e8e550099fb1e9de83f83a7fd4bf41cf..d4d7bc04cb7edf3175b54b0ebb1107b9052396d5 100644 (file)
@@ -170,7 +170,7 @@ public:
   void storeBBAtom(TNode atom, Node atom_bb);
   bool hasBBAtom(TNode atom) const; 
   TLazyBitblaster(context::Context* c, bv::TheoryBV* bv, const std::string name="", bool emptyNotify = false);
-  ~TLazyBitblaster();
+  ~TLazyBitblaster() throw();
   /** 
    * Pushes the assumption literal associated with node to the SAT
    * solver assumption queue. 
index fbebcd952670cae3a34b9ac0e21fc34359be389e..080f231438f00923d1d16a2a547e14338dc064f9 100644 (file)
@@ -62,7 +62,7 @@ void TLazyBitblaster::setAbstraction(AbstractionModule* abs) {
   d_abstraction = abs; 
 }
 
-TLazyBitblaster::~TLazyBitblaster() {
+TLazyBitblaster::~TLazyBitblaster() throw() {
   delete d_cnfStream;
   delete d_nullRegistrar;
   delete d_nullContext;
index 08fe5f2e99cc648b5a1252ce5c3f442a3d2b1784..9dcd5ac6269538abbab4485a66aff25880578eb4 100644 (file)
@@ -576,8 +576,8 @@ Node TheoryBV::ppRewrite(TNode t)
   } else if( res.getKind() == kind::EQUAL &&
       ((res[0].getKind() == kind::BITVECTOR_PLUS &&
         RewriteRule<ConcatToMult>::applies(res[1])) ||
-       res[1].getKind() == kind::BITVECTOR_PLUS &&
-       RewriteRule<ConcatToMult>::applies(res[0]))) {
+       (res[1].getKind() == kind::BITVECTOR_PLUS &&
+       RewriteRule<ConcatToMult>::applies(res[0])))) {
     Node mult = RewriteRule<ConcatToMult>::applies(res[0])?
       RewriteRule<ConcatToMult>::run<false>(res[0]) :
       RewriteRule<ConcatToMult>::run<true>(res[1]);
@@ -747,8 +747,8 @@ void TheoryBV::ppStaticLearn(TNode in, NodeBuilder<>& learned) {
   d_staticLearnCache.insert(in);
     
   if (in.getKind() == kind::EQUAL) {
-    if(in[0].getKind() == kind::BITVECTOR_PLUS && in[1].getKind() == kind::BITVECTOR_SHL ||
-       in[1].getKind() == kind::BITVECTOR_PLUS && in[0].getKind() == kind::BITVECTOR_SHL){
+    if((in[0].getKind() == kind::BITVECTOR_PLUS && in[1].getKind() == kind::BITVECTOR_SHL) ||
+       (in[1].getKind() == kind::BITVECTOR_PLUS && in[0].getKind() == kind::BITVECTOR_SHL)) {
       TNode p = in[0].getKind() == kind::BITVECTOR_PLUS ? in[0] : in[1];
       TNode s = in[0].getKind() == kind::BITVECTOR_PLUS ? in[1] : in[0];
 
index 0c41e8ff715d109815ed57398c1f6e9e6292885b..ba98235410d6b135703f5d52c1cf61c053166171 100644 (file)
@@ -202,10 +202,10 @@ namespace rewrite {
 
   // Note these cannot be assumed to be symmetric for +0/-0, thus no symmetry reorder
   RewriteResponse compactMinMax (TNode node, bool isPreRewrite) {
+#ifdef CVC4_ASSERTIONS
     Kind k = node.getKind();
-
     Assert((k == kind::FLOATINGPOINT_MIN) || (k == kind::FLOATINGPOINT_MAX));
-
+#endif
     if (node[0] == node[1]) {
       return RewriteResponse(REWRITE_DONE, node[0]);
     } else {
index 44d327c5ce88399a3d43823a3014483a732a9933..b2c49c8a3de3642cf362a0d035b4e9fb1fa494ea 100644 (file)
@@ -89,6 +89,7 @@ private:
   bool doCheck( FirstOrderModelAbs * m, TNode q, AbsDef & ad, TNode n );
 public:
   AbsMbqiBuilder( context::Context* c, QuantifiersEngine* qe );
+  ~AbsMbqiBuilder() throw() {}
   //process build model
   void processBuildModel(TheoryModel* m, bool fullModel);
   //do exhaustive instantiation
index c09527f89e529aa203fd03fc9fe1b2949ecd7396..dd241b15ef75c56c2346804ee036ee1cb19fae98 100644 (file)
@@ -110,6 +110,7 @@ private:
   void addLiteralFromRange( Node lit, Node r );
 public:
   BoundedIntegers( context::Context* c, QuantifiersEngine* qe );
+  ~BoundedIntegers() throw() {}
 
   bool needsCheck( Theory::Effort e );
   void check( Theory::Effort e, unsigned quant_e );
index 7a959a70db81ff187accc18b78095c7117262e0f..9d40359708a168a911f62bf8221b13ebcb43b51d 100644 (file)
@@ -31,7 +31,7 @@ namespace inst {
 class CandidateGenerator {
 public:
   CandidateGenerator(){}
-  ~CandidateGenerator(){}
+  virtual ~CandidateGenerator(){}
 
   /** Get candidates functions.  These set up a context to get all match candidates.
       cg->reset( eqc );
@@ -60,7 +60,7 @@ private:
   int d_candidate_index;
 public:
   CandidateGeneratorQueue() : d_candidate_index( 0 ){}
-  ~CandidateGeneratorQueue(){}
+  ~CandidateGeneratorQueue() throw() {}
 
   void addCandidate( Node n );
 
@@ -94,7 +94,7 @@ private:
   Node d_n;
 public:
   CandidateGeneratorQE( QuantifiersEngine* qe, Node op );
-  ~CandidateGeneratorQE(){}
+  ~CandidateGeneratorQE() throw() {}
 
   void resetInstantiationRound();
   void reset( Node eqc );
@@ -112,7 +112,7 @@ private:
   QuantifiersEngine* d_qe;
 public:
   CandidateGeneratorQELitEq( QuantifiersEngine* qe, Node mpat );
-  ~CandidateGeneratorQELitEq(){}
+  ~CandidateGeneratorQELitEq() throw() {}
 
   void resetInstantiationRound();
   void reset( Node eqc );
@@ -130,7 +130,7 @@ private:
   QuantifiersEngine* d_qe;
 public:
   CandidateGeneratorQELitDeq( QuantifiersEngine* qe, Node mpat );
-  ~CandidateGeneratorQELitDeq(){}
+  ~CandidateGeneratorQELitDeq() throw() {}
 
   void resetInstantiationRound();
   void reset( Node eqc );
@@ -154,7 +154,7 @@ private:
   bool d_firstTime;
 public:
   CandidateGeneratorQEAll( QuantifiersEngine* qe, Node mpat );
-  ~CandidateGeneratorQEAll(){}
+  ~CandidateGeneratorQEAll() throw() {}
 
   void resetInstantiationRound();
   void reset( Node eqc );
index b5ebe3d7cf6acd2190a04ae852c3d4f506216fea..fc748173998fc345337d4fb837860a9c9b3dc353 100644 (file)
@@ -31,6 +31,7 @@ class CegConjecture;
 class CegqiOutput
 {
 public:
+  virtual ~CegqiOutput() {}
   virtual bool addInstantiation( std::vector< Node >& subs, std::vector< int >& subs_typ ) = 0;
   virtual bool isEligibleForInstantiation( Node n ) = 0;
   virtual bool addLemma( Node lem ) = 0;
@@ -83,6 +84,7 @@ class CegqiOutputSingleInv : public CegqiOutput
 {
 public:
   CegqiOutputSingleInv( CegConjectureSingleInv * out ) : d_out( out ){}
+  ~CegqiOutputSingleInv() {}
   CegConjectureSingleInv * d_out;
   bool addInstantiation( std::vector< Node >& subs, std::vector< int >& subs_typ );
   bool isEligibleForInstantiation( Node n );
index 2d8e8e403be55ec06709fb483af74bedbe1e51e0..48694c99a69c991b4680ead4428a843b1c4455ee 100644 (file)
@@ -406,6 +406,7 @@ private:  //information about ground equivalence classes
   unsigned flushWaitingConjectures( unsigned& addedLemmas, int ldepth, int rdepth );\r
 public:\r
   ConjectureGenerator( QuantifiersEngine * qe, context::Context* c );\r
+  ~ConjectureGenerator() throw() {}\r
   /* needs check */\r
   bool needsCheck( Theory::Effort e );\r
   /* reset at a round */\r
index eef354e75dab5d014c32ad4c8fbcce2b771fb41e..88464bb9ac09b5b9cf450bfaa2d21c8b335da5d1 100644 (file)
@@ -585,7 +585,7 @@ FirstOrderModel(qe, c, name){
 
 }
 
-FirstOrderModelFmc::~FirstOrderModelFmc() {
+FirstOrderModelFmc::~FirstOrderModelFmc() throw() {
   for(std::map<Node, Def*>::iterator i = d_models.begin(); i != d_models.end(); ++i) {
     delete (*i).second;
   }
index c2cd88e1784557c2e5f7f9a46e0ffec30ee34814..fbcaf938f5840ddfc3aab793ac733de32fcd0e28 100644 (file)
@@ -76,7 +76,7 @@ public: //for Theory Quantifiers:
   virtual void processInitializeQuantifier( Node q ) {}
 public:
   FirstOrderModel(QuantifiersEngine * qe, context::Context* c, std::string name );
-  virtual ~FirstOrderModel() {}
+  virtual ~FirstOrderModel() throw() {}
   virtual FirstOrderModelIG * asFirstOrderModelIG() { return NULL; }
   virtual fmcheck::FirstOrderModelFmc * asFirstOrderModelFmc() { return NULL; }
   virtual FirstOrderModelQInt * asFirstOrderModelQInt() { return NULL; }
@@ -181,7 +181,7 @@ private:
   void processInitializeModelForTerm(Node n);
 public:
   FirstOrderModelFmc(QuantifiersEngine * qe, context::Context* c, std::string name);
-  virtual ~FirstOrderModelFmc();
+  virtual ~FirstOrderModelFmc() throw();
   FirstOrderModelFmc * asFirstOrderModelFmc() { return this; }
   // initialize the model
   void processInitialize( bool ispre );
index 372868ad7c4fac0232f68853dd1dc321468ba0b1..9a7b05090df93c005110b4cd577a7e65cd3e9110 100644 (file)
@@ -133,7 +133,7 @@ private:
   Node getSomeDomainElement( FirstOrderModelFmc * fm, TypeNode tn );
 public:
   FullModelChecker( context::Context* c, QuantifiersEngine* qe );
-  ~FullModelChecker(){}
+  ~FullModelChecker() throw() {}
 
   bool optBuildAtFullModel();
 
index 1be67caed8133bd002f7f9fadad9bd8e3d6093f8..f9853ef544e19c16fd98d9768bc7493a22a8bdf1 100644 (file)
@@ -33,6 +33,7 @@ namespace inst {
 /** base class for producing InstMatch objects */
 class IMGenerator {
 public:
+  virtual ~IMGenerator() {}
   /** reset instantiation round (call this at beginning of instantiation round) */
   virtual void resetInstantiationRound( QuantifiersEngine* qe ) = 0;
   /** reset, eqc is the equivalence class to search in (any if eqc=null) */
@@ -89,7 +90,7 @@ public:
   InstMatchGenerator( Node pat );
   InstMatchGenerator();
   /** destructor */
-  ~InstMatchGenerator(){}
+  ~InstMatchGenerator() throw() {}
   /** The pattern we are producing matches for.
       If null, this is a multi trigger that is merging matches from d_children.
   */
@@ -123,6 +124,7 @@ public:
 class VarMatchGeneratorBooleanTerm : public InstMatchGenerator {
 public:
   VarMatchGeneratorBooleanTerm( Node var, Node comp );
+  ~VarMatchGeneratorBooleanTerm() throw() {}
   Node d_comp;
   bool d_rm_prev;
   /** reset instantiation round (call this at beginning of instantiation round) */
@@ -139,6 +141,7 @@ public:
 class VarMatchGeneratorTermSubs : public InstMatchGenerator {
 public:
   VarMatchGeneratorTermSubs( Node var, Node subs );
+  ~VarMatchGeneratorTermSubs() throw() {}
   TNode d_var;
   Node d_subs;
   bool d_rm_prev;
@@ -186,7 +189,7 @@ public:
   /** constructors */
   InstMatchGeneratorMulti( Node f, std::vector< Node >& pats, QuantifiersEngine* qe );
   /** destructor */
-  ~InstMatchGeneratorMulti(){}
+  ~InstMatchGeneratorMulti() throw() {}
   /** reset instantiation round (call this whenever equivalence classes have changed) */
   void resetInstantiationRound( QuantifiersEngine* qe );
   /** reset, eqc is the equivalence class to search in (any if eqc=null) */
@@ -218,7 +221,7 @@ public:
   /** constructors */
   InstMatchGeneratorSimple( Node f, Node pat );
   /** destructor */
-  ~InstMatchGeneratorSimple(){}
+  ~InstMatchGeneratorSimple() throw() {}
   /** reset instantiation round (call this whenever equivalence classes have changed) */
   void resetInstantiationRound( QuantifiersEngine* qe );
   /** reset, eqc is the equivalence class to search in (any if eqc=null) */
index 9435fc97cc221dfd6d432d21898077b2c031080a..586cd492cad796760b27da827aa563329ec634c7 100644 (file)
@@ -75,7 +75,7 @@ private:
   int process( Node f, Theory::Effort effort, int e );
 public:
   InstStrategySimplex( arith::TheoryArith* th, QuantifiersEngine* ie );
-  ~InstStrategySimplex(){}
+  ~InstStrategySimplex() throw() {}
   /** identify */
   std::string identify() const { return std::string("Simplex"); }
 };
@@ -107,7 +107,7 @@ private:
   int process( Node f, Theory::Effort effort, int e );
 public:
   InstStrategyCegqi( QuantifiersEngine * qe );
-  ~InstStrategyCegqi(){}
+  ~InstStrategyCegqi() throw() {}
   
   bool addInstantiation( std::vector< Node >& subs, std::vector< int >& subs_typ );
   bool isEligibleForInstantiation( Node n );  
index 7679cf93f2c6091a3c27d245479b000f632c8bc7..47de4e581449c6f1c6fc85baacb8c6709a35ce52 100644 (file)
@@ -35,7 +35,7 @@ protected:
   QuantifiersEngine* d_qe;
 public:
   QModelBuilder( context::Context* c, QuantifiersEngine* qe );
-  virtual ~QModelBuilder(){}
+  virtual ~QModelBuilder() throw() {}
   // is quantifier active?
   virtual bool isQuantifierActive( Node f );
   //do exhaustive instantiation
index b2dc680f22742af990988a76cd61a306167ca262..829b67777544212af78c3c88732154f18dd1fe55 100644 (file)
@@ -203,6 +203,7 @@ public:
   bool areMatchDisequal( TNode n1, TNode n2 );\r
 public:\r
   QuantConflictFind( QuantifiersEngine * qe, context::Context* c );\r
+  ~QuantConflictFind() throw() {}\r
   /** register quantifier */\r
   void registerQuantifier( Node q );\r
 public:\r
index 1703a9bfc353513217c987acc84e83ece16750d9..2e2578af5ea16aeb1a18821069effbf5266d8842 100644 (file)
@@ -53,6 +53,7 @@ private:
   int checkRewriteRule( Node f, Theory::Effort e );
 public:
   RewriteEngine( context::Context* c, QuantifiersEngine* qe );
+  ~RewriteEngine() throw() {}
 
   bool needsCheck( Theory::Effort e );
   void check( Theory::Effort e, unsigned quant_e );
index 11156b5a40a9d26def52f2a291d352af7c93211c..a5b97712140993f7ee157a5ae73f54bcb3333720 100644 (file)
@@ -8,7 +8,7 @@ module STRINGS "theory/strings/options.h" Strings theory
 option stringExp strings-exp --strings-exp bool :default false :read-write
  experimental features in the theory of strings
 
-option stringLB strings-lb --strings-lb=N unsigned :default 0 :predicate less_equal(2) :predicate-include "smt/smt_engine.h"
+option stringLB strings-lb --strings-lb=N unsigned :default 0 :predicate options::less_equal(2) :predicate-include "smt/smt_engine.h"
  the strategy of LB rule application: 0-lazy, 1-eager, 2-no
 
 option stdASCII strings-std-ascii --strings-std-ascii bool :default true :predicate less_equal(2) :predicate-include "smt/smt_engine.h"
index 8d107d36a4e79a3e4afb5db52fb5bb691e5158c0..cad1f3bf1f42fa5c4553128d9975c67afe24b763 100644 (file)
@@ -1386,8 +1386,8 @@ void RegExpOpr::getCharSet( Node r, std::set<unsigned char> &pcset, SetNodes &pv
 bool RegExpOpr::isPairNodesInSet(std::set< PairNodes > &s, Node n1, Node n2) {
   for(std::set< PairNodes >::const_iterator itr = s.begin();
       itr != s.end(); ++itr) {
-    if(itr->first == n1 && itr->second == n2 ||
-       itr->first == n2 && itr->second == n1) {
+    if((itr->first == n1 && itr->second == n2) ||
+       (itr->first == n2 && itr->second == n1)) {
       return true;
     }
   }
index 5dc4d94083307894f5f94b42a4b03ec9223374e7..d0a1eb696f3c52d6f3afa98d8356784a07bb81cf 100644 (file)
@@ -962,8 +962,8 @@ void TheoryEngine::assertToTheory(TNode assertion, TNode originalAssertion, theo
   Trace("theory::assertToTheory") << "TheoryEngine::assertToTheory(" << assertion << ", " << toTheoryId << ", " << fromTheoryId << ")" << endl;
 
   Assert(toTheoryId != fromTheoryId);
-  if(! d_logicInfo.isTheoryEnabled(toTheoryId) &&
-     toTheoryId != THEORY_SAT_SOLVER) {
+  if(toTheoryId != THEORY_SAT_SOLVER &&
+     ! d_logicInfo.isTheoryEnabled(toTheoryId)) {
     stringstream ss;
     ss << "The logic was specified as " << d_logicInfo.getLogicString()
        << ", which doesn't include " << toTheoryId
index 6a53cb3ab902ba012482de9e7cc7c54eb10402e4..072f579be1d1ae93b761b15a90561567c1e73a8f 100644 (file)
@@ -46,7 +46,7 @@ TheoryModel::TheoryModel(context::Context* c, std::string name, bool enableFuncM
   d_eeContext->push();
 }
 
-TheoryModel::~TheoryModel() {
+TheoryModel::~TheoryModel() throw() {
   d_eeContext->pop();
   delete d_equalityEngine;
   delete d_eeContext;
index eeaf3c8da65922be37a3a2b9a0716f61f4ca7108..4e5c84f42e7e9fda78cde12da89d8bbbe4c3b0c4 100644 (file)
@@ -38,7 +38,7 @@ protected:
   SubstitutionMap d_substitutions;
 public:
   TheoryModel(context::Context* c, std::string name, bool enableFuncModels);
-  virtual ~TheoryModel();
+  virtual ~TheoryModel() throw();
 
   /** special local context for our equalityEngine so we can clear it independently of search context */
   context::Context* d_eeContext;
index 228fe721e663b5cbb84f2313997566a99fd609be..dd894103362830759656404ea2c141a9ac5816e9 100644 (file)
@@ -77,7 +77,12 @@ int DidYouMean::editDistance(const std::string& a, const std::string& b)
   int len1 = a.size();
   int len2 = b.size();
 
-  int C[3][len2+1];             // cost
+  int* C[3];
+  int ii;
+  for (ii = 0; ii < 3; ++ii) {
+    C[ii] = new int[len2+1];
+  }
+  //  int C[3][len2+1];             // cost
 
   for(int j = 0; j <= len2; ++j) {
     C[0][j] = j * addCost;
@@ -123,7 +128,11 @@ int DidYouMean::editDistance(const std::string& a, const std::string& b)
     }
 
   }
-  return C[len1%3][len2];
+  int result = C[len1%3][len2];
+  for (ii = 0; ii < 3; ++ii) {
+    delete [] C[ii];
+  }
+  return result;
 }
 
 string DidYouMean::getMatchAsString(string input, int prefixNewLines, int suffixNewLines) {