CVC3

cnf_theorem_producer.h

Go to the documentation of this file.
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