/*****************************************************************************/
/*!
*\file simulate_proof_rules.h
*\brief Abstract interface to the symbolic simulator proof rules
*
* Author: Sergey Berezin
*
* Created: Tue Oct 7 10:44:42 2003
*
*
*
* License to use, copy, modify, sell and/or distribute this software
* and its documentation for any purpose is hereby granted without
* royalty, subject to the terms and conditions defined in the \ref
* LICENSE file provided with this distribution.
*
*
*
*/
/*****************************************************************************/
#ifndef _cvc3__theory_simulate__simulate_proof_rules_h_
#define _cvc3__theory_simulate__simulate_proof_rules_h_
namespace CVC3 {
class Expr;
class Theorem;
class SimulateProofRules {
public:
//! Destructor
virtual ~SimulateProofRules() { }
//! SIMULATE(f, s_0, i_1, ..., i_k, N) <=> f(...f(f(s_0, i_1), i_2), ... i_k)
virtual Theorem expandSimulate(const Expr& e) = 0;
}; // end of class SimulateProofRules
} // end of namespace CVC3
#endif