00001 00027 // 00028 // file Refutation.hpp 00029 // implements output of refutations 00030 // 00031 00032 00033 #ifndef __Refutation__ 00034 # define __Refutation__ 00035 00036 00037 // class ostream; 00038 class Output; 00039 00040 00041 #include "List.hpp" 00042 #include "Unit.hpp" 00043 #include "VampireKernel.hpp" 00044 00045 00046 class Refutation 00047 { 00048 public: 00049 // constructors/destructors 00050 Refutation (const VampireKernel& kernel, 00051 const Problem& problem); 00052 Unit condense () const; // return refutation in condensed form 00053 const VampireKernel& kernel () const; 00054 const Problem& problem () const; 00055 00056 private: 00057 class Map; // defined in Refutation.cpp 00058 00059 const VampireKernel& _kernel; 00060 const Problem& _problem; 00061 Unit _goal; 00062 00063 Unit collect (const VampireKernel::Clause*, Map& map); 00064 UnitList collect (const VampireKernel::Clause::Ancestor* ancestors, Map& map); 00065 Unit condense (Unit root, Map& condenced) const; 00066 UnitList condense (UnitList units, Map& condensed) const; 00067 }; // class Refutation 00068 00069 00070 // **************** class Refutation, implementation *********************** 00071 00072 00073 inline 00074 const VampireKernel& Refutation::kernel () const 00075 { 00076 return _kernel; 00077 } // Refutation::kernel 00078 00079 00080 inline 00081 const Problem& Refutation::problem () const 00082 { 00083 return _problem; 00084 } // Refutation::problem 00085 00086 00087 #endif // __Refutation__