cnf_rules.h

Go to the documentation of this file.
00001 /*****************************************************************************/
00002 /*!
00003  * \file cnf_rules.h
00004  * \brief Abstract proof rules for CNF conversion
00005  * 
00006  * Author: Clark Barrett
00007  * 
00008  * Created: Thu Jan  5 05:24:45 2006
00009  *
00010  * <hr>
00011  * Copyright (C) 2006 by the Board of Trustees of Leland Stanford
00012  * Junior University and by New York University. 
00013  *
00014  * License to use, copy, modify, sell and/or distribute this software
00015  * and its documentation for any purpose is hereby granted without
00016  * royalty, subject to the terms and conditions defined in the \ref
00017  * LICENSE file provided with this distribution.  In particular:
00018  *
00019  * - The above copyright notice and this permission notice must appear
00020  * in all copies of the software and related documentation.
00021  *
00022  * - THE SOFTWARE IS PROVIDED "AS-IS", WITHOUT ANY WARRANTIES,
00023  * EXPRESSED OR IMPLIED.  USE IT AT YOUR OWN RISK.
00024  * 
00025  * <hr>
00026  * 
00027  */
00028 /*****************************************************************************/
00029 
00030 #ifndef _cvcl__sat__cnf_rules_h_
00031 #define _cvcl__sat__cnf_rules_h_
00032 
00033 namespace CVCL {
00034 
00035   class Theorem;
00036 
00037 /*! \defgroup CNF_Rules Proof Rules for the Search Engines
00038  * \ingroup CNF
00039  */
00040   //! API to the CNF proof rules
00041   /*! \ingroup CNF_Rules */
00042   class CNF_Rules {
00043     /*! \addtogroup CNF_Rules
00044      * @{ 
00045      */
00046   public:
00047     //! Destructor
00048     virtual ~CNF_Rules() { }    
00049 
00050     // A_1,...,A_n |- B ==> |- (OR !A_1 ... !A_n B)
00051     /*! @brief Learned clause rule: 
00052       \f[\frac{A_1,\ldots,A_n\vdash B}
00053               {\vdash\neg A_1\vee\cdots\vee \neg A_n\vee B}\f]
00054      *
00055      * \param thm is the theorem
00056      * \f$ A_1,\ldots,A_n\vdash B\f$
00057      * Each \f$A_i\f$ and \f$B\f$ should be literals
00058      * \f$B\f$ can also be \f$\mathrm{FALSE}\f$
00059      */
00060     virtual Theorem learnedClause(const Theorem& thm) = 0;
00061 
00062     //! |- P(_, ITE(cond,a,b), _) <=> ITE(cond,Pred(_, a, _),Pred(_, b, _))
00063     virtual Theorem ifLiftRule(const Expr& e, int itePos) = 0;
00064 
00065     /*! @} */ // end of CNF_Rules
00066   }; // end of class CNF_Rules
00067 
00068 } // end of namespace CVCL
00069 
00070 #endif

Generated on Thu Apr 13 16:57:30 2006 for CVC Lite by  doxygen 1.4.4