uf_proof_rules.h

Go to the documentation of this file.
00001 /*****************************************************************************/
00002 /*!
00003  *\file uf_proof_rules.h
00004  *\brief Abstract interface for uninterpreted function/predicate proof rules
00005  *
00006  * Author: Clark Barrett
00007  *
00008  * Created: Tue Aug 31 23:12:01 2004
00009  *
00010  * <hr>
00011  * Copyright (C) 2003 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  * CLASS: UFProofRules
00028  * 
00029  */
00030 /*****************************************************************************/
00031 
00032 #ifndef _cvcl__theory_uf__uf_proof_rules_h_
00033 #define _cvcl__theory_uf__uf_proof_rules_h_
00034 
00035 namespace CVCL {
00036 
00037   class Expr;
00038   class Theorem;
00039 
00040   class UFProofRules {
00041   public:
00042     // Destructor
00043     virtual ~UFProofRules() { }
00044 
00045     ////////////////////////////////////////////////////////////////////
00046     // Proof rules
00047     ////////////////////////////////////////////////////////////////////
00048 
00049     virtual Theorem relToClosure(const Theorem& rel) = 0;
00050     virtual Theorem relTrans(const Theorem& t1, const Theorem& t2) = 0;
00051 
00052     //! Beta reduction: |- (lambda x. f(x))(arg) = f(arg)
00053     virtual Theorem applyLambda(const Expr& e) = 0;
00054     //! Replace CONSTDEF and LETDECL in the operator with the definition
00055     virtual Theorem rewriteOpDef(const Expr& e) = 0;
00056 
00057   }; // end of class UFProofRules
00058 
00059 } // end of namespace CVCL
00060 
00061 #endif

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