// copyright (c) 1997, Thomas C. Hales, all rights reserved. #ifndef RECURSE_H #define RECURSE_H #include #include extern "C" { #include #include } #include "error.h" #include "interval.h" #include "taylorInterval.h" /* I'm in a verifying frenzy. I'm not responding to outside noises. It's a heightened state of consciousness. S.McL. */ /* CLASS cellOption A cellOption contains various parameter settings used to fine-tune the behavior of the recursive verification procedures in the class prove. OVERVIEW TEXT The proof class is designed to prove many different inequalities in many different contexts. It is necessary to customize certain actions the recursive verification procedure. This is done through various parameter settings. AUTHOR Thomas C. Hales */ class cellOption { public: enum X { silent, verbose }; enum cellStatus { /*likely*/counterexample, cellPasses, inconclusive }; private: int iterationLimit; int iterationCount; double dihmax; int usingDihMax; int usingBigFace126; int chiShortCut; int startingIndex; int recursionDepth; X printingMode; double widthCutoff; int usingWidthCutoff; enum { Nskip = 30 }; int skip_these[Nskip]; int skipped; public: ////////// // // void setRecursionDepth(int rd) { recursionDepth=rd; } ////////// // This only has an effect if it is positive. // int getRecursionDepth() const { return recursionDepth; } ////////// // quit after so many tries. void setIterationLimit(int lim) { iterationLimit=lim; } ////////// // int getIterationLimit() const { return iterationLimit; } ////////// // void resetIterationCount() { iterationCount=0; } ////////// // int getIterationCount() const { return iterationCount; } ////////// // void augmentIterationCount() { iterationCount++; } ////////// // setSkipCases allows the user to enter an array that // specifies what input integers caseNumber will return // a nonzero value skip(caseNumber). // void setSkipCases(const int skiplist[],int len) { int i; if (len>Nskip) { error::message("skip array out of bounds"); len=Nskip; } for (i=0;i