00001 /*****************************************************************************/ 00002 /*! 00003 * \file translator.h 00004 * \brief An exception to be thrown by the smtlib translator. 00005 * 00006 * Author: Clark Barrett 00007 * 00008 * Created: Sat Jun 25 18:03:09 2005 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 _CVC_lite__translator_h_ 00031 #define _CVC_lite__translator_h_ 00032 00033 namespace CVCL { 00034 00035 class Expr; 00036 class TheoryArith; 00037 template <class Data> class ExprMap; 00038 00039 //Eventually all the translation code should go here 00040 class Translator { 00041 TheoryArith* d_theoryArith; 00042 bool d_convertToDiff; 00043 bool d_iteLiftArith; 00044 00045 Expr preprocessRec(const Expr& e, ExprMap<Expr>& cache); 00046 00047 public: 00048 // Constructors 00049 Translator::Translator(TheoryArith* theoryarith, 00050 bool convertToDiff, bool iteLiftArith) 00051 : d_theoryArith(theoryarith), d_convertToDiff(convertToDiff), 00052 d_iteLiftArith(iteLiftArith) {} 00053 00054 Expr preprocess(const Expr& e); 00055 00056 // Destructor 00057 virtual ~Translator() { } 00058 00059 }; // end of class Translator 00060 00061 } // end of namespace CVCL 00062 00063 #endif