CVC3
|
00001 /*****************************************************************************/ 00002 /*! 00003 *\file cnf_theorem_producer.h 00004 *\brief Implementation of CNF_Rules API 00005 * 00006 * Author: Clark Barrett 00007 * 00008 * Created: Thu Jan 5 05:33:42 2006 00009 * 00010 * <hr> 00011 * 00012 * License to use, copy, modify, sell and/or distribute this software 00013 * and its documentation for any purpose is hereby granted without 00014 * royalty, subject to the terms and conditions defined in the \ref 00015 * LICENSE file provided with this distribution. 00016 * 00017 * <hr> 00018 * 00019 */ 00020 /*****************************************************************************/ 00021 00022 #ifndef _cvc3__sat__cnf_theorem_producer_h_ 00023 #define _cvc3__sat__cnf_theorem_producer_h_ 00024 00025 #include "theorem_producer.h" 00026 #include "cnf_rules.h" 00027 #include "command_line_flags.h" 00028 00029 namespace CVC3 { 00030 00031 class CNF_TheoremProducer 00032 : public CNF_Rules, 00033 public TheoremProducer { 00034 const CLFlags& d_flags; 00035 const bool& d_smartClauses; 00036 00037 public: 00038 CNF_TheoremProducer(TheoremManager* tm, const CLFlags& flags) 00039 : TheoremProducer(tm), d_flags(flags), 00040 d_smartClauses(flags["smart-clauses"].getBool()) { } 00041 ~CNF_TheoremProducer() { } 00042 00043 void getSmartClauses(const Theorem& thm, std::vector<Theorem>& clauses); 00044 00045 void learnedClauses(const Theorem& thm, std::vector<Theorem>& clauses, 00046 bool newLemma); 00047 Theorem CNFAddUnit(const Theorem& thm); 00048 Theorem CNFConvert(const Expr & e, const Theorem& thm); 00049 Theorem ifLiftRule(const Expr& e, int itePos); 00050 Theorem CNFtranslate(const Expr& before, 00051 const Expr& after, 00052 std::string reason, 00053 int pos, 00054 const std::vector<Theorem>& thms) ; 00055 Theorem CNFITEtranslate(const Expr& before, 00056 const std::vector<Expr>& after, 00057 const std::vector<Theorem>& thms, 00058 int pos) ; 00059 00060 00061 }; // end of class CNF_TheoremProducer 00062 } // end of namespace CVC3 00063 #endif