00001 /*****************************************************************************/ 00002 /*! 00003 *\file simulate_theorem_producer.h 00004 *\brief Implementation of the symbolic simulator proof rules 00005 * 00006 * Author: Sergey Berezin 00007 * 00008 * Created: Tue Oct 7 10:49:14 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__theory_simulate__simulate_theorem_producer_h_ 00031 #define _cvcl__theory_simulate__simulate_theorem_producer_h_ 00032 00033 #include "theorem_producer.h" 00034 #include "simulate_proof_rules.h" 00035 00036 namespace CVCL { 00037 00038 class SimulateTheoremProducer: 00039 public SimulateProofRules, public TheoremProducer { 00040 public: 00041 //! Constructor 00042 SimulateTheoremProducer(TheoremManager* tm): TheoremProducer(tm) { } 00043 virtual ~SimulateTheoremProducer() { } 00044 00045 virtual Theorem expandSimulate(const Expr& e); 00046 00047 /* 00048 private: 00049 Expr substFreeTerm(const Expr& e, const Expr& oldE, const Expr& newE); 00050 Expr recursiveSubst(const Expr& e, const Expr& oldE, const Expr& newE, 00051 ExprMap<Expr>& visited); 00052 */ 00053 00054 }; // end of class SimulateTheoremProducer 00055 00056 } // end of namespace CVCL 00057 00058 #endif