CVC3
|
00001 /*****************************************************************************/ 00002 /*! 00003 * \file theorem_manager.cpp 00004 * 00005 * Author: Sergey Berezin 00006 * 00007 * Created: Feb 11 02:39:35 GMT 2003 00008 * 00009 * <hr> 00010 * 00011 * License to use, copy, modify, sell and/or distribute this software 00012 * and its documentation for any purpose is hereby granted without 00013 * royalty, subject to the terms and conditions defined in the \ref 00014 * LICENSE file provided with this distribution. 00015 * 00016 * <hr> 00017 * 00018 */ 00019 /*****************************************************************************/ 00020 // File: theorem_manager.cpp 00021 // 00022 // AUTHOR: Sergey Berezin, 07/05/02 00023 // 00024 // Defines some functions for class TheoremManager. They are not 00025 // inlined becaule they use ExprManager (expr_manager.h), which 00026 // includes theorem_manager.h. 00027 // 00028 /////////////////////////////////////////////////////////////////////////////// 00029 00030 00031 #include "theorem_value.h" 00032 #include "memory_manager_chunks.h" 00033 #include "memory_manager_malloc.h" 00034 #include "command_line_flags.h" 00035 #include "common_proof_rules.h" 00036 00037 00038 using namespace std; 00039 using namespace CVC3; 00040 00041 00042 // ExprManager is not initialized in vcl yet when we are created; we 00043 // use d_em as our local cache to fetch the EM when our getEM() is 00044 // first called. 00045 00046 TheoremManager::TheoremManager(ContextManager* cm, 00047 ExprManager* em, 00048 const CLFlags& flags) 00049 : d_cm(cm), d_em(em), d_flags(flags), 00050 d_withProof(flags["proofs"].getBool()), 00051 d_withAssump(true), d_flag(1), 00052 d_active(true) 00053 { 00054 d_em->newKind(PF_APPLY, "|-"); 00055 d_em->newKind(PF_HOLE, "**"); 00056 DebugAssert(!d_withProof || d_withAssump, 00057 "TheoremManager(): proofs without assumptions are not allowed"); 00058 if (flags["mm"].getString() == "chunks") { 00059 d_mm = new MemoryManagerChunks(sizeof(RegTheoremValue)); 00060 d_rwmm = new MemoryManagerChunks(sizeof(RWTheoremValue)); 00061 } else { 00062 d_mm = new MemoryManagerMalloc(); 00063 d_rwmm = new MemoryManagerMalloc(); 00064 } 00065 d_rules = createProofRules(); 00066 } 00067 00068 00069 TheoremManager::~TheoremManager() 00070 { 00071 delete d_mm; 00072 delete d_rwmm; 00073 } 00074 00075 00076 void TheoremManager::clear() { 00077 delete d_rules; 00078 d_active=false; 00079 }