theory_simulate.h

Go to the documentation of this file.
00001 /*****************************************************************************/
00002 /*!
00003  *\file theory_simulate.h
00004  *\brief Implementation of a symbolic simulator
00005  *
00006  * Author: Sergey Berezin
00007  *
00008  * Created: Tue Oct  7 10:13:15 2003
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  */
00028 /*****************************************************************************/
00029 
00030 #ifndef _cvcl__include__theory_simulate_h_
00031 #define _cvcl__include__theory_simulate_h_
00032 
00033 #include "theory.h"
00034 
00035 namespace CVCL {
00036 
00037 class SimulateProofRules;
00038 
00039 /*****************************************************************************/
00040 /*!
00041  * \class TheorySimulate
00042  * \ingroup Theories
00043  * \brief "Theory" of symbolic simulation.
00044  *
00045  * Author: Sergey Berezin
00046  *
00047  * Created: Tue Oct  7 10:13:15 2003
00048  *
00049  * This theory owns the SIMULATE operator.  It's job is to replace the above
00050  * expressions by their definitions using rewrite rules.
00051  */
00052 /*****************************************************************************/
00053 
00054 class TheorySimulate: public Theory {
00055 private:
00056   //! Our local proof rules
00057   SimulateProofRules* d_rules;
00058   //! Create proof rules for this theory
00059   SimulateProofRules* createProofRules();
00060 public:
00061   //! Constructor
00062   TheorySimulate(TheoryCore* core);
00063   //! Destructor
00064   ~TheorySimulate();
00065   // The required Theory API functions
00066   void assertFact(const Theorem& e) { }
00067   void checkSat(bool fullEffort) { }
00068   Theorem rewrite(const Expr& e);
00069   void computeType(const Expr& e);
00070   Expr computeTCC(const Expr& e);
00071   Expr TheorySimulate::parseExprOp(const Expr& e);
00072   ExprStream& print(ExprStream& os, const Expr& e);
00073 }; // end of class TheorySimulate
00074 
00075 } // end of namespace CVCL
00076 
00077 #endif

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