From d91bdbd07278a35d2e697d59e7d2834ebd92660a Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 19 Jul 2022 12:07:33 +0100 Subject: [PATCH 001/210] updating unification with abstraction to use very special variable mechanism --- Forwards.hpp | 2 +- Indexing/LiteralIndex.cpp | 9 +- Indexing/LiteralIndex.hpp | 3 - Indexing/LiteralIndexingStructure.hpp | 2 - Indexing/LiteralSubstitutionTree.cpp | 47 ++--- Indexing/LiteralSubstitutionTree.hpp | 10 +- Indexing/SubstitutionTree.cpp | 68 +++--- Indexing/SubstitutionTree.hpp | 229 ++++----------------- Indexing/SubstitutionTree_FastGen.cpp | 2 +- Indexing/SubstitutionTree_FastInst.cpp | 4 +- Indexing/SubstitutionTree_Nodes.cpp | 15 +- Indexing/TermIndex.cpp | 6 - Indexing/TermIndex.hpp | 2 - Indexing/TermIndexingStructure.hpp | 2 - Indexing/TermSubstitutionTree.cpp | 218 +++++++++----------- Indexing/TermSubstitutionTree.hpp | 34 +-- Indexing/TypeSubstitutionTree.cpp | 92 +++------ Indexing/TypeSubstitutionTree.hpp | 12 +- Inferences/BinaryResolution.cpp | 21 +- Inferences/BinaryResolution.hpp | 4 +- Inferences/EqualityFactoring.cpp | 53 +++-- Inferences/EqualityResolution.cpp | 28 +-- Inferences/Superposition.cpp | 33 ++- Kernel/ApplicativeHelper.cpp | 4 +- Kernel/ApplicativeHelper.hpp | 18 +- Kernel/MismatchHandler.cpp | 101 +++++---- Kernel/MismatchHandler.hpp | 13 +- Kernel/RobSubstitution.cpp | 75 +++---- Kernel/RobSubstitution.hpp | 11 +- Kernel/Signature.hpp | 12 ++ Kernel/Term.cpp | 90 +++++++- Kernel/Term.hpp | 15 +- Kernel/TermTransformer.cpp | 24 ++- Kernel/TermTransformer.hpp | 2 + Saturation/SaturationAlgorithm.cpp | 36 ++-- Shell/UnificationWithAbstractionConfig.cpp | 9 + Shell/UnificationWithAbstractionConfig.hpp | 2 + UnitTests/tUnificationWithAbstraction.cpp | 14 +- 38 files changed, 643 insertions(+), 679 deletions(-) diff --git a/Forwards.hpp b/Forwards.hpp index 3d37b70d1c..a2a94c606c 100644 --- a/Forwards.hpp +++ b/Forwards.hpp @@ -164,7 +164,7 @@ typedef Stack UnificationConstraintStack; typedef Lib::SmartPtr UnificationConstraintStackSP; class Term; -typedef BiMap FuncSubtermMap; +typedef BiMap VSpecVarToTermMap; class Literal; typedef List LiteralList; typedef Stack LiteralStack; diff --git a/Indexing/LiteralIndex.cpp b/Indexing/LiteralIndex.cpp index a4cc9e803b..90c18779c8 100644 --- a/Indexing/LiteralIndex.cpp +++ b/Indexing/LiteralIndex.cpp @@ -47,12 +47,6 @@ SLQueryResultIterator LiteralIndex::getUnifications(Literal* lit, return _is->getUnifications(lit, complementary, retrieveSubstitutions); } -SLQueryResultIterator LiteralIndex::getUnificationsWithConstraints(Literal* lit, - bool complementary, bool retrieveSubstitutions) -{ - return _is->getUnificationsWithConstraints(lit, complementary, retrieveSubstitutions); -} - SLQueryResultIterator LiteralIndex::getGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions) { @@ -89,7 +83,8 @@ void GeneratingLiteralIndex::handleClause(Clause* c, bool adding) int selCnt=c->numSelected(); for(int i=0; iisEquality()) + handleLiteral((*c)[i], c, adding); } } diff --git a/Indexing/LiteralIndex.hpp b/Indexing/LiteralIndex.hpp index 96c638f714..fb322b1a17 100644 --- a/Indexing/LiteralIndex.hpp +++ b/Indexing/LiteralIndex.hpp @@ -37,9 +37,6 @@ class LiteralIndex SLQueryResultIterator getUnifications(Literal* lit, bool complementary, bool retrieveSubstitutions = true); - SLQueryResultIterator getUnificationsWithConstraints(Literal* lit, - bool complementary, bool retrieveSubstitutions = true); - SLQueryResultIterator getGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions = true); diff --git a/Indexing/LiteralIndexingStructure.hpp b/Indexing/LiteralIndexingStructure.hpp index 0b0773e235..eec7787da9 100644 --- a/Indexing/LiteralIndexingStructure.hpp +++ b/Indexing/LiteralIndexingStructure.hpp @@ -31,8 +31,6 @@ class LiteralIndexingStructure { virtual SLQueryResultIterator getAll() { NOT_IMPLEMENTED; } virtual SLQueryResultIterator getUnifications(Literal* lit, bool complementary, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } - virtual SLQueryResultIterator getUnificationsWithConstraints(Literal* lit, - bool complementary, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } virtual SLQueryResultIterator getGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } virtual SLQueryResultIterator getInstances(Literal* lit, diff --git a/Indexing/LiteralSubstitutionTree.cpp b/Indexing/LiteralSubstitutionTree.cpp index 8c19346959..2853cff1cb 100644 --- a/Indexing/LiteralSubstitutionTree.cpp +++ b/Indexing/LiteralSubstitutionTree.cpp @@ -29,7 +29,7 @@ namespace Indexing { LiteralSubstitutionTree::LiteralSubstitutionTree(bool useC) -: SubstitutionTree(2*env.signature->predicates(),useC) +: SubstitutionTree(2*env.signature->predicates()), _theoryConstraints(useC) { //EqualityProxy transformation can introduce polymorphism in a monomorphic problem //However, there is no need to guard aginst it, as equalityProxy removes all @@ -56,6 +56,14 @@ void LiteralSubstitutionTree::handleLiteral(Literal* lit, Clause* cls, bool inse Literal* normLit=Renaming::normalize(lit); + if(_theoryConstraints){ + ASS(!lit->isEquality()); + // replace theory subterms by very special variables + // For example f($sum(X,Y), b) ---> f(#, b) + TheoryTermReplacement ttr(&_termMap); + normLit = ttr.transform(normLit); + } + BindingMap svBindings; getBindings(normLit, svBindings); if(insert) { @@ -72,22 +80,10 @@ SLQueryResultIterator LiteralSubstitutionTree::getUnifications(Literal* lit, CALL("LiteralSubstitutionTree::getUnifications"); if(_polymorphic){ return getResultIterator>(lit, - complementary, retrieveSubstitutions,false); + complementary, retrieveSubstitutions); } else { return getResultIterator>(lit, - complementary, retrieveSubstitutions,false); - } -} -SLQueryResultIterator LiteralSubstitutionTree::getUnificationsWithConstraints(Literal* lit, - bool complementary, bool retrieveSubstitutions) -{ - CALL("LiteralSubstitutionTree::getUnificationsWithConstraints"); - if(_polymorphic){ - return getResultIterator>(lit, - complementary, retrieveSubstitutions,true); - } else { - return getResultIterator>(lit, - complementary, retrieveSubstitutions,true); + complementary, retrieveSubstitutions); } } @@ -99,7 +95,7 @@ SLQueryResultIterator LiteralSubstitutionTree::getGeneralizations(Literal* lit, SLQueryResultIterator res= // getResultIterator(lit, getResultIterator>(lit, - complementary, retrieveSubstitutions,false); + complementary, retrieveSubstitutions); // ASS_EQ(res.hasNext(), getResultIterator(lit, // complementary, retrieveSubstitutions).hasNext()); return res; @@ -110,7 +106,6 @@ SLQueryResultIterator LiteralSubstitutionTree::getInstances(Literal* lit, { CALL("LiteralSubstitutionTree::getInstances"); -// return getResultIterator(lit, complementary, true); if(retrieveSubstitutions) { NOT_IMPLEMENTED; @@ -120,11 +115,9 @@ SLQueryResultIterator LiteralSubstitutionTree::getInstances(Literal* lit, } SLQueryResultIterator res= -// getResultIterator(lit, getResultIterator>(lit, - complementary, retrieveSubstitutions, false); -// ASS_EQ(res.hasNext(), getResultIterator(lit, -// complementary, retrieveSubstitutions).hasNext()); + complementary, retrieveSubstitutions); + return res; } @@ -283,7 +276,7 @@ SLQueryResultIterator LiteralSubstitutionTree::getAll() template SLQueryResultIterator LiteralSubstitutionTree::getResultIterator(Literal* lit, - bool complementary, bool retrieveSubstitutions, bool useConstraints) + bool complementary, bool retrieveSubstitutions) { CALL("LiteralSubstitutionTree::getResultIterator"); @@ -309,10 +302,13 @@ SLQueryResultIterator LiteralSubstitutionTree::getResultIterator(Literal* lit, } if(lit->commutative()) { + // Amongst inferences that require literal unification, constraints are only used for + // binary resolution which does not involve equality + ASS(!_theoryConstraints); VirtualIterator qrit1=vi( - new Iterator(this, root, lit, retrieveSubstitutions, false, false, useConstraints) ); + new Iterator(this, root, lit, retrieveSubstitutions, false, false) ); VirtualIterator qrit2=vi( - new Iterator(this, root, lit, retrieveSubstitutions, true, false, useConstraints) ); + new Iterator(this, root, lit, retrieveSubstitutions, true, false) ); ASS(lit->isEquality()); return pvi( getContextualIterator( @@ -321,8 +317,9 @@ SLQueryResultIterator LiteralSubstitutionTree::getResultIterator(Literal* lit, Filter(lit, retrieveSubstitutions)) ); } else { + auto cType = _theoryConstraints ? THEORY_CONSTRAINTS : NO_CONSTRAINTS; VirtualIterator qrit=VirtualIterator( - new Iterator(this, root, lit, retrieveSubstitutions,false,false, useConstraints) ); + new Iterator(this, root, lit, retrieveSubstitutions,false,false, cType, &_termMap) ); return pvi( getMappingIterator(qrit, SLQueryResultFunctor()) ); } } diff --git a/Indexing/LiteralSubstitutionTree.hpp b/Indexing/LiteralSubstitutionTree.hpp index ec86d23eff..ee767ba456 100644 --- a/Indexing/LiteralSubstitutionTree.hpp +++ b/Indexing/LiteralSubstitutionTree.hpp @@ -28,7 +28,7 @@ class LiteralSubstitutionTree CLASS_NAME(LiteralSubstitutionTree); USE_ALLOCATOR(LiteralSubstitutionTree); - LiteralSubstitutionTree(bool useC=false); + LiteralSubstitutionTree(bool useC = false); void insert(Literal* lit, Clause* cls); void remove(Literal* lit, Clause* cls); @@ -39,9 +39,6 @@ class LiteralSubstitutionTree SLQueryResultIterator getUnifications(Literal* lit, bool complementary, bool retrieveSubstitutions); - SLQueryResultIterator getUnificationsWithConstraints(Literal* lit, - bool complementary, bool retrieveSubstitutions); - SLQueryResultIterator getGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions); @@ -158,9 +155,12 @@ class LiteralSubstitutionTree BacktrackData _bdataEq; }; + bool _theoryConstraints; + VSpecVarToTermMap _termMap; + template SLQueryResultIterator getResultIterator(Literal* lit, - bool complementary, bool retrieveSubstitutions, bool useConstraints); + bool complementary, bool retrieveSubstitutions); unsigned getRootNodeIndex(Literal* t, bool complementary=false); bool _polymorphic; diff --git a/Indexing/SubstitutionTree.cpp b/Indexing/SubstitutionTree.cpp index d1660d79ae..ff2f82698b 100644 --- a/Indexing/SubstitutionTree.cpp +++ b/Indexing/SubstitutionTree.cpp @@ -31,6 +31,8 @@ #include "Lib/DHMultiset.hpp" #include "TermSharing.hpp" +#include "Shell/UnificationWithAbstractionConfig.hpp" + #include #if VDEBUG @@ -47,13 +49,23 @@ vstring SingleTermListToString(const TermList* ts); using namespace std; using namespace Indexing; +TermList TheoryTermReplacement::transformSubterm(TermList trm) +{ + CALL("SubstitutionTree::TheoryTermReplacement::transformSubterm"); + + if( Shell::UnificationWithAbstractionConfig::isInterpreted(trm) && + !Shell::UnificationWithAbstractionConfig::isNumeral(trm)){ + return TermList::getVSpecVar(trm.term(), _termMap); + } + return trm; +} /** * Initialise the substitution tree. * @since 16/08/2008 flight Sydney-San Francisco */ -SubstitutionTree::SubstitutionTree(int nodes,bool useC, bool rfSubs) - : tag(false), _nextVar(0), _nodes(nodes), _useC(useC), _rfSubs(rfSubs) +SubstitutionTree::SubstitutionTree(int nodes) + : tag(false), _nextVar(0), _nodes(nodes) { CALL("SubstitutionTree::SubstitutionTree"); @@ -154,7 +166,7 @@ void SubstitutionTree::insert(Node** pnode,BindingMap& svBindings,LeafData ld) if(svBindings.isEmpty()) { *pnode=createLeaf(); } else { - *pnode=createIntermediateNode(svBindings.getOneKey(),_useC); + *pnode=createIntermediateNode(svBindings.getOneKey()); } } if(svBindings.isEmpty()) { @@ -221,7 +233,7 @@ void SubstitutionTree::insert(Node** pnode,BindingMap& svBindings,LeafData ld) UnresolvedSplitRecord urr=unresolvedSplits.pop(); Node* node=*pnode; - IntermediateNode* newNode = createIntermediateNode(node->term, urr.var,_useC); + IntermediateNode* newNode = createIntermediateNode(node->term, urr.var); node->term=urr.original; *pnode=newNode; @@ -258,7 +270,7 @@ void SubstitutionTree::insert(Node** pnode,BindingMap& svBindings,LeafData ld) } while (!remainingBindings.isEmpty()) { Binding b=remainingBindings.pop(); - IntermediateNode* inode = createIntermediateNode(term, b.var,_useC); + IntermediateNode* inode = createIntermediateNode(term, b.var); term=b.term; *pnode = inode; @@ -616,7 +628,7 @@ void SubstitutionTree::Node::split(Node** pnode, TermList* where, int var) Node* node=*pnode; - IntermediateNode* newNode = createIntermediateNode(node->term, var,node->withSorts()); + IntermediateNode* newNode = createIntermediateNode(node->term, var); node->term=*where; *pnode=newNode; @@ -677,20 +689,22 @@ bool SubstitutionTree::LeafIterator::hasNext() SubstitutionTree::UnificationsIterator::UnificationsIterator(SubstitutionTree* parent, Node* root, Term* query, bool retrieveSubstitution, bool reversed, - bool withoutTop, bool useC, FuncSubtermMap* funcSubtermMap) + bool withoutTop, ConstraintType ct, VSpecVarToTermMap* termMap) : tag(parent->tag), svStack(32), literalRetrieval(query->isLiteral()), retrieveSubstitution(retrieveSubstitution), inLeaf(false), ldIterator(LDIterator::getEmpty()), nodeIterators(8), bdStack(8), -clientBDRecording(false), useUWAConstraints(useC) +clientBDRecording(false) #if VDEBUG , tree(parent) #endif { CALL("SubstitutionTree::UnificationsIterator::UnificationsIterator"); - ASS(!useUWAConstraints || retrieveSubstitution); - ASS(!useUWAConstraints || parent->_useC); + useUWAConstraints = ct == ConstraintType::THEORY_CONSTRAINTS; + useHOConstraints = ct == ConstraintType::HO_CONSTRAINTS; + + ASS(!(useHOConstraints && useUWAConstraints)); #if VDEBUG tree->_iteratorCnt++; @@ -700,21 +714,29 @@ clientBDRecording(false), useUWAConstraints(useC) return; } - useHOConstraints = false; - if(funcSubtermMap){ - useHOConstraints = true; - subst.setMap(funcSubtermMap); + if(useUWAConstraints || useHOConstraints){ + subst.setMap(termMap); } queryNormalizer.normalizeVariables(query); Term* queryNorm=queryNormalizer.apply(query); - if(funcSubtermMap){ - TermList t = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(queryNorm, funcSubtermMap); + //cout << "FINDING Partners for " << query->toString() << endl; + + if(useHOConstraints){ + TermList t = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(queryNorm, termMap); ASS(!t.isVar()); queryNorm = t.term(); } + + if(useUWAConstraints){ + // replace theory subterms by very special variables + // For example f($sum(X,Y), b) ---> f(#, b) + TheoryTermReplacement ttr(termMap); + queryNorm = ttr.transform(queryNorm); + } + if(withoutTop){ subst.bindSpecialVar(0,TermList(queryNorm),NORM_QUERY_BANK); }else{ @@ -909,14 +931,7 @@ bool SubstitutionTree::UnificationsIterator::enter(Node* n, BacktrackData& bd) IntermediateNode* inode=static_cast(n); svStack.push(inode->childVar); NodeIterator nit=getNodeIterator(inode); - if(useUWAConstraints){ - TermList qt = subst.getSpecialVarTop(inode->childVar); - NodeIterator enit = pvi(getConcatenatedIterator(inode->childBySort(qt),nit)); - nodeIterators.backtrackablePush(enit,bd); - } - else{ - nodeIterators.backtrackablePush(nit, bd); - } + nodeIterators.backtrackablePush(nit, bd); } } if(recording) { @@ -934,10 +949,9 @@ bool SubstitutionTree::SubstitutionTreeMismatchHandler::introduceConstraint(Term return true; } -bool SubstitutionTree::STHOMismatchHandler::handle - (RobSubstitution* subst,TermList query,unsigned index1, TermList node,unsigned index2) +bool SubstitutionTree::STHOMismatchHandler::introduceConstraint(TermList query,unsigned index1, TermList node,unsigned index2) { - CALL("SubstitutionTree::STHOMismatchHandler::handle"); + CALL("SubstitutionTree::STHOMismatchHandler::introduceConstraint"); auto constraint = make_pair(make_pair(query,index1),make_pair(node,index2)); _constraints.backtrackablePush(constraint,_bd); diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 2bc8edf3e0..6b91bd340d 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -40,6 +40,7 @@ #include "Kernel/SortHelper.hpp" #include "Kernel/OperatorType.hpp" #include "Kernel/Signature.hpp" +#include "Kernel/TermTransformer.hpp" #include "Lib/Allocator.hpp" @@ -60,6 +61,23 @@ using namespace Kernel; namespace Indexing { +class TheoryTermReplacement : public TermTransformer { +public: + // false here means that the transformed terms + // are not shared + TheoryTermReplacement(VSpecVarToTermMap* termMap) : TermTransformer(false), _termMap(termMap) {} + TermList transformSubterm(TermList trm) override; +protected: + VSpecVarToTermMap* _termMap; +}; + +enum ConstraintType +{ + NO_CONSTRAINTS, + THEORY_CONSTRAINTS, + HO_CONSTRAINTS +}; + /** * Class of substitution trees. In fact, contains an array of substitution * trees. @@ -67,11 +85,12 @@ namespace Indexing { */ class SubstitutionTree { + public: CLASS_NAME(SubstitutionTree); USE_ALLOCATOR(SubstitutionTree); - SubstitutionTree(int nodes,bool useC=false, bool rfSubs=false); + SubstitutionTree(int nodes); ~SubstitutionTree(); // Tags are used as a debug tool to turn debugging on for a particular instance @@ -220,100 +239,6 @@ class SubstitutionTree typedef VirtualIterator NodeIterator; typedef List NodeList; - class IntermediateNode; - - //We can remove this class once we deal with UWA uniformly for - //for theories and HOL AYB - class ChildBySortHelper - { - public: - - CLASS_NAME(SubstitutionTree::ChildBySortHelper); - USE_ALLOCATOR(ChildBySortHelper); - - ChildBySortHelper(IntermediateNode* p): _parent(p) - { - bySort.ensure(Signature::FIRST_USER_CON); - bySortTerms.ensure(Signature::FIRST_USER_CON); - } - - void loadFrom(ChildBySortHelper* other){ - ASS(other->bySort.size() == other->bySortTerms.size()); - for(unsigned i=0;ibySort.size();i++){ - DHSet::Iterator it1(other->bySort[i]); - bySort[i].loadFromIterator(it1); - Stack::Iterator it2(other->bySortTerms[i]); - bySortTerms[i].loadFromIterator(it2); - } - } - - /** - * Return an iterator of child nodes whose top term has the same sort - * as Termlist t. Only consider interpreted sorts. - * - */ - NodeIterator childBySort(TermList t) - { - CALL("SubstitutionTree::ChildBySortHelper::childBySort"); - TermList srt; - // only consider interpreted sorts - if(SortHelper::tryGetResultSort(t,srt) && !srt.isVar()){ - ASS(srt.isTerm()); - unsigned con = srt.term()->functor(); - if(!srt.term()->isSuper() && env.signature->isInterpretedNonDefault(con)){ - unsigned top = t.term()->functor(); - TermStack::Iterator fit(bySortTerms[con]); - auto withoutThisTop = getFilteredIterator(fit,NotTop(top)); - auto nodes = getMappingIterator(withoutThisTop,ByTopFn(this)); - return pvi(getFilteredIterator(nodes,NonzeroFn())); - } - } - return NodeIterator::getEmpty(); - } - - DArray> bySort; - DArray> bySortTerms; - - IntermediateNode* _parent; - /* - * This is used for recording terms that might - */ - void mightExistAsTop(TermList t) - { - CALL("SubstitutionTree::ChildBySortHelper::mightExistAsTop"); - if(!t.isTerm()){ return; } - TermList srt; - if(SortHelper::tryGetResultSort(t,srt) && !srt.isVar() && - !srt.term()->isSuper()){ - unsigned con = srt.term()->functor(); - if(env.signature->isInterpretedNonDefault(con)){ - unsigned f = t.term()->functor(); - if(bySort[con].insert(f)){ - bySortTerms[con].push(t); - } - } - } - } - void remove(TermList t) - { - CALL("SubstitutionTree::ChildBySortHelper::remove"); - if(!t.isTerm()){ return;} - TermList srt; - if(SortHelper::tryGetResultSort(t,srt) && !srt.isVar() && - !srt.term()->isSuper()){ - unsigned con = srt.term()->functor(); - if(env.signature->isInterpretedNonDefault(con)){ - unsigned f = t.term()->functor(); - if(bySort[con].remove(f)){ - bySortTerms[con].remove(t); - } - } - } - } - - };// class SubstitutionTree::ChildBySortHelper - - class IntermediateNode : public Node @@ -321,11 +246,11 @@ class SubstitutionTree public: /** Build a new intermediate node which will serve as the root*/ inline - IntermediateNode(unsigned childVar) : childVar(childVar),_childBySortHelper(0) {} + IntermediateNode(unsigned childVar) : childVar(childVar) {} /** Build a new intermediate node */ inline - IntermediateNode(TermList ts, unsigned childVar) : Node(ts), childVar(childVar),_childBySortHelper(0) {} + IntermediateNode(TermList ts, unsigned childVar) : Node(ts), childVar(childVar) {} inline bool isLeaf() const { return false; }; @@ -366,22 +291,9 @@ class SubstitutionTree removeAllChildren(); } - - virtual NodeIterator childBySort(TermList t) - { - if(!_childBySortHelper) return NodeIterator::getEmpty(); - return _childBySortHelper->childBySort(t); - } - virtual void mightExistAsTop(TermList t) { - if(_childBySortHelper){ - _childBySortHelper->mightExistAsTop(t); - } - } - void loadChildren(NodeIterator children); const unsigned childVar; - ChildBySortHelper* _childBySortHelper; virtual void print(unsigned depth=0){ auto children = allChildren(); @@ -394,26 +306,6 @@ class SubstitutionTree }; // class SubstitutionTree::IntermediateNode - struct ByTopFn - { - ByTopFn(ChildBySortHelper* n) : node(n) {}; - Node** operator()(TermList t){ - return node->_parent->childByTop(t,false); - } - private: - ChildBySortHelper* node; - }; - struct NotTop - { - NotTop(unsigned t) : top(t) {}; - bool operator()(TermList t){ - return t.term()->functor()!=top; - } - private: - unsigned top; - }; - - class Leaf : public Node { @@ -450,8 +342,8 @@ class SubstitutionTree static Leaf* createLeaf(); static Leaf* createLeaf(TermList ts); static void ensureLeafEfficiency(Leaf** l); - static IntermediateNode* createIntermediateNode(unsigned childVar,bool constraints); - static IntermediateNode* createIntermediateNode(TermList ts, unsigned childVar,bool constraints); + static IntermediateNode* createIntermediateNode(unsigned childVar); + static IntermediateNode* createIntermediateNode(TermList ts, unsigned childVar); static void ensureIntermediateNodeEfficiency(IntermediateNode** inode); struct IsPtrToVarNodeFn @@ -518,18 +410,6 @@ class SubstitutionTree Node* _nodes[UARR_INTERMEDIATE_NODE_MAX_SIZE+1]; }; - class UArrIntermediateNodeWithSorts - : public UArrIntermediateNode - { - public: - UArrIntermediateNodeWithSorts(unsigned childVar) : UArrIntermediateNode(childVar) { - _childBySortHelper = new ChildBySortHelper(this); - } - UArrIntermediateNodeWithSorts(TermList ts, unsigned childVar) : UArrIntermediateNode(ts, childVar) { - _childBySortHelper = new ChildBySortHelper(this); - } - }; - class SListIntermediateNode : public IntermediateNode { @@ -584,7 +464,6 @@ class SubstitutionTree bool found=_nodes.getPosition(t,res,canCreate); if(!found) { if(canCreate) { - mightExistAsTop(t); *res=0; } else { res=0; @@ -596,9 +475,6 @@ class SubstitutionTree void remove(TermList t) { _nodes.remove(t); - if(_childBySortHelper){ - _childBySortHelper->remove(t); - } } CLASS_NAME(SubstitutionTree::SListIntermediateNode); @@ -609,18 +485,18 @@ class SubstitutionTree public: static Comparison compare(TermList t1,TermList t2) { - CALL("SubstitutionTree::SListIntermediateNode::NodePtrComparator::compare"); - - if(t1.isVar()) { - if(t2.isVar()) { - return Int::compare(t1.var(), t2.var()); - } - return LESS; - } - if(t2.isVar()) { - return GREATER; - } - return Int::compare(t1.term()->functor(), t2.term()->functor()); + CALL("SubstitutionTree::SListIntermediateNode::NodePtrComparator::compare"); + + if(t1.isVar()) { + if(t2.isVar()) { + return Int::compare(t1.var(), t2.var()); + } + return LESS; + } + if(t2.isVar()) { + return GREATER; + } + return Int::compare(t1.term()->functor(), t2.term()->functor()); } static Comparison compare(Node* n1, Node* n2) @@ -632,20 +508,6 @@ class SubstitutionTree NodeSkipList _nodes; }; - - - class SListIntermediateNodeWithSorts - : public SListIntermediateNode - { - public: - SListIntermediateNodeWithSorts(unsigned childVar) : SListIntermediateNode(childVar) { - _childBySortHelper = new ChildBySortHelper(this); - } - SListIntermediateNodeWithSorts(TermList ts, unsigned childVar) : SListIntermediateNode(ts, childVar) { - _childBySortHelper = new ChildBySortHelper(this); - } - }; - class Binding { public: /** Number of the variable at this node */ @@ -695,11 +557,6 @@ class SubstitutionTree int _nextVar; /** Array of nodes */ ZIArray _nodes; - /** enable searching with constraints for this tree */ - bool _useC; - /** functional subterms of a term are replaced by extra sepcial - variables before being inserted into the tree */ - bool _rfSubs; class LeafIterator : public IteratorCore @@ -734,8 +591,8 @@ class SubstitutionTree { public: FastGeneralizationsIterator(SubstitutionTree* parent, Node* root, Term* query, - bool retrieveSubstitution, bool reversed,bool withoutTop,bool useC, - FuncSubtermMap* fstm = 0); + bool retrieveSubstitution, bool reversed,bool withoutTop, + ConstraintType ct = NO_CONSTRAINTS, VSpecVarToTermMap* termMap = 0); ~FastGeneralizationsIterator(); @@ -781,8 +638,8 @@ class SubstitutionTree { public: FastInstancesIterator(SubstitutionTree* parent, Node* root, Term* query, - bool retrieveSubstitution, bool reversed, bool withoutTop, bool useC, - FuncSubtermMap* fstm = 0); + bool retrieveSubstitution, bool reversed, bool withoutTop, + ConstraintType ct = NO_CONSTRAINTS, VSpecVarToTermMap* termMap = 0); ~FastInstancesIterator(); bool hasNext(); @@ -830,8 +687,8 @@ class SubstitutionTree public: STHOMismatchHandler(Stack& c, BacktrackData& bd) : HOMismatchHandler(c), _constraints(c), _bd(bd) {} - virtual bool handle(RobSubstitution* subst, TermList query, unsigned index1, TermList node, unsigned index2); private: + virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2); Stack& _constraints; BacktrackData& _bd; }; @@ -841,8 +698,8 @@ class SubstitutionTree { public: UnificationsIterator(SubstitutionTree* parent, Node* root, Term* query, - bool retrieveSubstitution, bool reversed, bool withoutTop, bool useC, - FuncSubtermMap* funcSubtermMap = 0); + bool retrieveSubstitution, bool reversed, bool withoutTop, + ConstraintType ct = NO_CONSTRAINTS, VSpecVarToTermMap* termMap = 0); ~UnificationsIterator(); bool hasNext(); diff --git a/Indexing/SubstitutionTree_FastGen.cpp b/Indexing/SubstitutionTree_FastGen.cpp index 431b503f26..9b81b54f3e 100644 --- a/Indexing/SubstitutionTree_FastGen.cpp +++ b/Indexing/SubstitutionTree_FastGen.cpp @@ -370,7 +370,7 @@ ResultSubstitutionSP SubstitutionTree::GenMatcher::getSubstitution( * reversed. (useful for retrieval commutative terms) */ SubstitutionTree::FastGeneralizationsIterator::FastGeneralizationsIterator(SubstitutionTree* parent, Node* root, Term* query, - bool retrieveSubstitution, bool reversed, bool withoutTop, bool useC, FuncSubtermMap* fstm) + bool retrieveSubstitution, bool reversed, bool withoutTop, ConstraintType ct, VSpecVarToTermMap* termMap) : _literalRetrieval(query->isLiteral()), _retrieveSubstitution(retrieveSubstitution), _inLeaf(false), _ldIterator(LDIterator::getEmpty()), _root(root), _tree(parent), _alternatives(64), _specVarNumbers(64), _nodeTypes(64) diff --git a/Indexing/SubstitutionTree_FastInst.cpp b/Indexing/SubstitutionTree_FastInst.cpp index 3a3c126ead..73e1f39bed 100644 --- a/Indexing/SubstitutionTree_FastInst.cpp +++ b/Indexing/SubstitutionTree_FastInst.cpp @@ -565,8 +565,8 @@ bool SubstitutionTree::InstMatcher::matchNextAux(TermList queryTerm, TermList no * reversed. (useful for retrieval commutative terms) */ SubstitutionTree::FastInstancesIterator::FastInstancesIterator(SubstitutionTree* parent, Node* root, - Term* query, bool retrieveSubstitution, bool reversed, bool withoutTop, bool useC, - FuncSubtermMap* fstm) //final two for compatibility purposes + Term* query, bool retrieveSubstitution, bool reversed, bool withoutTop, + ConstraintType ct, VSpecVarToTermMap* termMap) //termMap for compatibility purposes : _literalRetrieval(query->isLiteral()), _retrieveSubstitution(retrieveSubstitution), _inLeaf(false), _ldIterator(LDIterator::getEmpty()), _root(root), _alternatives(64), _specVarNumbers(64), _nodeTypes(64) diff --git a/Indexing/SubstitutionTree_Nodes.cpp b/Indexing/SubstitutionTree_Nodes.cpp index fa7d5f9fb2..02d515312e 100644 --- a/Indexing/SubstitutionTree_Nodes.cpp +++ b/Indexing/SubstitutionTree_Nodes.cpp @@ -128,17 +128,15 @@ SubstitutionTree::Leaf* SubstitutionTree::createLeaf(TermList ts) return new UListLeaf(ts); } -SubstitutionTree::IntermediateNode* SubstitutionTree::createIntermediateNode(unsigned childVar,bool useC) +SubstitutionTree::IntermediateNode* SubstitutionTree::createIntermediateNode(unsigned childVar) { CALL("SubstitutionTree::createIntermediateNode/2"); - if(useC){ return new UArrIntermediateNodeWithSorts(childVar); } return new UArrIntermediateNode(childVar); } -SubstitutionTree::IntermediateNode* SubstitutionTree::createIntermediateNode(TermList ts, unsigned childVar,bool useC) +SubstitutionTree::IntermediateNode* SubstitutionTree::createIntermediateNode(TermList ts, unsigned childVar) { CALL("SubstitutionTree::createIntermediateNode/3"); - if(useC){ return new UArrIntermediateNodeWithSorts(ts, childVar); } return new UArrIntermediateNode(ts, childVar); } @@ -174,7 +172,6 @@ SubstitutionTree::Node** SubstitutionTree::UArrIntermediateNode:: } } if(canCreate) { - mightExistAsTop(t); ASS_L(_size,UARR_INTERMEDIATE_NODE_MAX_SIZE); ASS_EQ(_nodes[_size],0); _nodes[++_size]=0; @@ -207,13 +204,7 @@ SubstitutionTree::IntermediateNode* SubstitutionTree::SListIntermediateNode { CALL("SubstitutionTree::SListIntermediateNode::assimilate"); - IntermediateNode* res= 0; - if(orig->withSorts()){ - res = new SListIntermediateNodeWithSorts(orig->term, orig->childVar); - res->_childBySortHelper->loadFrom(orig->_childBySortHelper); - }else{ - res = new SListIntermediateNode(orig->term, orig->childVar); - } + IntermediateNode* res = new SListIntermediateNode(orig->term, orig->childVar); res->loadChildren(orig->allChildren()); orig->makeEmpty(); delete orig; diff --git a/Indexing/TermIndex.cpp b/Indexing/TermIndex.cpp index 0f76dd6410..379fe3ca2a 100644 --- a/Indexing/TermIndex.cpp +++ b/Indexing/TermIndex.cpp @@ -47,12 +47,6 @@ TermQueryResultIterator TermIndex::getUnifications(TermList t, return _is->getUnifications(t, retrieveSubstitutions); } -TermQueryResultIterator TermIndex::getUnificationsWithConstraints(TermList t, - bool retrieveSubstitutions) -{ - return _is->getUnificationsWithConstraints(t, retrieveSubstitutions); -} - TermQueryResultIterator TermIndex::getUnificationsUsingSorts(TermList t, TermList sort, bool retrieveSubstitutions) { diff --git a/Indexing/TermIndex.hpp b/Indexing/TermIndex.hpp index 7d8f9d1a1c..8e9c887b84 100644 --- a/Indexing/TermIndex.hpp +++ b/Indexing/TermIndex.hpp @@ -36,8 +36,6 @@ class TermIndex bool retrieveSubstitutions = true); TermQueryResultIterator getUnificationsUsingSorts(TermList t, TermList sort, bool retrieveSubstitutions = true); - TermQueryResultIterator getUnificationsWithConstraints(TermList t, - bool retrieveSubstitutions = true); TermQueryResultIterator getGeneralizations(TermList t, bool retrieveSubstitutions = true); TermQueryResultIterator getInstances(TermList t, diff --git a/Indexing/TermIndexingStructure.hpp b/Indexing/TermIndexingStructure.hpp index 21fd8060ad..18e560ec9c 100644 --- a/Indexing/TermIndexingStructure.hpp +++ b/Indexing/TermIndexingStructure.hpp @@ -33,8 +33,6 @@ class TermIndexingStructure { bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } virtual TermQueryResultIterator getUnificationsUsingSorts(TermList t, TermList sort, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } - virtual TermQueryResultIterator getUnificationsWithConstraints(TermList t, - bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } virtual TermQueryResultIterator getGeneralizations(TermList t, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } virtual TermQueryResultIterator getInstances(TermList t, diff --git a/Indexing/TermSubstitutionTree.cpp b/Indexing/TermSubstitutionTree.cpp index d71b1d1f8d..5edc9c3926 100644 --- a/Indexing/TermSubstitutionTree.cpp +++ b/Indexing/TermSubstitutionTree.cpp @@ -26,6 +26,7 @@ #include "Kernel/ApplicativeHelper.hpp" #include "Shell/Options.hpp" +#include "Shell/UnificationWithAbstractionConfig.hpp" #include "TermSubstitutionTree.hpp" @@ -35,12 +36,18 @@ namespace Indexing using namespace Lib; using namespace Kernel; -TermSubstitutionTree::TermSubstitutionTree(bool useC, bool rfSubs, bool extra) -: SubstitutionTree(env.signature->functions(),useC, rfSubs), _extByAbs(rfSubs) +TermSubstitutionTree::TermSubstitutionTree(bool theoryConstraints, bool hoConstraints, bool extra) +: SubstitutionTree(env.signature->functions()), + _theoryConstraints(theoryConstraints), + _higherOrderConstraints(hoConstraints) { _extra = extra; - if(rfSubs){ - _funcSubtermsByType = new TypeSubstitutionTree(); + _withConstraints = _higherOrderConstraints || _theoryConstraints; + // at the moment, unification with abstraction for theory reasoning + // and higher-order are not compatible. + ASS(!(_higherOrderConstraints && _theoryConstraints)); + if(_withConstraints){ + _termsByType = new TypeSubstitutionTree(); } } @@ -100,13 +107,7 @@ void TermSubstitutionTree::handleTerm(TermList t, Literal* lit, Clause* cls, boo LeafData ld(cls, lit, t); - if(_extByAbs && t.isTerm()){ - TermList sort = SortHelper::getResultSort(t.term()); - if(sort.isVar() || sort.isArrowSort()){ - _funcSubtermsByType->handleTerm(sort, ld, insert); - if(sort.isArrowSort()){ return; } - } - } + if(constraintTermHandled(t, ld, insert)) return; if(t.isOrdinaryVar()) { if(insert) { @@ -121,11 +122,18 @@ void TermSubstitutionTree::handleTerm(TermList t, Literal* lit, Clause* cls, boo Term* normTerm=Renaming::normalize(term); - if(_extByAbs){ - t = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(normTerm, &_functionalSubtermMap); + if(_higherOrderConstraints){ + t = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(normTerm, &_termMap); normTerm = t.term(); } + if(_theoryConstraints){ + // replace theory subterms by very special variables + // For example f($sum(X,Y), b) ---> f(#, b) + TheoryTermReplacement ttr(&_termMap); + normTerm = ttr.transform(normTerm); + } + BindingMap svBindings; getBindings(normTerm, svBindings); @@ -139,23 +147,55 @@ void TermSubstitutionTree::handleTerm(TermList t, Literal* lit, Clause* cls, boo } } +bool TermSubstitutionTree::constraintTermHandled(TermList t, LeafData ld, bool insert){ + CALL("TermSubstitutionTree::constraintTermHandled"); + + if(!_withConstraints) return false; + if(!t.isTerm()) return false; + + auto trm = t.term(); + auto sort = SortHelper::getResultSort(trm); + + if(_higherOrderConstraints){ + if(sort.isVar() || sort.isArrowSort()){ + _termsByType->handleTerm(sort, ld, insert); + // In the case where the sort is a variable + // we want to also insert term into the normal tree + // since it could have non-function type depending + // on type instantiation + if(sort.isArrowSort()){ return true; } + } + } + + if(_theoryConstraints){ + if( Shell::UnificationWithAbstractionConfig::isInterpreted(trm) && + !Shell::UnificationWithAbstractionConfig::isNumeral(t)){ + _termsByType->handleTerm(sort, ld, insert); + return true; + } + } + + return false; +} + + TermQueryResultIterator TermSubstitutionTree::getUnifications(TermList t, bool retrieveSubstitutions) { CALL("TermSubstitutionTree::getUnifications"); if(t.isOrdinaryVar()) { - return getAllUnifyingIterator(t,retrieveSubstitutions,false); + return getAllUnifyingIterator(t,retrieveSubstitutions); } else { ASS(t.isTerm()); if(_vars.isEmpty()) { // false here means without constraints - return getResultIterator(t.term(), retrieveSubstitutions,false); + return getResultIterator(t.term(), retrieveSubstitutions); } else { return pvi( getConcatenatedIterator( // false here means without constraints - ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions,false), + ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions), // false here means without constraints - getResultIterator(t.term(), retrieveSubstitutions,false)) ); + getResultIterator(t.term(), retrieveSubstitutions)) ); } } } @@ -165,60 +205,30 @@ TermQueryResultIterator TermSubstitutionTree::getUnificationsUsingSorts(TermList bool retrieveSubstitutions) { CALL("TermSubstitutionTree::getUnificationsUsingSorts"); - - ASS(_extByAbs); - - bool sortVar = sort.isVar(); - bool sortArrow = sort.isArrowSort(); - bool sortAtomic = !sortVar && !sortArrow; + ASS(_withConstraints); if(t.isOrdinaryVar()) { - auto it1 = sortVar || sortArrow ? _funcSubtermsByType->getUnifications(sort, t, retrieveSubstitutions): - TermQueryResultIterator::getEmpty(); - auto it2 = sortVar || sortAtomic ? getAllUnifyingIterator(t,retrieveSubstitutions,false): - TermQueryResultIterator::getEmpty(); + auto it1 = _termsByType->getUnifications(sort, t, retrieveSubstitutions); + // in the case of a variable of higher-order sort (e.g. X : i > i > i) + // we do not want to unify with all terms in the tree only to subsequently + // fail the typing check (since all terms of sort i > i > i will be in _termsByType) + auto it2 = !sort.isArrowSort() ? + getAllUnifyingIterator(t,retrieveSubstitutions): + ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions);; return pvi(getConcatenatedIterator(it1, it2)); - //TODO vars? } else { ASS(t.isTerm()); //TODO Is it OK to use t below? auto it1 = _vars.isEmpty() ? TermQueryResultIterator::getEmpty() : - ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions,false); + ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions); - auto it2 = sortVar || sortArrow ? _funcSubtermsByType->getUnifications(sort, t, retrieveSubstitutions) : - TermQueryResultIterator::getEmpty(); - auto it3 = sortVar || sortAtomic ? getResultIterator(t.term(), retrieveSubstitutions,false): + auto it2 = _termsByType->getUnifications(sort, t, retrieveSubstitutions); + auto it3 = !sort.isArrowSort() ? getResultIterator(t.term(), retrieveSubstitutions): TermQueryResultIterator::getEmpty(); return pvi(getConcatenatedIterator(getConcatenatedIterator(it1, it2), it3)); } } -//TODO code sharing with getUnifications -TermQueryResultIterator TermSubstitutionTree::getUnificationsWithConstraints(TermList t, - bool retrieveSubstitutions) -{ - CALL("TermSubstitutionTree::getUnificationsWithConstraints"); - - //cout << "getUnificationsWithConstraints of " << t.toString() << endl; - - // don't need to do anything different in the case of t being a variable - if(t.isOrdinaryVar()) { - return getAllUnifyingIterator(t,retrieveSubstitutions,false); - } else { - ASS(t.isTerm()); - if(_vars.isEmpty()) { - // true here means with constraints - return getResultIterator(t.term(), retrieveSubstitutions,true); - } else { - return pvi( getConcatenatedIterator( - //we use false here as we are giving variables so no constraints will be needed - ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions,false), - //true here means with constraints - getResultIterator(t.term(), retrieveSubstitutions,true)) ); - } - } -} - bool TermSubstitutionTree::generalizationExists(TermList t) { @@ -237,10 +247,8 @@ bool TermSubstitutionTree::generalizationExists(TermList t) if(root->isLeaf()) { return true; } - // Currently we do not need to generate constraints with generalisations - // FastGeneralizationsIterator does not support constraints anyway - bool useC = false; - return FastGeneralizationsIterator(this, root, trm, false,false,false,useC).hasNext(); + + return FastGeneralizationsIterator(this, root, trm, false,false,false).hasNext(); } /** @@ -252,15 +260,15 @@ TermQueryResultIterator TermSubstitutionTree::getGeneralizations(TermList t, CALL("TermSubstitutionTree::getGeneralizations"); if(t.isOrdinaryVar()) { //only variables generalize other variables - return ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions,false); + return ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions); } else { ASS(t.isTerm()); if(_vars.isEmpty()) { - return getResultIterator(t.term(), retrieveSubstitutions,false); + return getResultIterator(t.term(), retrieveSubstitutions); } else { return pvi( getConcatenatedIterator( - ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions,false), - getResultIterator(t.term(), retrieveSubstitutions,false)) ); + ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions), + getResultIterator(t.term(), retrieveSubstitutions)) ); } } } @@ -270,10 +278,10 @@ TermQueryResultIterator TermSubstitutionTree::getInstances(TermList t, { CALL("TermSubstitutionTree::getInstances"); if(t.isOrdinaryVar()) { - return getAllUnifyingIterator(t,retrieveSubstitutions,false); + return getAllUnifyingIterator(t,retrieveSubstitutions); } else { ASS(t.isTerm()); - return getResultIterator(t.term(), retrieveSubstitutions,false); + return getResultIterator(t.term(), retrieveSubstitutions); } } @@ -299,7 +307,7 @@ struct TermSubstitutionTree::TermQueryResultFn template TermQueryResultIterator TermSubstitutionTree::getResultIterator(Term* trm, - bool retrieveSubstitutions,bool withConstraints) + bool retrieveSubstitutions) { CALL("TermSubstitutionTree::getResultIterator"); @@ -312,23 +320,21 @@ TermQueryResultIterator TermSubstitutionTree::getResultIterator(Term* trm, if(root){ if(root->isLeaf()) { LDIterator ldit=static_cast(root)->allChildren(); - result = ldIteratorToTQRIterator(ldit,TermList(trm),retrieveSubstitutions,false); + result = ldIteratorToTQRIterator(ldit,TermList(trm),retrieveSubstitutions); } else{ - VirtualIterator qrit=vi( new Iterator(this, root, trm, retrieveSubstitutions,false,false, - withConstraints, - (_extByAbs ? &_functionalSubtermMap : 0) )); + auto cType = NO_CONSTRAINTS; + if(_withConstraints){ + if(_theoryConstraints) cType = THEORY_CONSTRAINTS; + if(_higherOrderConstraints) cType = HO_CONSTRAINTS; + } + + VirtualIterator qrit=vi( + new Iterator(this, root, trm, retrieveSubstitutions,false,false, cType, &_termMap)); result = pvi( getMappingIterator(qrit, TermQueryResultFn(_extra)) ); } } - // DO NOT ALLOW UNIFICATIONS AT THE TOP LEVEL - if(false){ - ASS(retrieveSubstitutions); - // this true means that I am allowed to pass a non-variable term to getAllUnifyingIterator - TermQueryResultIterator other = getAllUnifyingIterator(TermList(trm),retrieveSubstitutions,true); - result = pvi(getConcatenatedIterator(result,other)); - } return result; } @@ -344,28 +350,18 @@ struct TermSubstitutionTree::LDToTermQueryResultFn struct TermSubstitutionTree::LDToTermQueryResultWithSubstFn { - LDToTermQueryResultWithSubstFn(bool wc) : _withConstraints(wc) + LDToTermQueryResultWithSubstFn() { _subst=RobSubstitutionSP(new RobSubstitution()); - _constraints=UnificationConstraintStackSP(new Stack()); } TermQueryResult operator() (const LeafData& ld) { - if(_withConstraints){ - return TermQueryResult(ld.term, ld.literal, ld.clause, - ResultSubstitution::fromSubstitution(_subst.ptr(), - QRS_QUERY_BANK,QRS_RESULT_BANK), - _constraints); - } - else{ - return TermQueryResult(ld.term, ld.literal, ld.clause, - ResultSubstitution::fromSubstitution(_subst.ptr(), - QRS_QUERY_BANK,QRS_RESULT_BANK)); - } + // see no harm in always adding an empty constraint + return TermQueryResult(ld.term, ld.literal, ld.clause, + ResultSubstitution::fromSubstitution(_subst.ptr(), + QRS_QUERY_BANK,QRS_RESULT_BANK), UnificationConstraintStackSP()); } private: - bool _withConstraints; RobSubstitutionSP _subst; - UnificationConstraintStackSP _constraints; }; struct TermSubstitutionTree::LeafToLDIteratorFn @@ -378,22 +374,20 @@ struct TermSubstitutionTree::LeafToLDIteratorFn struct TermSubstitutionTree::UnifyingContext { - UnifyingContext(TermList queryTerm,bool withConstraints) + UnifyingContext(TermList queryTerm) : _queryTerm(queryTerm) -#if VDEBUG - , _withConstraints(withConstraints) -#endif {} + bool enter(TermQueryResult qr) { + CALL("TermSubstitutionTree::UnifyingContext::enter"); //if(_withConstraints){ cout << "enter " << qr.term << endl; } ASS(qr.substitution); RobSubstitution* subst=qr.substitution->tryGetRobSubstitution(); ASS(subst); bool unified = subst->unify(_queryTerm, QRS_QUERY_BANK, qr.term, QRS_RESULT_BANK); - //unsigned srt; - ASS(unified || _withConstraints); + ASS(unified); return unified; } void leave(TermQueryResult qr) @@ -408,25 +402,20 @@ struct TermSubstitutionTree::UnifyingContext } private: TermList _queryTerm; -#if VDEBUG - bool _withConstraints; -#endif }; template TermQueryResultIterator TermSubstitutionTree::ldIteratorToTQRIterator(LDIt ldIt, - TermList queryTerm, bool retrieveSubstitutions,bool withConstraints) + TermList queryTerm, bool retrieveSubstitutions) { CALL("TermSubstitutionTree::ldIteratorToTQRIterator"); - // only call withConstraints if we are also getting substitions, the other branch doesn't handle constraints - ASS(retrieveSubstitutions | !withConstraints); if(retrieveSubstitutions) { return pvi( getContextualIterator( getMappingIterator( ldIt, - LDToTermQueryResultWithSubstFn(withConstraints)), - UnifyingContext(queryTerm,withConstraints)) ); + LDToTermQueryResultWithSubstFn()), + UnifyingContext(queryTerm)) ); } else { return pvi( getMappingIterator( ldIt, @@ -435,13 +424,10 @@ TermQueryResultIterator TermSubstitutionTree::ldIteratorToTQRIterator(LDIt ldIt, } TermQueryResultIterator TermSubstitutionTree::getAllUnifyingIterator(TermList trm, - bool retrieveSubstitutions,bool withConstraints) + bool retrieveSubstitutions) { CALL("TermSubstitutionTree::getAllUnifyingIterator"); - - //if(withConstraints){ cout << "getAllUnifyingIterator for " << trm.toString() << endl; } - - ASS(trm.isVar() || withConstraints); + ASS(trm.isVar()) auto it1 = getFlattenedIterator(getMappingIterator(vi( new LeafIterator(this) ), LeafToLDIteratorFn())); @@ -450,12 +436,12 @@ TermQueryResultIterator TermSubstitutionTree::getAllUnifyingIterator(TermList tr // STOP DOING THIS AT THE TOP LEVEL if(false){ - return ldIteratorToTQRIterator(it1,trm, retrieveSubstitutions,withConstraints); + return ldIteratorToTQRIterator(it1,trm, retrieveSubstitutions); } else{ return ldIteratorToTQRIterator( getConcatenatedIterator(it1,LDSkipList::RefIterator(_vars)), - trm, retrieveSubstitutions,withConstraints); + trm, retrieveSubstitutions); } } diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index 3adb9451a5..eac3203fc9 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -18,6 +18,7 @@ #include "Kernel/Renaming.hpp" + #include "Lib/SkipList.hpp" #include "Lib/BiMap.hpp" @@ -52,7 +53,7 @@ class TermSubstitutionTree * store Terms of type $o (formulas) in the tree, but in the leaf we store * the skolem terms used to witness them (to facilitate the reuse of Skolems) */ - TermSubstitutionTree(bool useC=false, bool replaceFunctionalSubterms = false, bool extra = false); + TermSubstitutionTree(bool theoryConstraints = false, bool hoConstraints = false, bool extra = false); void insert(TermList t, Literal* lit, Clause* cls); void remove(TermList t, Literal* lit, Clause* cls); @@ -65,12 +66,6 @@ class TermSubstitutionTree TermQueryResultIterator getUnifications(TermList t, bool retrieveSubstitutions); - TermQueryResultIterator getUnificationsWithConstraints(TermList t, - bool retrieveSubstitutions); - - /* - * A higher order concern (though it may be useful in other situations) - */ TermQueryResultIterator getUnificationsUsingSorts(TermList t, TermList sort, bool retrieveSubstitutions); @@ -88,12 +83,13 @@ class TermSubstitutionTree void insert(TermList t, LeafData ld); void handleTerm(TermList t, Literal* lit, Clause* cls, bool insert); + bool constraintTermHandled(TermList t, LeafData ld, bool insert); struct TermQueryResultFn; template TermQueryResultIterator getResultIterator(Term* term, - bool retrieveSubstitutions,bool withConstraints); + bool retrieveSubstitutions); struct LDToTermQueryResultFn; struct LDToTermQueryResultWithSubstFn; @@ -102,11 +98,10 @@ class TermSubstitutionTree template TermQueryResultIterator ldIteratorToTQRIterator(LDIt ldIt, - TermList queryTerm, bool retrieveSubstitutions, - bool withConstraints); + TermList queryTerm, bool retrieveSubstitutions); TermQueryResultIterator getAllUnifyingIterator(TermList trm, - bool retrieveSubstitutions,bool withConstraints); + bool retrieveSubstitutions); inline unsigned getRootNodeIndex(Term* t) @@ -116,14 +111,21 @@ class TermSubstitutionTree typedef SkipList LDSkipList; LDSkipList _vars; + bool _withConstraints; + bool _theoryConstraints; - //higher-order concerns - bool _extra; - bool _extByAbs; + bool _higherOrderConstraints; + + VSpecVarToTermMap _termMap; - FuncSubtermMap _functionalSubtermMap; + /* + * Used to store terms that are not to be unified, but rather to form part of constraints + * For example $sum(X, Y) will be stored in _termsByType + */ + TypeSubstitutionTree* _termsByType; - TypeSubstitutionTree* _funcSubtermsByType; + //higher-order concerns + bool _extra; }; diff --git a/Indexing/TypeSubstitutionTree.cpp b/Indexing/TypeSubstitutionTree.cpp index b5fcae7623..af48fb3d6e 100644 --- a/Indexing/TypeSubstitutionTree.cpp +++ b/Indexing/TypeSubstitutionTree.cpp @@ -55,57 +55,28 @@ void TypeSubstitutionTree::remove(TermList sort, LeafData ld) #define QRS_QUERY_BANK 0 #define QRS_RESULT_BANK 1 -struct TypeSubstitutionTree::VarUnifFn +struct TypeSubstitutionTree::ToTermUnifier { - VarUnifFn(TermList queryTerm, TermList sort) - : _queryTerm(queryTerm), _sort(sort) { - _subst=RobSubstitutionSP(new RobSubstitution()); - } + ToTermUnifier(TermList queryTerm, bool retrieveSubstitutions) + : _queryTerm(queryTerm) {} TermQueryResult operator() (TermQueryResult tqr) { - //TODO unnecessary work here. We had the sort and then lost it - TermList tqrSort = SortHelper::getTermSort(tqr.term, tqr.literal); - _subst->reset(); - - ASS(_sort.isVar() || tqrSort.isVar()); - ALWAYS(_subst->unify(_sort, QRS_QUERY_BANK, tqrSort, QRS_RESULT_BANK)); + CALL("TypeSubstitutionTree::VarUnifFn::operator()"); - bool isTypeSub = false; - if(_queryTerm.isVar() || tqr.term.isVar()){ - ALWAYS(_subst->unify(_queryTerm, QRS_QUERY_BANK, tqr.term, QRS_RESULT_BANK)); + if((_queryTerm.isVar() || tqr.term.isVar()) && retrieveSubstitutions){ + RobSubstitution* subst=tqr.substitution->tryGetRobSubstitution(); + ASS(subst); + ALWAYS(subst->unify(_queryTerm, QRS_QUERY_BANK, tqr.term, QRS_RESULT_BANK)); } else { - isTypeSub = true; - } - - return TermQueryResult(tqr.term, tqr.literal, tqr.clause, - ResultSubstitution::fromSubstitution(_subst.ptr(), - QRS_QUERY_BANK,QRS_RESULT_BANK), isTypeSub); - } - -private: - RobSubstitutionSP _subst; - TermList _queryTerm; - TermList _sort; -}; - -struct TypeSubstitutionTree::ToTypeSubFn -{ - - ToTypeSubFn(TermList queryTerm) - : _queryTerm(queryTerm) {} - - TermQueryResult operator() (TermQueryResult tqr) { - if(!_queryTerm.isVar() && !tqr.term.isVar()){ tqr.isTypeSub = true; - } else { - RobSubstitution* subst = tqr.substitution->tryGetRobSubstitution(); - ALWAYS(subst->unify(_queryTerm, QRS_QUERY_BANK, tqr.term, QRS_RESULT_BANK)); } + return tqr; } private: TermList _queryTerm; + bool retrieveSubstitutions; }; /** @@ -115,6 +86,8 @@ void TypeSubstitutionTree::handleTerm(TermList sort, LeafData ld, bool insert) { CALL("TypeSubstitutionTree::handleTerm"); + ASS(sort.isVar() || sort.term()->isSort()); + if(sort.isOrdinaryVar()) { if(insert) { _vars.insert(ld); @@ -154,16 +127,20 @@ TermQueryResultIterator TypeSubstitutionTree::getUnifications(TermList sort, Ter //Debug::Tracer::printStack(cout); - auto it1 = !_vars.isEmpty() ? pvi(getMappingIterator(ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), sort, false), VarUnifFn(trm, sort))) : + auto it1 = !_vars.isEmpty() ? + pvi(getMappingIterator(ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), sort, false), + ToTermUnifier(trm, retrieveSubstitutions))) : TermQueryResultIterator::getEmpty(); if(sort.isOrdinaryVar()) { //TODO return vars as well? - auto it2 = getMappingIterator(getAllUnifyingIterator(sort,false), VarUnifFn(trm, sort)); + auto it2 = getMappingIterator(getAllUnifyingIterator(sort,retrieveSubstitutions), + ToTermUnifier(trm, retrieveSubstitutions)); return pvi(getConcatenatedIterator(it1, it2)); } else { ASS(sort.isTerm()); auto it2 = getMappingIterator( - getResultIterator(sort.term(), retrieveSubstitutions), ToTypeSubFn(trm)); + getResultIterator(sort.term(), retrieveSubstitutions), + ToTermUnifier(trm, retrieveSubstitutions)); return pvi(getConcatenatedIterator(it1, it2)); } } @@ -198,7 +175,7 @@ TermQueryResultIterator TypeSubstitutionTree::getResultIterator(Term* trm, result = ldIteratorToTQRIterator(ldit,TermList(trm),retrieveSubstitutions); } else{ - VirtualIterator qrit=vi( new Iterator(this, root, trm, retrieveSubstitutions,false,false,false) ); + VirtualIterator qrit=vi( new Iterator(this, root, trm, retrieveSubstitutions,false,false) ); result = pvi( getMappingIterator(qrit, TermQueryResultFn()) ); } } @@ -238,16 +215,18 @@ struct TypeSubstitutionTree::LeafToLDIteratorFn struct TypeSubstitutionTree::UnifyingContext { - UnifyingContext(TermList queryTerm) - : _queryTerm(queryTerm) {} + UnifyingContext(TermList querySort) + : _querySort(querySort) {} bool enter(TermQueryResult qr) { - //if(_withConstraints){ cout << "enter " << qr.term << endl; } + CALL("TypeSubstitutionTree::UnifyingContext::enter"); + //TODO unnecessary work here. We had the sort and then lost it + TermList qrSort = SortHelper::getTermSort(qr.term, qr.literal); ASS(qr.substitution); RobSubstitution* subst=qr.substitution->tryGetRobSubstitution(); ASS(subst); - bool unified = subst->unify(_queryTerm, QRS_QUERY_BANK, qr.term, QRS_RESULT_BANK); + bool unified = subst->unify(_querySort, QRS_QUERY_BANK, qrSort, QRS_RESULT_BANK); return unified; } void leave(TermQueryResult qr) @@ -257,23 +236,23 @@ struct TypeSubstitutionTree::UnifyingContext subst->reset(); } private: - TermList _queryTerm; + TermList _querySort; }; template TermQueryResultIterator TypeSubstitutionTree::ldIteratorToTQRIterator(LDIt ldIt, - TermList queryTerm, bool retrieveSubstitutions) + TermList querySort, bool retrieveSubstitutions) { CALL("TypeSubstitutionTree::ldIteratorToTQRIterator"); // only call withConstraints if we are also getting substitions, the other branch doesn't handle constraints //ASS(retrieveSubstitutions); - + if(retrieveSubstitutions) { return pvi( getContextualIterator( getMappingIterator( ldIt, LDToTermQueryResultWithSubstFn()), - UnifyingContext(queryTerm)) ); + UnifyingContext(querySort)) ); } else { return pvi( getMappingIterator( ldIt, @@ -281,23 +260,18 @@ TermQueryResultIterator TypeSubstitutionTree::ldIteratorToTQRIterator(LDIt ldIt, } } -TermQueryResultIterator TypeSubstitutionTree::getAllUnifyingIterator(TermList trm, +TermQueryResultIterator TypeSubstitutionTree::getAllUnifyingIterator(TermList sort, bool retrieveSubstitutions) { CALL("TypeSubstitutionTree::getAllUnifyingIterator"); - //if(withConstraints){ cout << "getAllUnifyingIterator for " << trm.toString() << endl; } - - ASS(trm.isVar()); + ASS(sort.isVar()); auto it1 = getFlattenedIterator(getMappingIterator(vi( new LeafIterator(this) ), LeafToLDIteratorFn())); - // If we are searching withConstraints it means that we have already added in - // the results related to _vars, we are only interested in non-unifying leaves - return ldIteratorToTQRIterator( getConcatenatedIterator(it1,LDSkipList::RefIterator(_vars)), - trm, retrieveSubstitutions); + sort, retrieveSubstitutions); } diff --git a/Indexing/TypeSubstitutionTree.hpp b/Indexing/TypeSubstitutionTree.hpp index 70be89d5d8..cd6147f489 100644 --- a/Indexing/TypeSubstitutionTree.hpp +++ b/Indexing/TypeSubstitutionTree.hpp @@ -27,6 +27,12 @@ namespace Indexing { +// A substitution tree based indexing structure, that stores sorts in the tree +// and terms of the relevant sorts in the leaves. +// It is useful when we are interested in finding terms that can type unify, but +// not necessarily term unify. For example it is used in unification with abstraction. + + class TypeSubstitutionTree : public TermIndexingStructure, SubstitutionTree { @@ -46,6 +52,10 @@ class TypeSubstitutionTree TermQueryResultIterator getUnifications(TermList sort, bool retrieveSubstitutions){ NOT_IMPLEMENTED; } + // Returns all terms whose sort unifies with @param sort + // @param trm is a term of sort sort. + // If trm is a variable, the resulting substitution is extending to be a term + // substitution as well. Likewise if the result is a variable TermQueryResultIterator getUnifications(TermList sort, TermList trm, bool retrieveSubstitutions); @@ -66,7 +76,7 @@ class TypeSubstitutionTree struct LDToTermQueryResultWithSubstFn; struct LeafToLDIteratorFn; struct UnifyingContext; - struct VarUnifFn; + struct ToTermUnifier; struct ToTypeSubFn; template diff --git a/Inferences/BinaryResolution.cpp b/Inferences/BinaryResolution.cpp index 9af81655f3..57b08b5e05 100644 --- a/Inferences/BinaryResolution.cpp +++ b/Inferences/BinaryResolution.cpp @@ -56,8 +56,6 @@ void BinaryResolution::attach(SaturationAlgorithm* salg) GeneratingInferenceEngine::attach(salg); _index=static_cast ( _salg->getIndexManager()->request(GENERATING_SUBST_TREE) ); - - _unificationWithAbstraction = env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF; } void BinaryResolution::detach() @@ -73,22 +71,18 @@ void BinaryResolution::detach() struct BinaryResolution::UnificationsFn { - UnificationsFn(GeneratingLiteralIndex* index,bool cU) - : _index(index),_unificationWithAbstraction(cU) {} + UnificationsFn(GeneratingLiteralIndex* index) + : _index(index) {} VirtualIterator > operator()(Literal* lit) { if(lit->isEquality()) { //Binary resolution is not performed with equality literals return VirtualIterator >::getEmpty(); } - if(_unificationWithAbstraction){ - return pvi( pushPairIntoRightIterator(lit, _index->getUnificationsWithConstraints(lit, true)) ); - } return pvi( pushPairIntoRightIterator(lit, _index->getUnifications(lit, true)) ); } private: GeneratingLiteralIndex* _index; - bool _unificationWithAbstraction; }; struct BinaryResolution::ResultFn @@ -220,7 +214,12 @@ Clause* BinaryResolution::generateClause(Clause* queryCl, Literal* queryLit, SLQ Literal* constraint = Literal::createEquality(false,qT,rT,sort); - static Options::UnificationWithAbstraction uwa = opts.unificationWithAbstraction(); + // AYB ground option removed until we clarify the desired behaviour. + // If/when we reintroduce, code below is the wrong place to check for groundness + // We should NOT have started creating result clause before we check for + // groundness of constraint. This can be done wwithin unification procedure + + /*static Options::UnificationWithAbstraction uwa = opts.unificationWithAbstraction(); if(uwa==Options::UnificationWithAbstraction::GROUND && !constraint->ground() && (!UnificationWithAbstractionConfig::isInterpreted(qT) && @@ -229,7 +228,7 @@ Clause* BinaryResolution::generateClause(Clause* queryCl, Literal* queryLit, SLQ // the unification was between two uninterpreted things that were not ground res->destroy(); return 0; - } + }*/ (*res)[next] = constraint; next++; @@ -326,7 +325,7 @@ ClauseIterator BinaryResolution::generateClauses(Clause* premise) PassiveClauseContainer* passiveClauseContainer = _salg->getPassiveClauseContainer(); // generate pairs of the form (literal selected in premise, unifying object in index) - auto it1 = getMappingIterator(premise->getSelectedLiteralIterator(),UnificationsFn(_index,_unificationWithAbstraction)); + auto it1 = getMappingIterator(premise->getSelectedLiteralIterator(),UnificationsFn(_index)); // actually, we got one iterator per selected literal; we flatten the obtained iterator of iterators: auto it2 = getFlattenedIterator(it1); // perform binary resolution on these pairs diff --git a/Inferences/BinaryResolution.hpp b/Inferences/BinaryResolution.hpp index 4e637d7063..535cbc302b 100644 --- a/Inferences/BinaryResolution.hpp +++ b/Inferences/BinaryResolution.hpp @@ -37,8 +37,7 @@ class BinaryResolution USE_ALLOCATOR(BinaryResolution); BinaryResolution() - : _index(0), - _unificationWithAbstraction(false) + : _index(0) { } void attach(SaturationAlgorithm* salg); @@ -52,7 +51,6 @@ class BinaryResolution struct ResultFn; GeneratingLiteralIndex* _index; - bool _unificationWithAbstraction; }; }; diff --git a/Inferences/EqualityFactoring.cpp b/Inferences/EqualityFactoring.cpp index 4bd2055380..c5080c5ca3 100644 --- a/Inferences/EqualityFactoring.cpp +++ b/Inferences/EqualityFactoring.cpp @@ -35,6 +35,8 @@ #include "EqualityFactoring.hpp" +#include "Indexing/SubstitutionTree.hpp" + #if VDEBUG #include using namespace std; @@ -94,7 +96,7 @@ struct EqualityFactoring::ResultFn ASS(sLit->isEquality()); ASS(fLit->isEquality()); - FuncSubtermMap funcSubtermMap; + VSpecVarToTermMap termMap; TermList srt = SortHelper::getEqualityArgumentSort(sLit); @@ -102,6 +104,7 @@ struct EqualityFactoring::ResultFn static UnificationConstraintStack constraints; subst.reset(); constraints.reset(); + subst.setMap(&termMap); if (!subst.unify(srt, 0, SortHelper::getEqualityArgumentSort(fLit), 0)) { return 0; @@ -116,27 +119,45 @@ struct EqualityFactoring::ResultFn ASS_NEQ(sLit, fLit); static Options::FunctionExtensionality ext = env.options->functionExtensionality(); + static Options::UnificationWithAbstraction uwa = env.options->unificationWithAbstraction(); bool use_ho_handler = (ext == Options::FunctionExtensionality::ABSTRACTION) && env.property->higherOrder(); + bool use_uwa_handler = uwa != Options::UnificationWithAbstraction::OFF; - if(use_ho_handler){ - TermList sLHSreplaced = sLHS; - TermList fLHSreplaced = fLHS; - if(!sLHS.isVar() && !fLHS.isVar() && - !srtS.isVar() && !srtS.isArrowSort()){ - sLHSreplaced = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(sLHS.term(), &funcSubtermMap); - fLHSreplaced = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(fLHS.term(), &funcSubtermMap); + ASS(!(use_uwa_handler && use_ho_handler)); + + if(use_ho_handler && !sLHS.isVar() && !fLHS.isVar() && + !srtS.isVar() && !srtS.isArrowSort()){ + sLHS = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(sLHS.term(), &termMap); + fLHS = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(fLHS.term(), &termMap); + } + + // We only care about non-trivial constraints where the top-sybmol of the two terns are the same + // and therefore a constraint can be created between arguments + if(use_uwa_handler && !sLHS.isVar() && !fLHS.isVar() && + sLHS.term()->functor() == fLHS.term()->functor()){ + TheoryTermReplacement ttr(&termMap); + sLHS = TermList(ttr.transform(sLHS.term())); + fLHS = TermList(ttr.transform(fLHS.term())); + } + + if(use_uwa_handler){ + UWAMismatchHandler hndlr(constraints); + if(!subst.unify(sLHS,0,fLHS,0,&hndlr)){ + return 0; } - subst.setMap(&funcSubtermMap); + } + + if(use_ho_handler){ HOMismatchHandler hndlr(constraints); - if(!subst.unify(sLHSreplaced,0,fLHSreplaced,0, &hndlr)) { - return 0; - } - } else { - if(!subst.unify(sLHS,0,fLHS,0)) { - return 0; - } + if(!subst.unify(sLHS,0,fLHS,0,&hndlr)){ + return 0; + } } + if(!use_uwa_handler && !use_ho_handler && !subst.unify(sLHS,0,fLHS,0)){ + return 0; + } + TermList sLHSS=subst.apply(sLHS,0); TermList sRHSS=subst.apply(sRHS,0); if(Ordering::isGorGEorE(_ordering.compare(sRHSS,sLHSS))) { diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index 25b539adbe..f332244330 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -22,6 +22,7 @@ #include "Lib/Environment.hpp" #include "Shell/Statistics.hpp" #include "Shell/Options.hpp" +#include "Indexing/SubstitutionTree.hpp" #include "Kernel/Clause.hpp" #include "Kernel/Unit.hpp" @@ -69,7 +70,7 @@ struct EqualityResolution::ResultFn ASS(lit->isEquality()); ASS(lit->isNegative()); - FuncSubtermMap funcSubtermMap; + VSpecVarToTermMap termMap; TermList arg0 = *lit->nthArgument(0); TermList arg1 = *lit->nthArgument(1); @@ -84,26 +85,27 @@ struct EqualityResolution::ResultFn TermList sort = SortHelper::getEqualityArgumentSort(lit); if(!arg0.isVar() && !arg1.isVar() && !sort.isVar() && !sort.isArrowSort()){ - arg0 = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(arg0.term(), &funcSubtermMap); - arg1 = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(arg1.term(), &funcSubtermMap); + arg0 = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(arg0.term(), &termMap); + arg1 = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(arg1.term(), &termMap); } } - //cout << "arg0 " + arg0.toString() << endl; - //cout << "arg1 " + arg1.toString() << endl; - - // We only care about non-trivial constraints where the top-sybmol of the two literals are the same + // We only care about non-trivial constraints where the top-sybmol of the two terms are the same // and therefore a constraint can be created between arguments - if(use_uwa_handler && arg0.isTerm() && arg1.isTerm() && + if(use_uwa_handler && !arg0.isVar() && !arg1.isVar() && arg0.term()->functor() == arg1.term()->functor()){ - use_uwa_handler = false; + TheoryTermReplacement ttr(&termMap); + arg0 = TermList(ttr.transform(arg0.term())); + arg1 = TermList(ttr.transform(arg1.term())); } + ASS(!(use_uwa_handler && use_ho_handler)); + static RobSubstitution subst; static UnificationConstraintStack constraints; subst.reset(); constraints.reset(); - subst.setMap(&funcSubtermMap); + subst.setMap(&termMap); if(use_uwa_handler){ UWAMismatchHandler hndlr(constraints); @@ -164,8 +166,10 @@ struct EqualityResolution::ResultFn TermList sort = SortHelper::getResultSort(rT.term()); Literal* constraint = Literal::createEquality(false,qT,rT,sort); + + // view comment in binary resolution regarding check below AYB - if(use_uwa_handler && uwa==Options::UnificationWithAbstraction::GROUND && + /*if(use_uwa_handler && uwa==Options::UnificationWithAbstraction::GROUND && !constraint->ground() && !UnificationWithAbstractionConfig::isInterpreted(qT) && !UnificationWithAbstractionConfig::isInterpreted(rT) ) { @@ -173,7 +177,7 @@ struct EqualityResolution::ResultFn // the unification was between two uninterpreted things that were not ground res->destroy(); return 0; - } + }*/ (*res)[next++] = constraint; } diff --git a/Inferences/Superposition.cpp b/Inferences/Superposition.cpp index 155a7bd600..909c2abd07 100644 --- a/Inferences/Superposition.cpp +++ b/Inferences/Superposition.cpp @@ -82,15 +82,12 @@ void Superposition::detach() struct Superposition::RewritableResultsFn { - RewritableResultsFn(SuperpositionSubtermIndex* index,bool wc,bool ea) : _index(index), - _withC(wc), _extByAbs(ea) {} + RewritableResultsFn(SuperpositionSubtermIndex* index,bool wc) : _index(index), + _withC(wc) {} VirtualIterator, TermQueryResult> > operator()(pair arg) { CALL("Superposition::RewritableResultsFn()"); if(_withC){ - return pvi( pushPairIntoRightIterator(arg, _index->getUnificationsWithConstraints(arg.second, true)) ); - } - else if(_extByAbs){ TermList sort = SortHelper::getTermSort(arg.second, arg.first); return pvi( pushPairIntoRightIterator(arg, _index->getUnificationsUsingSorts(arg.second, sort, true)) ); } @@ -101,7 +98,6 @@ struct Superposition::RewritableResultsFn private: SuperpositionSubtermIndex* _index; bool _withC; - bool _extByAbs; }; struct Superposition::RewriteableSubtermsFn @@ -122,15 +118,12 @@ struct Superposition::RewriteableSubtermsFn struct Superposition::ApplicableRewritesFn { - ApplicableRewritesFn(SuperpositionLHSIndex* index, bool wc, bool ea) : _index(index), - _withC(wc), _extByAbs(ea) {} + ApplicableRewritesFn(SuperpositionLHSIndex* index, bool wc) : _index(index), + _withC(wc) {} VirtualIterator, TermQueryResult> > operator()(pair arg) { CALL("Superposition::ApplicableRewritesFn()"); if(_withC){ - return pvi( pushPairIntoRightIterator(arg, _index->getUnificationsWithConstraints(arg.second, true)) ); - } - else if(_extByAbs){ TermList sort = SortHelper::getTermSort(arg.second, arg.first); return pvi( pushPairIntoRightIterator(arg, _index->getUnificationsUsingSorts(arg.second, sort, true)) ); } @@ -141,7 +134,6 @@ struct Superposition::ApplicableRewritesFn private: SuperpositionLHSIndex* _index; bool _withC; - bool _extByAbs; }; @@ -193,9 +185,10 @@ ClauseIterator Superposition::generateClauses(Clause* premise) //cout << "SUPERPOSITION with " << premise->toString() << endl; //TODO probably shouldn't go here! - static bool withConstraints = env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF; - static bool extByAbstraction = (env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) - && env.property->higherOrder(); + static bool withConstraints = + env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF + || (env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION + && env.property->higherOrder()); auto itf1 = premise->getSelectedLiteralIterator(); @@ -206,14 +199,14 @@ ClauseIterator Superposition::generateClauses(Clause* premise) // Get clauses with a literal whose complement unifies with the rewritable subterm, // returns a pair with the original pair and the unification result (includes substitution) - auto itf3 = getMapAndFlattenIterator(itf2,ApplicableRewritesFn(_lhsIndex,withConstraints, extByAbstraction)); + auto itf3 = getMapAndFlattenIterator(itf2,ApplicableRewritesFn(_lhsIndex,withConstraints)); //Perform forward superposition auto itf4 = getMappingIterator(itf3,ForwardResultFn(premise, passiveClauseContainer, *this)); auto itb1 = premise->getSelectedLiteralIterator(); auto itb2 = getMapAndFlattenIterator(itb1,EqHelper::SuperpositionLHSIteratorFn(_salg->getOrdering(), _salg->getOptions())); - auto itb3 = getMapAndFlattenIterator(itb2,RewritableResultsFn(_subtermIndex,withConstraints, extByAbstraction)); + auto itb3 = getMapAndFlattenIterator(itb2,RewritableResultsFn(_subtermIndex,withConstraints)); //Perform backward superposition auto itb4 = getMappingIterator(itb3,BackwardResultFn(premise, passiveClauseContainer, *this)); @@ -634,7 +627,9 @@ Clause* Superposition::performSuperposition( TermList sort = SortHelper::getResultSort(rT.term()); Literal* constraint = Literal::createEquality(false,qT,rT,sort); - static Options::UnificationWithAbstraction uwa = env.options->unificationWithAbstraction(); + // view comment in binary resolution regarding check below AYB + + /*static Options::UnificationWithAbstraction uwa = env.options->unificationWithAbstraction(); if(uwa==Options::UnificationWithAbstraction::GROUND && !constraint->ground() && (!UnificationWithAbstractionConfig::isInterpreted(qT) @@ -643,7 +638,7 @@ Clause* Superposition::performSuperposition( // the unification was between two uninterpreted things that were not ground res->destroy(); return 0; - } + }*/ (*res)[next] = constraint; next++; diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 065d5e0487..9c67ab5e86 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -369,7 +369,7 @@ bool ApplicativeHelper::isSafe(TermStack& args) return true; } -TermList ApplicativeHelper::replaceFunctionalAndBooleanSubterms(Term* term, FuncSubtermMap* fsm) +TermList ApplicativeHelper::replaceFunctionalAndBooleanSubterms(Term* term, VSpecVarToTermMap* fsm) { CALL("TermSubstitutionTree::replaceFunctionalAndBooleanSubterms"); @@ -426,7 +426,7 @@ TermList ApplicativeHelper::replaceFunctionalAndBooleanSubterms(Term* term, Func TermList sort = SortHelper::getResultSort(tl.term()); if(sort.isVar() || sort.isArrowSort() || sort == AtomicSort::boolSort()){ - tl = getVSpecVar(tl.term(), fsm); + tl = TermList::getVSpecVar(tl.term(), fsm); modified.setTop(true); } } diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 9acc3cb32e..df4a290ec2 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -73,26 +73,10 @@ class ApplicativeHelper { static bool isExactApplied(TermList head, unsigned argNum); static bool isOverApplied(TermList head, unsigned argNum); static bool isSafe(TermStack& args); - static TermList replaceFunctionalAndBooleanSubterms(Term* term, FuncSubtermMap* fsm); + static TermList replaceFunctionalAndBooleanSubterms(Term* term, VSpecVarToTermMap* fsm); static bool isBool(TermList t); static bool isTrue(TermList term); static bool isFalse(TermList term); - -private: - - static TermList getVSpecVar(Term* funcTerm, FuncSubtermMap* fsm) - { - unsigned vNum; - if(fsm->find(funcTerm, vNum)){ - ASS(vNum > TermList::SPEC_UPPER_BOUND); - return TermList(vNum, true); - } else { - unsigned vNum = TermList::SPEC_UPPER_BOUND + fsm->size() + 1; - fsm->insert(vNum, funcTerm); - return TermList(vNum, true); - } - } - }; #endif // __ApplicativeHelper__ diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index e7da817af3..a8a4db1bbf 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -15,7 +15,7 @@ #include "Shell/Options.hpp" #include "Lib/Environment.hpp" - +#include "Lib/BiMap.hpp" #include "Forwards.hpp" #include "Signature.hpp" @@ -28,15 +28,30 @@ namespace Kernel { -bool UWAMismatchHandler::handle(RobSubstitution* sub, TermList t1, unsigned index1, TermList t2, unsigned index2) +bool UWAMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, VSpecVarToTermMap* termMap) { CALL("UWAMismatchHandler::handle"); - TermList tt1 = sub->apply(t1,index1); - TermList tt2 = sub->apply(t2,index2); + ASS(!t1.isSpecialVar() && !t2.isSpecialVar()); + if(t1.isOrdinaryVar() || t2.isOrdinaryVar()) return false; + + if(checkUWA(t1,t2)){ + Term* tm1 = t1.isVSpecialVar() ? termMap->get(t1.var()) : t1.term(); + Term* tm2 = t2.isVSpecialVar() ? termMap->get(t2.var()) : t2.term(); + + if(tm1 == tm2 && tm1->shared() && tm1->ground()){ return true; } + + TermList tt1 = TermList(tm1); + TermList tt2 = TermList(tm2); + + RobSubstitution::TermSpec t1spec = RobSubstitution::TermSpec(tt1, index1); + RobSubstitution::TermSpec t2spec = RobSubstitution::TermSpec(tt2, index2); + + if(t1spec.sameTermContent(t2spec)){ return true; } - if(checkUWA(tt1,tt2)){ - return introduceConstraint(t1,index1,t2,index2); + //cout << "Introducing constraint: <" + tt1.toString() << " , " << tt2.toString() << ">" << endl; + + return introduceConstraint(tt1,index1,tt2,index2); } return false; } @@ -45,49 +60,63 @@ bool UWAMismatchHandler::checkUWA(TermList t1, TermList t2) { CALL("UWAMismatchHandler::checkUWA"); - if(!(t1.isTerm() && t2.isTerm())) return false; - - bool t1Interp = Shell::UnificationWithAbstractionConfig::isInterpreted(t1.term()); - bool t2Interp = Shell::UnificationWithAbstractionConfig::isInterpreted(t2.term()); - bool bothNumbers = (theory->isInterpretedConstant(t1) && theory->isInterpretedConstant(t2)); + static Shell::Options::UnificationWithAbstraction opt = env.options->unificationWithAbstraction(); + // handler should never be called if UWA is off + ASS(opt != Shell::Options::UnificationWithAbstraction::OFF); + + if((t1.isVSpecialVar() && !t2.isVSpecialVar()) || + (t2.isVSpecialVar() && !t1.isVSpecialVar()) ){ + // At the moment we assume that there are only two settings for UWA + // both terms must be interpreted, or at least one term be interpreted. + // If statement below checks for the case where both terms must be interpreted + // but only one of the terms passed to the handler is an interpreted one. + if(opt != Shell::Options::UnificationWithAbstraction::ONE_INTERP){ + return false; + } + return true; + } - bool okay = true; - - static Shell::Options::UnificationWithAbstraction opt = env.options->unificationWithAbstraction(); - if(opt == Shell::Options::UnificationWithAbstraction::OFF){ return false; } - - switch(opt){ - case Shell::Options::UnificationWithAbstraction::INTERP_ONLY: - okay &= (t1Interp && t2Interp && !bothNumbers); - break; - case Shell::Options::UnificationWithAbstraction::ONE_INTERP: - okay &= !bothNumbers && (t1Interp || t2Interp); - break; - case Shell::Options::UnificationWithAbstraction::CONSTANT: - okay &= !bothNumbers && (t1Interp || t2Interp); - okay &= (t1Interp || env.signature->functionArity(t1.term()->functor())); - okay &= (t2Interp || env.signature->functionArity(t2.term()->functor())); - break; - case Shell::Options::UnificationWithAbstraction::ALL: - case Shell::Options::UnificationWithAbstraction::GROUND: - break; - default: - ASSERTION_VIOLATION; - } - return okay; + ASS(t1.isVSpecialVar() && t2.isVSpecialVar()); + return true; } bool UWAMismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2) { + CALL("UWAMismatchHandler::introduceConstraint"); + auto constraint = make_pair(make_pair(t1,index1),make_pair(t2,index2)); constraints.push(constraint); return true; } -bool HOMismatchHandler::handle(RobSubstitution* sub, TermList t1, unsigned index1, TermList t2, unsigned index2) +bool HOMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, VSpecVarToTermMap* termMap) { CALL("HOMismatchHandler::handle"); + if(!t1.isVSpecialVar() && !t2.isVSpecialVar()){ + return false; + } + + Term* tm1 = termMap->get(t1.var()); + Term* tm2 = termMap->get(t2.var()); + + if(tm1 == tm2 && tm1->shared() && tm1->ground()){ return true; } + + TermList tt1 = TermList(tm1); + TermList tt2 = TermList(tm2); + + RobSubstitution::TermSpec t1spec = RobSubstitution::TermSpec(tt1, index1); + RobSubstitution::TermSpec t2spec = RobSubstitution::TermSpec(tt2, index2); + + if(t1spec.sameTermContent(t2spec)){ return true; } + + return introduceConstraint(tt1,index1,tt2,index2); +} + +bool HOMismatchHandler::introduceConstraint(TermList t1, unsigned index1, TermList t2, unsigned index2) +{ + CALL("HOMismatchHandler::introduceConstraint"); + auto constraint = make_pair(make_pair(t1,index1),make_pair(t2,index2)); constraints.push(constraint); return true; diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 3690738417..f7838c2e48 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -26,21 +26,23 @@ class MismatchHandler { public: // returns true if the mismatch was handled. - virtual bool handle(RobSubstitution* sub, TermList t1, unsigned index1, TermList t2, unsigned index2) = 0; + virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, VSpecVarToTermMap* termMap) = 0; + +protected: + virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2) = 0; }; class UWAMismatchHandler : public MismatchHandler { public: UWAMismatchHandler(Stack& c) : constraints(c) /*, specialVar(0)*/ {} - virtual bool handle(RobSubstitution* sub, TermList t1, unsigned index1, TermList t2, unsigned index2); + virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, VSpecVarToTermMap* termMap) override; CLASS_NAME(UWAMismatchHandler); USE_ALLOCATOR(UWAMismatchHandler); - private: + virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2) override; bool checkUWA(TermList t1, TermList t2); - virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2); Stack& constraints; // unsigned specialVar; @@ -51,12 +53,13 @@ class HOMismatchHandler : public MismatchHandler public: HOMismatchHandler(UnificationConstraintStack& c) : constraints(c) {} - virtual bool handle(RobSubstitution* sub, TermList t1, unsigned index1, TermList t2, unsigned index2); + virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, VSpecVarToTermMap* termMap) override; CLASS_NAME(HOMismatchHandler); USE_ALLOCATOR(HOMismatchHandler); private: + virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2) override; Stack& constraints; // unsigned specialVar; diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 10763b48ca..bb94d702ac 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -203,29 +203,6 @@ void RobSubstitution::bind(const VarSpec& v, const TermSpec& b) _bank.set(v,b); } -void RobSubstitution::addToConstraints(const VarSpec& v1, const VarSpec& v2, MismatchHandler* hndlr) -{ - CALL("RobSubstitution::addToConstraints"); - - Term* t1 = _funcSubtermMap->get(v1.var); - Term* t2 = _funcSubtermMap->get(v2.var); - - if(t1 == t2 && t1->shared() && t1->ground()){ return; } - - TermList tt1 = TermList(t1); - TermList tt2 = TermList(t2); - - TermSpec t1spec = TermSpec(tt1, v1.index); - TermSpec t2spec = TermSpec(tt2, v2.index); - - if(t1spec.sameTermContent(t2spec)){ return; } - - //cout << "adding to constraints <" + tt1.toString() + ", " + tt2.toString() + ">" << endl; - - hndlr->handle(this, tt1, v1.index, tt2, v2.index); -} - - void RobSubstitution::bindVar(const VarSpec& var, const VarSpec& to) { CALL("RobSubstitution::bindVar"); @@ -253,7 +230,7 @@ bool RobSubstitution::occurs(VarSpec vs, TermSpec ts) vs=root(vs); Stack toDo(8); if(ts.isVSpecialVar()){ - Term* t = _funcSubtermMap->get(ts.term.var()); + Term* t = _termMap->get(ts.term.var()); ts = TermSpec(TermList(t), ts.index); }else if(ts.isVar()) { ts=derefBound(ts); @@ -281,12 +258,12 @@ bool RobSubstitution::occurs(VarSpec vs, TermSpec ts) if(!isVSpecialVar){ dtvar=derefBound(TermSpec(tvar)); } else { - Term* t = _funcSubtermMap->get(var.var()); + Term* t = _termMap->get(var.var()); dtvar = TermSpec(TermList(t), ts.index); } if(!dtvar.isVar() || dtvar.isVSpecialVar()) { if(dtvar.isVSpecialVar()){ - Term* t = _funcSubtermMap->get(dtvar.term.var()); + Term* t = _termMap->get(dtvar.term.var()); dtvar = TermSpec(TermList(t), dtvar.index); } encountered.insert(tvar); @@ -336,9 +313,11 @@ bool RobSubstitution::unify(TermSpec t1, TermSpec t2,MismatchHandler* hndlr) if(dt1.sameTermContent(dt2)) { } else if(dt1.isVSpecialVar() && dt2.isVSpecialVar()){ ASS(hndlr); - addToConstraints(getVarSpec(dt1), getVarSpec(dt2), hndlr); + // if both are constraint terms (e.g. $sum(...) or $product(...) or higher-order stuff) + // then hand pair over to relevant handler to create constraint + hndlr->handle(dt1.term, dt1.index, dt2.term, dt2.index, _termMap); } - // Deal with the case where eithe rare variables + // Deal with the case where either are variables // Do an occurs-check and note that the variable // cannot be currently bound as we already dereferenced else if(dt1.isVar() && !dt1.isVSpecialVar()) { @@ -355,14 +334,23 @@ bool RobSubstitution::unify(TermSpec t1, TermSpec t2,MismatchHandler* hndlr) break; } bind(v2,dt1); - } else if(dt1.isVSpecialVar()){ - Term* t = _funcSubtermMap->get(dt1.term.var()); - t1 = TermSpec(TermList(t), dt1.index); - toDo.push(TTPair(t1, dt2)); - } else if(dt2.isVSpecialVar()){ - Term* t = _funcSubtermMap->get(dt2.term.var()); - t2 = TermSpec(TermList(t), dt2.index); - toDo.push(TTPair(dt1, t2)); + } else if(dt1.isVSpecialVar()){ + // Only one term is a constraint term + // (e.g. trying to unify f(a) with $sum(...)) + // In this case we create constraint if settings allow. + // If they do not, handler will return false and we continue with + // standard unification. + if(!hndlr->handle(dt1.term, dt1.index, dt2.term, dt2.index, _termMap)){ + Term* t = _termMap->get(dt1.term.var()); + t1 = TermSpec(TermList(t), dt1.index); + toDo.push(TTPair(t1, dt2)); + } + } else if(dt2.isVSpecialVar()){ + if(!hndlr->handle(dt1.term, dt1.index, dt2.term, dt2.index, _termMap)){ + Term* t = _termMap->get(dt2.term.var()); + t2 = TermSpec(TermList(t), dt2.index); + toDo.push(TTPair(dt1, t2)); + } } else { // Case where both are terms TermList* ss=&dt1.term; @@ -384,6 +372,7 @@ bool RobSubstitution::unify(TermSpec t1, TermSpec t2,MismatchHandler* hndlr) Term* s = ss->term(); Term* t = tt->term(); + ASS(s->arity() > 0); ASS(s->functor() == t->functor()); @@ -408,14 +397,8 @@ bool RobSubstitution::unify(TermSpec t1, TermSpec t2,MismatchHandler* hndlr) encountered.insert(itm); } } else { - // Eventually, we want to make theories using the hashing/very special variable - // mechanism used by higher-order logic to pruduce constraints. - // until then the first condition ensures that the handler is never called - // incorrectly. HOL also uses a handler, but it shouldn't be called here. - if(env.property->higherOrder() || !hndlr || !hndlr->handle(this,tsss.term,tsss.index,tstt.term,tstt.index)){ - mismatch=true; - break; - } + mismatch=true; + break; } } @@ -662,7 +645,7 @@ TermList RobSubstitution::apply(TermList trm, int index) const } Term* t; if(ts.term.isVSpecialVar()){ - t = _funcSubtermMap->get(ts.term.var()); + t = _termMap->get(ts.term.var()); } else { t = ts.term.term(); } @@ -757,7 +740,7 @@ size_t RobSubstitution::getApplicationResultWeight(TermList trm, int index) cons } Term* t; if(ts.term.isVSpecialVar()){ - t = _funcSubtermMap->get(ts.term.var()); + t = _termMap->get(ts.term.var()); }else{ t=ts.term.term(); } diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index fdd2861b1e..d8306bedda 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -38,7 +38,7 @@ class RobSubstitution CLASS_NAME(RobSubstitution); USE_ALLOCATOR(RobSubstitution); - RobSubstitution() : _funcSubtermMap(nullptr), _nextUnboundAvailable(0) {} + RobSubstitution() : _termMap(nullptr), _nextUnboundAvailable(0) {} SubstIterator matches(Literal* base, int baseIndex, Literal* instance, int instanceIndex, bool complementary); @@ -57,13 +57,13 @@ class RobSubstitution } void reset() { - _funcSubtermMap = 0; + _termMap = 0; _bank.reset(); _nextUnboundAvailable=0; } - void setMap(FuncSubtermMap* fmap){ - _funcSubtermMap = fmap; + void setMap(VSpecVarToTermMap* map){ + _termMap = map; } /** * Bind special variable to a specified term @@ -220,7 +220,6 @@ class RobSubstitution TermSpec deref(VarSpec v) const; TermSpec derefBound(TermSpec v) const; - void addToConstraints(const VarSpec& v1, const VarSpec& v2,MismatchHandler* hndlr); void bind(const VarSpec& v, const TermSpec& b); void bindVar(const VarSpec& var, const VarSpec& to); VarSpec root(VarSpec v) const; @@ -244,7 +243,7 @@ class RobSubstitution typedef DHMap BankType; - FuncSubtermMap* _funcSubtermMap; + VSpecVarToTermMap* _termMap; BankType _bank; mutable unsigned _nextUnboundAvailable; diff --git a/Kernel/Signature.hpp b/Kernel/Signature.hpp index 23c224c9ad..76475a1eca 100644 --- a/Kernel/Signature.hpp +++ b/Kernel/Signature.hpp @@ -606,6 +606,18 @@ class Signature return con == BOOL_SRT_CON; } + bool isIntegerCon(unsigned con) const{ + return con == INTEGER_SRT_CON; + } + + bool isRealCon(unsigned con) const{ + return con == REAL_SRT_CON; + } + + bool isRationalCon(unsigned con) const{ + return con == RATIONAL_SRT_CON; + } + bool isTupleCon(unsigned con) { return getTypeCon(con)->tupleSort(); } diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index aa6f1a848d..be57139b03 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -178,6 +178,8 @@ bool TermList::sameTop(TermList ss,TermList tt) */ bool TermList::sameTopFunctor(TermList ss, TermList tt) { + CALL("TermList::sameTopFunctor"); + if (!ss.isTerm() || !tt.isTerm()) { return false; } @@ -190,6 +192,8 @@ bool TermList::sameTopFunctor(TermList ss, TermList tt) */ bool TermList::equals(TermList t1, TermList t2) { + CALL("TermList::equals"); + static Stack stack(8); ASS(stack.isEmpty()); @@ -229,6 +233,8 @@ bool TermList::equals(TermList t1, TermList t2) */ bool TermList::allShared(TermList* args) { + CALL("TermList::allShared"); + while (args->isNonEmpty()) { if (args->isTerm() && !args->term()->shared()) { return false; @@ -238,6 +244,21 @@ bool TermList::allShared(TermList* args) return true; } +TermList TermList::getVSpecVar(Term* trm, VSpecVarToTermMap* map) +{ + CALL("TermList::getVSpecVar"); + + unsigned vNum; + if(map->find(trm, vNum)){ + ASS(vNum > TermList::SPEC_UPPER_BOUND); + return TermList(vNum, true); + } else { + unsigned vNum = TermList::SPEC_UPPER_BOUND + map->size() + 1; + map->insert(vNum, trm); + return TermList(vNum, true); + } +} + unsigned TermList::weight() const { return isVar() ? 1 : term()->weight(); @@ -271,6 +292,24 @@ bool TermList::isTupleSort() static_cast(term())->isTupleSort(); } +bool TermList::isIntSort(){ + CALL("TermList::isIntSort"); + return !isVar() && term()->isSort() && + static_cast(term())->isIntSort(); +} + +bool TermList::isRatSort(){ + CALL("TermList::isRatSort"); + return !isVar() && term()->isSort() && + static_cast(term())->isRatSort(); +} + +bool TermList::isRealSort(){ + CALL("TermList::isRealSort"); + return !isVar() && term()->isSort() && + static_cast(term())->isRealSort(); +} + bool AtomicSort::isArrowSort() const { CALL("AtomicSort::isArrowSort"); @@ -295,6 +334,24 @@ bool AtomicSort::isTupleSort() const { return env.signature->isTupleCon(_functor); } +bool AtomicSort::isIntSort() const { + CALL("AtomicSort::isIntSort"); + + return env.signature->isIntegerCon(_functor); +} + +bool AtomicSort::isRatSort() const { + CALL("AtomicSort::isRatSort"); + + return env.signature->isRationalCon(_functor); +} + +bool AtomicSort::isRealSort() const { + CALL("AtomicSort::isRealSort"); + + return env.signature->isRealCon(_functor); +} + bool TermList::isApplication() const { CALL("Term::isApplication"); @@ -1017,8 +1074,6 @@ Term* Term::createNonShared(Term* t,TermList* args) return s; } // Term::createNonShared(const Term* t,Term* args) - - /** Create a new complex term, and do not insert it into the sharing * structure. */ @@ -1554,6 +1609,21 @@ AtomicSort* AtomicSort::create(AtomicSort* sort,TermList* args) return s; } +AtomicSort* AtomicSort::createNonShared(AtomicSort* sort,TermList* args) +{ + CALL("AtomicSort::createNonShared"); + + int arity = sort->arity(); + AtomicSort* s = new(arity) AtomicSort(*sort); + + TermList* ss = s->args(); + for (int i = 0;i < arity;i++) { + ASS(!args[i].isEmpty()); + *ss-- = args[i]; + } + return s; +} + AtomicSort* AtomicSort::create2(unsigned tc, TermList arg1, TermList arg2) { @@ -1690,6 +1760,22 @@ Literal* Literal::create(Literal* l,TermList* args) return m; } // Literal::create +Literal* Literal::createNonShared(Literal* l, TermList* args) +{ + CALL("Literal::createNonShared"); + // no need to create non-shared equalities currently + ASS(!l->isEquality()); + + int arity = l->arity(); + Literal* m = new(arity) Literal(*l); + + TermList* ts = m->args(); + for (int i = 0;i < arity;i++) { + ASS(!args[i].isEmpty()); + *ts-- = args[i]; + } + return m; +} /** * Return a new equality literal, with polarity @b polarity and diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 0cfca7094a..994580314b 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -171,6 +171,7 @@ class TermList { static bool equals(TermList t1, TermList t2); static bool allShared(TermList* args); static TermList var(unsigned var, bool special = false) { return TermList(var, special); } + static TermList getVSpecVar(Term* trm, VSpecVarToTermMap* map); /** if not var, the inner term must be shared */ unsigned weight() const; /** returns true if this termList is wrapping a higher-order "arrow" sort */ @@ -178,6 +179,9 @@ class TermList { bool isBoolSort(); bool isArraySort(); bool isTupleSort(); + bool isIntSort(); + bool isRatSort(); + bool isRealSort(); bool isApplication() const; bool containsSubterm(TermList v); bool containsAllVariablesOf(TermList t); @@ -804,7 +808,8 @@ class AtomicSort static AtomicSort* create(unsigned typeCon, unsigned arity, const TermList* args); static AtomicSort* create2(unsigned tc, TermList arg1, TermList arg2); - static AtomicSort* create(AtomicSort* t,TermList* args); + static AtomicSort* create(AtomicSort* a,TermList* args); + static AtomicSort* createNonShared(AtomicSort* a,TermList* args); static AtomicSort* createConstant(unsigned typeCon) { return create(typeCon,0,0); } static AtomicSort* createConstant(const vstring& name); @@ -816,6 +821,12 @@ class AtomicSort bool isArraySort() const; /** true if sort is the sort of an tuple */ bool isTupleSort() const; + /** True if the sort $int */ + bool isIntSort() const; + /** True if rational sort */ + bool isRatSort() const; + /** True if real sort */ + bool isRealSort() const; const vstring& typeConName() const; @@ -832,7 +843,6 @@ class AtomicSort static TermList rationalSort(); private: - static AtomicSort* createNonShared(unsigned typeCon, unsigned arity, TermList* arg); static AtomicSort* createNonSharedConstant(unsigned typeCon) { return createNonShared(typeCon,0,0); } }; @@ -887,6 +897,7 @@ class Literal bool commutative, const TermList* args); static Literal* create(Literal* l,bool polarity); static Literal* create(Literal* l,TermList* args); + static Literal* createNonShared(Literal* l,TermList* args); static Literal* createEquality(bool polarity, TermList arg1, TermList arg2, TermList sort); static Literal* create1(unsigned predicate, bool polarity, TermList arg); static Literal* create2(unsigned predicate, bool polarity, TermList arg1, TermList arg2); diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index 13c09acf99..782a459421 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -72,10 +72,18 @@ Term* TermTransformer::transform(Term* term) if(orig->isSort()){ //For most applications we probably dont want to transform sorts. //However, we don't enforce that here, inheriting classes can decide - //for themselves - newTrm=AtomicSort::create(static_cast(orig), argLst); + //for themselves + if(_sharedResult){ + newTrm=AtomicSort::create(static_cast(orig), argLst); + } else { + newTrm=AtomicSort::createNonShared(static_cast(orig), argLst); + } } else { - newTrm=Term::create(orig,argLst); + if(_sharedResult){ + newTrm=Term::create(orig,argLst); + } else { + newTrm=Term::createNonShared(orig,argLst); + } } args.push(TermList(newTrm)); modified.setTop(true); @@ -128,10 +136,16 @@ Term* TermTransformer::transform(Term* term) TermList* argLst = &args.top() - (term->arity() - 1); if (term->isLiteral()) { - return Literal::create(static_cast(term), argLst); - } else { + if(_sharedResult){ + return Literal::create(static_cast(term), argLst); + } + return Literal::createNonShared(static_cast(term), argLst); + } + if(_sharedResult){ return Term::create(term, argLst); } + return Term::createNonShared(term, argLst); + } Literal* TermTransformer::transform(Literal* lit) diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index 9289e9a051..e49ac3824e 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -38,6 +38,7 @@ namespace Kernel { */ class TermTransformer { public: + TermTransformer(bool shared = true) : _sharedResult(shared) {} virtual ~TermTransformer() {} Term* transform(Term* term); Literal* transform(Literal* lit); @@ -46,6 +47,7 @@ class TermTransformer { Term* transformSpecial(Term* specialTerm); TermList transform(TermList ts); virtual Formula* transform(Formula* f); + bool _sharedResult; }; /** diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 03eb8cf028..535b11027d 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1198,26 +1198,26 @@ void SaturationAlgorithm::activate(Clause* cl) _active->add(cl); - auto generated = _generator->generateSimplify(cl); - - ClauseIterator toAdd = generated.clauses; - - while (toAdd.hasNext()) { - Clause* genCl=toAdd.next(); - addNewClause(genCl); - - Inference::Iterator iit=genCl->inference().iterator(); - while (genCl->inference().hasNext(iit)) { - Unit* premUnit=genCl->inference().next(iit); - // Now we can get generated clauses having parents that are not clauses - // Indeed, from induction we can have generated clauses whose parents do - // not include the activated clause - if(premUnit->isClause()){ - Clause* premCl=static_cast(premUnit); - onParenthood(genCl, premCl); - } + auto generated = _generator->generateSimplify(cl); + + ClauseIterator toAdd = generated.clauses; + + while (toAdd.hasNext()) { + Clause* genCl=toAdd.next(); + addNewClause(genCl); + + Inference::Iterator iit=genCl->inference().iterator(); + while (genCl->inference().hasNext(iit)) { + Unit* premUnit=genCl->inference().next(iit); + // Now we can get generated clauses having parents that are not clauses + // Indeed, from induction we can have generated clauses whose parents do + // not include the activated clause + if(premUnit->isClause()){ + Clause* premCl=static_cast(premUnit); + onParenthood(genCl, premCl); } } + } _clauseActivationInProgress=false; diff --git a/Shell/UnificationWithAbstractionConfig.cpp b/Shell/UnificationWithAbstractionConfig.cpp index 8f99eed63e..21550c6988 100644 --- a/Shell/UnificationWithAbstractionConfig.cpp +++ b/Shell/UnificationWithAbstractionConfig.cpp @@ -31,3 +31,12 @@ bool UnificationWithAbstractionConfig::isInterpreted(Term* t) || theory->isInterpretedConstant(t) || env.signature->getFunction(t->functor())->termAlgebraCons(); } + +bool UnificationWithAbstractionConfig::isNumeral(TermList t) +{ + if (t.isVar()) { + return false; + } else { + return theory->isInterpretedConstant(t.term()); + } +} diff --git a/Shell/UnificationWithAbstractionConfig.hpp b/Shell/UnificationWithAbstractionConfig.hpp index 3ee44a6410..0f4c47e96f 100644 --- a/Shell/UnificationWithAbstractionConfig.hpp +++ b/Shell/UnificationWithAbstractionConfig.hpp @@ -23,6 +23,8 @@ class UnificationWithAbstractionConfig static bool isInterpreted(Kernel::Term* t ); static bool isInterpreted(Kernel::TermList t); + static bool isNumeral(Kernel::TermList t); + }; } // namespace Shell diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 85235d9d01..bbc118bdaa 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -132,7 +132,7 @@ LiteralIndexingStructure* getBasicIndex() void reportMatches(LiteralIndexingStructure* index, Literal* qlit) { - SLQueryResultIterator it= index->getUnificationsWithConstraints(qlit,false,true); + SLQueryResultIterator it= index->getUnifications(qlit,false,true); cout << endl; cout << "Unify with " << qlit->toString() << endl; while(it.hasNext()){ @@ -152,10 +152,12 @@ void reportMatches(LiteralIndexingStructure* index, Literal* qlit) cout << endl; } +// AYB look into rewriting these test now that UWA has been heavily modified + // This test demonstrates the current issue. The constraints produced depend on TEST_FUN(current_issue) { - env.options->setUWA(Options::UnificationWithAbstraction::ALL); + env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); LiteralIndexingStructure* index = getBasicIndex(); @@ -184,7 +186,7 @@ TEST_FUN(current_issue) static const int NORM_QUERY_BANK=2; static const int NORM_RESULT_BANK=3; -struct testMismatchHandler : MismatchHandler +/*struct testMismatchHandler : MismatchHandler { testMismatchHandler(Stack* c) : _constraints(c) {} bool handle(RobSubstitution* subst, TermList query, unsigned index1, TermList node, unsigned index2){ @@ -198,7 +200,7 @@ bool handle(RobSubstitution* subst, TermList query, unsigned index1, TermList no return true; } Stack* _constraints; -}; +};*/ void reportRobUnify(TermList a, TermList b) { @@ -227,7 +229,7 @@ void reportRobUnify(TermList a, TermList b) TEST_FUN(using_robsub) { - env.options->setUWA(Options::UnificationWithAbstraction::ALL); + env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); TermList b_plus_two = int_plus(int_constant("b"),number("2")); TermList one_plus_a = int_plus(number("1"),int_constant("a")); @@ -241,7 +243,7 @@ TEST_FUN(using_robsub) TEST_FUN(complex_case) { - env.options->setUWA(Options::UnificationWithAbstraction::ALL); + env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); // The complex case is where we have a variable that needs to be instantiated elsewhere // e.g. unifying f(f(g(X),X),f(Y,a)) with f(f(1,2),(3,g(Z))) From f5be36885102301c65697f1902a8afedf4f99eaa Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 19 Jul 2022 12:08:11 +0100 Subject: [PATCH 002/210] left from previous commit --- Shell/Options.cpp | 2 +- Shell/Options.hpp | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index d30e33f8e8..0eeb623dd7 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1150,7 +1150,7 @@ void Options::init() _unificationWithAbstraction = ChoiceOptionValue("unification_with_abstraction","uwa", UnificationWithAbstraction::OFF, - {"off","interpreted_only","one_side_interpreted","one_side_constant","all","ground"}); + {"off","interpreted_only","one_side_interpreted"}); _unificationWithAbstraction.description= "During unification, if two terms s and t fail to unify we will introduce a constraint s!=t and carry on. For example, " "resolving p(1) \\/ C with ~p(a+2) would produce C \\/ 1 !=a+2. This is controlled by a check on the terms. The expected " diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 365227b39e..efb97dcb9c 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -219,10 +219,12 @@ class Options enum class UnificationWithAbstraction : unsigned int { OFF, INTERP_ONLY, - ONE_INTERP, - CONSTANT, - ALL, - GROUND + ONE_INTERP//, + //CONSTANT, + //ALL, + //GROUND + // removed final three options + // can add them back once we agree on desired behaviour }; enum class Induction : unsigned int { From 007b595ff368c70ec2208246afca42b0ba98c934 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 2 Aug 2022 13:27:21 +0100 Subject: [PATCH 003/210] update to streamline handler code and make it more easily extensible --- Indexing/Index.hpp | 12 -- Indexing/IndexManager.cpp | 33 +++-- Indexing/IndexManager.hpp | 3 + Indexing/LiteralSubstitutionTree.cpp | 20 +-- Indexing/LiteralSubstitutionTree.hpp | 5 +- Indexing/ResultSubstitution.cpp | 3 + Indexing/ResultSubstitution.hpp | 4 + Indexing/SubstitutionTree.cpp | 84 ++----------- Indexing/SubstitutionTree.hpp | 55 +-------- Indexing/SubstitutionTree_FastGen.cpp | 7 +- Indexing/SubstitutionTree_FastInst.cpp | 7 +- Indexing/TermSubstitutionTree.cpp | 141 +++++++--------------- Indexing/TermSubstitutionTree.hpp | 11 +- Indexing/TypeSubstitutionTree.cpp | 87 +++++++------ Indexing/TypeSubstitutionTree.hpp | 7 +- Inferences/BinaryResolution.cpp | 45 ++----- Inferences/EqualityFactoring.cpp | 74 ++++-------- Inferences/EqualityFactoring.hpp | 3 + Inferences/EqualityResolution.cpp | 92 ++++---------- Inferences/EqualityResolution.hpp | 3 + Inferences/Superposition.cpp | 54 ++------- Inferences/Superposition.hpp | 3 +- Kernel/TermTransformer.hpp | 2 +- UnitTests/tUnificationWithAbstraction.cpp | 137 +++++++++++++++------ 24 files changed, 343 insertions(+), 549 deletions(-) diff --git a/Indexing/Index.hpp b/Indexing/Index.hpp index 1cce97f1fc..e068c270d4 100644 --- a/Indexing/Index.hpp +++ b/Indexing/Index.hpp @@ -43,14 +43,10 @@ struct SLQueryResult : literal(l), clause(c), substitution(s) {} SLQueryResult(Literal* l, Clause* c) : literal(l), clause(c) {} - SLQueryResult(Literal* l, Clause* c, ResultSubstitutionSP s,UnificationConstraintStackSP con) - : literal(l), clause(c), substitution(s), constraints(con) {} - Literal* literal; Clause* clause; ResultSubstitutionSP substitution; - UnificationConstraintStackSP constraints; struct ClauseExtractFn { @@ -69,21 +65,13 @@ struct TermQueryResult TermQueryResult() : literal(nullptr), clause(nullptr) {} TermQueryResult(TermList t, Literal* l, Clause* c, ResultSubstitutionSP s) : term(t), literal(l), clause(c), substitution(s) {} - TermQueryResult(TermList t, Literal* l, Clause* c, ResultSubstitutionSP s, bool b) - : term(t), literal(l), clause(c), substitution(s), isTypeSub(b) {} TermQueryResult(TermList t, Literal* l, Clause* c) : term(t), literal(l), clause(c) {} - TermQueryResult(TermList t, Literal* l, Clause* c, ResultSubstitutionSP s,UnificationConstraintStackSP con) - : term(t), literal(l), clause(c), substitution(s), constraints(con) {} - TermQueryResult(TermList t, Literal* l, Clause* c, ResultSubstitutionSP s,UnificationConstraintStackSP con, bool b) - : term(t), literal(l), clause(c), substitution(s), constraints(con), isTypeSub(b) {} TermList term; Literal* literal; Clause* clause; ResultSubstitutionSP substitution; - UnificationConstraintStackSP constraints; - bool isTypeSub = false; //true if the substitution only unifies the types of the terms }; struct ClauseSResQueryResult diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index d8eecdafe0..b338639fd4 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -33,10 +33,26 @@ using namespace Lib; using namespace Indexing; -IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _genLitIndex(0) +IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _genLitIndex(0), _handler(0) { CALL("IndexManager::IndexManager"); + static bool const uwa = env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF; + static bool const eba = (env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) && + env.property->higherOrder(); + + // urther handlers can be added here + if(uwa || eba){ + _handler = new CompositeMismatchHandler(); + + if(uwa){ + _handler->addHandler(new UWAMismatchHandler()); + } + if(eba){ + _handler->addHandler(new HOMismatchHandler()); + } + } + if(alg) { attach(alg); } @@ -49,6 +65,10 @@ IndexManager::~IndexManager() if(_alg) { release(GENERATING_SUBST_TREE); } + + if(_handler){ + delete _handler; + } } void IndexManager::setSaturationAlgorithm(SaturationAlgorithm* alg) @@ -143,13 +163,10 @@ Index* IndexManager::create(IndexType t) TermIndexingStructure* tis; bool isGenerating; - static bool const useConstraints = env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF; - static bool const extByAbs = (env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) && - env.property->higherOrder(); switch(t) { case GENERATING_SUBST_TREE: - is=new LiteralSubstitutionTree(useConstraints); + is=new LiteralSubstitutionTree(_handler); #if VDEBUG //is->markTagged(); #endif @@ -180,7 +197,7 @@ Index* IndexManager::create(IndexType t) break; case SUPERPOSITION_SUBTERM_SUBST_TREE: - tis=new TermSubstitutionTree(useConstraints, extByAbs); + tis=new TermSubstitutionTree(_handler); #if VDEBUG //tis->markTagged(); #endif @@ -188,7 +205,7 @@ Index* IndexManager::create(IndexType t) isGenerating = true; break; case SUPERPOSITION_LHS_SUBST_TREE: - tis=new TermSubstitutionTree(useConstraints, extByAbs); + tis=new TermSubstitutionTree(_handler); res=new SuperpositionLHSIndex(tis, _alg->getOrdering(), _alg->getOptions()); //tis->markTagged(); isGenerating = true; @@ -211,7 +228,7 @@ Index* IndexManager::create(IndexType t) break; case SKOLEMISING_FORMULA_INDEX: - tis=new TermSubstitutionTree(false, false, true); + tis=new TermSubstitutionTree(0, true); res=new SkolemisingFormulaIndex(tis); isGenerating = false; break; diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index 5d70e6765b..fa07bcbdf7 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -19,6 +19,7 @@ #include "Forwards.hpp" #include "Lib/DHMap.hpp" #include "Index.hpp" +#include "Kernel/MismatchHandler.hpp" #include "Lib/Allocator.hpp" @@ -78,6 +79,7 @@ class IndexManager void release(IndexType t); bool contains(IndexType t); Index* get(IndexType t); + MismatchHandler* getHandler(){ return _handler; } void provideIndex(IndexType t, Index* index); @@ -94,6 +96,7 @@ class IndexManager DHMap _store; LiteralIndexingStructure* _genLitIndex; + CompositeMismatchHandler* _handler; Index* create(IndexType t); }; diff --git a/Indexing/LiteralSubstitutionTree.cpp b/Indexing/LiteralSubstitutionTree.cpp index 2853cff1cb..3d952bd212 100644 --- a/Indexing/LiteralSubstitutionTree.cpp +++ b/Indexing/LiteralSubstitutionTree.cpp @@ -28,8 +28,8 @@ namespace Indexing { -LiteralSubstitutionTree::LiteralSubstitutionTree(bool useC) -: SubstitutionTree(2*env.signature->predicates()), _theoryConstraints(useC) +LiteralSubstitutionTree::LiteralSubstitutionTree(MismatchHandler* hndlr) +: SubstitutionTree(2*env.signature->predicates()), _handler(hndlr) { //EqualityProxy transformation can introduce polymorphism in a monomorphic problem //However, there is no need to guard aginst it, as equalityProxy removes all @@ -56,12 +56,13 @@ void LiteralSubstitutionTree::handleLiteral(Literal* lit, Clause* cls, bool inse Literal* normLit=Renaming::normalize(lit); - if(_theoryConstraints){ + if(_handler){ + // assertion below reflects that currently we only use + // constraints with binary resolution (amongst inferences that require literal unification) ASS(!lit->isEquality()); - // replace theory subterms by very special variables + // replace subterms by very special variables // For example f($sum(X,Y), b) ---> f(#, b) - TheoryTermReplacement ttr(&_termMap); - normLit = ttr.transform(normLit); + normLit = _handler->transform(normLit); } BindingMap svBindings; @@ -124,7 +125,7 @@ SLQueryResultIterator LiteralSubstitutionTree::getInstances(Literal* lit, struct LiteralSubstitutionTree::SLQueryResultFunctor { SLQueryResult operator() (const QueryResult& qr) { - return SLQueryResult(qr.first.first->literal, qr.first.first->clause, qr.first.second,qr.second); + return SLQueryResult(qr.first->literal, qr.first->clause, qr.second); } }; @@ -304,7 +305,7 @@ SLQueryResultIterator LiteralSubstitutionTree::getResultIterator(Literal* lit, if(lit->commutative()) { // Amongst inferences that require literal unification, constraints are only used for // binary resolution which does not involve equality - ASS(!_theoryConstraints); + ASS(!_handler); VirtualIterator qrit1=vi( new Iterator(this, root, lit, retrieveSubstitutions, false, false) ); VirtualIterator qrit2=vi( @@ -317,9 +318,8 @@ SLQueryResultIterator LiteralSubstitutionTree::getResultIterator(Literal* lit, Filter(lit, retrieveSubstitutions)) ); } else { - auto cType = _theoryConstraints ? THEORY_CONSTRAINTS : NO_CONSTRAINTS; VirtualIterator qrit=VirtualIterator( - new Iterator(this, root, lit, retrieveSubstitutions,false,false, cType, &_termMap) ); + new Iterator(this, root, lit, retrieveSubstitutions,false,false, _handler) ); return pvi( getMappingIterator(qrit, SLQueryResultFunctor()) ); } } diff --git a/Indexing/LiteralSubstitutionTree.hpp b/Indexing/LiteralSubstitutionTree.hpp index ee767ba456..13fee0068c 100644 --- a/Indexing/LiteralSubstitutionTree.hpp +++ b/Indexing/LiteralSubstitutionTree.hpp @@ -28,7 +28,7 @@ class LiteralSubstitutionTree CLASS_NAME(LiteralSubstitutionTree); USE_ALLOCATOR(LiteralSubstitutionTree); - LiteralSubstitutionTree(bool useC = false); + LiteralSubstitutionTree(MismatchHandler* hndlr = 0); void insert(Literal* lit, Clause* cls); void remove(Literal* lit, Clause* cls); @@ -155,8 +155,7 @@ class LiteralSubstitutionTree BacktrackData _bdataEq; }; - bool _theoryConstraints; - VSpecVarToTermMap _termMap; + MismatchHandler* _handler; template SLQueryResultIterator getResultIterator(Literal* lit, diff --git a/Indexing/ResultSubstitution.cpp b/Indexing/ResultSubstitution.cpp index 80160ffc44..f7ece92bad 100644 --- a/Indexing/ResultSubstitution.cpp +++ b/Indexing/ResultSubstitution.cpp @@ -51,6 +51,9 @@ class RSProxy virtual size_t getResultApplicationWeight(TermList t) { return _subst->getApplicationResultWeight(t, _resultBank); } virtual size_t getResultApplicationWeight(Literal* l) { return _subst->getApplicationResultWeight(l, _resultBank); } + virtual unsigned numberOfConstraints() { return _subst->numberOfConstraints(); } + virtual LiteralIterator getConstraints() { return _subst->getConstraints(); } + RobSubstitution* tryGetRobSubstitution() { return _subst; } #if VDEBUG diff --git a/Indexing/ResultSubstitution.hpp b/Indexing/ResultSubstitution.hpp index f892426b5a..72bc147f81 100644 --- a/Indexing/ResultSubstitution.hpp +++ b/Indexing/ResultSubstitution.hpp @@ -57,6 +57,10 @@ class ResultSubstitution virtual size_t getResultApplicationWeight(TermList t) { return 0; } /** if implementation cannot easily give result for this, zero is returned */ virtual size_t getResultApplicationWeight(Literal* l) { return 0; } + /** number of constraints created during unification */ + virtual unsigned numberOfConstraints() { return 0; } + /** return iterator over constraints */ + virtual LiteralIterator getConstraints() { NOT_IMPLEMENTED; } template T apply(T t, bool result) diff --git a/Indexing/SubstitutionTree.cpp b/Indexing/SubstitutionTree.cpp index ff2f82698b..3f46753135 100644 --- a/Indexing/SubstitutionTree.cpp +++ b/Indexing/SubstitutionTree.cpp @@ -31,8 +31,6 @@ #include "Lib/DHMultiset.hpp" #include "TermSharing.hpp" -#include "Shell/UnificationWithAbstractionConfig.hpp" - #include #if VDEBUG @@ -49,17 +47,6 @@ vstring SingleTermListToString(const TermList* ts); using namespace std; using namespace Indexing; -TermList TheoryTermReplacement::transformSubterm(TermList trm) -{ - CALL("SubstitutionTree::TheoryTermReplacement::transformSubterm"); - - if( Shell::UnificationWithAbstractionConfig::isInterpreted(trm) && - !Shell::UnificationWithAbstractionConfig::isNumeral(trm)){ - return TermList::getVSpecVar(trm.term(), _termMap); - } - return trm; -} - /** * Initialise the substitution tree. * @since 16/08/2008 flight Sydney-San Francisco @@ -689,23 +676,18 @@ bool SubstitutionTree::LeafIterator::hasNext() SubstitutionTree::UnificationsIterator::UnificationsIterator(SubstitutionTree* parent, Node* root, Term* query, bool retrieveSubstitution, bool reversed, - bool withoutTop, ConstraintType ct, VSpecVarToTermMap* termMap) + bool withoutTop, MismatchHandler* hndlr) : tag(parent->tag), svStack(32), literalRetrieval(query->isLiteral()), retrieveSubstitution(retrieveSubstitution), inLeaf(false), ldIterator(LDIterator::getEmpty()), nodeIterators(8), bdStack(8), -clientBDRecording(false) +clientBDRecording(false), handler(hndlr) #if VDEBUG , tree(parent) #endif { CALL("SubstitutionTree::UnificationsIterator::UnificationsIterator"); - useUWAConstraints = ct == ConstraintType::THEORY_CONSTRAINTS; - useHOConstraints = ct == ConstraintType::HO_CONSTRAINTS; - - ASS(!(useHOConstraints && useUWAConstraints)); - #if VDEBUG tree->_iteratorCnt++; #endif @@ -714,27 +696,14 @@ clientBDRecording(false) return; } - if(useUWAConstraints || useHOConstraints){ - subst.setMap(termMap); - } - queryNormalizer.normalizeVariables(query); Term* queryNorm=queryNormalizer.apply(query); - //cout << "FINDING Partners for " << query->toString() << endl; - - if(useHOConstraints){ - TermList t = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(queryNorm, termMap); - ASS(!t.isVar()); - queryNorm = t.term(); - } - - - if(useUWAConstraints){ - // replace theory subterms by very special variables + if(handler){ + subst.setHandler(handler); + // replace subterms by very special variables // For example f($sum(X,Y), b) ---> f(#, b) - TheoryTermReplacement ttr(termMap); - queryNorm = ttr.transform(queryNorm); + queryNorm = handler->transform(queryNorm); } if(withoutTop){ @@ -839,11 +808,10 @@ SubstitutionTree::QueryResult SubstitutionTree::UnificationsIterator::next() subst.denormalize(normalizer,NORM_RESULT_BANK,RESULT_BANK); subst.denormalize(queryNormalizer,NORM_QUERY_BANK,QUERY_BANK); - return QueryResult(make_pair(&ld, ResultSubstitution::fromSubstitution( - &subst, QUERY_BANK, RESULT_BANK)), - UnificationConstraintStackSP(new UnificationConstraintStack(constraints))); + return QueryResult(&ld, ResultSubstitution::fromSubstitution( + &subst, QUERY_BANK, RESULT_BANK)); } else { - return QueryResult(make_pair(&ld, ResultSubstitutionSP()),UnificationConstraintStackSP()); + return QueryResult(&ld, ResultSubstitutionSP()); } } @@ -921,7 +889,7 @@ bool SubstitutionTree::UnificationsIterator::enter(Node* n, BacktrackData& bd) recording=true; subst.bdRecord(bd); - success=associate(qt,n->term,bd); + success=associate(qt,n->term); } if(success) { if(n->isLeaf()) { @@ -940,44 +908,14 @@ bool SubstitutionTree::UnificationsIterator::enter(Node* n, BacktrackData& bd) return success; } -bool SubstitutionTree::SubstitutionTreeMismatchHandler::introduceConstraint(TermList query,unsigned index1, TermList node,unsigned index2) -{ - CALL("SubstitutionTree::MismatchHandler::introduceConstraint"); - - auto constraint = make_pair(make_pair(query,index1),make_pair(node,index2)); - _constraints.backtrackablePush(constraint,_bd); - return true; -} - -bool SubstitutionTree::STHOMismatchHandler::introduceConstraint(TermList query,unsigned index1, TermList node,unsigned index2) -{ - CALL("SubstitutionTree::STHOMismatchHandler::introduceConstraint"); - - auto constraint = make_pair(make_pair(query,index1),make_pair(node,index2)); - _constraints.backtrackablePush(constraint,_bd); - return true; -} - /** * TODO: explain properly what associate does * called from enter(...) */ -bool SubstitutionTree::UnificationsIterator::associate(TermList query, TermList node, BacktrackData& bd) +bool SubstitutionTree::UnificationsIterator::associate(TermList query, TermList node) { CALL("SubstitutionTree::UnificationsIterator::associate"); - //The ordering of the if statements is important here. Higher-order problems - //should never require theory resoning (at the moment, theories cannot be parsed in HOL) - //However, a user can still set UWA option on. We don't wan't that to result in - //the wrong handler being used. - if(useHOConstraints){ - STHOMismatchHandler hndlr(constraints,bd); - return subst.unify(query,NORM_QUERY_BANK,node,NORM_RESULT_BANK,&hndlr); - } - if(useUWAConstraints){ - SubstitutionTreeMismatchHandler hndlr(constraints,bd); - return subst.unify(query,NORM_QUERY_BANK,node,NORM_RESULT_BANK,&hndlr); - } return subst.unify(query,NORM_QUERY_BANK,node,NORM_RESULT_BANK); } diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 944d7d4711..89aa94d7fa 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -60,24 +60,6 @@ using namespace Kernel; namespace Indexing { - -class TheoryTermReplacement : public TermTransformer { -public: - // false here means that the transformed terms - // are not shared - TheoryTermReplacement(VSpecVarToTermMap* termMap) : TermTransformer(false), _termMap(termMap) {} - TermList transformSubterm(TermList trm) override; -protected: - VSpecVarToTermMap* _termMap; -}; - -enum ConstraintType -{ - NO_CONSTRAINTS, - THEORY_CONSTRAINTS, - HO_CONSTRAINTS -}; - /** * Class of substitution trees. In fact, contains an array of substitution * trees. @@ -577,7 +559,7 @@ class SubstitutionTree Stack _nodeIterators; }; - typedef pair,UnificationConstraintStackSP> QueryResult; + typedef pair QueryResult; class GenMatcher; @@ -590,8 +572,7 @@ class SubstitutionTree { public: FastGeneralizationsIterator(SubstitutionTree* parent, Node* root, Term* query, - bool retrieveSubstitution, bool reversed,bool withoutTop, - ConstraintType ct = NO_CONSTRAINTS, VSpecVarToTermMap* termMap = 0); + bool retrieveSubstitution, bool reversed,bool withoutTop, MismatchHandler* hndler = 0); ~FastGeneralizationsIterator(); @@ -638,7 +619,7 @@ class SubstitutionTree public: FastInstancesIterator(SubstitutionTree* parent, Node* root, Term* query, bool retrieveSubstitution, bool reversed, bool withoutTop, - ConstraintType ct = NO_CONSTRAINTS, VSpecVarToTermMap* termMap = 0); + MismatchHandler* hndler = 0); ~FastInstancesIterator(); bool hasNext(); @@ -669,43 +650,20 @@ class SubstitutionTree #endif }; - class SubstitutionTreeMismatchHandler : public UWAMismatchHandler - { - public: - SubstitutionTreeMismatchHandler(Stack& c, BacktrackData& bd) : - UWAMismatchHandler(c), _constraints(c), _bd(bd) {} - //virtual bool handle(RobSubstitution* subst, TermList query, unsigned index1, TermList node, unsigned index2); - private: - virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2); - Stack& _constraints; - BacktrackData& _bd; - }; - - class STHOMismatchHandler : public HOMismatchHandler - { - public: - STHOMismatchHandler(Stack& c, BacktrackData& bd) : - HOMismatchHandler(c), _constraints(c), _bd(bd) {} - private: - virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2); - Stack& _constraints; - BacktrackData& _bd; - }; - class UnificationsIterator : public IteratorCore { public: UnificationsIterator(SubstitutionTree* parent, Node* root, Term* query, bool retrieveSubstitution, bool reversed, bool withoutTop, - ConstraintType ct = NO_CONSTRAINTS, VSpecVarToTermMap* termMap = 0); + MismatchHandler* hndler = 0); ~UnificationsIterator(); bool hasNext(); QueryResult next(); bool tag; protected: - virtual bool associate(TermList query, TermList node, BacktrackData& bd); + virtual bool associate(TermList query, TermList node); virtual NodeIterator getNodeIterator(IntermediateNode* n); void createInitialBindings(Term* t); @@ -736,8 +694,7 @@ class SubstitutionTree bool clientBDRecording; BacktrackData clientBacktrackData; Renaming queryNormalizer; - bool useUWAConstraints; - bool useHOConstraints; + MismatchHandler* handler; UnificationConstraintStack constraints; #if VDEBUG SubstitutionTree* tree; diff --git a/Indexing/SubstitutionTree_FastGen.cpp b/Indexing/SubstitutionTree_FastGen.cpp index a4f7573245..aa86b0f32e 100644 --- a/Indexing/SubstitutionTree_FastGen.cpp +++ b/Indexing/SubstitutionTree_FastGen.cpp @@ -370,7 +370,7 @@ ResultSubstitutionSP SubstitutionTree::GenMatcher::getSubstitution( * reversed. (useful for retrieval commutative terms) */ SubstitutionTree::FastGeneralizationsIterator::FastGeneralizationsIterator(SubstitutionTree* parent, Node* root, Term* query, - bool retrieveSubstitution, bool reversed, bool withoutTop, ConstraintType ct, VSpecVarToTermMap* termMap) + bool retrieveSubstitution, bool reversed, bool withoutTop, MismatchHandler* hndler) : _literalRetrieval(query->isLiteral()), _retrieveSubstitution(retrieveSubstitution), _inLeaf(false), _ldIterator(LDIterator::getEmpty()), _root(root), _tree(parent), _alternatives(64), _specVarNumbers(64), _nodeTypes(64) @@ -461,10 +461,9 @@ SubstitutionTree::QueryResult SubstitutionTree::FastGeneralizationsIterator::nex _resultNormalizer.normalizeVariables(ld.term); } - return QueryResult( - make_pair(&ld,_subst->getSubstitution(&_resultNormalizer)),UnificationConstraintStackSP()); + return QueryResult(&ld,_subst->getSubstitution(&_resultNormalizer)); } else { - return QueryResult(make_pair(&ld, ResultSubstitutionSP()),UnificationConstraintStackSP()); + return QueryResult(&ld, ResultSubstitutionSP()); } } diff --git a/Indexing/SubstitutionTree_FastInst.cpp b/Indexing/SubstitutionTree_FastInst.cpp index fce1f01ee2..097ef80627 100644 --- a/Indexing/SubstitutionTree_FastInst.cpp +++ b/Indexing/SubstitutionTree_FastInst.cpp @@ -566,7 +566,7 @@ bool SubstitutionTree::InstMatcher::matchNextAux(TermList queryTerm, TermList no */ SubstitutionTree::FastInstancesIterator::FastInstancesIterator(SubstitutionTree* parent, Node* root, Term* query, bool retrieveSubstitution, bool reversed, bool withoutTop, - ConstraintType ct, VSpecVarToTermMap* termMap) //termMap for compatibility purposes + MismatchHandler* hndler) //MismatchHandler for compatibility purposes : _literalRetrieval(query->isLiteral()), _retrieveSubstitution(retrieveSubstitution), _inLeaf(false), _ldIterator(LDIterator::getEmpty()), _root(root), _alternatives(64), _specVarNumbers(64), _nodeTypes(64) @@ -669,10 +669,9 @@ SubstitutionTree::QueryResult SubstitutionTree::FastInstancesIterator::next() _resultDenormalizer.makeInverse(normalizer); } - return QueryResult(make_pair(&ld, - _subst->getSubstitution(&_resultDenormalizer)),UnificationConstraintStackSP()); + return QueryResult(&ld,_subst->getSubstitution(&_resultDenormalizer)); } else { - return QueryResult(make_pair(&ld, ResultSubstitutionSP()),UnificationConstraintStackSP()); + return QueryResult(&ld, ResultSubstitutionSP()); } } #undef LOGGING diff --git a/Indexing/TermSubstitutionTree.cpp b/Indexing/TermSubstitutionTree.cpp index 5edc9c3926..4b7ed230e1 100644 --- a/Indexing/TermSubstitutionTree.cpp +++ b/Indexing/TermSubstitutionTree.cpp @@ -26,7 +26,6 @@ #include "Kernel/ApplicativeHelper.hpp" #include "Shell/Options.hpp" -#include "Shell/UnificationWithAbstractionConfig.hpp" #include "TermSubstitutionTree.hpp" @@ -36,18 +35,11 @@ namespace Indexing using namespace Lib; using namespace Kernel; -TermSubstitutionTree::TermSubstitutionTree(bool theoryConstraints, bool hoConstraints, bool extra) -: SubstitutionTree(env.signature->functions()), - _theoryConstraints(theoryConstraints), - _higherOrderConstraints(hoConstraints) +TermSubstitutionTree::TermSubstitutionTree(MismatchHandler* hndlr, bool extra) +: SubstitutionTree(env.signature->functions()), _handler(hndlr), _extra(extra) { - _extra = extra; - _withConstraints = _higherOrderConstraints || _theoryConstraints; - // at the moment, unification with abstraction for theory reasoning - // and higher-order are not compatible. - ASS(!(_higherOrderConstraints && _theoryConstraints)); - if(_withConstraints){ - _termsByType = new TypeSubstitutionTree(); + if(_handler){ + _termsByType = new TypeSubstitutionTree(_handler); } } @@ -107,7 +99,7 @@ void TermSubstitutionTree::handleTerm(TermList t, Literal* lit, Clause* cls, boo LeafData ld(cls, lit, t); - if(constraintTermHandled(t, ld, insert)) return; + if(_handler && constraintTermHandled(t, ld, insert)) return; if(t.isOrdinaryVar()) { if(insert) { @@ -121,17 +113,8 @@ void TermSubstitutionTree::handleTerm(TermList t, Literal* lit, Clause* cls, boo Term* term=t.term(); Term* normTerm=Renaming::normalize(term); - - if(_higherOrderConstraints){ - t = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(normTerm, &_termMap); - normTerm = t.term(); - } - - if(_theoryConstraints){ - // replace theory subterms by very special variables - // For example f($sum(X,Y), b) ---> f(#, b) - TheoryTermReplacement ttr(&_termMap); - normTerm = ttr.transform(normTerm); + if(_handler){ + normTerm = _handler->transform(normTerm); } BindingMap svBindings; @@ -150,31 +133,17 @@ void TermSubstitutionTree::handleTerm(TermList t, Literal* lit, Clause* cls, boo bool TermSubstitutionTree::constraintTermHandled(TermList t, LeafData ld, bool insert){ CALL("TermSubstitutionTree::constraintTermHandled"); - if(!_withConstraints) return false; - if(!t.isTerm()) return false; - - auto trm = t.term(); - auto sort = SortHelper::getResultSort(trm); - - if(_higherOrderConstraints){ - if(sort.isVar() || sort.isArrowSort()){ - _termsByType->handleTerm(sort, ld, insert); - // In the case where the sort is a variable - // we want to also insert term into the normal tree - // since it could have non-function type depending - // on type instantiation - if(sort.isArrowSort()){ return true; } - } - } + ASS(_handler); - if(_theoryConstraints){ - if( Shell::UnificationWithAbstractionConfig::isInterpreted(trm) && - !Shell::UnificationWithAbstractionConfig::isNumeral(t)){ - _termsByType->handleTerm(sort, ld, insert); - return true; - } + auto res = _handler->isConstraintTerm(t); + if(!res.isFalse()){ + auto sort = SortHelper::getResultSort(t.term()); + _termsByType->handleTerm(sort, ld, insert); + // if it is only possibly a constraint term, we still want to insert + // it into the standard tree as well + if(!res.maybe()) + return true; } - return false; } @@ -188,14 +157,11 @@ TermQueryResultIterator TermSubstitutionTree::getUnifications(TermList t, } else { ASS(t.isTerm()); if(_vars.isEmpty()) { - // false here means without constraints return getResultIterator(t.term(), retrieveSubstitutions); } else { return pvi( getConcatenatedIterator( - // false here means without constraints - ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions), - // false here means without constraints - getResultIterator(t.term(), retrieveSubstitutions)) ); + ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions), + getResultIterator(t.term(), retrieveSubstitutions)) ); } } } @@ -205,26 +171,28 @@ TermQueryResultIterator TermSubstitutionTree::getUnificationsUsingSorts(TermList bool retrieveSubstitutions) { CALL("TermSubstitutionTree::getUnificationsUsingSorts"); - ASS(_withConstraints); if(t.isOrdinaryVar()) { + // get all constraint terms whose sort can be unified with @param sort + // constraint terms that are also in the standard tree are not included auto it1 = _termsByType->getUnifications(sort, t, retrieveSubstitutions); - // in the case of a variable of higher-order sort (e.g. X : i > i > i) - // we do not want to unify with all terms in the tree only to subsequently - // fail the typing check (since all terms of sort i > i > i will be in _termsByType) - auto it2 = !sort.isArrowSort() ? - getAllUnifyingIterator(t,retrieveSubstitutions): - ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions);; + + auto it2 = getAllUnifyingIterator(t,retrieveSubstitutions); + return pvi(getConcatenatedIterator(it1, it2)); } else { ASS(t.isTerm()); - //TODO Is it OK to use t below? - auto it1 = _vars.isEmpty() ? TermQueryResultIterator::getEmpty() : - ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions); + // get all variables + auto it1 = ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), t, retrieveSubstitutions); + + // get top level constraints + // if @param t can play no part in constraints, we optimise + auto it2 = !_handler->isConstraintTerm(t).isFalse() ? + _termsByType->getUnifications(sort, t, retrieveSubstitutions) : + TermQueryResultIterator::getEmpty(); - auto it2 = _termsByType->getUnifications(sort, t, retrieveSubstitutions); - auto it3 = !sort.isArrowSort() ? getResultIterator(t.term(), retrieveSubstitutions): - TermQueryResultIterator::getEmpty(); + // get unifiers from standard tree + auto it3 = getResultIterator(t.term(), retrieveSubstitutions); return pvi(getConcatenatedIterator(getConcatenatedIterator(it1, it2), it3)); } } @@ -296,9 +264,9 @@ struct TermSubstitutionTree::TermQueryResultFn } TermQueryResult operator() (const QueryResult& qr) { - TermList trm = _extra ? qr.first.first->extraTerm : qr.first.first->term; - return TermQueryResult(trm, qr.first.first->literal, - qr.first.first->clause, qr.first.second,qr.second); + TermList trm = _extra ? qr.first->extraTerm : qr.first->term; + return TermQueryResult(trm, qr.first->literal, + qr.first->clause, qr.second); } private: @@ -323,14 +291,8 @@ TermQueryResultIterator TermSubstitutionTree::getResultIterator(Term* trm, result = ldIteratorToTQRIterator(ldit,TermList(trm),retrieveSubstitutions); } else{ - auto cType = NO_CONSTRAINTS; - if(_withConstraints){ - if(_theoryConstraints) cType = THEORY_CONSTRAINTS; - if(_higherOrderConstraints) cType = HO_CONSTRAINTS; - } - VirtualIterator qrit=vi( - new Iterator(this, root, trm, retrieveSubstitutions,false,false, cType, &_termMap)); + new Iterator(this, root, trm, retrieveSubstitutions,false,false, _handler)); result = pvi( getMappingIterator(qrit, TermQueryResultFn(_extra)) ); } } @@ -350,15 +312,14 @@ struct TermSubstitutionTree::LDToTermQueryResultFn struct TermSubstitutionTree::LDToTermQueryResultWithSubstFn { - LDToTermQueryResultWithSubstFn() + LDToTermQueryResultWithSubstFn(MismatchHandler* hndlr) { - _subst=RobSubstitutionSP(new RobSubstitution()); + _subst=RobSubstitutionSP(new RobSubstitution(hndlr)); } TermQueryResult operator() (const LeafData& ld) { - // see no harm in always adding an empty constraint return TermQueryResult(ld.term, ld.literal, ld.clause, ResultSubstitution::fromSubstitution(_subst.ptr(), - QRS_QUERY_BANK,QRS_RESULT_BANK), UnificationConstraintStackSP()); + QRS_QUERY_BANK,QRS_RESULT_BANK)); } private: RobSubstitutionSP _subst; @@ -381,7 +342,6 @@ struct TermSubstitutionTree::UnifyingContext bool enter(TermQueryResult qr) { CALL("TermSubstitutionTree::UnifyingContext::enter"); - //if(_withConstraints){ cout << "enter " << qr.term << endl; } ASS(qr.substitution); RobSubstitution* subst=qr.substitution->tryGetRobSubstitution(); @@ -395,10 +355,6 @@ struct TermSubstitutionTree::UnifyingContext RobSubstitution* subst=qr.substitution->tryGetRobSubstitution(); ASS(subst); subst->reset(); - if(!qr.constraints.isEmpty()){ - //cout << "reset constraints" << endl; - qr.constraints->reset(); - } } private: TermList _queryTerm; @@ -414,7 +370,7 @@ TermQueryResultIterator TermSubstitutionTree::ldIteratorToTQRIterator(LDIt ldIt, return pvi( getContextualIterator( getMappingIterator( ldIt, - LDToTermQueryResultWithSubstFn()), + LDToTermQueryResultWithSubstFn(_handler)), UnifyingContext(queryTerm)) ); } else { return pvi( getMappingIterator( @@ -431,18 +387,9 @@ TermQueryResultIterator TermSubstitutionTree::getAllUnifyingIterator(TermList tr auto it1 = getFlattenedIterator(getMappingIterator(vi( new LeafIterator(this) ), LeafToLDIteratorFn())); - // If we are searching withConstraints it means that we have already added in - // the results related to _vars, we are only interested in non-unifying leaves - - // STOP DOING THIS AT THE TOP LEVEL - if(false){ - return ldIteratorToTQRIterator(it1,trm, retrieveSubstitutions); - } - else{ - return ldIteratorToTQRIterator( - getConcatenatedIterator(it1,LDSkipList::RefIterator(_vars)), - trm, retrieveSubstitutions); - } + return ldIteratorToTQRIterator( + getConcatenatedIterator(it1,LDSkipList::RefIterator(_vars)), + trm, retrieveSubstitutions); } diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index eac3203fc9..b69e26fd16 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -53,7 +53,7 @@ class TermSubstitutionTree * store Terms of type $o (formulas) in the tree, but in the leaf we store * the skolem terms used to witness them (to facilitate the reuse of Skolems) */ - TermSubstitutionTree(bool theoryConstraints = false, bool hoConstraints = false, bool extra = false); + TermSubstitutionTree(MismatchHandler* hndlr = 0, bool extra = false); void insert(TermList t, Literal* lit, Clause* cls); void remove(TermList t, Literal* lit, Clause* cls); @@ -111,18 +111,13 @@ class TermSubstitutionTree typedef SkipList LDSkipList; LDSkipList _vars; - bool _withConstraints; - bool _theoryConstraints; - - bool _higherOrderConstraints; - - VSpecVarToTermMap _termMap; /* - * Used to store terms that are not to be unified, but rather to form part of constraints + * Used to store terms that could be part of constraints * For example $sum(X, Y) will be stored in _termsByType */ TypeSubstitutionTree* _termsByType; + MismatchHandler* _handler; //higher-order concerns bool _extra; diff --git a/Indexing/TypeSubstitutionTree.cpp b/Indexing/TypeSubstitutionTree.cpp index af48fb3d6e..cff5d05011 100644 --- a/Indexing/TypeSubstitutionTree.cpp +++ b/Indexing/TypeSubstitutionTree.cpp @@ -35,10 +35,9 @@ namespace Indexing using namespace Lib; using namespace Kernel; -TypeSubstitutionTree::TypeSubstitutionTree() -: SubstitutionTree(env.signature->functions()) -{ -} +TypeSubstitutionTree::TypeSubstitutionTree(MismatchHandler* hndlr) +: SubstitutionTree(env.signature->typeCons()), _handler(hndlr) +{} void TypeSubstitutionTree::insert(TermList sort, LeafData ld) { @@ -57,30 +56,50 @@ void TypeSubstitutionTree::remove(TermList sort, LeafData ld) struct TypeSubstitutionTree::ToTermUnifier { - ToTermUnifier(TermList queryTerm, bool retrieveSubstitutions) - : _queryTerm(queryTerm) {} + ToTermUnifier(TermList queryTerm, bool retrieveSubstitutions, MismatchHandler* hndlr) + : _queryTerm(queryTerm), _retrieveSubstitutions(retrieveSubstitutions), _handler(hndlr) {} - TermQueryResult operator() (TermQueryResult tqr) { - CALL("TypeSubstitutionTree::VarUnifFn::operator()"); - - if((_queryTerm.isVar() || tqr.term.isVar()) && retrieveSubstitutions){ + bool enter (const TermQueryResult& tqr) { + CALL("TypeSubstitutionTree::ToTermUnifier::enter"); + if(_retrieveSubstitutions){ RobSubstitution* subst=tqr.substitution->tryGetRobSubstitution(); ASS(subst); - ALWAYS(subst->unify(_queryTerm, QRS_QUERY_BANK, tqr.term, QRS_RESULT_BANK)); - } else { - tqr.isTypeSub = true; + if(_queryTerm.isVar() || tqr.term.isVar()){ + if(_handler){ + ASS(!tqr.term.isVar()); // constraints should never be variables + if(_handler->isConstraintTerm(tqr.term).maybe()){ + // term is also in the standard tree and we will unify with it there + return false; + } + } + subst->bdRecord(_bdata); + ALWAYS(subst->unify(_queryTerm, QRS_QUERY_BANK, tqr.term, QRS_RESULT_BANK)); + subst->bdDone(); + } else { + return subst->tryAddConstraint(_queryTerm, QRS_QUERY_BANK, tqr.term, QRS_RESULT_BANK, _bdata); + } } + return true; + } + + void leave(const TermQueryResult& tqr) { + CALL("TypeSubstitutionTree::ToTermUnifier::leave"); - return tqr; + if(_retrieveSubstitutions){ + _bdata.backtrack(); + ASS(_bdata.isEmpty()); + } } private: TermList _queryTerm; - bool retrieveSubstitutions; + bool _retrieveSubstitutions; + MismatchHandler* _handler; + BacktrackData _bdata; }; /** - * According to value of @b insert, insert or remove term. + * According to value of @b insert, insert or remove leaf data. */ void TypeSubstitutionTree::handleTerm(TermList sort, LeafData ld, bool insert) { @@ -117,30 +136,24 @@ void TypeSubstitutionTree::handleTerm(TermList sort, LeafData ld, bool insert) } } -//TODO use sorts and delete non-shared TermQueryResultIterator TypeSubstitutionTree::getUnifications(TermList sort, TermList trm, bool retrieveSubstitutions) { CALL("TypeSubstitutionTree::getUnifications"); - //cout << "getting unification partners for " + sort.toString() << endl; - //Debug::Tracer::printStack(cout); - + auto it1 = + pvi(getContextualIterator(ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), sort, false), + ToTermUnifier(trm, retrieveSubstitutions, _handler))); - auto it1 = !_vars.isEmpty() ? - pvi(getMappingIterator(ldIteratorToTQRIterator(LDSkipList::RefIterator(_vars), sort, false), - ToTermUnifier(trm, retrieveSubstitutions))) : - TermQueryResultIterator::getEmpty(); - - if(sort.isOrdinaryVar()) { //TODO return vars as well? - auto it2 = getMappingIterator(getAllUnifyingIterator(sort,retrieveSubstitutions), - ToTermUnifier(trm, retrieveSubstitutions)); + if(sort.isOrdinaryVar()) { + auto it2 = getContextualIterator(getAllUnifyingIterator(sort,retrieveSubstitutions), + ToTermUnifier(trm, retrieveSubstitutions, _handler)); return pvi(getConcatenatedIterator(it1, it2)); } else { ASS(sort.isTerm()); - auto it2 = getMappingIterator( - getResultIterator(sort.term(), retrieveSubstitutions), - ToTermUnifier(trm, retrieveSubstitutions)); + auto it2 = getContextualIterator( + getResultIterator(sort.term(), retrieveSubstitutions), + ToTermUnifier(trm, retrieveSubstitutions, _handler)); return pvi(getConcatenatedIterator(it1, it2)); } } @@ -152,8 +165,8 @@ TermQueryResultIterator TypeSubstitutionTree::getUnifications(TermList sort, Ter struct TypeSubstitutionTree::TermQueryResultFn { TermQueryResult operator() (const QueryResult& qr) { - return TermQueryResult(qr.first.first->term, qr.first.first->literal, - qr.first.first->clause, qr.first.second,qr.second); + return TermQueryResult(qr.first->term, qr.first->literal, + qr.first->clause, qr.second); } }; @@ -175,7 +188,7 @@ TermQueryResultIterator TypeSubstitutionTree::getResultIterator(Term* trm, result = ldIteratorToTQRIterator(ldit,TermList(trm),retrieveSubstitutions); } else{ - VirtualIterator qrit=vi( new Iterator(this, root, trm, retrieveSubstitutions,false,false) ); + VirtualIterator qrit=vi( new Iterator(this, root, trm, retrieveSubstitutions,false,false,_handler) ); result = pvi( getMappingIterator(qrit, TermQueryResultFn()) ); } } @@ -192,9 +205,9 @@ struct TypeSubstitutionTree::LDToTermQueryResultFn struct TypeSubstitutionTree::LDToTermQueryResultWithSubstFn { - LDToTermQueryResultWithSubstFn() + LDToTermQueryResultWithSubstFn(MismatchHandler* hndlr) { - _subst=RobSubstitutionSP(new RobSubstitution()); + _subst=RobSubstitutionSP(new RobSubstitution(hndlr)); } TermQueryResult operator() (const LeafData& ld) { return TermQueryResult(ld.term, ld.literal, ld.clause, @@ -251,7 +264,7 @@ TermQueryResultIterator TypeSubstitutionTree::ldIteratorToTQRIterator(LDIt ldIt, return pvi( getContextualIterator( getMappingIterator( ldIt, - LDToTermQueryResultWithSubstFn()), + LDToTermQueryResultWithSubstFn(_handler)), UnifyingContext(querySort)) ); } else { return pvi( getMappingIterator( diff --git a/Indexing/TypeSubstitutionTree.hpp b/Indexing/TypeSubstitutionTree.hpp index cd6147f489..300baa7de6 100644 --- a/Indexing/TypeSubstitutionTree.hpp +++ b/Indexing/TypeSubstitutionTree.hpp @@ -40,7 +40,7 @@ class TypeSubstitutionTree CLASS_NAME(TypeSubstitutionTree); USE_ALLOCATOR(TypeSubstitutionTree); - TypeSubstitutionTree(); + TypeSubstitutionTree(MismatchHandler* hndlr = 0); void insert(TermList sort, LeafData ld); void remove(TermList sort, LeafData ld); @@ -54,8 +54,10 @@ class TypeSubstitutionTree // Returns all terms whose sort unifies with @param sort // @param trm is a term of sort sort. - // If trm is a variable, the resulting substitution is extending to be a term + // If @param trm is a variable, the resulting substitution is extending to be a term // substitution as well. Likewise if the result is a variable + // If neither query nor result is a variable, attempt to create a + // constraint between them TermQueryResultIterator getUnifications(TermList sort, TermList trm, bool retrieveSubstitutions); @@ -92,6 +94,7 @@ class TypeSubstitutionTree return t->functor(); } + MismatchHandler* _handler; typedef SkipList LDSkipList; LDSkipList _vars; }; diff --git a/Inferences/BinaryResolution.cpp b/Inferences/BinaryResolution.cpp index 57b08b5e05..0c1df7418d 100644 --- a/Inferences/BinaryResolution.cpp +++ b/Inferences/BinaryResolution.cpp @@ -133,8 +133,7 @@ Clause* BinaryResolution::generateClause(Clause* queryCl, Literal* queryLit, SLQ return 0; } - auto constraints = qr.constraints; - bool withConstraints = !constraints.isEmpty() && !constraints->isEmpty(); + bool withConstraints = qr.substitution->numberOfConstraints(); unsigned clength = queryCl->length(); unsigned dlength = qr.clause->length(); @@ -173,8 +172,7 @@ Clause* BinaryResolution::generateClause(Clause* queryCl, Literal* queryLit, SLQ } } - unsigned conlength = withConstraints ? constraints->size() : 0; - unsigned newLength = clength+dlength-2+conlength; + unsigned newLength = clength+dlength-2+qr.substitution->numberOfConstraints(); inf_destroyer.disable(); // ownership passed to the the clause below Clause* res = new(newLength) Clause(newLength, inf); // the inference object owned by res from now on @@ -199,41 +197,12 @@ Clause* BinaryResolution::generateClause(Clause* queryCl, Literal* queryLit, SLQ #endif unsigned next = 0; - if(withConstraints){ - for(unsigned i=0;isize();i++){ - pair,pair> con = (*constraints)[i]; - -#if VDEBUG - //cout << "con pair " << con.first.toString() << " , " << con.second.toString() << endl; -#endif - - TermList qT = qr.substitution->applyTo(con.first.first,con.first.second); - TermList rT = qr.substitution->applyTo(con.second.first,con.second.second); - - TermList sort = SortHelper::getResultSort(rT.term()); - - Literal* constraint = Literal::createEquality(false,qT,rT,sort); + auto constraints = qr.substitution->getConstraints(); + while(constraints.hasNext()){ + Literal* constraint = constraints.next(); + (*res)[next++] = constraint; + } - // AYB ground option removed until we clarify the desired behaviour. - // If/when we reintroduce, code below is the wrong place to check for groundness - // We should NOT have started creating result clause before we check for - // groundness of constraint. This can be done wwithin unification procedure - - /*static Options::UnificationWithAbstraction uwa = opts.unificationWithAbstraction(); - if(uwa==Options::UnificationWithAbstraction::GROUND && - !constraint->ground() && - (!UnificationWithAbstractionConfig::isInterpreted(qT) && - !UnificationWithAbstractionConfig::isInterpreted(rT))) { - - // the unification was between two uninterpreted things that were not ground - res->destroy(); - return 0; - }*/ - - (*res)[next] = constraint; - next++; - } - } for(unsigned i=0;igetIndexManager()->getHandler(); +} + struct EqualityFactoring::ResultFn { - ResultFn(Clause* cl, bool afterCheck, Ordering& ordering) - : _cl(cl), _cLen(cl->length()), _afterCheck(afterCheck), _ordering(ordering) {} + ResultFn(Clause* cl, MismatchHandler* hndlr, bool afterCheck, Ordering& ordering) + : _cl(cl), _cLen(cl->length()), _handler(hndlr), _afterCheck(afterCheck), _ordering(ordering) {} Clause* operator() (pair,pair > arg) { CALL("EqualityFactoring::ResultFn::operator()"); @@ -100,11 +108,8 @@ struct EqualityFactoring::ResultFn TermList srt = SortHelper::getEqualityArgumentSort(sLit); - static RobSubstitution subst; - static UnificationConstraintStack constraints; + static RobSubstitution subst(_handler); subst.reset(); - constraints.reset(); - subst.setMap(&termMap); if (!subst.unify(srt, 0, SortHelper::getEqualityArgumentSort(fLit), 0)) { return 0; @@ -118,43 +123,14 @@ struct EqualityFactoring::ResultFn TermList fRHS=EqHelper::getOtherEqualitySide(fLit, fLHS); ASS_NEQ(sLit, fLit); - static Options::FunctionExtensionality ext = env.options->functionExtensionality(); - static Options::UnificationWithAbstraction uwa = env.options->unificationWithAbstraction(); - bool use_ho_handler = (ext == Options::FunctionExtensionality::ABSTRACTION) && env.property->higherOrder(); - bool use_uwa_handler = uwa != Options::UnificationWithAbstraction::OFF; - - ASS(!(use_uwa_handler && use_ho_handler)); - - if(use_ho_handler && !sLHS.isVar() && !fLHS.isVar() && - !srtS.isVar() && !srtS.isArrowSort()){ - sLHS = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(sLHS.term(), &termMap); - fLHS = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(fLHS.term(), &termMap); - } - - // We only care about non-trivial constraints where the top-sybmol of the two terns are the same - // and therefore a constraint can be created between arguments - if(use_uwa_handler && !sLHS.isVar() && !fLHS.isVar() && - sLHS.term()->functor() == fLHS.term()->functor()){ - TheoryTermReplacement ttr(&termMap); - sLHS = TermList(ttr.transform(sLHS.term())); - fLHS = TermList(ttr.transform(fLHS.term())); + if(_handler){ + // replacing subterms that could be part of constraints with very special variables + // for example f($sum(1, Y)) -> f(#) + sLHS = _handler->transform(sLHS); + fLHS = _handler->transform(fLHS); } - if(use_uwa_handler){ - UWAMismatchHandler hndlr(constraints); - if(!subst.unify(sLHS,0,fLHS,0,&hndlr)){ - return 0; - } - } - - if(use_ho_handler){ - HOMismatchHandler hndlr(constraints); - if(!subst.unify(sLHS,0,fLHS,0,&hndlr)){ - return 0; - } - } - - if(!use_uwa_handler && !use_ho_handler && !subst.unify(sLHS,0,fLHS,0)){ + if(!subst.unify(sLHS,0,fLHS,0)){ return 0; } @@ -168,7 +144,7 @@ struct EqualityFactoring::ResultFn return 0; } - unsigned newLen=_cLen+constraints.length(); + unsigned newLen=_cLen+subst.numberOfConstraints(); Clause* res = new(newLen) Clause(newLen, GeneratingInference1(InferenceRule::EQUALITY_FACTORING, _cl)); (*res)[0]=Literal::createEquality(false, sRHSS, fRHSS, srtS); @@ -197,14 +173,9 @@ struct EqualityFactoring::ResultFn (*res)[next++] = currAfter; } } - for(unsigned i=0;igetLiteralSelector().isBGComplete(), _salg->getOrdering())); auto it6 = getFilteredIterator(it5,NonzeroFn()); diff --git a/Inferences/EqualityFactoring.hpp b/Inferences/EqualityFactoring.hpp index 24f49d48a1..220c3b4ae7 100644 --- a/Inferences/EqualityFactoring.hpp +++ b/Inferences/EqualityFactoring.hpp @@ -34,6 +34,8 @@ class EqualityFactoring CLASS_NAME(EqualityFactoring); USE_ALLOCATOR(EqualityFactoring); + void attach(SaturationAlgorithm* salg); + ClauseIterator generateClauses(Clause* premise); private: struct IsPositiveEqualityFn; @@ -41,6 +43,7 @@ class EqualityFactoring struct FactorablePairsFn; struct ResultFn; + MismatchHandler* _handler; }; diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index f332244330..0d5c97b891 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -59,10 +59,18 @@ struct EqualityResolution::IsNegativeEqualityFn { return l->isEquality() && l->isNegative(); } }; +void EqualityResolution::attach(SaturationAlgorithm* salg) +{ + CALL("EqualityResolution::attach"); + + GeneratingInferenceEngine::attach(salg); + _handler = salg->getIndexManager()->getHandler(); +} + struct EqualityResolution::ResultFn { - ResultFn(Clause* cl, bool afterCheck = false, Ordering* ord = nullptr) - : _afterCheck(afterCheck), _ord(ord), _cl(cl), _cLen(cl->length()) {} + ResultFn(Clause* cl, MismatchHandler* hndlr=0, bool afterCheck = false, Ordering* ord = nullptr) + : _afterCheck(afterCheck), _ord(ord), _cl(cl), _cLen(cl->length()), _handler(hndlr) {} Clause* operator() (Literal* lit) { CALL("EqualityResolution::ResultFn::operator()"); @@ -70,58 +78,18 @@ struct EqualityResolution::ResultFn ASS(lit->isEquality()); ASS(lit->isNegative()); - VSpecVarToTermMap termMap; - TermList arg0 = *lit->nthArgument(0); TermList arg1 = *lit->nthArgument(1); - static Options::UnificationWithAbstraction uwa = env.options->unificationWithAbstraction(); - static Options::FunctionExtensionality ext = env.options->functionExtensionality(); - bool use_uwa_handler = uwa != Options::UnificationWithAbstraction::OFF; - bool use_ho_handler = (ext == Options::FunctionExtensionality::ABSTRACTION) && - env.property->higherOrder(); - - if(use_ho_handler){ - TermList sort = SortHelper::getEqualityArgumentSort(lit); - if(!arg0.isVar() && !arg1.isVar() && - !sort.isVar() && !sort.isArrowSort()){ - arg0 = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(arg0.term(), &termMap); - arg1 = ApplicativeHelper::replaceFunctionalAndBooleanSubterms(arg1.term(), &termMap); - } - } - - // We only care about non-trivial constraints where the top-sybmol of the two terms are the same - // and therefore a constraint can be created between arguments - if(use_uwa_handler && !arg0.isVar() && !arg1.isVar() && - arg0.term()->functor() == arg1.term()->functor()){ - TheoryTermReplacement ttr(&termMap); - arg0 = TermList(ttr.transform(arg0.term())); - arg1 = TermList(ttr.transform(arg1.term())); - } - - ASS(!(use_uwa_handler && use_ho_handler)); - - static RobSubstitution subst; - static UnificationConstraintStack constraints; + static RobSubstitution subst(_handler); subst.reset(); - constraints.reset(); - subst.setMap(&termMap); - - if(use_uwa_handler){ - UWAMismatchHandler hndlr(constraints); - if(!subst.unify(arg0,0,arg1,0,&hndlr)){ - return 0; - } - } - - if(use_ho_handler){ - HOMismatchHandler hndlr(constraints); - if(!subst.unify(arg0,0,arg1,0,&hndlr)){ - return 0; - } + + if(_handler){ + arg0 = _handler->transform(arg0); + arg1 = _handler->transform(arg1); } - if(!use_uwa_handler && !use_ho_handler && !subst.unify(arg0,0,arg1,0)){ + if(!subst.unify(arg0,0,arg1,0)){ return 0; } @@ -129,7 +97,7 @@ struct EqualityResolution::ResultFn //cout << "The literal is " + lit->toString() << endl; //cout << "cLength " << cLength << endl; - unsigned newLen=_cLen-1+ constraints.length(); + unsigned newLen=_cLen-1+ subst.numberOfConstraints(); Clause* res = new(newLen) Clause(newLen, GeneratingInference1(InferenceRule::EQUALITY_RESOLUTION, _cl)); @@ -159,26 +127,9 @@ struct EqualityResolution::ResultFn (*res)[next++] = currAfter; } } - for(unsigned i=0;iground() && - !UnificationWithAbstractionConfig::isInterpreted(qT) && - !UnificationWithAbstractionConfig::isInterpreted(rT) ) { - - // the unification was between two uninterpreted things that were not ground - res->destroy(); - return 0; - }*/ - + auto constraints = subst.getConstraints(); + while(constraints.hasNext()){ + Literal* constraint = constraints.next(); (*res)[next++] = constraint; } ASS_EQ(next,newLen); @@ -192,6 +143,7 @@ struct EqualityResolution::ResultFn Ordering* _ord; Clause* _cl; unsigned _cLen; + MismatchHandler* _handler; }; ClauseIterator EqualityResolution::generateClauses(Clause* premise) @@ -207,7 +159,7 @@ ClauseIterator EqualityResolution::generateClauses(Clause* premise) auto it2 = getFilteredIterator(it1,IsNegativeEqualityFn()); - auto it3 = getMappingIterator(it2,ResultFn(premise, + auto it3 = getMappingIterator(it2,ResultFn(premise, _handler, getOptions().literalMaximalityAftercheck() && _salg->getLiteralSelector().isBGComplete(), &_salg->getOrdering())); diff --git a/Inferences/EqualityResolution.hpp b/Inferences/EqualityResolution.hpp index 4a1a91bc64..bc1fbc4625 100644 --- a/Inferences/EqualityResolution.hpp +++ b/Inferences/EqualityResolution.hpp @@ -34,12 +34,15 @@ class EqualityResolution CLASS_NAME(EqualityResolution); USE_ALLOCATOR(EqualityResolution); + void attach(SaturationAlgorithm* salg); + ClauseIterator generateClauses(Clause* premise); static Clause* tryResolveEquality(Clause* cl, Literal* toResolve); private: struct ResultFn; struct IsNegativeEqualityFn; + MismatchHandler* _handler; }; diff --git a/Inferences/Superposition.cpp b/Inferences/Superposition.cpp index 909c2abd07..ae8ff89aba 100644 --- a/Inferences/Superposition.cpp +++ b/Inferences/Superposition.cpp @@ -146,7 +146,7 @@ struct Superposition::ForwardResultFn TermQueryResult& qr = arg.second; return _parent.performSuperposition(_cl, arg.first.first, arg.first.second, - qr.clause, qr.literal, qr.term, qr.substitution, true, _passiveClauseContainer, qr.constraints, qr.isTypeSub); + qr.clause, qr.literal, qr.term, qr.substitution, true, _passiveClauseContainer); } private: Clause* _cl; @@ -168,7 +168,7 @@ struct Superposition::BackwardResultFn TermQueryResult& qr = arg.second; return _parent.performSuperposition(qr.clause, qr.literal, qr.term, - _cl, arg.first.first, arg.first.second, qr.substitution, false, _passiveClauseContainer, qr.constraints, qr.isTypeSub); + _cl, arg.first.first, arg.first.second, qr.substitution, false, _passiveClauseContainer); } private: Clause* _cl; @@ -375,8 +375,7 @@ bool Superposition::earlyWeightLimitCheck(Clause* eqClause, Literal* eqLit, Clause* Superposition::performSuperposition( Clause* rwClause, Literal* rwLit, TermList rwTerm, Clause* eqClause, Literal* eqLit, TermList eqLHS, - ResultSubstitutionSP subst, bool eqIsResult, PassiveClauseContainer* passiveClauseContainer, - UnificationConstraintStackSP constraints, bool isTypeSub) + ResultSubstitutionSP subst, bool eqIsResult, PassiveClauseContainer* passiveClauseContainer) { CALL("Superposition::performSuperposition"); // we want the rwClause and eqClause to be active @@ -399,8 +398,7 @@ Clause* Superposition::performSuperposition( */ // the first checks the reference and the second checks the stack - bool hasConstraints = !constraints.isEmpty() && !constraints->isEmpty(); - ASS(!hasConstraints || !isTypeSub); + bool hasConstraints = subst->numberOfConstraints(); TermList eqLHSsort = SortHelper::getEqualityArgumentSort(eqLit); if(eqLHS.isVar()) { @@ -428,7 +426,6 @@ Clause* Superposition::performSuperposition( unsigned rwLength = rwClause->length(); unsigned eqLength = eqClause->length(); - unsigned conLength = hasConstraints ? constraints->size() : 0; TermList tgtTerm = EqHelper::getOtherEqualitySide(eqLit, eqLHS); @@ -458,7 +455,7 @@ Clause* Superposition::performSuperposition( TermList rwTermS = subst->apply(rwTerm, !eqIsResult); #if VDEBUG - if(!hasConstraints && !isTypeSub){ + if(!hasConstraints){ ASS_EQ(rwTermS,eqLHSS); } #endif @@ -495,7 +492,7 @@ Clause* Superposition::performSuperposition( return 0; } - unsigned newLength = rwLength+eqLength-1+conLength + isTypeSub; + unsigned newLength = rwLength+eqLength-1+subst->numberOfConstraints(); static bool afterCheck = getOptions().literalMaximalityAftercheck() && _salg->getLiteralSelector().isBGComplete(); @@ -541,6 +538,8 @@ Clause* Superposition::performSuperposition( env.proofExtra->insert(res,extra); } + auto constraints = subst->getConstraints(); + (*res)[0] = tgtLitS; int next = 1; unsigned weight=tgtLitS->weight(); @@ -617,39 +616,10 @@ Clause* Superposition::performSuperposition( } } } - if(hasConstraints){ - for(unsigned i=0;isize();i++){ - UnificationConstraint con = (*constraints)[i]; - - TermList qT = subst->applyTo(con.first.first,con.first.second); - TermList rT = subst->applyTo(con.second.first,con.second.second); - - TermList sort = SortHelper::getResultSort(rT.term()); - Literal* constraint = Literal::createEquality(false,qT,rT,sort); - - // view comment in binary resolution regarding check below AYB - - /*static Options::UnificationWithAbstraction uwa = env.options->unificationWithAbstraction(); - if(uwa==Options::UnificationWithAbstraction::GROUND && - !constraint->ground() && - (!UnificationWithAbstractionConfig::isInterpreted(qT) - && !UnificationWithAbstractionConfig::isInterpreted(rT) )) { - - // the unification was between two uninterpreted things that were not ground - res->destroy(); - return 0; - }*/ - - (*res)[next] = constraint; - next++; - } - } - - if(isTypeSub){ - TermList eqLHSsortS = subst->apply(eqLHSsort, eqIsResult); - Literal* constraint = Literal::createEquality(false,eqLHSS,rwTermS,eqLHSsortS); - (*res)[next] = constraint; - } + while(constraints.hasNext()){ + Literal* constraint = constraints.next(); + (*res)[next++] = constraint; + } if(needsToFulfilWeightLimit && !passiveClauseContainer->fulfilsWeightLimit(weight, numPositiveLiteralsLowerBound, res->inference())) { RSTAT_CTR_INC("superpositions skipped for weight limit after the clause was built"); diff --git a/Inferences/Superposition.hpp b/Inferences/Superposition.hpp index 36583b6f48..bbb59389e2 100644 --- a/Inferences/Superposition.hpp +++ b/Inferences/Superposition.hpp @@ -44,8 +44,7 @@ class Superposition Clause* performSuperposition( Clause* rwClause, Literal* rwLiteral, TermList rwTerm, Clause* eqClause, Literal* eqLiteral, TermList eqLHS, - ResultSubstitutionSP subst, bool eqIsResult, PassiveClauseContainer* passiveClauseContainer, - UnificationConstraintStackSP constraints, bool isTypeSub); + ResultSubstitutionSP subst, bool eqIsResult, PassiveClauseContainer* passiveClauseContainer); bool checkClauseColorCompatibility(Clause* eqClause, Clause* rwClause); static bool earlyWeightLimitCheck(Clause* eqClause, Literal* eqLit, diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index e49ac3824e..d85f8f3696 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -42,10 +42,10 @@ class TermTransformer { virtual ~TermTransformer() {} Term* transform(Term* term); Literal* transform(Literal* lit); + TermList transform(TermList ts); protected: virtual TermList transformSubterm(TermList trm) = 0; Term* transformSpecial(Term* specialTerm); - TermList transform(TermList ts); virtual Formula* transform(Formula* f); bool _sharedResult; }; diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index bbc118bdaa..a583fe0b0d 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -25,7 +25,8 @@ #include "Indexing/Index.hpp" #include "Indexing/LiteralSubstitutionTree.hpp" #include "Indexing/LiteralIndex.hpp" - +#include "Indexing/TermSubstitutionTree.hpp" +#include "Indexing/TermIndex.hpp" #include "Test/UnitTesting.hpp" @@ -110,11 +111,32 @@ Clause* unit(Literal* lit) } +TermIndexingStructure* getBasicTermIndex() +{ + UWAMismatchHandler* handler = new UWAMismatchHandler(); + // Let's create an index with some data in it + // We pass true to say that we want to use constraints + TermIndexingStructure* is = new TermSubstitutionTree(handler); + + + TermList one_plus_one = int_plus(number("1"),number("1")); + TermList one_plus_a = int_plus(number("1"),int_constant("a")); + + Literal* p1 = pred("p",one_plus_one); + Literal* p2 = pred("p",one_plus_a); + + is->insert(one_plus_one,p1,unit(p1)); + is->insert(one_plus_a,p2,unit(p2)); + + return is; +} + LiteralIndexingStructure* getBasicIndex() { + UWAMismatchHandler* handler = new UWAMismatchHandler(); // Let's create an index with some data in it // We pass true to say that we want to use constraints - LiteralIndexingStructure * is = new LiteralSubstitutionTree(true); + LiteralIndexingStructure * is = new LiteralSubstitutionTree(handler); TermList one_plus_one = int_plus(number("1"),number("1")); @@ -130,6 +152,25 @@ LiteralIndexingStructure* getBasicIndex() } +void reportTermMatches(TermIndexingStructure* index, TermList term, TermList sort) +{ + TermQueryResultIterator it= index->getUnificationsUsingSorts(term,sort,true); + cout << endl; + cout << "Unify with " << term.toString() << endl; + while(it.hasNext()){ + TermQueryResult qr = it.next(); + cout << qr.term.toString() << " matches with substitution: "<< endl; + // cout << qr.substitution->tryGetRobSubstitution()->toString() << endl; + cout << "and constraints: "<< endl; + auto constraints = qr.substitution->getConstraints(); + while(constraints.hasNext()){ + Literal* constraint = constraints.next(); + cout << "> " << constraint->toString() << endl; + } + } + cout << endl; +} + void reportMatches(LiteralIndexingStructure* index, Literal* qlit) { SLQueryResultIterator it= index->getUnifications(qlit,false,true); @@ -140,18 +181,58 @@ void reportMatches(LiteralIndexingStructure* index, Literal* qlit) cout << qr.clause->toString() << " matches with substitution: "<< endl; // cout << qr.substitution->tryGetRobSubstitution()->toString() << endl; cout << "and constraints: "<< endl; - auto constraints = qr.constraints; - for(unsigned i=0;isize();i++){ - auto con = (*constraints)[i]; - TermList qT = qr.substitution->applyTo(con.first.first,con.first.second); - TermList rT = qr.substitution->applyTo(con.second.first,con.second.second); - - cout << "> "<< qT.toString() << "!=" << rT.toString() << "\t\t from " << con.first.first.toString() << "!=" << con.second.first.toString() << endl; + auto constraints = qr.substitution->getConstraints(); + while(constraints.hasNext()){ + Literal* constraint = constraints.next(); + cout << "> " << constraint->toString() << endl; } } cout << endl; } + +TEST_FUN(term_indexing_one_side_interp) +{ + env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); + + TermIndexingStructure* index = getBasicTermIndex(); + + TermList t = int_plus(int_constant("b"),number("2")); + + reportTermMatches(index,t,SortHelper::getResultSort(t.term())); + + TermList s = int_constant("a"); + Literal* p = pred("p",s); + + index->insert(s,p,unit(p)); + + reportTermMatches(index,t,SortHelper::getResultSort(t.term())); + + TermList u(0, false); + reportTermMatches(index,u,AtomicSort::intSort()); +} + +TEST_FUN(term_indexing_interp_only) +{ + env.options->setUWA(Options::UnificationWithAbstraction::INTERP_ONLY); + + TermIndexingStructure* index = getBasicTermIndex(); + + TermList t = int_plus(int_constant("b"),number("2")); + + reportTermMatches(index,t,SortHelper::getResultSort(t.term())); + + TermList s = int_constant("a"); + Literal* p = pred("p",s); + + index->insert(s,p,unit(p)); + + reportTermMatches(index,t,SortHelper::getResultSort(t.term())); + + TermList u(0, false); + reportTermMatches(index,u,AtomicSort::intSort()); +} + // AYB look into rewriting these test now that UWA has been heavily modified // This test demonstrates the current issue. The constraints produced depend on @@ -186,42 +267,22 @@ TEST_FUN(current_issue) static const int NORM_QUERY_BANK=2; static const int NORM_RESULT_BANK=3; -/*struct testMismatchHandler : MismatchHandler -{ -testMismatchHandler(Stack* c) : _constraints(c) {} -bool handle(RobSubstitution* subst, TermList query, unsigned index1, TermList node, unsigned index2){ - ASS(index1 == NORM_QUERY_BANK && index2 == NORM_RESULT_BANK); - static unsigned _var = 0; - unsigned x = _var++; - TermList nodeVar = TermList(x,true); - subst->bindSpecialVar(x,node,index2); - auto constraint = make_pair(make_pair(query,index1),make_pair(nodeVar,index2)); - _constraints->push(constraint); - return true; -} -Stack* _constraints; -};*/ - void reportRobUnify(TermList a, TermList b) { cout << endl; cout << "Unifying " << a.toString() << " with " << b.toString() << endl; - RobSubstitution sub; - Stack constraints; + MismatchHandler* hndlr = new UWAMismatchHandler(); + RobSubstitution sub(hndlr); //MismatchHandler* hndlr = new testMismatchHandler(&constraints); - MismatchHandler* hndlr = new UWAMismatchHandler(constraints); - bool result = sub.unify(a,NORM_QUERY_BANK,b,NORM_RESULT_BANK,hndlr); + bool result = sub.unify(a,NORM_QUERY_BANK,b,NORM_RESULT_BANK); cout << "Result is " << result << endl; if(result){ // cout << "> Substitution is " << endl << sub.toString(); cout << "> Constraints are:" << endl; - auto rs = ResultSubstitution::fromSubstitution(&sub,NORM_QUERY_BANK,NORM_RESULT_BANK); - for(unsigned i=0;i "<< qT.toString() << "!=" << rT.toString() << "\t\t from " << con.first.first.toString() << "!=" << con.second.first.toString() << endl; + auto constraints = sub.getConstraints(); + while(constraints.hasNext()){ + Literal* constraint = constraints.next(); + cout << "> " << constraint->toString() << endl; } } cout << endl; @@ -241,7 +302,7 @@ TEST_FUN(using_robsub) } -TEST_FUN(complex_case) +/*TEST_FUN(complex_case) { env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); @@ -263,4 +324,4 @@ TEST_FUN(complex_case) Literal* qlit = pred("p",query); reportMatches(index,qlit); -} +}*/ From 99fb636e70a559bb74d568e7ce6aff03e4f11f16 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 2 Aug 2022 13:27:51 +0100 Subject: [PATCH 004/210] files missing from previous commit: --- Kernel/MismatchHandler.cpp | 241 +++++++++++++++++++++++++++++-------- Kernel/MismatchHandler.hpp | 80 +++++++++--- Kernel/RobSubstitution.cpp | 75 +++++++++--- Kernel/RobSubstitution.hpp | 26 ++-- Lib/Map.hpp | 2 +- Lib/MaybeBool.hpp | 1 + 6 files changed, 330 insertions(+), 95 deletions(-) diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index a8a4db1bbf..ca2e585e37 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -21,6 +21,7 @@ #include "Signature.hpp" #include "Term.hpp" #include "RobSubstitution.hpp" +#include "SortHelper.hpp" #include "MismatchHandler.hpp" #include "Shell/UnificationWithAbstractionConfig.hpp" @@ -28,30 +29,26 @@ namespace Kernel { -bool UWAMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, VSpecVarToTermMap* termMap) +bool UWAMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, + UnificationConstraintStack& ucs,BacktrackData& bd, bool recording) { CALL("UWAMismatchHandler::handle"); - ASS(!t1.isSpecialVar() && !t2.isSpecialVar()); if(t1.isOrdinaryVar() || t2.isOrdinaryVar()) return false; - if(checkUWA(t1,t2)){ - Term* tm1 = t1.isVSpecialVar() ? termMap->get(t1.var()) : t1.term(); - Term* tm2 = t2.isVSpecialVar() ? termMap->get(t2.var()) : t2.term(); + Term* tm1 = 0; + Term* tm2 = 0; + if(t1.isVSpecialVar() && !_termMap.find(t1.var(), tm1)) return false; + if(t2.isVSpecialVar() && !_termMap.find(t2.var(), tm2)) return false; - if(tm1 == tm2 && tm1->shared() && tm1->ground()){ return true; } - - TermList tt1 = TermList(tm1); - TermList tt2 = TermList(tm2); + if(!tm1) tm1 = t1.term(); + if(!tm2) tm2 = t2.term(); - RobSubstitution::TermSpec t1spec = RobSubstitution::TermSpec(tt1, index1); - RobSubstitution::TermSpec t2spec = RobSubstitution::TermSpec(tt2, index2); + if(checkUWA(TermList(tm1),TermList(tm2))){ + if(areIdentical(tm1,tm2,index1,index2)) + return true; - if(t1spec.sameTermContent(t2spec)){ return true; } - - //cout << "Introducing constraint: <" + tt1.toString() << " , " << tt2.toString() << ">" << endl; - - return introduceConstraint(tt1,index1,tt2,index2); + return introduceConstraint(TermList(tm1),index1,TermList(tm2),index2,ucs,bd,recording); } return false; } @@ -61,65 +58,205 @@ bool UWAMismatchHandler::checkUWA(TermList t1, TermList t2) CALL("UWAMismatchHandler::checkUWA"); static Shell::Options::UnificationWithAbstraction opt = env.options->unificationWithAbstraction(); - // handler should never be called if UWA is off - ASS(opt != Shell::Options::UnificationWithAbstraction::OFF); - - if((t1.isVSpecialVar() && !t2.isVSpecialVar()) || - (t2.isVSpecialVar() && !t1.isVSpecialVar()) ){ - // At the moment we assume that there are only two settings for UWA - // both terms must be interpreted, or at least one term be interpreted. - // If statement below checks for the case where both terms must be interpreted - // but only one of the terms passed to the handler is an interpreted one. - if(opt != Shell::Options::UnificationWithAbstraction::ONE_INTERP){ + + switch(opt){ + case Shell::Options::UnificationWithAbstraction::ONE_INTERP: + return isConstraintTerm(t1).isTrue() || isConstraintTerm(t2).isTrue(); + case Shell::Options::UnificationWithAbstraction::INTERP_ONLY: + return isConstraintTerm(t1).isTrue() && isConstraintTerm(t2).isTrue(); + default: + // handler should never be called if UWA is off + ASSERTION_VIOLATION; return false; - } - return true; } +} - ASS(t1.isVSpecialVar() && t2.isVSpecialVar()); - return true; +TermList UWAMismatchHandler::transformSubterm(TermList trm) +{ + CALL("UWAMismatchHandler::transformSubterm"); + + if(isConstraintTerm(trm).isTrue()){ + return TermList::getVSpecVar(trm.term(), &_termMap); + } + return trm; +} + +MaybeBool UWAMismatchHandler::isConstraintTerm(TermList t){ + CALL("UWAMismatchHandler::isConstraintTerm"); + + if(t.isVar()){ return false; } + + static Shell::Options::UnificationWithAbstraction opt = env.options->unificationWithAbstraction(); + bool onlyInterpreted = opt == Shell::Options::UnificationWithAbstraction::INTERP_ONLY; + + auto trm = t.term(); + bool isNumeral = Shell::UnificationWithAbstractionConfig::isNumeral(t); + + if(Shell::UnificationWithAbstractionConfig::isInterpreted(trm) && !isNumeral){ + return true; + } + + TermList sort = SortHelper::getResultSort(t.term()); + if(!onlyInterpreted && (sort.isVar() || sort.isIntSort() || sort.isRatSort() || sort.isRealSort())){ + return MaybeBool::UNKNOWN; + } + + return false; } -bool UWAMismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2) +bool MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2, + UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) { - CALL("UWAMismatchHandler::introduceConstraint"); + CALL("MismatchHandler::introduceConstraint"); auto constraint = make_pair(make_pair(t1,index1),make_pair(t2,index2)); - constraints.push(constraint); + if(recording){ + ucs.backtrackablePush(constraint, bd); + } else { + ucs.push(constraint); + } return true; } -bool HOMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, VSpecVarToTermMap* termMap) +bool MismatchHandler::areIdentical(Term* t1, Term* t2, unsigned idx1, unsigned idx2) { - CALL("HOMismatchHandler::handle"); + CALL("MismatchHandler::areIdentical"); - if(!t1.isVSpecialVar() && !t2.isVSpecialVar()){ - return false; + if(t1 == t2 && t1->shared() && t1->ground()){ return true; } + + TermList tt1 = TermList(t1); + TermList tt2 = TermList(t2); + + RobSubstitution::TermSpec t1spec = RobSubstitution::TermSpec(tt1, idx1); + RobSubstitution::TermSpec t2spec = RobSubstitution::TermSpec(tt2, idx2); + if(t1spec.sameTermContent(t2spec)){ return true; } + + return false; +} + + +CompositeMismatchHandler::~CompositeMismatchHandler(){ + MHList::destroyWithDeletion(_inners); +} + +bool CompositeMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, + UnificationConstraintStack& ucs,BacktrackData& bd, bool recording) +{ + CALL("CompositeMismatchHandler::handle"); + + MHList* hit=_inners; + while(hit) { + if(hit->head()->handle(t1,index1,t2,index2,ucs,bd,recording)){ + return true; + } + hit=hit->tail(); } + return false; +} - Term* tm1 = termMap->get(t1.var()); - Term* tm2 = termMap->get(t2.var()); +void CompositeMismatchHandler::addHandler(MismatchHandler* hndlr){ + CALL("CompositeMismatchHandler::addHandler"); - if(tm1 == tm2 && tm1->shared() && tm1->ground()){ return true; } - - TermList tt1 = TermList(tm1); - TermList tt2 = TermList(tm2); + MHList::push(hndlr,_inners); +} - RobSubstitution::TermSpec t1spec = RobSubstitution::TermSpec(tt1, index1); - RobSubstitution::TermSpec t2spec = RobSubstitution::TermSpec(tt2, index2); +MaybeBool CompositeMismatchHandler::isConstraintTerm(TermList t){ + CALL("CompositeMismatchHandler::isConstraintTerm"); + + if(t.isVar()){ return false; } - if(t1spec.sameTermContent(t2spec)){ return true; } + MHList* hit=_inners; + while(hit) { + auto res = hit->head()->isConstraintTerm(t); + if(!res.isFalse()){ + return res; + } + hit=hit->tail(); + } + return false; +} + +TermList CompositeMismatchHandler::transformSubterm(TermList trm){ + CALL("CompositeMismatchHandler::transformSubterm"); - return introduceConstraint(tt1,index1,tt2,index2); + MHList* hit=_inners; + while(hit) { + TermList t = hit->head()->transformSubterm(trm); + if(t != trm){ + return t; + } + hit=hit->tail(); + } + return trm; } -bool HOMismatchHandler::introduceConstraint(TermList t1, unsigned index1, TermList t2, unsigned index2) +Term* CompositeMismatchHandler::get(unsigned var) { - CALL("HOMismatchHandler::introduceConstraint"); + CALL("CompositeMismatchHandler::get"); - auto constraint = make_pair(make_pair(t1,index1),make_pair(t2,index2)); - constraints.push(constraint); - return true; + MHList* hit=_inners; + while(hit) { + auto res = hit->head()->getTermMap()->tryGet(var); + if(res.isSome()){ + return res.unwrap(); + } + hit=hit->tail(); + } + ASSERTION_VIOLATION; } + +bool HOMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, + UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) +{ + CALL("HOMismatchHandler::handle"); + + if(t1.isOrdinaryVar() || t2.isOrdinaryVar()) return false; + + Term* tm1 = 0; + Term* tm2 = 0; + if(t1.isVSpecialVar() && !_termMap.find(t1.var(), tm1)) return false; + if(t2.isVSpecialVar() && !_termMap.find(t2.var(), tm2)) return false; + + if(!tm1) tm1 = t1.term(); + if(!tm2) tm2 = t2.term(); + + if(isConstraintTerm(TermList(tm1)).isFalse() || isConstraintTerm(TermList(tm2)).isFalse()) + return false; + + if(areIdentical(tm1,tm2,index1,index2)) + return true; + + return introduceConstraint(TermList(tm1),index1,TermList(tm2),index2,ucs,bd,recording); +} + +MaybeBool HOMismatchHandler::isConstraintTerm(TermList t){ + CALL("CompositeMismatcHandler::isConstraintTerm"); + + //TODO Bool sort??? + if(t.isVar()){ return false; } + + auto trm = t.term(); + auto sort = SortHelper::getResultSort(trm); + + if(sort.isArrowSort()){ + return true; + } + + if(sort.isVar()){ + return MaybeBool::UNKNOWN; + } + return false; +} + +TermList HOMismatchHandler::transformSubterm(TermList trm) +{ + CALL("HOMismatchHandler::transformSubterm"); + + // isConstraintTerm or Bool? + //TODO + ASSERTION_VIOLATION; +} + + } diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index f7838c2e48..8546b403b9 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -18,51 +18,97 @@ #include "Forwards.hpp" #include "Term.hpp" +#include "Kernel/TermTransformer.hpp" +#include "Lib/MaybeBool.hpp" +#include "Lib/BiMap.hpp" namespace Kernel { -class MismatchHandler +class MismatchHandler : public TermTransformer { public: + + MismatchHandler() : TermTransformer(false) {} + // returns true if the mismatch was handled. - virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, VSpecVarToTermMap* termMap) = 0; + virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, + UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) = 0; + virtual TermList transformSubterm(TermList t) = 0; + + // With polymorphism, a term may end up being a constraint term + // depending on type substitutions. + // Also a term such as f(a,b) : $int may be a constraint term + virtual MaybeBool isConstraintTerm(TermList t) = 0; + + bool areIdentical(Term* t1, Term* t2, unsigned idx1, unsigned idx2); + + virtual Term* get(unsigned var){ NOT_IMPLEMENTED; } + + VSpecVarToTermMap* getTermMap() { return &_termMap; } protected: - virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2) = 0; + virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2, + UnificationConstraintStack& ucs, BacktrackData& bd, bool recording); + + VSpecVarToTermMap _termMap; +}; + +/** + * Meta handler + * Invariant: for all handlers in _inner, a maximum of ONE handler + * can return a non-false value on a call to isConstraintTerm + */ +class CompositeMismatchHandler : + public MismatchHandler +{ +public: + + ~CompositeMismatchHandler(); + virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, + UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) override; + TermList transformSubterm(TermList trm) override; + MaybeBool isConstraintTerm(TermList t) override; + Term* get(unsigned var) override; + + void addHandler(MismatchHandler* hndlr); + + CLASS_NAME(CompositeMismatchHandler); + USE_ALLOCATOR(CompositeMismatchHandler); + +private: + typedef List MHList; + MHList* _inners; }; class UWAMismatchHandler : public MismatchHandler { public: - UWAMismatchHandler(Stack& c) : constraints(c) /*, specialVar(0)*/ {} - virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, VSpecVarToTermMap* termMap) override; + UWAMismatchHandler() {} + virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, + UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) override; + TermList transformSubterm(TermList trm) override; + + MaybeBool isConstraintTerm(TermList t) override; CLASS_NAME(UWAMismatchHandler); USE_ALLOCATOR(UWAMismatchHandler); private: - virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2) override; bool checkUWA(TermList t1, TermList t2); - - Stack& constraints; - // unsigned specialVar; }; class HOMismatchHandler : public MismatchHandler { public: - HOMismatchHandler(UnificationConstraintStack& c) : constraints(c) {} + HOMismatchHandler() {} - virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, VSpecVarToTermMap* termMap) override; + virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, + UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) override; + TermList transformSubterm(TermList trm) override; + MaybeBool isConstraintTerm(TermList t) override; CLASS_NAME(HOMismatchHandler); USE_ALLOCATOR(HOMismatchHandler); - -private: - virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2) override; - - Stack& constraints; - // unsigned specialVar; }; diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index bb94d702ac..db41302b62 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -19,6 +19,7 @@ #include "Lib/DHSet.hpp" #include "Lib/DHMap.hpp" #include "Lib/Int.hpp" +#include "Lib/Metaiterators.hpp" #include "Renaming.hpp" #include "SortHelper.hpp" @@ -35,11 +36,11 @@ const int RobSubstitution::UNBOUND_INDEX=-1; /** * Unify @b t1 and @b t2, and return true iff it was successful. */ -bool RobSubstitution::unify(TermList t1,int index1, TermList t2, int index2, MismatchHandler* hndlr) +bool RobSubstitution::unify(TermList t1,int index1, TermList t2, int index2) { CALL("RobSubstitution::unify/4"); - return unify(TermSpec(t1,index1), TermSpec(t2,index2),hndlr); + return unify(TermSpec(t1,index1), TermSpec(t2,index2)); } /** @@ -47,7 +48,7 @@ bool RobSubstitution::unify(TermList t1,int index1, TermList t2, int index2, Mis * * @b t1 and @b t2 can be either terms or literals. */ -bool RobSubstitution::unifyArgs(Term* t1,int index1, Term* t2, int index2, MismatchHandler* hndlr) +bool RobSubstitution::unifyArgs(Term* t1,int index1, Term* t2, int index2) { CALL("RobSubstitution::unifyArgs"); ASS_EQ(t1->functor(),t2->functor()); @@ -55,7 +56,7 @@ bool RobSubstitution::unifyArgs(Term* t1,int index1, Term* t2, int index2, Misma TermList t1TL(t1); TermList t2TL(t2); - return unify(TermSpec(t1TL,index1), TermSpec(t2TL,index2),hndlr); + return unify(TermSpec(t1TL,index1), TermSpec(t2TL,index2)); } bool RobSubstitution::match(TermList base,int baseIndex, @@ -230,7 +231,8 @@ bool RobSubstitution::occurs(VarSpec vs, TermSpec ts) vs=root(vs); Stack toDo(8); if(ts.isVSpecialVar()){ - Term* t = _termMap->get(ts.term.var()); + ASS(_handler) + Term* t = _handler->get(ts.term.var()); ts = TermSpec(TermList(t), ts.index); }else if(ts.isVar()) { ts=derefBound(ts); @@ -258,12 +260,14 @@ bool RobSubstitution::occurs(VarSpec vs, TermSpec ts) if(!isVSpecialVar){ dtvar=derefBound(TermSpec(tvar)); } else { - Term* t = _termMap->get(var.var()); + ASS(_handler) + Term* t = _handler->get(var.var()); dtvar = TermSpec(TermList(t), ts.index); } if(!dtvar.isVar() || dtvar.isVSpecialVar()) { if(dtvar.isVSpecialVar()){ - Term* t = _termMap->get(dtvar.term.var()); + ASS(_handler); + Term* t = _handler->get(dtvar.term.var()); dtvar = TermSpec(TermList(t), dtvar.index); } encountered.insert(tvar); @@ -279,7 +283,7 @@ bool RobSubstitution::occurs(VarSpec vs, TermSpec ts) } } -bool RobSubstitution::unify(TermSpec t1, TermSpec t2,MismatchHandler* hndlr) +bool RobSubstitution::unify(TermSpec t1, TermSpec t2) { CALL("RobSubstitution::unify/2"); @@ -287,6 +291,9 @@ bool RobSubstitution::unify(TermSpec t1, TermSpec t2,MismatchHandler* hndlr) return true; } + // Recording is true if called from an index + // and false otherwise + bool recording = bdIsRecording(); bool mismatch=false; BacktrackData localBD; bdRecord(localBD); @@ -312,10 +319,10 @@ bool RobSubstitution::unify(TermSpec t1, TermSpec t2,MismatchHandler* hndlr) // (note that sameTermContent is best-effort) if(dt1.sameTermContent(dt2)) { } else if(dt1.isVSpecialVar() && dt2.isVSpecialVar()){ - ASS(hndlr); + ASS(_handler); // if both are constraint terms (e.g. $sum(...) or $product(...) or higher-order stuff) // then hand pair over to relevant handler to create constraint - hndlr->handle(dt1.term, dt1.index, dt2.term, dt2.index, _termMap); + ALWAYS(_handler->handle(dt1.term, dt1.index, dt2.term, dt2.index, _constraints, localBD, recording)); } // Deal with the case where either are variables // Do an occurs-check and note that the variable @@ -340,14 +347,14 @@ bool RobSubstitution::unify(TermSpec t1, TermSpec t2,MismatchHandler* hndlr) // In this case we create constraint if settings allow. // If they do not, handler will return false and we continue with // standard unification. - if(!hndlr->handle(dt1.term, dt1.index, dt2.term, dt2.index, _termMap)){ - Term* t = _termMap->get(dt1.term.var()); + if(!_handler->handle(dt1.term, dt1.index, dt2.term, dt2.index, _constraints, localBD, recording)){ + Term* t = _handler->get(dt1.term.var()); t1 = TermSpec(TermList(t), dt1.index); toDo.push(TTPair(t1, dt2)); } } else if(dt2.isVSpecialVar()){ - if(!hndlr->handle(dt1.term, dt1.index, dt2.term, dt2.index, _termMap)){ - Term* t = _termMap->get(dt2.term.var()); + if(!_handler->handle(dt1.term, dt1.index, dt2.term, dt2.index, _constraints, localBD, recording)){ + Term* t = _handler->get(dt2.term.var()); t2 = TermSpec(TermList(t), dt2.index); toDo.push(TTPair(dt1, t2)); } @@ -645,7 +652,8 @@ TermList RobSubstitution::apply(TermList trm, int index) const } Term* t; if(ts.term.isVSpecialVar()){ - t = _termMap->get(ts.term.var()); + ASS(_handler); + t = _handler->get(ts.term.var()); } else { t = ts.term.term(); } @@ -740,7 +748,8 @@ size_t RobSubstitution::getApplicationResultWeight(TermList trm, int index) cons } Term* t; if(ts.term.isVSpecialVar()){ - t = _termMap->get(ts.term.var()); + ASS(_handler); + t = _handler->get(ts.term.var()); }else{ t=ts.term.term(); } @@ -999,6 +1008,40 @@ class RobSubstitution::AssocIterator: public IteratorCore { bool _used; }; +struct RobSubstitution::ConstraintToLiteralFn { + + ConstraintToLiteralFn(RobSubstitution* subst) : _subst(subst) {} + + Literal* operator() (const UnificationConstraint& uc) { + CALL("ConstraintToLiteralFn::operator()"); + + TermList lhs = _subst->apply(uc.first.first,uc.first.second); + TermList rhs = _subst->apply(uc.second.first,uc.second.second); + + TermList sort = SortHelper::getResultSort(lhs.term()); + return Literal::createEquality(false, lhs, rhs, sort); + } + + RobSubstitution* _subst; +}; + +bool RobSubstitution::tryAddConstraint(TermList t1,int index1, TermList t2, int index2, BacktrackData& bd) +{ + CALL("RobSubstitution::tryAddConstraint"); + + if(_handler){ + return _handler->handle(t1, index1, t2, index2, _constraints, bd, true); + } + return false; +} + +LiteralIterator RobSubstitution::getConstraints() { + CALL("RobSubstitution::getConstraints"); + + return pvi(getMappingIterator(pvi(UnificationConstraintStack::Iterator(_constraints)), + ConstraintToLiteralFn(this))); +} + struct RobSubstitution::MatchingFn { static bool associateEqualitySorts(RobSubstitution* subst, Literal* l1, int l1Index, Literal* l2, int l2Index) { diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index d8306bedda..af7022143d 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -38,16 +38,16 @@ class RobSubstitution CLASS_NAME(RobSubstitution); USE_ALLOCATOR(RobSubstitution); - RobSubstitution() : _termMap(nullptr), _nextUnboundAvailable(0) {} + RobSubstitution(MismatchHandler* hndlr = 0) : _handler(hndlr), _nextUnboundAvailable(0) {} SubstIterator matches(Literal* base, int baseIndex, Literal* instance, int instanceIndex, bool complementary); SubstIterator unifiers(Literal* l1, int l1Index, Literal* l2, int l2Index, bool complementary); - bool unify(TermList t1,int index1, TermList t2, int index2, MismatchHandler* hndlr=0); + bool unify(TermList t1,int index1, TermList t2, int index2); bool match(TermList base,int baseIndex, TermList instance, int instanceIndex); - bool unifyArgs(Term* t1,int index1, Term* t2, int index2, MismatchHandler* hndlr=0); + bool unifyArgs(Term* t1,int index1, Term* t2, int index2); bool matchArgs(Term* base,int baseIndex, Term* instance, int instanceIndex); void denormalize(const Renaming& normalizer, int normalIndex, int denormalizedIndex); @@ -57,14 +57,14 @@ class RobSubstitution } void reset() { - _termMap = 0; _bank.reset(); _nextUnboundAvailable=0; + _constraints.reset(); } - - void setMap(VSpecVarToTermMap* map){ - _termMap = map; + void setHandler(MismatchHandler* hndlr){ + _handler = hndlr; } + /** * Bind special variable to a specified term * @@ -84,6 +84,12 @@ class RobSubstitution size_t getApplicationResultWeight(TermList t, int index) const; size_t getApplicationResultWeight(Literal* lit, int index) const; + bool tryAddConstraint(TermList t1,int index1, TermList t2, int index2, BacktrackData& bd); + unsigned numberOfConstraints() { return _constraints.size(); } + LiteralIterator getConstraints(); + + struct ConstraintToLiteralFn; + #if VDEBUG vstring toString(bool deref=false) const; /** @@ -224,9 +230,12 @@ class RobSubstitution void bindVar(const VarSpec& var, const VarSpec& to); VarSpec root(VarSpec v) const; bool match(TermSpec base, TermSpec instance); - bool unify(TermSpec t1, TermSpec t2,MismatchHandler* hndlr); + bool unify(TermSpec t1, TermSpec t2); bool occurs(VarSpec vs, TermSpec ts); + MismatchHandler* _handler; + UnificationConstraintStack _constraints; + inline VarSpec getVarSpec(TermSpec ts) const { @@ -243,7 +252,6 @@ class RobSubstitution typedef DHMap BankType; - VSpecVarToTermMap* _termMap; BankType _bank; mutable unsigned _nextUnboundAvailable; diff --git a/Lib/Map.hpp b/Lib/Map.hpp index 51a0088ca1..c416ce452c 100644 --- a/Lib/Map.hpp +++ b/Lib/Map.hpp @@ -208,7 +208,7 @@ class Map */ Option tryGet(Key const& key) const { - CALL("Map::find/2"); + CALL("Map::tryGet"); using Opt = Option; auto code = hashCode(key); diff --git a/Lib/MaybeBool.hpp b/Lib/MaybeBool.hpp index ae571e5c42..ceaedf78e0 100644 --- a/Lib/MaybeBool.hpp +++ b/Lib/MaybeBool.hpp @@ -37,6 +37,7 @@ class MaybeBool MaybeBool(Value val) : _value(val) {} bool known() const { return _value!=UNKNOWN; } + bool maybe() const { return _value==UNKNOWN; } bool isTrue() const { return _value==TRUE; } bool isFalse() const { return _value==FALSE; } From 07ab2f5fca67adf239b93b3f4e0550eb867e1b9d Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 2 Aug 2022 15:36:11 +0100 Subject: [PATCH 005/210] updating unification with abstraction unit test to make use of syntax sugar --- Kernel/MismatchHandler.cpp | 19 +- Kernel/MismatchHandler.hpp | 5 + Test/SyntaxSugar.hpp | 2 + UnitTests/tUnificationWithAbstraction.cpp | 211 +++++++--------------- 4 files changed, 87 insertions(+), 150 deletions(-) diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index ca2e585e37..72126f90e8 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -43,7 +43,7 @@ bool UWAMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsig if(!tm1) tm1 = t1.term(); if(!tm2) tm2 = t2.term(); - + if(checkUWA(TermList(tm1),TermList(tm2))){ if(areIdentical(tm1,tm2,index1,index2)) return true; @@ -62,8 +62,10 @@ bool UWAMismatchHandler::checkUWA(TermList t1, TermList t2) switch(opt){ case Shell::Options::UnificationWithAbstraction::ONE_INTERP: return isConstraintTerm(t1).isTrue() || isConstraintTerm(t2).isTrue(); - case Shell::Options::UnificationWithAbstraction::INTERP_ONLY: - return isConstraintTerm(t1).isTrue() && isConstraintTerm(t2).isTrue(); + case Shell::Options::UnificationWithAbstraction::INTERP_ONLY:{ + bool b = isConstraintTerm(t1).isTrue() && isConstraintTerm(t2).isTrue(); + return b; + } default: // handler should never be called if UWA is off ASSERTION_VIOLATION; @@ -104,6 +106,17 @@ MaybeBool UWAMismatchHandler::isConstraintTerm(TermList t){ return false; } +#if VDEBUG + Term* UWAMismatchHandler::get(unsigned var) + { + CALL("UWAMismatchHandler::get"); + + auto res = _termMap.tryGet(var); + ASS(res.isSome()); + return res.unwrap(); + } +#endif + bool MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2, UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) { diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 8546b403b9..88d734c661 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -91,6 +91,11 @@ class UWAMismatchHandler : public MismatchHandler MaybeBool isConstraintTerm(TermList t) override; +#if VDEBUG + // only used in unit tests. see tUnificationWithAbstraction + Term* get(unsigned var) override; +#endif + CLASS_NAME(UWAMismatchHandler); USE_ALLOCATOR(UWAMismatchHandler); private: diff --git a/Test/SyntaxSugar.hpp b/Test/SyntaxSugar.hpp index 35e74ccd2b..879eb243a9 100644 --- a/Test/SyntaxSugar.hpp +++ b/Test/SyntaxSugar.hpp @@ -198,6 +198,8 @@ struct SortSugar : SortSugar(TermList(AtomicSort::createConstant(name))) { } + operator TermList() const {return _srt;} + SortId sortId() const { return _srt; } }; diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index a583fe0b0d..74e9e34864 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -29,6 +29,7 @@ #include "Indexing/TermIndex.hpp" #include "Test/UnitTesting.hpp" +#include "Test/SyntaxSugar.hpp" // TODO make this test use assertions, instead of printing output @@ -36,72 +37,6 @@ using namespace Kernel; using namespace Indexing; using SortType = TermList; -TermList number(vstring n) -{ - return TermList(Term::create(env.signature->addIntegerConstant(n,false),0,0)); -} -TermList var(unsigned i) -{ - return TermList(i,false); -} -unsigned function_symbol(vstring name,unsigned arity,SortType srt) -{ - bool added; - unsigned f = env.signature->addFunction(name,arity,added); - if(added){ - Signature::Symbol* symbol = env.signature->getFunction(f); - OperatorType* ot = OperatorType::getFunctionTypeUniformRange(arity,srt,srt); - symbol->setType(ot); - } - return f; -} -TermList constant(vstring name,SortType srt) -{ - auto c = function_symbol(name,0,srt); - Term* t = Term::create(c,0,0); - return TermList(t); -} -TermList int_constant(vstring name) -{ - return constant(name,IntegerConstantType::getSort()); -} -TermList binary(Interpretation fun, TermList n1, TermList n2) -{ - return TermList(Term::create2(env.signature->getInterpretingSymbol(fun),n1,n2)); -} -TermList int_plus(TermList n1, TermList n2) -{ - return binary(Theory::INT_PLUS,n1,n2); -} -Literal* equals(TermList t1, TermList t2) -{ - SortType srt; - if(!SortHelper::tryGetResultSort(t1,srt)){ - cout << "Don't call equals with two variables" << endl; - exit(0); - } - return Literal::createEquality(true, t1,t2,srt); -} -Literal* pred(vstring p, TermList t, SortType srt) -{ - bool added; - unsigned ps = env.signature->addPredicate(p,1,added); - if(added){ - Signature::Symbol* symbol = env.signature->getPredicate(ps); - OperatorType* ot = OperatorType::getPredicateTypeUniformRange(1,srt); - symbol->setType(ot); - } - return Literal::create1(ps,true,t); -} -Literal* pred(vstring p, TermList t) -{ - SortType srt; - if(!SortHelper::tryGetResultSort(t,srt)){ - cout << "Don't call this pred with a variable argument" << endl; - exit(0); - } - return pred(p,t,srt); -} Clause* unit(Literal* lit) { static Inference testInf = Kernel::NonspecificInference0(UnitInputType::ASSUMPTION, InferenceRule::INPUT); @@ -111,45 +46,16 @@ Clause* unit(Literal* lit) } -TermIndexingStructure* getBasicTermIndex() +TermIndexingStructure* getTermIndex() { UWAMismatchHandler* handler = new UWAMismatchHandler(); - // Let's create an index with some data in it - // We pass true to say that we want to use constraints - TermIndexingStructure* is = new TermSubstitutionTree(handler); - - - TermList one_plus_one = int_plus(number("1"),number("1")); - TermList one_plus_a = int_plus(number("1"),int_constant("a")); - - Literal* p1 = pred("p",one_plus_one); - Literal* p2 = pred("p",one_plus_a); - - is->insert(one_plus_one,p1,unit(p1)); - is->insert(one_plus_a,p2,unit(p2)); - - return is; + return new TermSubstitutionTree(handler); } -LiteralIndexingStructure* getBasicIndex() +LiteralIndexingStructure* getLiteralIndex() { UWAMismatchHandler* handler = new UWAMismatchHandler(); - // Let's create an index with some data in it - // We pass true to say that we want to use constraints - LiteralIndexingStructure * is = new LiteralSubstitutionTree(handler); - - - TermList one_plus_one = int_plus(number("1"),number("1")); - TermList one_plus_a = int_plus(number("1"),int_constant("a")); - - Literal* p1 = pred("p",one_plus_one); - Literal* p2 = pred("p",one_plus_a); - - is->insert(p1,unit(p1)); - is->insert(p2,unit(p2)); - - return is; - + return new LiteralSubstitutionTree(handler); } void reportTermMatches(TermIndexingStructure* index, TermList term, TermList sort) @@ -195,84 +101,82 @@ TEST_FUN(term_indexing_one_side_interp) { env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); - TermIndexingStructure* index = getBasicTermIndex(); - - TermList t = int_plus(int_constant("b"),number("2")); + TermIndexingStructure* index = getTermIndex(); - reportTermMatches(index,t,SortHelper::getResultSort(t.term())); + DECL_DEFAULT_VARS + NUMBER_SUGAR(Int) + DECL_PRED(p, {Int}) - TermList s = int_constant("a"); - Literal* p = pred("p",s); + DECL_CONST(a, Int) + DECL_CONST(b, Int) - index->insert(s,p,unit(p)); + index->insert(num(1) + num(1), p(num(1) + num(1)), unit(p(num(1) + num(1)))); + index->insert(1 + a, p(1 + a), unit(p(a + a))); + + reportTermMatches(index,b + 2, Int); - reportTermMatches(index,t,SortHelper::getResultSort(t.term())); + index->insert(a,p(a),unit(p(a))); - TermList u(0, false); - reportTermMatches(index,u,AtomicSort::intSort()); + reportTermMatches(index,b + 2, Int); + reportTermMatches(index,x,Int); } TEST_FUN(term_indexing_interp_only) { env.options->setUWA(Options::UnificationWithAbstraction::INTERP_ONLY); - TermIndexingStructure* index = getBasicTermIndex(); + TermIndexingStructure* index = getTermIndex(); - TermList t = int_plus(int_constant("b"),number("2")); + DECL_DEFAULT_VARS + NUMBER_SUGAR(Int) + DECL_PRED(p, {Int}) - reportTermMatches(index,t,SortHelper::getResultSort(t.term())); + DECL_CONST(a, Int) + DECL_CONST(b, Int) - TermList s = int_constant("a"); - Literal* p = pred("p",s); + index->insert(num(1) + num(1), p(num(1) + num(1)), unit(p(num(1) + num(1)))); + index->insert(1 + a, p(1 + a), unit(p(a + a))); - index->insert(s,p,unit(p)); + reportTermMatches(index,b + 2,Int); - reportTermMatches(index,t,SortHelper::getResultSort(t.term())); + index->insert(a,p(a),unit(p(a))); - TermList u(0, false); - reportTermMatches(index,u,AtomicSort::intSort()); + reportTermMatches(index,b + 2,Int); + reportTermMatches(index,x,Int); } -// AYB look into rewriting these test now that UWA has been heavily modified - // This test demonstrates the current issue. The constraints produced depend on -TEST_FUN(current_issue) +TEST_FUN(literal_indexing) { env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); - LiteralIndexingStructure* index = getBasicIndex(); + LiteralIndexingStructure* index = getLiteralIndex(); - Literal* qlit = pred("p",int_plus(int_constant("b"),number("2"))); + DECL_DEFAULT_VARS + NUMBER_SUGAR(Int) + DECL_PRED(p, {Int}) - reportMatches(index,qlit); - // Currently this produces - //1. p($sum(1,1)) [input] matches with constraints - //> $sum(b,2)!=$sum(1,1) - //2. p($sum(1,a)) [input] matches with constraints - //> $sum(b,2)!=$sum(1,a) + DECL_CONST(a, Int) + DECL_CONST(b, Int) - index->insert(qlit,unit(qlit)); + index->insert(p(num(1) + num(1)), unit(p(num(1) + num(1)))); + index->insert(p(1 + a), unit(p(1 + a))); - reportMatches(index,qlit); - // Whereas this produces - //2. p($sum(1,a)) [input] matches with constraints - //> b!=1 - //> 2!=a - //1. p($sum(1,1)) [input] matches with constraints - //> b!=1 - //> 2!=1 - //3. p($sum(b,2)) [input] matches with constraints + + reportMatches(index,p(b + 2)); + + index->insert(p(b + 2),unit(p(b + 2))); + + reportMatches(index,p(b +2)); } static const int NORM_QUERY_BANK=2; static const int NORM_RESULT_BANK=3; -void reportRobUnify(TermList a, TermList b) +void reportRobUnify(TermList a, TermList b, RobSubstitution& sub) { cout << endl; cout << "Unifying " << a.toString() << " with " << b.toString() << endl; - MismatchHandler* hndlr = new UWAMismatchHandler(); - RobSubstitution sub(hndlr); //MismatchHandler* hndlr = new testMismatchHandler(&constraints); bool result = sub.unify(a,NORM_QUERY_BANK,b,NORM_RESULT_BANK); cout << "Result is " << result << endl; @@ -292,13 +196,26 @@ TEST_FUN(using_robsub) { env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); - TermList b_plus_two = int_plus(int_constant("b"),number("2")); - TermList one_plus_a = int_plus(number("1"),int_constant("a")); - TermList x_plus_two = int_plus(var(0),number("2")); + DECL_DEFAULT_VARS + NUMBER_SUGAR(Int) + DECL_FUNC(f, {Int}, Int) + DECL_FUNC(g, {Int}, Int) + DECL_CONST(a, Int) + DECL_CONST(b, Int) + + MismatchHandler* hndlr = new UWAMismatchHandler(); + RobSubstitution sub(hndlr); - reportRobUnify(b_plus_two,x_plus_two); - reportRobUnify(b_plus_two,one_plus_a); + auto t1 = hndlr->transform(f(b + 2)); + auto t2 = hndlr->transform(f(x + 2)); + auto t3 = hndlr->transform(f(a)); + auto t4 = hndlr->transform(g(1 + a)); + reportRobUnify(t1, t2,sub); + sub.reset(); + reportRobUnify(t2, t3,sub); + sub.reset(); + reportRobUnify(t3, t4,sub); } From 1602cb72a02c92a85371cc09e2388144027ab3ce Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 4 Aug 2022 15:29:26 +0100 Subject: [PATCH 006/210] fixing to reviewer comments --- Indexing/IndexManager.cpp | 27 +++----- Indexing/IndexManager.hpp | 4 +- Indexing/ResultSubstitution.hpp | 2 +- Indexing/SubstitutionTree.cpp | 2 +- Inferences/EqualityFactoring.cpp | 7 -- Inferences/EqualityResolution.cpp | 5 -- Kernel/MismatchHandler.cpp | 84 +++++++---------------- Kernel/MismatchHandler.hpp | 50 +++++++++----- Kernel/RobSubstitution.cpp | 16 ++++- Kernel/RobSubstitution.hpp | 2 + UnitTests/tUnificationWithAbstraction.cpp | 32 ++++----- 11 files changed, 101 insertions(+), 130 deletions(-) diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index b338639fd4..7f344af7a7 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -33,7 +33,7 @@ using namespace Lib; using namespace Indexing; -IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _genLitIndex(0), _handler(0) +IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _genLitIndex(0) { CALL("IndexManager::IndexManager"); @@ -42,15 +42,12 @@ IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _genLitIndex(0 env.property->higherOrder(); // urther handlers can be added here - if(uwa || eba){ - _handler = new CompositeMismatchHandler(); - - if(uwa){ - _handler->addHandler(new UWAMismatchHandler()); - } - if(eba){ - _handler->addHandler(new HOMismatchHandler()); - } + + if(uwa){ + _handler.addHandler(new UWAMismatchHandler()); + } + if(eba){ + _handler.addHandler(new HOMismatchHandler()); } if(alg) { @@ -65,10 +62,6 @@ IndexManager::~IndexManager() if(_alg) { release(GENERATING_SUBST_TREE); } - - if(_handler){ - delete _handler; - } } void IndexManager::setSaturationAlgorithm(SaturationAlgorithm* alg) @@ -166,7 +159,7 @@ Index* IndexManager::create(IndexType t) switch(t) { case GENERATING_SUBST_TREE: - is=new LiteralSubstitutionTree(_handler); + is=new LiteralSubstitutionTree(&_handler); #if VDEBUG //is->markTagged(); #endif @@ -197,7 +190,7 @@ Index* IndexManager::create(IndexType t) break; case SUPERPOSITION_SUBTERM_SUBST_TREE: - tis=new TermSubstitutionTree(_handler); + tis=new TermSubstitutionTree(&_handler); #if VDEBUG //tis->markTagged(); #endif @@ -205,7 +198,7 @@ Index* IndexManager::create(IndexType t) isGenerating = true; break; case SUPERPOSITION_LHS_SUBST_TREE: - tis=new TermSubstitutionTree(_handler); + tis=new TermSubstitutionTree(&_handler); res=new SuperpositionLHSIndex(tis, _alg->getOrdering(), _alg->getOptions()); //tis->markTagged(); isGenerating = true; diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index fa07bcbdf7..422b7bebb9 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -79,7 +79,7 @@ class IndexManager void release(IndexType t); bool contains(IndexType t); Index* get(IndexType t); - MismatchHandler* getHandler(){ return _handler; } + MismatchHandler* getHandler(){ return &_handler; } void provideIndex(IndexType t, Index* index); @@ -96,7 +96,7 @@ class IndexManager DHMap _store; LiteralIndexingStructure* _genLitIndex; - CompositeMismatchHandler* _handler; + CompositeMismatchHandler _handler; Index* create(IndexType t); }; diff --git a/Indexing/ResultSubstitution.hpp b/Indexing/ResultSubstitution.hpp index 72bc147f81..2dba21ac87 100644 --- a/Indexing/ResultSubstitution.hpp +++ b/Indexing/ResultSubstitution.hpp @@ -58,7 +58,7 @@ class ResultSubstitution /** if implementation cannot easily give result for this, zero is returned */ virtual size_t getResultApplicationWeight(Literal* l) { return 0; } /** number of constraints created during unification */ - virtual unsigned numberOfConstraints() { return 0; } + virtual unsigned numberOfConstraints() { NOT_IMPLEMENTED; } /** return iterator over constraints */ virtual LiteralIterator getConstraints() { NOT_IMPLEMENTED; } diff --git a/Indexing/SubstitutionTree.cpp b/Indexing/SubstitutionTree.cpp index 3f46753135..a7726c6c82 100644 --- a/Indexing/SubstitutionTree.cpp +++ b/Indexing/SubstitutionTree.cpp @@ -916,7 +916,7 @@ bool SubstitutionTree::UnificationsIterator::associate(TermList query, TermList { CALL("SubstitutionTree::UnificationsIterator::associate"); - return subst.unify(query,NORM_QUERY_BANK,node,NORM_RESULT_BANK); + return subst.unifyConstraintProcessed(query,NORM_QUERY_BANK,node,NORM_RESULT_BANK); } //TODO I think this works for VSpcialVars as well. Since .isVar() will return true diff --git a/Inferences/EqualityFactoring.cpp b/Inferences/EqualityFactoring.cpp index 244e9a250c..86bd5449f5 100644 --- a/Inferences/EqualityFactoring.cpp +++ b/Inferences/EqualityFactoring.cpp @@ -123,13 +123,6 @@ struct EqualityFactoring::ResultFn TermList fRHS=EqHelper::getOtherEqualitySide(fLit, fLHS); ASS_NEQ(sLit, fLit); - if(_handler){ - // replacing subterms that could be part of constraints with very special variables - // for example f($sum(1, Y)) -> f(#) - sLHS = _handler->transform(sLHS); - fLHS = _handler->transform(fLHS); - } - if(!subst.unify(sLHS,0,fLHS,0)){ return 0; } diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index 0d5c97b891..57a7708bee 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -83,11 +83,6 @@ struct EqualityResolution::ResultFn static RobSubstitution subst(_handler); subst.reset(); - - if(_handler){ - arg0 = _handler->transform(arg0); - arg1 = _handler->transform(arg1); - } if(!subst.unify(arg0,0,arg1,0)){ return 0; diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index 17af71852c..30da0f1918 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -29,33 +29,9 @@ namespace Kernel { -bool UWAMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, - UnificationConstraintStack& ucs,BacktrackData& bd, bool recording) -{ - CALL("UWAMismatchHandler::handle"); - - if(t1.isOrdinaryVar() || t2.isOrdinaryVar()) return false; - - Term* tm1 = 0; - Term* tm2 = 0; - if(t1.isVSpecialVar() && !_termMap.find(t1.var(), tm1)) return false; - if(t2.isVSpecialVar() && !_termMap.find(t2.var(), tm2)) return false; - - if(!tm1) tm1 = t1.term(); - if(!tm2) tm2 = t2.term(); - - if(checkUWA(TermList(tm1),TermList(tm2))){ - if(areIdentical(tm1,tm2,index1,index2)) - return true; - - return introduceConstraint(TermList(tm1),index1,TermList(tm2),index2,ucs,bd,recording); - } - return false; -} - -bool UWAMismatchHandler::checkUWA(TermList t1, TermList t2) +bool UWAMismatchHandler::isConstraintPair(TermList t1, TermList t2) { - CALL("UWAMismatchHandler::checkUWA"); + CALL("UWAMismatchHandler::isConstraintPair"); static Shell::Options::UnificationWithAbstraction opt = env.options->unificationWithAbstraction(); @@ -63,8 +39,7 @@ bool UWAMismatchHandler::checkUWA(TermList t1, TermList t2) case Shell::Options::UnificationWithAbstraction::ONE_INTERP: return isConstraintTerm(t1).isTrue() || isConstraintTerm(t2).isTrue(); case Shell::Options::UnificationWithAbstraction::INTERP_ONLY:{ - bool b = isConstraintTerm(t1).isTrue() && isConstraintTerm(t2).isTrue(); - return b; + return isConstraintTerm(t1).isTrue() && isConstraintTerm(t2).isTrue(); } default: // handler should never be called if UWA is off @@ -106,18 +81,7 @@ MaybeBool UWAMismatchHandler::isConstraintTerm(TermList t){ return false; } -#if VDEBUG - Term* UWAMismatchHandler::get(unsigned var) - { - CALL("UWAMismatchHandler::get"); - - auto res = _termMap.tryGet(var); - ASS(res.isSome()); - return res.unwrap(); - } -#endif - -bool MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2, +void MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2, UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) { CALL("MismatchHandler::introduceConstraint"); @@ -128,7 +92,6 @@ bool MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList } else { ucs.push(constraint); } - return true; } bool MismatchHandler::areIdentical(Term* t1, Term* t2, unsigned idx1, unsigned idx2) @@ -149,6 +112,8 @@ bool MismatchHandler::areIdentical(Term* t1, Term* t2, unsigned idx1, unsigned i CompositeMismatchHandler::~CompositeMismatchHandler(){ + CALL("CompositeMismatchHandler::~CompositeMismatchHandler"); + MHList::destroyWithDeletion(_inners); } @@ -157,9 +122,21 @@ bool CompositeMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, { CALL("CompositeMismatchHandler::handle"); + // make assumtion that we never create a constraint involving a variable + // this seems reasonable + if(t1.isOrdinaryVar() || t2.isOrdinaryVar()) + return false; + + t1 = t1.isVSpecialVar() ? TermList(get(t1.var())) : t1; + t2 = t2.isVSpecialVar() ? TermList(get(t2.var())) : t2; + + if(areIdentical(t1.term(),t2.term(),index1,index2)) + return true; + MHList* hit=_inners; while(hit) { - if(hit->head()->handle(t1,index1,t2,index2,ucs,bd,recording)){ + if(hit->head()->isConstraintPair(t1,t2)){ + introduceConstraint(t1,index1,t2,index2,ucs,bd,recording); return true; } hit=hit->tail(); @@ -219,34 +196,19 @@ Term* CompositeMismatchHandler::get(unsigned var) } -bool HOMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, - UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) +bool HOMismatchHandler::isConstraintPair(TermList t1, TermList t2) { - CALL("HOMismatchHandler::handle"); - - if(t1.isOrdinaryVar() || t2.isOrdinaryVar()) return false; - - Term* tm1 = 0; - Term* tm2 = 0; - if(t1.isVSpecialVar() && !_termMap.find(t1.var(), tm1)) return false; - if(t2.isVSpecialVar() && !_termMap.find(t2.var(), tm2)) return false; - - if(!tm1) tm1 = t1.term(); - if(!tm2) tm2 = t2.term(); + CALL("HOMismatchHandler::isConstraintPair"); - if(isConstraintTerm(TermList(tm1)).isFalse() || isConstraintTerm(TermList(tm2)).isFalse()) + if(isConstraintTerm(t1).isFalse() || isConstraintTerm(t2).isFalse()) return false; - if(areIdentical(tm1,tm2,index1,index2)) - return true; - - return introduceConstraint(TermList(tm1),index1,TermList(tm2),index2,ucs,bd,recording); + return true; } MaybeBool HOMismatchHandler::isConstraintTerm(TermList t){ CALL("CompositeMismatcHandler::isConstraintTerm"); - //TODO Bool sort??? if(t.isVar()){ return false; } auto trm = t.term(); diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index e8ae018f85..649606f128 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -31,19 +31,39 @@ class MismatchHandler : public TermTransformer MismatchHandler() : TermTransformer(false) {} - // returns true if the mismatch was handled. + // Returns true if the mismatch can be handled by some handler + // + // Implementors do NOT need to override this function. Only the composite handler + // needs to. virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, - UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) = 0; + UnificationConstraintStack& ucs, BacktrackData& bd, bool recording){ NOT_IMPLEMENTED; }; + + // Returns true if can form a constraint + // Implementors NEED to override this function with + // their specific logic. + // It shold be possible to make use of isConstraintTerm() here + virtual bool isConstraintPair(TermList t1, TermList t2) = 0; virtual TermList transformSubterm(TermList t) = 0; // With polymorphism, a term may end up being a constraint term // depending on type substitutions. - // Also a term such as f(a,b) : $int may be a constraint term + // Also a term such as f(a,b) : $int may be a constraint term + // but we also want to unify against it. // - // Function used as follows: - // if returns true, term is ONLY involved in constraints and never unified - // if returns false, term is ONLY unified and never involved in constraints - // if returns maybe, term is involved in constraints and unified + // Implementors of this function need to be aware of the following: + // - when a term t is inserted into a substitution tree that uses a handler + // this function is run on t. + // + If it returns true, we subsequently ONLY create constraints with t and + // do not try and unify with t (unless the query term is a variable) + // + If it returns false, we ONLY unify and do not create constraints with t + // + If it returns maybe we will attempt to do BOTH. Unify query terms with t + // and create constraints. + // - Similarly, when we query with a term trm, we run this function on trm + // + If it returns true, we ONLY attempt to find constraint partners for trm + // + If it returns false, we ONLY attempt to find unification partners for trm + // + If it returns maybe, we attempt to find BOTH type of partners for trm + // - It may be convenient to use this function in the implementation of transformSubterm + // View UWAMismatchHandler::transformSubterm() for an example of this virtual MaybeBool isConstraintTerm(TermList t) = 0; bool areIdentical(Term* t1, Term* t2, unsigned idx1, unsigned idx2); @@ -53,7 +73,7 @@ class MismatchHandler : public TermTransformer VSpecVarToTermMap* getTermMap() { return &_termMap; } protected: - virtual bool introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2, + void introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2, UnificationConstraintStack& ucs, BacktrackData& bd, bool recording); VSpecVarToTermMap _termMap; @@ -74,6 +94,7 @@ class CompositeMismatchHandler : UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) override; TermList transformSubterm(TermList trm) override; MaybeBool isConstraintTerm(TermList t) override; + bool isConstraintPair(TermList t1, TermList t2) override { NOT_IMPLEMENTED; } Term* get(unsigned var) override; void addHandler(MismatchHandler* hndlr); @@ -90,17 +111,11 @@ class UWAMismatchHandler : public MismatchHandler { public: UWAMismatchHandler() {} - virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, - UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) override; - TermList transformSubterm(TermList trm) override; + bool isConstraintPair(TermList t1, TermList t2) override; + TermList transformSubterm(TermList trm) override; MaybeBool isConstraintTerm(TermList t) override; -#if VDEBUG - // only used in unit tests. see tUnificationWithAbstraction - Term* get(unsigned var) override; -#endif - CLASS_NAME(UWAMismatchHandler); USE_ALLOCATOR(UWAMismatchHandler); private: @@ -112,8 +127,7 @@ class HOMismatchHandler : public MismatchHandler public: HOMismatchHandler() {} - virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, - UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) override; + bool isConstraintPair(TermList t1, TermList t2) override; TermList transformSubterm(TermList trm) override; MaybeBool isConstraintTerm(TermList t) override; diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 585f0b34c7..2509eaa091 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -40,7 +40,21 @@ bool RobSubstitution::unify(TermList t1,int index1, TermList t2, int index2) { CALL("RobSubstitution::unify/4"); - return unify(TermSpec(t1,index1), TermSpec(t2,index2)); + if(_handler){ + // replacing subterms that could be part of constraints with very special variables + // for example f($sum(1, Y)) -> f(#) + t1 = _handler->transform(t1); + t2 = _handler->transform(t2); + } + + return unifyConstraintProcessed(t1,index1,t2,index2); +} + +bool RobSubstitution::unifyConstraintProcessed(TermList t1,int index1, TermList t2, int index2) +{ + CALL("RobSubstitution::unifyConstraintProcessed"); + + return unify(TermSpec(t1,index1), TermSpec(t2,index2)); } /** diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 2803045c08..799dcde7c7 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -45,6 +45,8 @@ class RobSubstitution SubstIterator unifiers(Literal* l1, int l1Index, Literal* l2, int l2Index, bool complementary); bool unify(TermList t1,int index1, TermList t2, int index2); + // used to unify terms that have already been processed for constraints + bool unifyConstraintProcessed(TermList t1,int index1, TermList t2, int index2); bool match(TermList base,int baseIndex, TermList instance, int instanceIndex); bool unifyArgs(Term* t1,int index1, Term* t2, int index2); diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 236838aeae..628eb87250 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -38,28 +38,25 @@ using namespace Indexing; Clause* unit(Literal* lit) { - static Inference testInf = Kernel::NonspecificInference0(UnitInputType::ASSUMPTION, InferenceRule::INPUT); - Clause * cl = new(1) Clause(1,testInf); - (* cl)[0] = lit; - return cl; + return clause({ lit }); } - TermIndexingStructure* getTermIndex(bool uwa = true) { + CompositeMismatchHandler* cmh = new CompositeMismatchHandler(); if(uwa){ - UWAMismatchHandler* handler = new UWAMismatchHandler(); - return new TermSubstitutionTree(handler); + cmh->addHandler(new UWAMismatchHandler()); } else { - HOMismatchHandler* handler = new HOMismatchHandler(); - return new TermSubstitutionTree(handler); + cmh->addHandler(new HOMismatchHandler()); } + return new TermSubstitutionTree(cmh); } LiteralIndexingStructure* getLiteralIndex() { - UWAMismatchHandler* handler = new UWAMismatchHandler(); - return new LiteralSubstitutionTree(handler); + CompositeMismatchHandler* cmh = new CompositeMismatchHandler(); + cmh->addHandler(new UWAMismatchHandler()); + return new LiteralSubstitutionTree(cmh); } void reportTermMatches(TermIndexingStructure* index, TermList term, TermList sort) @@ -290,13 +287,14 @@ TEST_FUN(using_robsub) DECL_CONST(a, Int) DECL_CONST(b, Int) - MismatchHandler* hndlr = new UWAMismatchHandler(); - RobSubstitution sub(hndlr); + CompositeMismatchHandler* cmh = new CompositeMismatchHandler(); + cmh->addHandler(new UWAMismatchHandler()); + RobSubstitution sub(cmh); - auto t1 = hndlr->transform(f(b + 2)); - auto t2 = hndlr->transform(f(x + 2)); - auto t3 = hndlr->transform(f(a)); - auto t4 = hndlr->transform(g(1 + a)); + auto t1 = f(b + 2); + auto t2 = f(x + 2); + auto t3 = f(a); + auto t4 = g(1 + a); reportRobUnify(t1, t2,sub); sub.reset(); From c16041a193985c8d3b3284c80902bd6214b659b7 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 4 Aug 2022 16:31:31 +0100 Subject: [PATCH 007/210] fixing bug with higher-order inferences that were creating non-shared terms --- Inferences/CombinatorDemodISE.hpp | 2 +- Inferences/CombinatorNormalisationISE.hpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Inferences/CombinatorDemodISE.hpp b/Inferences/CombinatorDemodISE.hpp index d3b91298ca..9d03cd9b26 100644 --- a/Inferences/CombinatorDemodISE.hpp +++ b/Inferences/CombinatorDemodISE.hpp @@ -24,7 +24,7 @@ namespace Inferences { class TermReducer : public TermTransformer { public: - TermReducer() : TermTransformer(false, true), _reducLen(0) {} + TermReducer() : TermTransformer(true, true), _reducLen(0) {} TermList transformSubterm(TermList trm) override; // TODO are we calculating reduction length in the best way? diff --git a/Inferences/CombinatorNormalisationISE.hpp b/Inferences/CombinatorNormalisationISE.hpp index efb4b75e1c..b8d03ae60b 100644 --- a/Inferences/CombinatorNormalisationISE.hpp +++ b/Inferences/CombinatorNormalisationISE.hpp @@ -39,9 +39,9 @@ namespace Inferences { class CombinatorNormaliser : public TermTransformer { public: - // false means create shared terms + // true means create shared terms // true means recurse into replaced terms - CombinatorNormaliser() : TermTransformer(false, true) {} + CombinatorNormaliser() : TermTransformer(true, true) {} TermList transformSubterm(TermList trm) override; }; From bd8902aa10ff4d69a825bffa7dc408a60a55e360 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Mon, 8 Aug 2022 11:46:43 +0100 Subject: [PATCH 008/210] bug fixing --- Forwards.hpp | 2 ++ Indexing/IndexManager.cpp | 29 +++++++++++++++++++---------- Indexing/IndexManager.hpp | 4 ++-- Kernel/InferenceStore.cpp | 18 ++++++++++-------- Kernel/InferenceStore.hpp | 4 ++-- Kernel/MismatchHandler.cpp | 13 +++++++++---- Kernel/Ordering.cpp | 15 +++++---------- Kernel/SortHelper.cpp | 23 ++++++++++++++++++----- Kernel/SortHelper.hpp | 2 +- Kernel/SubstHelper.hpp | 8 +++++--- Shell/EqualityProxy.cpp | 2 +- Shell/EqualityProxyMono.cpp | 2 +- Shell/InequalitySplitting.cpp | 6 +++++- Shell/Naming.cpp | 2 +- Shell/Skolem.cpp | 19 +++++++++++++++---- Shell/Skolem.hpp | 2 +- Shell/TPTPPrinter.hpp | 4 +--- 17 files changed, 98 insertions(+), 57 deletions(-) diff --git a/Forwards.hpp b/Forwards.hpp index bf63701187..b4aca051cf 100644 --- a/Forwards.hpp +++ b/Forwards.hpp @@ -247,6 +247,8 @@ enum Color { COLOR_INVALID = 3u }; +enum SymbolType{FUNC, PRED, TYPE_CON}; + class MainLoop; typedef Lib::SmartPtr MainLoopSP; diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 7f344af7a7..e191aa8850 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -41,13 +41,18 @@ IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _genLitIndex(0 static bool const eba = (env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) && env.property->higherOrder(); - // urther handlers can be added here - - if(uwa){ - _handler.addHandler(new UWAMismatchHandler()); - } - if(eba){ - _handler.addHandler(new HOMismatchHandler()); + // other handlers can be added here + + if(uwa || eba){ + + _handler = new CompositeMismatchHandler(); + + if(uwa){ + _handler->addHandler(new UWAMismatchHandler()); + } + if(eba){ + _handler->addHandler(new HOMismatchHandler()); + } } if(alg) { @@ -59,6 +64,10 @@ IndexManager::~IndexManager() { CALL("IndexManager::~IndexManager"); + if(_handler){ + delete _handler; + } + if(_alg) { release(GENERATING_SUBST_TREE); } @@ -159,7 +168,7 @@ Index* IndexManager::create(IndexType t) switch(t) { case GENERATING_SUBST_TREE: - is=new LiteralSubstitutionTree(&_handler); + is=new LiteralSubstitutionTree(_handler); #if VDEBUG //is->markTagged(); #endif @@ -190,7 +199,7 @@ Index* IndexManager::create(IndexType t) break; case SUPERPOSITION_SUBTERM_SUBST_TREE: - tis=new TermSubstitutionTree(&_handler); + tis=new TermSubstitutionTree(_handler); #if VDEBUG //tis->markTagged(); #endif @@ -198,7 +207,7 @@ Index* IndexManager::create(IndexType t) isGenerating = true; break; case SUPERPOSITION_LHS_SUBST_TREE: - tis=new TermSubstitutionTree(&_handler); + tis=new TermSubstitutionTree(_handler); res=new SuperpositionLHSIndex(tis, _alg->getOrdering(), _alg->getOptions()); //tis->markTagged(); isGenerating = true; diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index 422b7bebb9..fa07bcbdf7 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -79,7 +79,7 @@ class IndexManager void release(IndexType t); bool contains(IndexType t); Index* get(IndexType t); - MismatchHandler* getHandler(){ return &_handler; } + MismatchHandler* getHandler(){ return _handler; } void provideIndex(IndexType t, Index* index); @@ -96,7 +96,7 @@ class IndexManager DHMap _store; LiteralIndexingStructure* _genLitIndex; - CompositeMismatchHandler _handler; + CompositeMismatchHandler* _handler; Index* create(IndexType t); }; diff --git a/Kernel/InferenceStore.cpp b/Kernel/InferenceStore.cpp index e04411db96..97f66fc2bf 100644 --- a/Kernel/InferenceStore.cpp +++ b/Kernel/InferenceStore.cpp @@ -95,13 +95,13 @@ void InferenceStore::recordSplittingNameLiteral(Unit* us, Literal* lit) /** * Record the introduction of a new symbol */ -void InferenceStore::recordIntroducedSymbol(Unit* u, bool func, unsigned number) +void InferenceStore::recordIntroducedSymbol(Unit* u, SymbolType st, unsigned number) { CALL("InferenceStore::recordIntroducedSymbol"); SymbolStack* pStack; _introducedSymbols.getValuePtr(u->number(),pStack); - pStack->push(SymbolId(func,number)); + pStack->push(SymbolId(st,number)); } /** @@ -696,14 +696,16 @@ struct InferenceStore::TPTPProofPrinter vostringstream symsStr; while(symIt.hasNext()) { SymbolId sym = symIt.next(); - if (sym.first) { - symsStr << env.signature->functionName(sym.second); + if (sym.first == FUNC) { + symsStr << env.signature->functionName(sym.second); } - else { - symsStr << env.signature->predicateName(sym.second); + else if (sym.first == PRED) { + symsStr << env.signature->predicateName(sym.second); + } else { + symsStr << env.signature->typeConName(sym.second); } if (symIt.hasNext()) { - symsStr << ','; + symsStr << ','; } } return getNewSymbols(origin, symsStr.str()); @@ -884,7 +886,7 @@ struct InferenceStore::TPTPProofPrinter defStr=getQuantifiedStr(nameVars, defStr); List::destroy(nameVars); - SymbolId nameSymbol = SymbolId(false,nameLit->functor()); + SymbolId nameSymbol = SymbolId(PRED,nameLit->functor()); vostringstream originStm; originStm << "introduced(" << tptpRuleName(rule) << ",[" << getNewSymbols("naming",getSingletonIterator(nameSymbol)) diff --git a/Kernel/InferenceStore.hpp b/Kernel/InferenceStore.hpp index 43d11b925f..bd287aab86 100644 --- a/Kernel/InferenceStore.hpp +++ b/Kernel/InferenceStore.hpp @@ -73,7 +73,7 @@ class InferenceStore }; void recordSplittingNameLiteral(Unit* us, Literal* lit); - void recordIntroducedSymbol(Unit* u, bool func, unsigned number); + void recordIntroducedSymbol(Unit* u, SymbolType st, unsigned number); void recordIntroducedSplitName(Unit* u, vstring name); void outputUnsatCore(ostream& out, Unit* refutation); @@ -101,7 +101,7 @@ class InferenceStore /** first is true for function symbols, second is symbol number */ - typedef pair SymbolId; + typedef pair SymbolId; typedef Stack SymbolStack; DHMap _introducedSymbols; DHMap _introducedSplitNames; diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index 30da0f1918..a83c0915e1 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -53,6 +53,7 @@ TermList UWAMismatchHandler::transformSubterm(TermList trm) CALL("UWAMismatchHandler::transformSubterm"); if(isConstraintTerm(trm).isTrue()){ + ASS(trm.term()->shared()); return TermList::getVSpecVar(trm.term(), &_termMap); } return trm; @@ -200,10 +201,12 @@ bool HOMismatchHandler::isConstraintPair(TermList t1, TermList t2) { CALL("HOMismatchHandler::isConstraintPair"); - if(isConstraintTerm(t1).isFalse() || isConstraintTerm(t2).isFalse()) - return false; - - return true; + auto isBooleanOrConstraintTerm = [&](TermList t){ + TermList sort = SortHelper::getResultSort(t.term()); + return !isConstraintTerm(t).isFalse() || sort.isBoolSort(); + }; + + return isBooleanOrConstraintTerm(t1) && isBooleanOrConstraintTerm(t2); } MaybeBool HOMismatchHandler::isConstraintTerm(TermList t){ @@ -230,6 +233,8 @@ TermList HOMismatchHandler::transformSubterm(TermList trm) if(trm.isVar()) return trm; + ASS(trm.term()->shared()); + TermList sort = SortHelper::getResultSort(trm.term()); if(sort.isBoolSort()){ return TermList::getVSpecVar(trm.term(), &_termMap); diff --git a/Kernel/Ordering.cpp b/Kernel/Ordering.cpp index b2ca298adf..b2b0bcdcd6 100644 --- a/Kernel/Ordering.cpp +++ b/Kernel/Ordering.cpp @@ -478,20 +478,15 @@ Ordering::Result PrecedenceOrdering::compareTypeConPrecedences(unsigned tyc1, un tyc2 >= size ? (int)(reverse ? -tyc2 : tyc2) : _typeConPrecedences[tyc2] )); } -enum SymbolType { - FUNCTION, - PREDICATE, - TYPE_CON -}; struct SymbolComparator { SymbolType _symType; SymbolComparator(SymbolType symType) : _symType(symType) {} Signature::Symbol* getSymbol(unsigned s) { - if(_symType == SymbolType::FUNCTION){ + if(_symType == FUNC){ return env.signature->getFunction(s); - } else if (_symType == SymbolType::PREDICATE){ + } else if (_symType == PRED){ return env.signature->getPredicate(s); } else { return env.signature->getTypeCon(s); @@ -780,7 +775,7 @@ DArray PrecedenceOrdering::typeConPrecFromOpts(Problem& prb, const Options& precedence_file.close(); } } else { - sortAuxBySymbolPrecedence(aux,opt,SymbolType::TYPE_CON); + sortAuxBySymbolPrecedence(aux,opt,TYPE_CON); } } @@ -810,7 +805,7 @@ DArray PrecedenceOrdering::funcPrecFromOpts(Problem& prb, const Options& op precedence_file.close(); } } else { - sortAuxBySymbolPrecedence(aux,opt,SymbolType::FUNCTION); + sortAuxBySymbolPrecedence(aux,opt,FUNC); } } @@ -838,7 +833,7 @@ DArray PrecedenceOrdering::predPrecFromOpts(Problem& prb, const Options& op precedence_file.close(); } } else { - sortAuxBySymbolPrecedence(aux,opt,SymbolType::PREDICATE); + sortAuxBySymbolPrecedence(aux,opt,PRED); } DArray predicatePrecedences(nPredicates); diff --git a/Kernel/SortHelper.cpp b/Kernel/SortHelper.cpp index 96f0a1f656..506fc77ac5 100644 --- a/Kernel/SortHelper.cpp +++ b/Kernel/SortHelper.cpp @@ -55,7 +55,7 @@ OperatorType* SortHelper::getType(Term* t) * * @author Ahmed Bhayat */ -void SortHelper::getTypeSub(const Term* t, Substitution& subst) +bool SortHelper::getTypeSub(const Term* t, Substitution& subst) { CALL("SortHelper::getTypeSub(Term*)"); @@ -64,13 +64,21 @@ void SortHelper::getTypeSub(const Term* t, Substitution& subst) unsigned typeArgsArity = ot->numTypeArguments(); //cout << "typeArgsArity " << typeArgsArity << endl; + bool resultShared = true; typeArg = const_cast(t->args()); for(unsigned i = 0; i < typeArgsArity; i++){ TermList var = ot->quantifiedVar(i); ASS_REP(var.isVar(), t->toString()); + // when working with substitution trees we sometimes need to find the sort + // of terms within the tree. These terms can contain special variables + // and may therefore not be shared. + if(typeArg->isSpecialVar() || (typeArg->isTerm() && !typeArg->term()->shared())){ + resultShared = false; + } subst.bind(var.var(), *typeArg); typeArg = typeArg->next(); } + return resultShared; } // getTypeSub /** @@ -88,16 +96,21 @@ TermList SortHelper::getResultSort(const Term* t) ASS(!t->isSpecial()); ASS(!t->isLiteral()); + //cout << "TERM " << t->toString() << endl; + if(t->isSort()){ return TermList(AtomicSort::superSort()); } Substitution subst; - getTypeSub(t, subst); + bool shared = getTypeSub(t, subst); + + //cout << "SHARED " << shared << endl; + Signature::Symbol* sym = env.signature->getFunction(t->functor()); TermList result = sym->fnType()->result(); ASS(!subst.isEmpty() || (result.isTerm() && (result.term()->isSuper() || result.term()->ground()))); - return SubstHelper::apply(result, subst); + return SubstHelper::apply(result, subst, !shared); } TermList SortHelper::getResultSortMono(const Term* t) @@ -227,8 +240,8 @@ TermList SortHelper::getArgSort(Term* t, unsigned argIndex) return AtomicSort::superSort(); } - getTypeSub(t, subst); - return SubstHelper::apply(ot->arg(argIndex), subst); + bool shared = getTypeSub(t, subst); + return SubstHelper::apply(ot->arg(argIndex), subst, !shared); } // getArgSort /* returns the sort of the nth term argument */ diff --git a/Kernel/SortHelper.hpp b/Kernel/SortHelper.hpp index ece2350118..c116bcb63e 100644 --- a/Kernel/SortHelper.hpp +++ b/Kernel/SortHelper.hpp @@ -85,7 +85,7 @@ class SortHelper { static OperatorType* getType(Term* t); - static void getTypeSub(const Term* t, Substitution& subst); + static bool getTypeSub(const Term* t, Substitution& subst); static bool areSortsValid(Clause* cl); static bool areSortsValid(Term* t); diff --git a/Kernel/SubstHelper.hpp b/Kernel/SubstHelper.hpp index 95a3ed9338..243b022d33 100644 --- a/Kernel/SubstHelper.hpp +++ b/Kernel/SubstHelper.hpp @@ -437,14 +437,16 @@ Term* SubstHelper::applyImpl(Term* trm, Applicator& applicator, bool noSharing) Literal* lit = static_cast(trm); result=Literal::create(lit,argLst); } else if(trm->isSort()){ - ASS(!noSharing); - result=AtomicSort::create(static_cast(trm),argLst); + if(!noSharing){ + result=AtomicSort::create(static_cast(trm),argLst); + } else { + result=AtomicSort::createNonShared(static_cast(trm),argLst); + } } else { bool shouldShare=!noSharing && canBeShared(argLst, trm->arity()); if(shouldShare) { result=Term::create(trm,argLst); } else { - //At the memoent all sorts should be shared. result=Term::createNonShared(trm,argLst); } } diff --git a/Shell/EqualityProxy.cpp b/Shell/EqualityProxy.cpp index 950744ecb4..dcee949199 100644 --- a/Shell/EqualityProxy.cpp +++ b/Shell/EqualityProxy.cpp @@ -338,7 +338,7 @@ unsigned EqualityProxy::getProxyPredicate() _defUnit = new FormulaUnit(quantDefForm,NonspecificInference0(UnitInputType::AXIOM,InferenceRule::EQUALITY_PROXY_AXIOM1)); - InferenceStore::instance()->recordIntroducedSymbol(_defUnit, false, newPred); + InferenceStore::instance()->recordIntroducedSymbol(_defUnit, PRED, newPred); _proxyPredicate = newPred; _addedPred = true; return newPred; diff --git a/Shell/EqualityProxyMono.cpp b/Shell/EqualityProxyMono.cpp index 042ae8088b..0f762baaad 100644 --- a/Shell/EqualityProxyMono.cpp +++ b/Shell/EqualityProxyMono.cpp @@ -369,7 +369,7 @@ unsigned EqualityProxyMono::getProxyPredicate(TermList sort) FormulaUnit* defUnit = new FormulaUnit(quantDefForm,NonspecificInference0(UnitInputType::AXIOM,InferenceRule::EQUALITY_PROXY_AXIOM1)); s_proxyPremises.insert(sort, defUnit); - InferenceStore::instance()->recordIntroducedSymbol(defUnit, false, newPred); + InferenceStore::instance()->recordIntroducedSymbol(defUnit, PRED, newPred); return newPred; } diff --git a/Shell/InequalitySplitting.cpp b/Shell/InequalitySplitting.cpp index c687744f8d..74796d2dfe 100644 --- a/Shell/InequalitySplitting.cpp +++ b/Shell/InequalitySplitting.cpp @@ -202,7 +202,11 @@ Literal* InequalitySplitting::splitLiteral(Literal* lit, UnitInputType inpType, (*defCl)[0]=makeNameLiteral(fun, t, false, vars); _predDefs.push(defCl); - InferenceStore::instance()->recordIntroducedSymbol(defCl,false,fun); + if(_appify){ + InferenceStore::instance()->recordIntroducedSymbol(defCl,FUNC,fun); + } else { + InferenceStore::instance()->recordIntroducedSymbol(defCl,PRED,fun); + } premise=defCl; diff --git a/Shell/Naming.cpp b/Shell/Naming.cpp index 9af85c0690..200c4860b5 100644 --- a/Shell/Naming.cpp +++ b/Shell/Naming.cpp @@ -1263,7 +1263,7 @@ Formula* Naming::introduceDefinition(Formula* f, bool iff) { } Unit* definition = new FormulaUnit(def, NonspecificInference0(UnitInputType::AXIOM,InferenceRule::PREDICATE_DEFINITION)); - InferenceStore::instance()->recordIntroducedSymbol(definition, false, + InferenceStore::instance()->recordIntroducedSymbol(definition, PRED, atom->functor()); UnitList::push(definition, _defs); diff --git a/Shell/Skolem.cpp b/Shell/Skolem.cpp index 74ddada8ea..820010f0e4 100644 --- a/Shell/Skolem.cpp +++ b/Shell/Skolem.cpp @@ -101,10 +101,20 @@ FormulaUnit* Skolem::skolemiseImpl (FormulaUnit* unit, bool appify) ASS(_introducedSkolemSyms.isNonEmpty()); while(_introducedSkolemSyms.isNonEmpty()) { - unsigned fn = _introducedSkolemSyms.pop(); - InferenceStore::instance()->recordIntroducedSymbol(res,true,fn); + auto symPair = _introducedSkolemSyms.pop(); + + if(symPair.first){ + InferenceStore::instance()->recordIntroducedSymbol(res,TYPE_CON,symPair.second); + } else { + InferenceStore::instance()->recordIntroducedSymbol(res,FUNC,symPair.second); + } + if(unit->derivedFromGoal()){ - env.signature->getFunction(fn)->markInGoal(); + if(symPair.first){ + env.signature->getTypeCon(symPair.second)->markInGoal(); + } else { + env.signature->getFunction(symPair.second)->markInGoal(); + } } } @@ -483,6 +493,7 @@ Formula* Skolem::skolemise (Formula* f) reuse_key = name_reuse->key(before); successfully_reused = name_reuse->get(reuse_key, sym); if (successfully_reused) { // only counts one per the whole quantifier block + cout << "SYM " << sym << endl; env.statistics->reusedSkolemFunctions++; } } @@ -528,7 +539,7 @@ Formula* Skolem::skolemise (Formula* f) skolemTerm = ApplicativeHelper::createAppTerm( SortHelper::getResultSort(head.term()), head, termVars).term(); } - _introducedSkolemSyms.push(sym); + _introducedSkolemSyms.push(make_pair(skolemisingTypeVar, sym)); if(!successfully_reused) { env.statistics->skolemFunctions++; diff --git a/Shell/Skolem.hpp b/Shell/Skolem.hpp index e3aee8d3d4..ad3a308ed1 100644 --- a/Shell/Skolem.hpp +++ b/Shell/Skolem.hpp @@ -107,7 +107,7 @@ class Skolem DHMap _varSorts; // for some heuristic evaluations after we are done - Stack _introducedSkolemSyms; + Stack> _introducedSkolemSyms; FormulaUnit* _beingSkolemised; diff --git a/Shell/TPTPPrinter.hpp b/Shell/TPTPPrinter.hpp index 1797c1e617..968987090d 100644 --- a/Shell/TPTPPrinter.hpp +++ b/Shell/TPTPPrinter.hpp @@ -33,9 +33,7 @@ using namespace Kernel; class TPTPPrinter { public: TPTPPrinter(ostream* tgtStream=0); - - enum SymbolType{FUNC, PRED, TYPE_CON}; - + void print(Unit* u); void printAsClaim(vstring name, Unit* u); void printWithRole(vstring name, vstring role, Unit* u, bool includeSplitLevels = true); From 8d5be03598dca83a0bebea58d0d32a23267c2514 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Mon, 8 Aug 2022 13:11:11 +0100 Subject: [PATCH 009/210] fixing assertion --- Shell/Skolem.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shell/Skolem.cpp b/Shell/Skolem.cpp index 820010f0e4..425d66219e 100644 --- a/Shell/Skolem.cpp +++ b/Shell/Skolem.cpp @@ -572,7 +572,7 @@ Formula* Skolem::skolemise (Formula* f) } #if VDEBUG - ASS(first_pass || sym == last_sym+1); + ASS(!name_reuse || first_pass || sym == last_sym+1); last_sym = sym; #endif // in case we are reusing and there is more than one f->vars() in the block From 9a9156f22ac2000ca10bbececea6f48f56ebbaeb Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 9 Aug 2022 16:07:09 +0100 Subject: [PATCH 010/210] fixing bugs relating to pseudo-higher-order problems (first-order problems in higher-order syntax) --- Indexing/IndexManager.cpp | 2 +- Kernel/BestLiteralSelector.hpp | 11 +++--- Kernel/TermIterators.hpp | 17 +++++---- Saturation/SaturationAlgorithm.cpp | 12 ++---- Shell/NewCNF.cpp | 60 ++++++++++++++++++------------ 5 files changed, 54 insertions(+), 48 deletions(-) diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index e191aa8850..87dd0755f3 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -33,7 +33,7 @@ using namespace Lib; using namespace Indexing; -IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _genLitIndex(0) +IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _genLitIndex(0), _handler(0) { CALL("IndexManager::IndexManager"); diff --git a/Kernel/BestLiteralSelector.hpp b/Kernel/BestLiteralSelector.hpp index 17f9fe8f5f..572b4d43c6 100644 --- a/Kernel/BestLiteralSelector.hpp +++ b/Kernel/BestLiteralSelector.hpp @@ -153,12 +153,11 @@ class CompleteBestLiteralSelector LiteralList::Iterator maxIt(maximals); while(maxIt.hasNext()){ Literal* lit = maxIt.next(); - TermList t0 = *lit->nthArgument(0); - TermList t1 = *lit->nthArgument(1); - TermList h0 = ApplicativeHelper::getHead(t0); - TermList h1 = ApplicativeHelper::getHead(t1); - if(h0.isVar()){ maxTermHeads.insert(h0.var()); } - if(h1.isVar()){ maxTermHeads.insert(h1.var()); } + for(unsigned i = 0; i < lit->arity(); i ++){ + TermList t = *lit->nthArgument(i); + TermList h = ApplicativeHelper::getHead(t); + if(h.isVar()){ maxTermHeads.insert(h.var()); } + } } } //literals will be selected. diff --git a/Kernel/TermIterators.hpp b/Kernel/TermIterators.hpp index 69de60572e..4a212cdf44 100644 --- a/Kernel/TermIterators.hpp +++ b/Kernel/TermIterators.hpp @@ -448,11 +448,12 @@ class FirstOrderSubtermIt : _stack(8), _added(0) { CALL("FirstOrderSubtermIt::FirstOrderSubtermIt"); + if(term->isLiteral()){ - TermList t0 = *term->nthArgument(0); - TermList t1 = *term->nthArgument(1); - if(!t0.isVar()){ _stack.push(t0.term()); } - if(!t1.isVar()){ _stack.push(t1.term()); } + for(unsigned i = 0; i < term->arity(); i++){ + TermList t = *term->nthArgument(i); + if(!t.isVar()){ _stack.push(t.term()); } + } return; } _stack.push(term); @@ -515,10 +516,10 @@ class BooleanSubtermIt { CALL("BooleanSubtermIt::BooleanSubtermIt"); if(term->isLiteral()){ - TermList t0 = *term->nthArgument(0); - TermList t1 = *term->nthArgument(1); - if(!t0.isVar()){ _stack.push(t0.term()); } - if(!t1.isVar()){ _stack.push(t1.term()); } + for(unsigned i = 0; i < term->arity(); i++){ + TermList t = *term->nthArgument(i); + if(!t.isVar()){ _stack.push(t.term()); } + } return; } _stack.push(term); diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 535b11027d..dc826c68cb 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1526,7 +1526,7 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(new EqualityResolution()); } - if(opt.combinatorySup()){ + if(opt.combinatorySup() && prb.higherOrder()){ gie->addFront(new ArgCong()); gie->addFront(new NegativeExt());//TODO add option if(opt.narrow() != Options::Narrow::OFF){ @@ -1539,7 +1539,6 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if(prb.hasFOOL() && prb.higherOrder() && env.options->booleanEqTrick()){ - // gie->addFront(new ProxyElimination::NOTRemovalGIE()); gie->addFront(new BoolEqToDiseq()); } @@ -1754,23 +1753,18 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons break; } - if(env.options->combinatorySup()){ + if(env.options->combinatorySup() && prb.higherOrder()){ res->addFront(new CombinatorDemodISE()); res->addFront(new CombinatorNormalisationISE()); } - if(env.options->choiceReasoning()){ + if(env.options->choiceReasoning() && prb.higherOrder()){ res->addFront(new ChoiceDefinitionISE()); } if((prb.hasLogicalProxy() || prb.hasBoolVar() || prb.hasFOOL()) && prb.higherOrder() && !env.options->addProxyAxioms()){ if(env.options->cnfOnTheFly() == Options::CNFOnTheFly::EAGER){ - /*res->addFrontMany(new ProxyISE()); - res->addFront(new OrImpAndProxyISE()); - res->addFront(new NotProxyISE()); - res->addFront(new EqualsProxyISE()); - res->addFront(new PiSigmaProxyISE());*/ res->addFrontMany(new EagerClausificationISE()); } else { res->addFront(new IFFXORRewriterISE()); diff --git a/Shell/NewCNF.cpp b/Shell/NewCNF.cpp index 209c02e951..b00222e2b8 100644 --- a/Shell/NewCNF.cpp +++ b/Shell/NewCNF.cpp @@ -32,6 +32,7 @@ #include "Shell/SymbolOccurrenceReplacement.hpp" #include "Shell/SymbolDefinitionInlining.hpp" #include "Shell/Statistics.hpp" +#include "Shell/FOOLElimination.hpp" #include "NewCNF.hpp" @@ -1244,7 +1245,7 @@ void NewCNF::process(QuantifiedFormula* g, Occurrences &occurrences) void NewCNF::processBoolterm(TermList ts, Occurrences &occurrences) { - CALL("NewCNF::process(TermList)"); + CALL("NewCNF::processBoolterm"); if (ts.isVar()) { processBoolVar(POSITIVE, ts.var(), occurrences); @@ -1252,35 +1253,38 @@ void NewCNF::processBoolterm(TermList ts, Occurrences &occurrences) } Term* term = ts.term(); - ASS_REP(term->isSpecial(), term->toString()); + //ASS_REP(term->isSpecial(), term->toString()); + + if(term->isSpecial()){ + Term::SpecialTermData* sd = term->getSpecialData(); + switch (sd->getType()) { + case Term::SF_FORMULA: + process(sd->getFormula(), occurrences); + break; - Term::SpecialTermData* sd = term->getSpecialData(); - switch (sd->getType()) { - case Term::SF_FORMULA: - process(sd->getFormula(), occurrences); - break; + case Term::SF_ITE: { + Formula* condition = sd->getCondition(); - case Term::SF_ITE: { - Formula* condition = sd->getCondition(); + Formula* left = BoolTermFormula::create(*term->nthArgument(LEFT)); + Formula* right = BoolTermFormula::create(*term->nthArgument(RIGHT)); + processITE(condition, left, right, occurrences); + break; + } - Formula* left = BoolTermFormula::create(*term->nthArgument(LEFT)); - Formula* right = BoolTermFormula::create(*term->nthArgument(RIGHT)); - processITE(condition, left, right, occurrences); - break; - } + case Term::SF_LET: + case Term::SF_LET_TUPLE: + processLet(sd, *term->nthArgument(0), occurrences); + break; - case Term::SF_LET: - case Term::SF_LET_TUPLE: - processLet(sd, *term->nthArgument(0), occurrences); - break; + case Term::SF_MATCH: { + processMatch(sd, term, occurrences); + break; + } - case Term::SF_MATCH: { - processMatch(sd, term, occurrences); - break; + default: { + ASSERTION_VIOLATION_REP(term->toString()); + } } - - default: - ASSERTION_VIOLATION_REP(term->toString()); } } @@ -1644,6 +1648,14 @@ Clause* NewCNF::toClause(SPGenClause gc) GenLit gl = lit.next(); Formula* g = formula(gl); + // This can happen when the problem is pseudo-higher-order + // I.e. marked as THF, but only containing FOOL constructs. + // THF parses works a little differntly to FOOL parses, so + // internal structures will be different. + if(g->connective() == BOOL_TERM){ + g = FOOLElimination::toEquality(static_cast(g)->getTerm()); + } + ASS_REP(g->connective() == LITERAL, gc->toString()); ASS_REP(g->literal()->shared(), g->toString()); ASS_REP((SIGN)g->literal()->polarity() == POSITIVE, g->toString()); From 79738e1dbecd46b77edb810ed82303fd2f71cc96 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 9 Aug 2022 16:08:11 +0100 Subject: [PATCH 011/210] file missing from previous commit --- Shell/FOOLElimination.hpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Shell/FOOLElimination.hpp b/Shell/FOOLElimination.hpp index 6117de5b72..882fe2f5c3 100644 --- a/Shell/FOOLElimination.hpp +++ b/Shell/FOOLElimination.hpp @@ -37,7 +37,9 @@ class FOOLElimination { /** Check if the unit contains expressions that are not syntactically first-order */ static bool needsElimination(FormulaUnit* unit); - + // Converts a boolean term t to a formula 't = true' + static Formula* toEquality(TermList booleanTerm); + private: FormulaUnit* apply(FormulaUnit* fu); @@ -88,9 +90,6 @@ class FOOLElimination { // context of the current formula void collectSorts(VList* vars, TermStack& typeVars, TermStack& termVars, TermStack& allVars, TermStack& termVarSorts); - // Converts a boolean term t to a formula 't = true' - static Formula* toEquality(TermList booleanTerm); - // Introduces a fresh predicate or function (depending on the context) symbol // with given arguments and result sort static unsigned introduceFreshSymbol(Context context, const char* prefix, From 415568d5da82e244e8b3ac27c2119678298ca94b Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Mon, 15 Aug 2022 11:27:50 +0100 Subject: [PATCH 012/210] bug fix --- Kernel/MismatchHandler.cpp | 20 -------------------- Kernel/MismatchHandler.hpp | 4 +--- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index a83c0915e1..ee73e6f8eb 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -95,23 +95,6 @@ void MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList } } -bool MismatchHandler::areIdentical(Term* t1, Term* t2, unsigned idx1, unsigned idx2) -{ - CALL("MismatchHandler::areIdentical"); - - if(t1 == t2 && t1->shared() && t1->ground()){ return true; } - - TermList tt1 = TermList(t1); - TermList tt2 = TermList(t2); - - RobSubstitution::TermSpec t1spec = RobSubstitution::TermSpec(tt1, idx1); - RobSubstitution::TermSpec t2spec = RobSubstitution::TermSpec(tt2, idx2); - if(t1spec.sameTermContent(t2spec)){ return true; } - - return false; -} - - CompositeMismatchHandler::~CompositeMismatchHandler(){ CALL("CompositeMismatchHandler::~CompositeMismatchHandler"); @@ -131,9 +114,6 @@ bool CompositeMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, t1 = t1.isVSpecialVar() ? TermList(get(t1.var())) : t1; t2 = t2.isVSpecialVar() ? TermList(get(t2.var())) : t2; - if(areIdentical(t1.term(),t2.term(),index1,index2)) - return true; - MHList* hit=_inners; while(hit) { if(hit->head()->isConstraintPair(t1,t2)){ diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 649606f128..100e835277 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -65,9 +65,7 @@ class MismatchHandler : public TermTransformer // - It may be convenient to use this function in the implementation of transformSubterm // View UWAMismatchHandler::transformSubterm() for an example of this virtual MaybeBool isConstraintTerm(TermList t) = 0; - - bool areIdentical(Term* t1, Term* t2, unsigned idx1, unsigned idx2); - + virtual Term* get(unsigned var){ NOT_IMPLEMENTED; } VSpecVarToTermMap* getTermMap() { return &_termMap; } From abfcfaf341023f6cc48a72c2d5cf276665502681 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 23 Aug 2022 10:02:19 +0100 Subject: [PATCH 013/210] substitutions by default have no constraints --- Indexing/ResultSubstitution.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Indexing/ResultSubstitution.hpp b/Indexing/ResultSubstitution.hpp index 2dba21ac87..735e5e857f 100644 --- a/Indexing/ResultSubstitution.hpp +++ b/Indexing/ResultSubstitution.hpp @@ -58,9 +58,9 @@ class ResultSubstitution /** if implementation cannot easily give result for this, zero is returned */ virtual size_t getResultApplicationWeight(Literal* l) { return 0; } /** number of constraints created during unification */ - virtual unsigned numberOfConstraints() { NOT_IMPLEMENTED; } + virtual unsigned numberOfConstraints() { return 0; } /** return iterator over constraints */ - virtual LiteralIterator getConstraints() { NOT_IMPLEMENTED; } + virtual LiteralIterator getConstraints() { return LiteralIterator::getEmpty(); } template T apply(T t, bool result) From aaf41b94d9d60037f8f62b53656dcdb920f5afed Mon Sep 17 00:00:00 2001 From: Johannes Schoisswohl Date: Wed, 31 Aug 2022 16:52:17 +0200 Subject: [PATCH 014/210] removed NOT_IMPLEMENTED from mismatch handler hierarchy --- Indexing/IndexManager.cpp | 22 +++------ Indexing/IndexManager.hpp | 4 +- Inferences/EqualityFactoring.cpp | 1 + Kernel/MismatchHandler.cpp | 28 +++++------ Kernel/MismatchHandler.hpp | 60 +++++++++++------------ UnitTests/tUnificationWithAbstraction.cpp | 6 +-- z3 | 2 +- 7 files changed, 57 insertions(+), 66 deletions(-) diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 5c85700285..2ace34be1b 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -33,7 +33,7 @@ using namespace Lib; using namespace Indexing; -IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _handler(0) +IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _handler() { CALL("IndexManager::IndexManager"); @@ -45,25 +45,17 @@ IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _handler(0) if(uwa || eba){ - _handler = new CompositeMismatchHandler(); if(uwa){ - _handler->addHandler(new UWAMismatchHandler()); + _handler.addHandler(new UWAMismatchHandler()); } if(eba){ - _handler->addHandler(new HOMismatchHandler()); + _handler.addHandler(new HOMismatchHandler()); } } } -IndexManager::~IndexManager() -{ - CALL("IndexManager::~IndexManager"); - - if(_handler){ - delete _handler; - } -} +IndexManager::~IndexManager() { } Index* IndexManager::request(IndexType t) { @@ -140,7 +132,7 @@ Index* IndexManager::create(IndexType t) switch(t) { case BINARY_RESOLUTION_SUBST_TREE: - is=new LiteralSubstitutionTree(_handler); + is=new LiteralSubstitutionTree(&_handler); res=new BinaryResolutionIndex(is); isGenerating = true; break; @@ -166,12 +158,12 @@ Index* IndexManager::create(IndexType t) break; case SUPERPOSITION_SUBTERM_SUBST_TREE: - tis=new TermSubstitutionTree(_handler); + tis=new TermSubstitutionTree(&_handler); res=new SuperpositionSubtermIndex(tis, _alg->getOrdering()); isGenerating = true; break; case SUPERPOSITION_LHS_SUBST_TREE: - tis=new TermSubstitutionTree(_handler); + tis=new TermSubstitutionTree(&_handler); res=new SuperpositionLHSIndex(tis, _alg->getOrdering(), _alg->getOptions()); isGenerating = true; break; diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index 251cd1e1a0..d100c894cb 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -89,7 +89,7 @@ class IndexManager void release(IndexType t); bool contains(IndexType t); Index* get(IndexType t); - MismatchHandler* getHandler(){ return _handler; } + MismatchHandler* getHandler(){ return &_handler; } void provideIndex(IndexType t, Index* index); private: @@ -101,7 +101,7 @@ class IndexManager SaturationAlgorithm* _alg; DHMap _store; - CompositeMismatchHandler* _handler; + MismatchHandler _handler; Index* create(IndexType t); }; diff --git a/Inferences/EqualityFactoring.cpp b/Inferences/EqualityFactoring.cpp index 86bd5449f5..b1b5d2f5cb 100644 --- a/Inferences/EqualityFactoring.cpp +++ b/Inferences/EqualityFactoring.cpp @@ -88,6 +88,7 @@ void EqualityFactoring::attach(SaturationAlgorithm* salg) CALL("EqualityFactoring::attach"); GeneratingInferenceEngine::attach(salg); + // TODO rename getHandler to getMismatchHandler ? it's not obv here what kind of handler we mean here _handler = salg->getIndexManager()->getHandler(); } diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index ee73e6f8eb..6dcbce6a25 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -85,7 +85,7 @@ MaybeBool UWAMismatchHandler::isConstraintTerm(TermList t){ void MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2, UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) { - CALL("MismatchHandler::introduceConstraint"); + CALL("AtomicMismatchHandler::introduceConstraint"); auto constraint = make_pair(make_pair(t1,index1),make_pair(t2,index2)); if(recording){ @@ -95,16 +95,16 @@ void MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList } } -CompositeMismatchHandler::~CompositeMismatchHandler(){ - CALL("CompositeMismatchHandler::~CompositeMismatchHandler"); +MismatchHandler::~MismatchHandler(){ + CALL("MismatchHandler::~MismatchHandler"); MHList::destroyWithDeletion(_inners); } -bool CompositeMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, +bool MismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, UnificationConstraintStack& ucs,BacktrackData& bd, bool recording) { - CALL("CompositeMismatchHandler::handle"); + CALL("MismatchHandler::handle"); // make assumtion that we never create a constraint involving a variable // this seems reasonable @@ -125,14 +125,14 @@ bool CompositeMismatchHandler::handle(TermList t1, unsigned index1, TermList t2, return false; } -void CompositeMismatchHandler::addHandler(MismatchHandler* hndlr){ - CALL("CompositeMismatchHandler::addHandler"); +void MismatchHandler::addHandler(AtomicMismatchHandler* hndlr){ + CALL("MismatchHandler::addHandler"); MHList::push(hndlr,_inners); } -MaybeBool CompositeMismatchHandler::isConstraintTerm(TermList t){ - CALL("CompositeMismatchHandler::isConstraintTerm"); +MaybeBool MismatchHandler::isConstraintTerm(TermList t){ + CALL("MismatchHandler::isConstraintTerm"); if(t.isVar()){ return false; } @@ -147,8 +147,8 @@ MaybeBool CompositeMismatchHandler::isConstraintTerm(TermList t){ return false; } -TermList CompositeMismatchHandler::transformSubterm(TermList trm){ - CALL("CompositeMismatchHandler::transformSubterm"); +TermList MismatchHandler::transformSubterm(TermList trm){ + CALL("MismatchHandler::transformSubterm"); MHList* hit=_inners; while(hit) { @@ -161,9 +161,9 @@ TermList CompositeMismatchHandler::transformSubterm(TermList trm){ return trm; } -Term* CompositeMismatchHandler::get(unsigned var) +Term* MismatchHandler::get(unsigned var) { - CALL("CompositeMismatchHandler::get"); + CALL("MismatchHandler::get"); MHList* hit=_inners; while(hit) { @@ -190,7 +190,7 @@ bool HOMismatchHandler::isConstraintPair(TermList t1, TermList t2) } MaybeBool HOMismatchHandler::isConstraintTerm(TermList t){ - CALL("CompositeMismatcHandler::isConstraintTerm"); + CALL("MismatcHandler::isConstraintTerm"); if(t.isVar()){ return false; } diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 100e835277..6962390327 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -25,19 +25,12 @@ namespace Kernel { -class MismatchHandler : public TermTransformer +class AtomicMismatchHandler : public TermTransformer { public: - MismatchHandler() : TermTransformer(false) {} + AtomicMismatchHandler() : TermTransformer(false) {} - // Returns true if the mismatch can be handled by some handler - // - // Implementors do NOT need to override this function. Only the composite handler - // needs to. - virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, - UnificationConstraintStack& ucs, BacktrackData& bd, bool recording){ NOT_IMPLEMENTED; }; - // Returns true if can form a constraint // Implementors NEED to override this function with // their specific logic. @@ -65,15 +58,8 @@ class MismatchHandler : public TermTransformer // - It may be convenient to use this function in the implementation of transformSubterm // View UWAMismatchHandler::transformSubterm() for an example of this virtual MaybeBool isConstraintTerm(TermList t) = 0; - - virtual Term* get(unsigned var){ NOT_IMPLEMENTED; } - VSpecVarToTermMap* getTermMap() { return &_termMap; } - -protected: - void introduceConstraint(TermList t1,unsigned index1, TermList t2, unsigned index2, - UnificationConstraintStack& ucs, BacktrackData& bd, bool recording); - +protected: VSpecVarToTermMap _termMap; }; @@ -82,30 +68,42 @@ class MismatchHandler : public TermTransformer * Invariant: for all handlers in _inner, a maximum of ONE handler * can return a non-false value on a call to isConstraintTerm */ -class CompositeMismatchHandler : - public MismatchHandler +class MismatchHandler : + public TermTransformer { public: - ~CompositeMismatchHandler(); - virtual bool handle(TermList t1, unsigned index1, TermList t2, unsigned index2, - UnificationConstraintStack& ucs, BacktrackData& bd, bool recording) override; + MismatchHandler() : TermTransformer(false) {} + ~MismatchHandler(); + + // Returns true if the mismatch can be handled by some handler + // + // Implementors do NOT need to override this function. Only the composite handler + // needs to. + bool handle(TermList t1, unsigned index1, + TermList t2, unsigned index2, + UnificationConstraintStack& ucs, BacktrackData& bd, bool recording); + TermList transformSubterm(TermList trm) override; - MaybeBool isConstraintTerm(TermList t) override; - bool isConstraintPair(TermList t1, TermList t2) override { NOT_IMPLEMENTED; } - Term* get(unsigned var) override; + MaybeBool isConstraintTerm(TermList t); + Term* get(unsigned var); - void addHandler(MismatchHandler* hndlr); + void addHandler(AtomicMismatchHandler* hndlr); - CLASS_NAME(CompositeMismatchHandler); - USE_ALLOCATOR(CompositeMismatchHandler); + CLASS_NAME(MismatchHandler); + USE_ALLOCATOR(MismatchHandler); private: - typedef List MHList; + void introduceConstraint( + TermList t1, unsigned index1, + TermList t2, unsigned index2, + UnificationConstraintStack& ucs, BacktrackData& bd, bool recording); + + typedef List MHList; MHList* _inners; }; -class UWAMismatchHandler : public MismatchHandler +class UWAMismatchHandler : public AtomicMismatchHandler { public: UWAMismatchHandler() {} @@ -120,7 +118,7 @@ class UWAMismatchHandler : public MismatchHandler bool checkUWA(TermList t1, TermList t2); }; -class HOMismatchHandler : public MismatchHandler +class HOMismatchHandler : public AtomicMismatchHandler { public: HOMismatchHandler() {} diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 628eb87250..d0fd2b3d36 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -43,7 +43,7 @@ Clause* unit(Literal* lit) TermIndexingStructure* getTermIndex(bool uwa = true) { - CompositeMismatchHandler* cmh = new CompositeMismatchHandler(); + auto cmh = new MismatchHandler(); if(uwa){ cmh->addHandler(new UWAMismatchHandler()); } else { @@ -54,7 +54,7 @@ TermIndexingStructure* getTermIndex(bool uwa = true) LiteralIndexingStructure* getLiteralIndex() { - CompositeMismatchHandler* cmh = new CompositeMismatchHandler(); + auto cmh = new MismatchHandler(); cmh->addHandler(new UWAMismatchHandler()); return new LiteralSubstitutionTree(cmh); } @@ -287,7 +287,7 @@ TEST_FUN(using_robsub) DECL_CONST(a, Int) DECL_CONST(b, Int) - CompositeMismatchHandler* cmh = new CompositeMismatchHandler(); + auto cmh = new MismatchHandler(); cmh->addHandler(new UWAMismatchHandler()); RobSubstitution sub(cmh); diff --git a/z3 b/z3 index 6ed071b444..f03d756e08 160000 --- a/z3 +++ b/z3 @@ -1 +1 @@ -Subproject commit 6ed071b44407cf6623b8d3c0dceb2a8fb7040cee +Subproject commit f03d756e086f81f2596157241e0decfb1c982299 From 2682f17ed7e6254de8f731babb37a4fa4a0c1827 Mon Sep 17 00:00:00 2001 From: Johannes Schoisswohl Date: Wed, 31 Aug 2022 16:59:34 +0200 Subject: [PATCH 015/210] made AtomicMismatchHandler not inherit from TermTransformer --- Kernel/MismatchHandler.hpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 6962390327..bee99bded9 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -25,11 +25,10 @@ namespace Kernel { -class AtomicMismatchHandler : public TermTransformer +class AtomicMismatchHandler { public: - AtomicMismatchHandler() : TermTransformer(false) {} // Returns true if can form a constraint // Implementors NEED to override this function with From f6c1db4a16b5bd9f092d6d510bd1533f97292780 Mon Sep 17 00:00:00 2001 From: Johannes Schoisswohl Date: Wed, 31 Aug 2022 17:02:46 +0200 Subject: [PATCH 016/210] replaced linkedlist by stack --- Kernel/MismatchHandler.cpp | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index 6dcbce6a25..79253fcbe6 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -98,7 +98,7 @@ void MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList MismatchHandler::~MismatchHandler(){ CALL("MismatchHandler::~MismatchHandler"); - MHList::destroyWithDeletion(_inners); + for (auto h : _inners) delete h; } bool MismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, @@ -127,8 +127,7 @@ bool MismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned void MismatchHandler::addHandler(AtomicMismatchHandler* hndlr){ CALL("MismatchHandler::addHandler"); - - MHList::push(hndlr,_inners); + _inners.push(hndlr); } MaybeBool MismatchHandler::isConstraintTerm(TermList t){ @@ -136,13 +135,11 @@ MaybeBool MismatchHandler::isConstraintTerm(TermList t){ if(t.isVar()){ return false; } - MHList* hit=_inners; - while(hit) { - auto res = hit->head()->isConstraintTerm(t); + for (auto h : _inners) { + auto res = h->isConstraintTerm(t); if(!res.isFalse()){ return res; } - hit=hit->tail(); } return false; } @@ -150,13 +147,11 @@ MaybeBool MismatchHandler::isConstraintTerm(TermList t){ TermList MismatchHandler::transformSubterm(TermList trm){ CALL("MismatchHandler::transformSubterm"); - MHList* hit=_inners; - while(hit) { - TermList t = hit->head()->transformSubterm(trm); + for (auto h : _inners) { + TermList t = h->transformSubterm(trm); if(t != trm){ return t; } - hit=hit->tail(); } return trm; } @@ -165,13 +160,11 @@ Term* MismatchHandler::get(unsigned var) { CALL("MismatchHandler::get"); - MHList* hit=_inners; - while(hit) { - auto res = hit->head()->getTermMap()->tryGet(var); + for (auto h : _inners) { + auto res = h->getTermMap()->tryGet(var); if(res.isSome()){ return res.unwrap(); } - hit=hit->tail(); } ASSERTION_VIOLATION; } From f76d4911078a0abd959e3d21fee0502cad7c3d8b Mon Sep 17 00:00:00 2001 From: Johannes Schoisswohl Date: Thu, 1 Sep 2022 08:35:46 +0200 Subject: [PATCH 017/210] prelaced raw pointers by unique_ptr --- Indexing/IndexManager.cpp | 4 ++-- Kernel/MismatchHandler.cpp | 22 ++++++++-------------- Kernel/MismatchHandler.hpp | 9 +++++---- UnitTests/tUnificationWithAbstraction.cpp | 8 ++++---- 4 files changed, 19 insertions(+), 24 deletions(-) diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 2ace34be1b..e8076a0bf2 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -47,10 +47,10 @@ IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _handler() if(uwa){ - _handler.addHandler(new UWAMismatchHandler()); + _handler.addHandler(make_unique()); } if(eba){ - _handler.addHandler(new HOMismatchHandler()); + _handler.addHandler(make_unique()); } } } diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index 79253fcbe6..e132491a0c 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -95,11 +95,7 @@ void MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList } } -MismatchHandler::~MismatchHandler(){ - CALL("MismatchHandler::~MismatchHandler"); - - for (auto h : _inners) delete h; -} +AtomicMismatchHandler::~AtomicMismatchHandler() {} bool MismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned index2, UnificationConstraintStack& ucs,BacktrackData& bd, bool recording) @@ -114,20 +110,18 @@ bool MismatchHandler::handle(TermList t1, unsigned index1, TermList t2, unsigned t1 = t1.isVSpecialVar() ? TermList(get(t1.var())) : t1; t2 = t2.isVSpecialVar() ? TermList(get(t2.var())) : t2; - MHList* hit=_inners; - while(hit) { - if(hit->head()->isConstraintPair(t1,t2)){ + for (auto& h : _inners) { + if(h->isConstraintPair(t1,t2)){ introduceConstraint(t1,index1,t2,index2,ucs,bd,recording); return true; } - hit=hit->tail(); } return false; } -void MismatchHandler::addHandler(AtomicMismatchHandler* hndlr){ +void MismatchHandler::addHandler(unique_ptr hndlr){ CALL("MismatchHandler::addHandler"); - _inners.push(hndlr); + _inners.push(std::move(hndlr)); } MaybeBool MismatchHandler::isConstraintTerm(TermList t){ @@ -135,7 +129,7 @@ MaybeBool MismatchHandler::isConstraintTerm(TermList t){ if(t.isVar()){ return false; } - for (auto h : _inners) { + for (auto& h : _inners) { auto res = h->isConstraintTerm(t); if(!res.isFalse()){ return res; @@ -147,7 +141,7 @@ MaybeBool MismatchHandler::isConstraintTerm(TermList t){ TermList MismatchHandler::transformSubterm(TermList trm){ CALL("MismatchHandler::transformSubterm"); - for (auto h : _inners) { + for (auto& h : _inners) { TermList t = h->transformSubterm(trm); if(t != trm){ return t; @@ -160,7 +154,7 @@ Term* MismatchHandler::get(unsigned var) { CALL("MismatchHandler::get"); - for (auto h : _inners) { + for (auto& h : _inners) { auto res = h->getTermMap()->tryGet(var); if(res.isSome()){ return res.unwrap(); diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index bee99bded9..72519acaa2 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -29,6 +29,7 @@ class AtomicMismatchHandler { public: + virtual ~AtomicMismatchHandler(); // Returns true if can form a constraint // Implementors NEED to override this function with @@ -73,7 +74,6 @@ class MismatchHandler : public: MismatchHandler() : TermTransformer(false) {} - ~MismatchHandler(); // Returns true if the mismatch can be handled by some handler // @@ -87,7 +87,7 @@ class MismatchHandler : MaybeBool isConstraintTerm(TermList t); Term* get(unsigned var); - void addHandler(AtomicMismatchHandler* hndlr); + void addHandler(unique_ptr hndlr); CLASS_NAME(MismatchHandler); USE_ALLOCATOR(MismatchHandler); @@ -98,14 +98,14 @@ class MismatchHandler : TermList t2, unsigned index2, UnificationConstraintStack& ucs, BacktrackData& bd, bool recording); - typedef List MHList; - MHList* _inners; + Stack> _inners; }; class UWAMismatchHandler : public AtomicMismatchHandler { public: UWAMismatchHandler() {} + ~UWAMismatchHandler() override {} bool isConstraintPair(TermList t1, TermList t2) override; TermList transformSubterm(TermList trm) override; @@ -121,6 +121,7 @@ class HOMismatchHandler : public AtomicMismatchHandler { public: HOMismatchHandler() {} + ~HOMismatchHandler() override {} bool isConstraintPair(TermList t1, TermList t2) override; TermList transformSubterm(TermList trm) override; diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index d0fd2b3d36..9aa8cbcffe 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -45,9 +45,9 @@ TermIndexingStructure* getTermIndex(bool uwa = true) { auto cmh = new MismatchHandler(); if(uwa){ - cmh->addHandler(new UWAMismatchHandler()); + cmh->addHandler(make_unique()); } else { - cmh->addHandler(new HOMismatchHandler()); + cmh->addHandler(make_unique()); } return new TermSubstitutionTree(cmh); } @@ -55,7 +55,7 @@ TermIndexingStructure* getTermIndex(bool uwa = true) LiteralIndexingStructure* getLiteralIndex() { auto cmh = new MismatchHandler(); - cmh->addHandler(new UWAMismatchHandler()); + cmh->addHandler(make_unique()); return new LiteralSubstitutionTree(cmh); } @@ -288,7 +288,7 @@ TEST_FUN(using_robsub) DECL_CONST(b, Int) auto cmh = new MismatchHandler(); - cmh->addHandler(new UWAMismatchHandler()); + cmh->addHandler(make_unique()); RobSubstitution sub(cmh); auto t1 = f(b + 2); From 9367559d881adc28bc28af1f56c5b8e0bc1b70d9 Mon Sep 17 00:00:00 2001 From: Johannes Schoisswohl Date: Thu, 1 Sep 2022 08:49:42 +0200 Subject: [PATCH 018/210] made uwa option a field of uwa handler instead of static read from options --- Indexing/IndexManager.cpp | 20 ++----- Kernel/MismatchHandler.cpp | 7 +-- Kernel/MismatchHandler.hpp | 4 +- UnitTests/tUnificationWithAbstraction.cpp | 68 +++++------------------ 4 files changed, 25 insertions(+), 74 deletions(-) diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index e8076a0bf2..dfb1f049de 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -37,21 +37,13 @@ IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _handler() { CALL("IndexManager::IndexManager"); - static bool const uwa = env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF; - static bool const eba = (env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) && - env.property->higherOrder(); - // other handlers can be added here - - if(uwa || eba){ - - - if(uwa){ - _handler.addHandler(make_unique()); - } - if(eba){ - _handler.addHandler(make_unique()); - } + if(env.options->unificationWithAbstraction() != Options::UnificationWithAbstraction::OFF){ + _handler.addHandler(make_unique(env.options->unificationWithAbstraction())); + } + if((env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) + && env.property->higherOrder()){ + _handler.addHandler(make_unique()); } } diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index e132491a0c..ce950631be 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -33,9 +33,7 @@ bool UWAMismatchHandler::isConstraintPair(TermList t1, TermList t2) { CALL("UWAMismatchHandler::isConstraintPair"); - static Shell::Options::UnificationWithAbstraction opt = env.options->unificationWithAbstraction(); - - switch(opt){ + switch(_mode){ case Shell::Options::UnificationWithAbstraction::ONE_INTERP: return isConstraintTerm(t1).isTrue() || isConstraintTerm(t2).isTrue(); case Shell::Options::UnificationWithAbstraction::INTERP_ONLY:{ @@ -64,8 +62,7 @@ MaybeBool UWAMismatchHandler::isConstraintTerm(TermList t){ if(t.isVar()){ return false; } - static Shell::Options::UnificationWithAbstraction opt = env.options->unificationWithAbstraction(); - bool onlyInterpreted = opt == Shell::Options::UnificationWithAbstraction::INTERP_ONLY; + bool onlyInterpreted = _mode == Shell::Options::UnificationWithAbstraction::INTERP_ONLY; auto trm = t.term(); bool isNumeral = Shell::UnificationWithAbstractionConfig::isNumeral(t); diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 72519acaa2..38b80a6944 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -17,6 +17,7 @@ #define __MismatchHandler__ #include "Forwards.hpp" +#include "Shell/Options.hpp" #include "Term.hpp" #include "Kernel/TermTransformer.hpp" #include "Lib/MaybeBool.hpp" @@ -104,7 +105,7 @@ class MismatchHandler : class UWAMismatchHandler : public AtomicMismatchHandler { public: - UWAMismatchHandler() {} + UWAMismatchHandler(Shell::Options::UnificationWithAbstraction mode) : _mode(mode) {} ~UWAMismatchHandler() override {} bool isConstraintPair(TermList t1, TermList t2) override; @@ -115,6 +116,7 @@ class UWAMismatchHandler : public AtomicMismatchHandler USE_ALLOCATOR(UWAMismatchHandler); private: bool checkUWA(TermList t1, TermList t2); + Shell::Options::UnificationWithAbstraction const _mode; }; class HOMismatchHandler : public AtomicMismatchHandler diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 9aa8cbcffe..13f6313589 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -41,21 +41,20 @@ Clause* unit(Literal* lit) return clause({ lit }); } -TermIndexingStructure* getTermIndex(bool uwa = true) +TermIndexingStructure* getTermIndex(unique_ptr handler) { auto cmh = new MismatchHandler(); - if(uwa){ - cmh->addHandler(make_unique()); - } else { - cmh->addHandler(make_unique()); - } + cmh->addHandler(std::move(handler)); return new TermSubstitutionTree(cmh); } -LiteralIndexingStructure* getLiteralIndex() +TermIndexingStructure* getTermIndex(Shell::Options::UnificationWithAbstraction uwa) +{ return getTermIndex(make_unique(uwa)); } + +LiteralIndexingStructure* getLiteralIndex(Shell::Options::UnificationWithAbstraction uwa) { auto cmh = new MismatchHandler(); - cmh->addHandler(make_unique()); + cmh->addHandler(make_unique(uwa)); return new LiteralSubstitutionTree(cmh); } @@ -102,9 +101,7 @@ void reportMatches(LiteralIndexingStructure* index, Literal* qlit) TEST_FUN(term_indexing_one_side_interp) { - env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); - - TermIndexingStructure* index = getTermIndex(); + TermIndexingStructure* index = getTermIndex(Options::UnificationWithAbstraction::ONE_INTERP); DECL_DEFAULT_VARS NUMBER_SUGAR(Int) @@ -131,9 +128,7 @@ TEST_FUN(term_indexing_one_side_interp) TEST_FUN(term_indexing_poly) { - env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); - - TermIndexingStructure* index = getTermIndex(); + TermIndexingStructure* index = getTermIndex(Options::UnificationWithAbstraction::ONE_INTERP); DECL_DEFAULT_VARS DECL_DEFAULT_SORT_VARS @@ -150,9 +145,7 @@ TEST_FUN(term_indexing_poly) TEST_FUN(term_indexing_interp_only) { - env.options->setUWA(Options::UnificationWithAbstraction::INTERP_ONLY); - - TermIndexingStructure* index = getTermIndex(); + TermIndexingStructure* index = getTermIndex(Options::UnificationWithAbstraction::INTERP_ONLY); DECL_DEFAULT_VARS NUMBER_SUGAR(Int) @@ -174,9 +167,7 @@ TEST_FUN(term_indexing_interp_only) TEST_FUN(literal_indexing) { - env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); - - LiteralIndexingStructure* index = getLiteralIndex(); + LiteralIndexingStructure* index = getLiteralIndex(Options::UnificationWithAbstraction::ONE_INTERP); DECL_DEFAULT_VARS NUMBER_SUGAR(Int) @@ -198,9 +189,7 @@ TEST_FUN(literal_indexing) TEST_FUN(higher_order) { - env.options->setFE(Options::FunctionExtensionality::ABSTRACTION); - - TermIndexingStructure* index = getTermIndex(false); + TermIndexingStructure* index = getTermIndex(make_unique()); DECL_DEFAULT_VARS DECL_DEFAULT_SORT_VARS @@ -234,9 +223,7 @@ TEST_FUN(higher_order) TEST_FUN(higher_order2) { - env.options->setFE(Options::FunctionExtensionality::ABSTRACTION); - - TermIndexingStructure* index = getTermIndex(false); + TermIndexingStructure* index = getTermIndex(make_unique()); DECL_DEFAULT_VARS DECL_DEFAULT_SORT_VARS @@ -278,8 +265,6 @@ void reportRobUnify(TermList a, TermList b, RobSubstitution& sub) TEST_FUN(using_robsub) { - env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); - DECL_DEFAULT_VARS NUMBER_SUGAR(Int) DECL_FUNC(f, {Int}, Int) @@ -288,7 +273,7 @@ TEST_FUN(using_robsub) DECL_CONST(b, Int) auto cmh = new MismatchHandler(); - cmh->addHandler(make_unique()); + cmh->addHandler(make_unique(Options::UnificationWithAbstraction::ONE_INTERP)); RobSubstitution sub(cmh); auto t1 = f(b + 2); @@ -302,28 +287,3 @@ TEST_FUN(using_robsub) sub.reset(); reportRobUnify(t3, t4,sub); } - - -/*TEST_FUN(complex_case) -{ - env.options->setUWA(Options::UnificationWithAbstraction::ONE_INTERP); - - // The complex case is where we have a variable that needs to be instantiated elsewhere - // e.g. unifying f(f(g(X),X),f(Y,a)) with f(f(1,2),(3,g(Z))) - - unsigned f = function_symbol("f",2,IntegerConstantType::getSort()); - unsigned g = function_symbol("g",1,IntegerConstantType::getSort()); - TermList query = TermList(Term::create2(f,TermList(Term::create2(f,TermList(Term::create1(g,var(0))),var(0))), - TermList(Term::create2(f,var(1),TermList(constant("a",IntegerConstantType::getSort())))))); - TermList node = TermList(Term::create2(f,TermList(Term::create2(f,number("1"),number("2"))), - TermList(Term::create2(f,number("3"),TermList(Term::create1(g,var(1))))))); - - reportRobUnify(query,node); - - LiteralIndexingStructure* index = new LiteralSubstitutionTree(true); - Literal* nlit = pred("p",node); - index->insert(nlit,unit(nlit)); - Literal* qlit = pred("p",query); - reportMatches(index,qlit); - -}*/ From 89949b59688b945fba026c22ba237e8c2edd3e09 Mon Sep 17 00:00:00 2001 From: Johannes Schoisswohl Date: Thu, 1 Sep 2022 09:06:36 +0200 Subject: [PATCH 019/210] made switch future proof so the compiler will emit warnings when variants of UWA options are being added --- Kernel/MismatchHandler.cpp | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index ce950631be..546f1aeac8 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -39,11 +39,11 @@ bool UWAMismatchHandler::isConstraintPair(TermList t1, TermList t2) case Shell::Options::UnificationWithAbstraction::INTERP_ONLY:{ return isConstraintTerm(t1).isTrue() && isConstraintTerm(t2).isTrue(); } - default: - // handler should never be called if UWA is off + case Shell::Options::UnificationWithAbstraction::OFF: ASSERTION_VIOLATION; return false; } + ASSERTION_VIOLATION; } TermList UWAMismatchHandler::transformSubterm(TermList trm) @@ -61,22 +61,30 @@ MaybeBool UWAMismatchHandler::isConstraintTerm(TermList t){ CALL("UWAMismatchHandler::isConstraintTerm"); if(t.isVar()){ return false; } - - bool onlyInterpreted = _mode == Shell::Options::UnificationWithAbstraction::INTERP_ONLY; - auto trm = t.term(); - bool isNumeral = Shell::UnificationWithAbstractionConfig::isNumeral(t); - if(Shell::UnificationWithAbstractionConfig::isInterpreted(trm) && !isNumeral){ - return true; - } + switch (_mode) { + case Shell::Options::UnificationWithAbstraction::ONE_INTERP: + case Shell::Options::UnificationWithAbstraction::INTERP_ONLY: { + bool onlyInterpreted = _mode == Shell::Options::UnificationWithAbstraction::INTERP_ONLY; - TermList sort = SortHelper::getResultSort(t.term()); - if(!onlyInterpreted && (sort.isVar() || sort.isIntSort() || sort.isRatSort() || sort.isRealSort())){ - return MaybeBool::UNKNOWN; - } + bool isNumeral = Shell::UnificationWithAbstractionConfig::isNumeral(t); - return false; + if(Shell::UnificationWithAbstractionConfig::isInterpreted(trm) && !isNumeral){ + return true; + } + + TermList sort = SortHelper::getResultSort(t.term()); + if(!onlyInterpreted && (sort.isVar() || sort.isIntSort() || sort.isRatSort() || sort.isRealSort())){ + return MaybeBool::UNKNOWN; + } + return false; + } + case Shell::Options::UnificationWithAbstraction::OFF: + ASSERTION_VIOLATION + return false; + } + ASSERTION_VIOLATION } void MismatchHandler::introduceConstraint(TermList t1,unsigned index1, TermList t2,unsigned index2, From f6f8072371a7b5c7f069ac5840274a90e6f85c54 Mon Sep 17 00:00:00 2001 From: Johannes Schoisswohl Date: Thu, 1 Sep 2022 09:11:33 +0200 Subject: [PATCH 020/210] renamed getHandler() -> mismatchHandler() to increase readability at caller sites --- Indexing/IndexManager.hpp | 2 +- Inferences/EqualityFactoring.cpp | 3 +-- Inferences/EqualityResolution.cpp | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index d100c894cb..2ab89fb16e 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -89,7 +89,7 @@ class IndexManager void release(IndexType t); bool contains(IndexType t); Index* get(IndexType t); - MismatchHandler* getHandler(){ return &_handler; } + MismatchHandler* mismatchHandler(){ return &_handler; } void provideIndex(IndexType t, Index* index); private: diff --git a/Inferences/EqualityFactoring.cpp b/Inferences/EqualityFactoring.cpp index b1b5d2f5cb..ed11b34aed 100644 --- a/Inferences/EqualityFactoring.cpp +++ b/Inferences/EqualityFactoring.cpp @@ -88,8 +88,7 @@ void EqualityFactoring::attach(SaturationAlgorithm* salg) CALL("EqualityFactoring::attach"); GeneratingInferenceEngine::attach(salg); - // TODO rename getHandler to getMismatchHandler ? it's not obv here what kind of handler we mean here - _handler = salg->getIndexManager()->getHandler(); + _handler = salg->getIndexManager()->mismatchHandler(); } struct EqualityFactoring::ResultFn diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index 57a7708bee..d9fc2d218e 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -64,7 +64,7 @@ void EqualityResolution::attach(SaturationAlgorithm* salg) CALL("EqualityResolution::attach"); GeneratingInferenceEngine::attach(salg); - _handler = salg->getIndexManager()->getHandler(); + _handler = salg->getIndexManager()->mismatchHandler(); } struct EqualityResolution::ResultFn From 556cb41bebc19ff364ce7a3bc47e591842ba5230 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 1 Sep 2022 09:46:02 +0100 Subject: [PATCH 021/210] removing code related to combinators and started work on new calculus --- CMakeLists.txt | 38 +- Indexing/IndexManager.cpp | 19 - Indexing/IndexManager.hpp | 3 - Indexing/TermIndex.cpp | 120 +----- Indexing/TermIndex.hpp | 53 +-- Indexing/TermSharing.cpp | 41 -- Kernel/ApplicativeHelper.cpp | 191 +++++---- Kernel/ApplicativeHelper.hpp | 19 +- Kernel/Clause.cpp | 7 - Kernel/Clause.hpp | 2 - Kernel/EqHelper.cpp | 98 ----- Kernel/EqHelper.hpp | 16 - Kernel/Ordering.cpp | 6 +- Kernel/Problem.cpp | 12 - Kernel/Problem.hpp | 2 - Kernel/Signature.cpp | 38 +- Kernel/Signature.hpp | 94 +---- Kernel/Term.cpp | 34 +- Kernel/Term.hpp | 6 + Kernel/TermIterators.cpp | 100 +---- Kernel/TermIterators.hpp | 117 +----- Saturation/SaturationAlgorithm.cpp | 29 +- Shell/FOOLElimination.cpp | 14 +- ...daElimination.cpp => LambdaConversion.cpp} | 363 ++++-------------- Shell/LambdaConversion.hpp | 59 +++ Shell/LambdaElimination.hpp | 86 ----- Shell/Options.cpp | 4 +- Shell/Preprocess.cpp | 12 +- Shell/Property.cpp | 5 +- Shell/Property.hpp | 4 +- 30 files changed, 411 insertions(+), 1181 deletions(-) rename Shell/{LambdaElimination.cpp => LambdaConversion.cpp} (58%) create mode 100644 Shell/LambdaConversion.hpp delete mode 100644 Shell/LambdaElimination.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index bd9d862726..8080876e5a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -312,42 +312,42 @@ set(VAMPIRE_KERNEL_SOURCES Kernel/PolynomialNormalizer.cpp Kernel/ApplicativeHelper.hpp Kernel/ApplicativeHelper.cpp - Kernel/SKIKBO.hpp - Kernel/SKIKBO.cpp +# Kernel/SKIKBO.hpp +# Kernel/SKIKBO.cpp Indexing/TypeSubstitutionTree.cpp Indexing/TypeSubstitutionTree.hpp Inferences/CNFOnTheFly.cpp Inferences/CNFOnTheFly.hpp - Inferences/CombinatorDemodISE.cpp - Inferences/CombinatorDemodISE.hpp - Inferences/CombinatorNormalisationISE.hpp - Inferences/CombinatorNormalisationISE.cpp +# Inferences/CombinatorDemodISE.cpp +# Inferences/CombinatorDemodISE.hpp +# Inferences/CombinatorNormalisationISE.hpp +# Inferences/CombinatorNormalisationISE.cpp Inferences/ArgCong.hpp Inferences/ArgCong.cpp Inferences/NegativeExt.cpp Inferences/NegativeExt.hpp - Inferences/Narrow.hpp - Inferences/Narrow.cpp - Inferences/SubVarSup.hpp - Inferences/SubVarSup.cpp +# Inferences/Narrow.hpp +# Inferences/Narrow.cpp +# Inferences/SubVarSup.hpp +# Inferences/SubVarSup.cpp Inferences/BoolEqToDiseq.hpp Inferences/BoolEqToDiseq.cpp - Inferences/PrimitiveInstantiation.cpp - Inferences/PrimitiveInstantiation.hpp - Inferences/ElimLeibniz.cpp - Inferences/ElimLeibniz.hpp +# Inferences/PrimitiveInstantiation.cpp +# Inferences/PrimitiveInstantiation.hpp +# Inferences/ElimLeibniz.cpp +# Inferences/ElimLeibniz.hpp Inferences/Choice.cpp Inferences/Choice.hpp - Inferences/Injectivity.hpp - Inferences/Injectivity.cpp +# Inferences/Injectivity.hpp +# Inferences/Injectivity.cpp Inferences/BoolSimp.hpp Inferences/BoolSimp.cpp Inferences/CasesSimp.cpp Inferences/CasesSimp.hpp Inferences/Cases.cpp Inferences/Cases.hpp - Shell/LambdaElimination.cpp - Shell/LambdaElimination.hpp + Shell/LambdaConversion.cpp + Shell/LambdaConversion.hpp ) source_group(kernel_source_files FILES ${VAMPIRE_KERNEL_SOURCES}) @@ -737,7 +737,7 @@ set(UNIT_TESTS UnitTests/tBinaryHeap.cpp UnitTests/tSafeRecursion.cpp UnitTests/tKBO.cpp - UnitTests/tSKIKBO.cpp +# UnitTests/tSKIKBO.cpp UnitTests/tLPO.cpp UnitTests/tRatioKeeper.cpp UnitTests/tTwoVampires.cpp diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 5c85700285..d775461cde 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -175,19 +175,6 @@ Index* IndexManager::create(IndexType t) res=new SuperpositionLHSIndex(tis, _alg->getOrdering(), _alg->getOptions()); isGenerating = true; break; - - case SUB_VAR_SUP_SUBTERM_SUBST_TREE: - //using a substitution tree to store variable. - //TODO update - tis=new TermSubstitutionTree(); - res=new SubVarSupSubtermIndex(tis, _alg->getOrdering()); - isGenerating = true; - break; - case SUB_VAR_SUP_LHS_SUBST_TREE: - tis=new TermSubstitutionTree(); - res=new SubVarSupLHSIndex(tis, _alg->getOrdering(), _alg->getOptions()); - isGenerating = true; - break; case SKOLEMISING_FORMULA_INDEX: tis=new TermSubstitutionTree(0, true); @@ -201,12 +188,6 @@ Index* IndexManager::create(IndexType t) attachPassive = true; break;*/ - case NARROWING_INDEX: - tis=new TermSubstitutionTree(); - res=new NarrowingIndex(tis); - isGenerating = true; - break; - case PRIMITIVE_INSTANTIATION_INDEX: tis=new TermSubstitutionTree(); res=new PrimitiveInstantiationIndex(tis); diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index 251cd1e1a0..a055b23040 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -40,8 +40,6 @@ enum IndexType { SUPERPOSITION_SUBTERM_SUBST_TREE, SUPERPOSITION_LHS_SUBST_TREE, - SUB_VAR_SUP_SUBTERM_SUBST_TREE, - SUB_VAR_SUP_LHS_SUBST_TREE, DEMODULATION_SUBTERM_SUBST_TREE, DEMODULATION_LHS_CODE_TREE, @@ -58,7 +56,6 @@ enum IndexType { GLOBAL_SUBSUMPTION_INDEX, ACYCLICITY_INDEX, - NARROWING_INDEX, PRIMITIVE_INSTANTIATION_INDEX, SKOLEMISING_FORMULA_INDEX, RENAMING_FORMULA_INDEX, diff --git a/Indexing/TermIndex.cpp b/Indexing/TermIndex.cpp index 379fe3ca2a..6687c04251 100644 --- a/Indexing/TermIndex.cpp +++ b/Indexing/TermIndex.cpp @@ -26,8 +26,6 @@ #include "Kernel/Term.hpp" #include "Kernel/TermIterators.hpp" -#include "Shell/LambdaElimination.hpp" - #include "TermIndex.hpp" namespace Indexing { @@ -251,53 +249,11 @@ void StructInductionTermIndex::handleClause(Clause* c, bool adding) // Indices for higher-order inferences from here on// ///////////////////////////////////////////////////// -void SubVarSupSubtermIndex::handleClause(Clause* c, bool adding) -{ - CALL("SubVarSupSubtermIndex::handleClause"); - - - DHSet unstableVars; - c->collectUnstableVars(unstableVars); - - unsigned selCnt=c->numSelected(); - for (unsigned i=0; iinsert(var, lit, c); - } else { - _is->remove(var, lit, c); - } - } - } -} - -void SubVarSupLHSIndex::handleClause(Clause* c, bool adding) -{ - CALL("SubVarSupLHSIndex::handleClause"); - - unsigned selCnt=c->numSelected(); - for (unsigned i=0; iinsert(lhs, lit, c); - } - else { - _is->remove(lhs, lit, c); - } - } - } -} void PrimitiveInstantiationIndex::populateIndex() { CALL("PrimitiveInstantiationIndex::populateIndex"); - typedef ApplicativeHelper AH; + /*typedef ApplicativeHelper AH; static Options::PISet set = env.options->piSet(); @@ -370,71 +326,7 @@ void PrimitiveInstantiationIndex::populateIndex() _is->insert(notTerm, 0, 0); _is->insert(equalsTerm, 0, 0); _is->insert(notEqualsTerm, 0, 0); - } -} - -void NarrowingIndex::populateIndex() -{ - CALL("NarrowingIndex::populateIndex"); - - typedef ApplicativeHelper AH; - - static Options::Narrow set = env.options->narrow(); - - auto srtOf = [] (TermList t) { - ASS(t.isTerm()); - return SortHelper::getResultSort(t.term()); - }; - - TermList s1 = TermList(0, false); - TermList s2 = TermList(1, false); - TermList s3 = TermList(2, false); - TermList x = TermList(3, false); - TermList y = TermList(4, false); - TermList z = TermList(5, false); - TermList args[] = {s1, s2, s3}; - - unsigned s_comb = env.signature->getCombinator(Signature::S_COMB); - TermList constant = TermList(Term::create(s_comb, 3, args)); - TermList lhsS = AH::createAppTerm(srtOf(constant), constant, x, y, z); - TermList rhsS = AH::createAppTerm3(AtomicSort::arrowSort(s1, s2, s3), x, z, AH::createAppTerm(AtomicSort::arrowSort(s1, s2), y, z)); - Literal* sLit = Literal::createEquality(true, lhsS, rhsS, s3); - - unsigned c_comb = env.signature->getCombinator(Signature::C_COMB); - constant = TermList(Term::create(c_comb, 3, args)); TermList lhsC = AH::createAppTerm(srtOf(constant), constant, x, y, z); - TermList rhsC = AH::createAppTerm3(AtomicSort::arrowSort(s1, s2, s3), x, z, y); - Literal* cLit = Literal::createEquality(true, lhsC, rhsC, s3); - - unsigned b_comb = env.signature->getCombinator(Signature::B_COMB); - constant = TermList(Term::create(b_comb, 3, args)); - TermList lhsB = AH::createAppTerm(srtOf(constant), constant, x, y, z); - TermList rhsB = AH::createAppTerm(AtomicSort::arrowSort(s2, s3), x, AH::createAppTerm(AtomicSort::arrowSort(s1, s2), y, z)); - Literal* bLit = Literal::createEquality(true, lhsB, rhsB, s3); - - unsigned k_comb = env.signature->getCombinator(Signature::K_COMB); - constant = TermList(Term::create2(k_comb, s1, s2)); - TermList lhsK = AH::createAppTerm3(srtOf(constant), constant, x, y); - Literal* kLit = Literal::createEquality(true, lhsK, x, s1); - - unsigned i_comb = env.signature->getCombinator(Signature::I_COMB); - constant = TermList(Term::create1(i_comb, s1)); - TermList lhsI = AH::createAppTerm(srtOf(constant), constant, x); - Literal* iLit = Literal::createEquality(true, lhsI, x, s1); - - if(set == Options::Narrow::ALL){ - _is->insert(lhsS, sLit, 0); - _is->insert(lhsC, cLit, 0); - _is->insert(lhsB, bLit, 0); - _is->insert(lhsK, kLit, 0); - _is->insert(lhsI, iLit, 0); - } else if (set == Options::Narrow::SKI) { - _is->insert(lhsS, sLit, 0); - _is->insert(lhsK, kLit, 0); - _is->insert(lhsI, iLit, 0); - } else if (set == Options::Narrow::SK){ - _is->insert(lhsS, sLit, 0); - _is->insert(lhsK, kLit, 0); - } + }*/ } void SkolemisingFormulaIndex::insertFormula(TermList formula, TermList skolem) @@ -443,7 +335,7 @@ void SkolemisingFormulaIndex::insertFormula(TermList formula, TermList skolem) _is->insert(formula, skolem); } -void HeuristicInstantiationIndex::insertInstantiation(TermList sort, TermList instantiation) +/*void HeuristicInstantiationIndex::insertInstantiation(TermList sort, TermList instantiation) { CALL("HeuristicInstantiationIndex::insertInstantiation"); _is->insert(sort, instantiation); @@ -485,7 +377,7 @@ void HeuristicInstantiationIndex::handleClause(Clause* c, bool adding) /*cout << "lhs is " + lit->nthArgument(0)->toString() << endl; cout << "arg " + leftArgs[i].toString() << endl; cout << "inserting " + lambdaTerm->toString() << endl; - cout << "inserting " + combTerm.toString() << endl;*/ + cout << "inserting " + combTerm.toString() << endl; _insertedInstantiations.insert(combTerm); insertInstantiation(lambdaTerm->getSpecialData()->getSort(), combTerm); } @@ -503,7 +395,7 @@ void HeuristicInstantiationIndex::handleClause(Clause* c, bool adding) /*cout << "rhs is " + lit->nthArgument(1)->toString() << endl; cout << "arg " + rightArgs[i].toString() << endl; cout << "inserting " + lambdaTerm->toString() << endl; - cout << "inserting " + combTerm.toString() << endl; */ + cout << "inserting " + combTerm.toString() << endl; _insertedInstantiations.insert(combTerm); insertInstantiation(lambdaTerm->getSpecialData()->getSort(), combTerm); } @@ -517,7 +409,7 @@ void HeuristicInstantiationIndex::handleClause(Clause* c, bool adding) } VList::destroy(boundVar); -} +}*/ void RenamingFormulaIndex::insertFormula(TermList formula, TermList name, Literal* lit, Clause* cls) diff --git a/Indexing/TermIndex.hpp b/Indexing/TermIndex.hpp index 8e9c887b84..9a249f9285 100644 --- a/Indexing/TermIndex.hpp +++ b/Indexing/TermIndex.hpp @@ -179,55 +179,6 @@ class PrimitiveInstantiationIndex void populateIndex(); }; -class SubVarSupSubtermIndex -: public TermIndex -{ -public: - CLASS_NAME(SubVarSupSubtermIndex); - USE_ALLOCATOR(SubVarSupSubtermIndex); - - SubVarSupSubtermIndex(TermIndexingStructure* is, Ordering& ord) - : TermIndex(is), _ord(ord) {}; -protected: - void handleClause(Clause* c, bool adding); -private: - Ordering& _ord; -}; - -class SubVarSupLHSIndex -: public TermIndex -{ -public: - CLASS_NAME(SubVarSupLHSIndex); - USE_ALLOCATOR(SubVarSupLHSIndex); - - SubVarSupLHSIndex(TermIndexingStructure* is, Ordering& ord, const Options& opt) - : TermIndex(is), _ord(ord) {}; -protected: - void handleClause(Clause* c, bool adding); -private: - Ordering& _ord; -}; - -/** - * Index used for narrowing with combinator axioms - */ -class NarrowingIndex -: public TermIndex -{ -public: - CLASS_NAME(NarrowingIndex); - USE_ALLOCATOR(NarrowingIndex); - - NarrowingIndex(TermIndexingStructure* is) : TermIndex(is) - { - populateIndex(); - } -protected: - void populateIndex(); -}; - - class SkolemisingFormulaIndex : public TermIndex { @@ -240,7 +191,7 @@ class SkolemisingFormulaIndex void insertFormula(TermList formula, TermList skolem); }; -class HeuristicInstantiationIndex +/*class HeuristicInstantiationIndex : public TermIndex { public: @@ -254,7 +205,7 @@ class HeuristicInstantiationIndex void handleClause(Clause* c, bool adding); private: Set _insertedInstantiations; -}; +};*/ class RenamingFormulaIndex : public TermIndex diff --git a/Indexing/TermSharing.cpp b/Indexing/TermSharing.cpp index 86ff1dd083..d605dcc499 100644 --- a/Indexing/TermSharing.cpp +++ b/Indexing/TermSharing.cpp @@ -119,47 +119,6 @@ Term* TermSharing::insert(Term* t) env.signature->getFunction(t->functor())->interpreted(); bool hasTermVar = false; Color color = COLOR_TRANSPARENT; - - if(env.options->combinatorySup()){ - int maxRedLength = -1; - TermList head; - TermStack args; - AH::getHeadAndArgs(t, head, args); - if(!AH::isComb(head) || AH::isUnderApplied(head, args.size())){ - maxRedLength = sumRedLengths(args); - } else { - switch(AH::getComb(head)){ - case Signature::B_COMB: - if(!AH::isComb(AH::getHead(args[args.size()-1])) && - !AH::isComb(AH::getHead(args[args.size()-2]))){ - maxRedLength = sumRedLengths(args); - maxRedLength = maxRedLength == -1 ? -1 : maxRedLength + 1; - } - break; - case Signature::S_COMB: - if(!AH::isComb(AH::getHead(args[args.size()-1])) && - !AH::isComb(AH::getHead(args[args.size()-2]))){ - maxRedLength = sumRedLengths(args); - maxRedLength = maxRedLength == -1 ? -1 : maxRedLength + 1; - if(maxRedLength != -1 && args[args.size() - 3].isTerm()){ - maxRedLength += args[args.size() - 3].term()->maxRedLength(); - } - } - break; - case Signature::C_COMB: - case Signature::I_COMB: - case Signature::K_COMB: - if(!AH::isComb(AH::getHead(args[args.size()-1]))){ - maxRedLength = sumRedLengths(args); - maxRedLength = maxRedLength == -1 ? -1 : maxRedLength + 1; - } - break; - default: - ASSERTION_VIOLATION; - } - } - t->setMaxRedLen(maxRedLength); - } unsigned typeArity = t->numTypeArguments(); for (unsigned i = 0; i < t->arity(); i++) { diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index f7b552de4d..27c92a2450 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -20,6 +20,16 @@ using namespace Lib; using namespace Kernel; using namespace Shell; +TermList BetaReducer::transformSubterm(TermList t) +{ + CALL("BetaReducer::transformSubterm"); + + if(!t.isApplication()) return t; + t = ApplicativeHelper::betaReduce(t); + t = BetaReducer().transform(t); + return t; +} + TermList ApplicativeHelper::createAppTerm(TermList sort, TermList arg1, TermList arg2, TermList arg3, TermList arg4) { CALL("ApplicativeHelper::createAppTerm/3"); @@ -100,6 +110,31 @@ TermList ApplicativeHelper::createAppTerm(TermList sort, TermList head, TermList return res; } +TermList ApplicativeHelper::createLambdaTerm(TermList varSort, TermList termSort, TermList term) +{ + CALL("ApplicativeHelper::createLambdaTerm"); + + static TermStack args; + args.reset(); + args.push(varSort); + args.push(termSort); + args.push(term); + unsigned lam = env.signature->getLam(); + return TermList(Term::create(lam, 3, args.begin())); +} + + +TermList ApplicativeHelper::getDeBruijnIndex(int index, TermList sort) +{ + CALL("ApplicativeHelper::createDBIndex"); + + bool added; + unsigned fun = env.signature->addDeBruijnIndex(index, sort, added); + if(added){ + env.signature->getFunction(fun)->setType(OperatorType::getConstantsType(sort)); + } + return TermList(Term::createConstant(fun)); +} /** indexed from 1 */ TermList ApplicativeHelper::getResultApplieadToNArgs(TermList arrowSort, unsigned argNum) @@ -247,7 +282,6 @@ void ApplicativeHelper::getHeadAndArgs(const Term* term, TermList& head, DequegetFunction(head.term()->functor())->combinator() != Signature::NOT_COMB; -} - -Signature::Combinator ApplicativeHelper::getComb (const TermList head) -{ - CALL("ApplicativeHelper::getComb"); - return env.signature->getFunction(head.term()->functor())->combinator(); -} - Signature::Proxy ApplicativeHelper::getProxy(const TermList t) { CALL("ApplicativeHelper::getProxy"); @@ -298,45 +319,6 @@ Signature::Proxy ApplicativeHelper::getProxy(const TermList t) return env.signature->getFunction(t.term()->functor())->proxy(); } -bool ApplicativeHelper::isUnderApplied(TermList head, unsigned argNum){ - CALL("ApplicativeHelper::isPartiallyAppliedComb"); - - ASS(isComb(head)); - Signature::Combinator c = getComb(head); - return ((c == Signature::I_COMB && argNum < 1) || - (c == Signature::K_COMB && argNum < 2) || - (c == Signature::B_COMB && argNum < 3) || - (c == Signature::C_COMB && argNum < 3) || - (c == Signature::S_COMB && argNum < 3)); -} - -bool ApplicativeHelper::isExactApplied(TermList head, unsigned argNum){ - CALL("ApplicativeHelper::isExactApplied"); - - ASS(isComb(head)); - Signature::Combinator c = getComb(head); - return ((c == Signature::I_COMB && argNum == 1) || - (c == Signature::K_COMB && argNum == 2) || - (c == Signature::B_COMB && argNum == 3) || - (c == Signature::C_COMB && argNum == 3) || - (c == Signature::S_COMB && argNum == 3)); - -} - - -bool ApplicativeHelper::isOverApplied(TermList head, unsigned argNum){ - CALL("ApplicativeHelper::isOverApplied"); - - ASS(isComb(head)); - Signature::Combinator c = getComb(head); - return ((c == Signature::I_COMB && argNum > 1) || - (c == Signature::K_COMB && argNum > 2) || - (c == Signature::B_COMB && argNum > 3) || - (c == Signature::C_COMB && argNum > 3) || - (c == Signature::S_COMB && argNum > 3)); - -} - bool ApplicativeHelper::isBool(TermList t){ CALL("ApplicativeHelper::isBool"); return isTrue(t) || isFalse(t); @@ -352,19 +334,94 @@ bool ApplicativeHelper::isFalse(TermList term){ return term.isTerm() && env.signature->isFoolConstantSymbol(false, term.term()->functor()); } -bool ApplicativeHelper::isSafe(TermStack& args) -{ - CALL("ApplicativeHelper::isSafe"); - - for(unsigned i = 0; i < args.size(); i++){ - TermList ithArg = args[i]; - /*if(ithArg.isVar() || !ithArg.term()->ground()){ - return false; - }*/ - TermList head = getHead(ithArg); - if(isComb(head) || head.isVar()){ - return false; +TermList ApplicativeHelper::betaReduce(TermList redex){ + CALL("ApplicativeHelper::betaReduce"); + + ASS(redex.isApplication()); + TermList t1 = *redex.term()->nthArgument(2); + TermList t2 = *redex.term()->nthArgument(3); + ASS(t1.isLambdaTerm()); + + Signature::Symbol* sym; + + unsigned replace = 0; + Stack toDo; + Stack terms; + Stack modified; + Stack args; + + modified.push(false); + toDo.push(t1.term()->args()); + + for (;;) { + + TermList* tt=toDo.pop(); + if (tt->isEmpty()) { + if (terms.isEmpty()) { + //we're done, args stack contains modified arguments + //of the literal. + ASS(toDo.isEmpty()); + break; + } + Term* orig=terms.pop(); + if(orig->isLambdaTerm()){ replace--; } + + if (!modified.pop()) { + args.truncate(args.length() - orig->arity()); + args.push(TermList(orig)); + continue; + } + //here we assume, that stack is an array with + //second topmost element as &top()-1, third at + //&top()-2, etc... + TermList* argLst=&args.top() - (orig->arity()-1); + args.truncate(args.length() - orig->arity()); + + args.push(TermList(Term::create(orig,argLst))); + modified.setTop(true); + continue; } + toDo.push(tt->next()); + + TermList tl=*tt; + if (tl.isVar()) { + args.push(tl); + continue; + } + ASS(tl.isTerm()); + Term* t=tl.term(); + + if(t->isLambdaTerm()){ replace++; } + + int index = t->deBruijnIndex(); + if(index > -1){ + if((unsigned)index == replace){ + //replace index with appropriately lifted term + TermList liftedTerm = lift(t2, replace); + args.push(liftedTerm); + modified.setTop(true); + continue; + } + if((unsigned)index > replace){ + //free index, decrement by one, as now surrounded by one less lambda. + args.push(getDeBruijnIndex(index - 1, SortHelper::getResultSort(t))); + modified.setTop(true); + continue; + } + } + + terms.push(t); + modified.push(false); + toDo.push(t->args()); } - return true; -} \ No newline at end of file + ASS(toDo.isEmpty()); + ASS(terms.isEmpty()); + ASS_EQ(modified.length(),1); + ASS_EQ(args.length(), 1); + + //original abstracted term being a lambda term must have + //arity 1. Currently, there is a problem if the abstractedTerm is of + //the form lam(X). In that case we want to return X, but X is not + //a term. + return args.top(); +} diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 1a8188fc5f..3132a4f45f 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -19,6 +19,7 @@ #include "Signature.hpp" #include "Lib/Deque.hpp" #include "Lib/BiMap.hpp" +#include "Kernel/TermTransformer.hpp" using namespace Kernel; using namespace Shell; @@ -32,6 +33,14 @@ using namespace Shell; */ class ApplicativeHelper { public: + + // reduce a term to normal form + // uses a applicative order reduction stragegy + // (inner-most left-most redex first) + class BetaReducer : public BottomUpTermTransformer + { + TermList transformSubterm(TermList t) override; + }; static TermList createAppTerm(TermList sort, TermList arg1, TermList arg2); static TermList createAppTerm(TermList s1, TermList s2, TermList arg1, TermList arg2, bool shared = true); @@ -39,6 +48,8 @@ class ApplicativeHelper { static TermList createAppTerm(TermList sort, TermList arg1, TermList arg2, TermList arg3, TermList arg4); static TermList createAppTerm(TermList sort, TermList head, TermStack& terms); static TermList createAppTerm(TermList sort, TermList head, TermList* args, unsigned arity, bool shared = true); + static TermList createLambdaTerm(TermList varSort, TermList termSort, TermList term); + static TermList getDeBruijnIndex(int index, TermList sort); static TermList getNthArg(TermList arrowSort, unsigned argNum); static TermList getResultApplieadToNArgs(TermList arrowSort, unsigned argNum); static TermList getResultSort(TermList sort); @@ -48,18 +59,14 @@ class ApplicativeHelper { static void getHeadAndArgs(Term* term, TermList& head, TermStack& args); static void getHeadAndArgs(const Term* term, TermList& head, Deque& args); static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); - static bool isComb(const TermList t); - static Signature::Combinator getComb(const TermList t); static Signature::Proxy getProxy(const TermList t); static TermList getHead(TermList t); static TermList getHead(Term* t); - static bool isUnderApplied(TermList head, unsigned argNum); - static bool isExactApplied(TermList head, unsigned argNum); - static bool isOverApplied(TermList head, unsigned argNum); - static bool isSafe(TermStack& args); static bool isBool(TermList t); static bool isTrue(TermList term); static bool isFalse(TermList term); + // reduces a single redex + static TermList betaReduce(TermList redex); }; #endif // __ApplicativeHelper__ diff --git a/Kernel/Clause.cpp b/Kernel/Clause.cpp index cfc5ca3ce0..c5dc0f7a43 100644 --- a/Kernel/Clause.cpp +++ b/Kernel/Clause.cpp @@ -640,13 +640,6 @@ unsigned Clause::computeWeightForClauseSelection(unsigned w, unsigned splitWeigh return w * ( !derivedFromGoal ? nongoalWeightCoeffNum : nongoalWeightCoefDenom); } - -void Clause::collectUnstableVars(DHSet& acc) -{ - CALL("Clause::collectUnstableVars"); - collectVars2(acc); -} - void Clause::collectVars(DHSet& acc) { CALL("Clause::collectVars"); diff --git a/Kernel/Clause.hpp b/Kernel/Clause.hpp index 77eeeb1e55..b513fc07fd 100644 --- a/Kernel/Clause.hpp +++ b/Kernel/Clause.hpp @@ -349,8 +349,6 @@ class Clause unsigned getNumeralWeight() const; void collectVars(DHSet& acc); - void collectUnstableVars(DHSet& acc); - unsigned varCnt(); unsigned maxVar(); // useful to create fresh variables w.r.t. the clause diff --git a/Kernel/EqHelper.cpp b/Kernel/EqHelper.cpp index ab4009ca56..685410367c 100644 --- a/Kernel/EqHelper.cpp +++ b/Kernel/EqHelper.cpp @@ -187,48 +187,6 @@ TermIterator EqHelper::getFoSubtermIterator(Literal* lit, const Ordering& ord) return getRewritableSubtermIterator(lit, ord); } -TermIterator EqHelper::getNarrowableSubtermIterator(Literal* lit, const Ordering& ord) -{ - CALL("EqHelper::getNarrowableSubtermIterator"); - return getRewritableSubtermIterator(lit, ord); -} - -/* - * Function is used in the higher-order inference SubVarSup - */ -TermIterator EqHelper::getRewritableVarsIterator(DHSet* unstableVars, Literal* lit, const Ordering& ord) -{ - CALL("EqHelper::getNarrowableSubtermIterator"); - - ASS(lit->isEquality()); - - TermList sel; - switch(ord.getEqualityArgumentOrder(lit)) { - case Ordering::INCOMPARABLE: { - RewritableVarsIt si(unstableVars, lit); - return getUniquePersistentIteratorFromPtr(&si); - } - case Ordering::EQUAL: - case Ordering::GREATER: - case Ordering::GREATER_EQ: - sel=*lit->nthArgument(0); - break; - case Ordering::LESS: - case Ordering::LESS_EQ: - sel=*lit->nthArgument(1); - break; -#if VDEBUG - default: - ASSERTION_VIOLATION; -#endif - } - if (!sel.isTerm()) { - return TermIterator::getEmpty(); - } - return getUniquePersistentIterator(vi(new RewritableVarsIt(unstableVars, sel.term(), true))); -} - - /** * Return iterator on subterms of a literal, that can be rewritten by * superposition. @@ -335,62 +293,6 @@ TermIterator EqHelper::getSuperpositionLHSIterator(Literal* lit, const Ordering& } } - -TermIterator EqHelper::getSubVarSupLHSIterator(Literal* lit, const Ordering& ord) -{ - CALL("EqHelper::getSubVarSupLHSIterator"); - - ASS(lit->isEquality()); - - TermList eqSort = SortHelper::getEqualityArgumentSort(lit); - - if (eqSort.isVar() || eqSort.isArrowSort()) { - if (lit->isNegative()) { - return TermIterator::getEmpty(); - } - - TermList t0=*lit->nthArgument(0); - TermList t1=*lit->nthArgument(1); - TermList t0Head = ApplicativeHelper::getHead(t0); - TermList t1Head = ApplicativeHelper::getHead(t1); - bool t0hisVarOrComb = ApplicativeHelper::isComb(t0Head) || t0Head.isVar(); - bool t1hisVarOrComb = ApplicativeHelper::isComb(t1Head) || t1Head.isVar(); - - switch(ord.getEqualityArgumentOrder(lit)) - { - case Ordering::INCOMPARABLE: - if(t0hisVarOrComb && t1hisVarOrComb){ - return pvi( getConcatenatedIterator(getSingletonIterator(t0), - getSingletonIterator(t1)) ); - } else if( t0hisVarOrComb ){ - return pvi( getSingletonIterator(t1) ); - } else if( t1hisVarOrComb ) { - return pvi( getSingletonIterator(t0) ); - } - break; - case Ordering::GREATER: - case Ordering::GREATER_EQ: - if(t1hisVarOrComb){ - return pvi( getSingletonIterator(t0) ); - } - break; - case Ordering::LESS: - case Ordering::LESS_EQ: - if(t0hisVarOrComb){ - return pvi( getSingletonIterator(t1) ); - } - break; - case Ordering::EQUAL: - //there should be no equality literals of equal terms - default: - ASSERTION_VIOLATION; - } - return TermIterator::getEmpty(); - } else { - return TermIterator::getEmpty(); - } -} - /** * Return iterator on sides of the equality @b lit that can be used as an LHS * for demodulation diff --git a/Kernel/EqHelper.hpp b/Kernel/EqHelper.hpp index 84191fab81..d90732c5a6 100644 --- a/Kernel/EqHelper.hpp +++ b/Kernel/EqHelper.hpp @@ -38,11 +38,8 @@ class EqHelper static TermIterator getSubtermIterator(Literal* lit, const Ordering& ord); static TermIterator getFoSubtermIterator(Literal* lit, const Ordering& ord); static TermIterator getBooleanSubtermIterator(Literal* lit, const Ordering& ord); - static TermIterator getNarrowableSubtermIterator(Literal* lit, const Ordering& ord); - static TermIterator getRewritableVarsIterator(DHSet* unstableVars, Literal* lit, const Ordering& ord); static TermIterator getLHSIterator(Literal* lit, const Ordering& ord); static TermIterator getSuperpositionLHSIterator(Literal* lit, const Ordering& ord, const Options& opt); - static TermIterator getSubVarSupLHSIterator(Literal* lit, const Ordering& ord); static TermIterator getDemodulationLHSIterator(Literal* lit, bool forward, const Ordering& ord, const Options& opt); static TermIterator getEqualityArgumentIterator(Literal* lit); @@ -75,19 +72,6 @@ class EqHelper const Options& _opt; }; - struct SubVarSupLHSIteratorFn - { - SubVarSupLHSIteratorFn(const Ordering& ord) : _ord(ord) {} - - VirtualIterator > operator()(Literal* lit) - { - return pvi( pushPairIntoRightIterator(lit, getSubVarSupLHSIterator(lit, _ord)) ); - } - private: - const Ordering& _ord; - }; - - struct EqualityArgumentIteratorFn { VirtualIterator > operator()(Literal* lit) diff --git a/Kernel/Ordering.cpp b/Kernel/Ordering.cpp index e98f2f3854..9fe56740ef 100644 --- a/Kernel/Ordering.cpp +++ b/Kernel/Ordering.cpp @@ -32,7 +32,7 @@ #include "LPO.hpp" #include "KBO.hpp" -#include "SKIKBO.hpp" +//#include "SKIKBO.hpp" #include "KBOForEPR.hpp" #include "Problem.hpp" #include "Signature.hpp" @@ -119,9 +119,9 @@ Ordering* Ordering::create(Problem& prb, const Options& opt) { CALL("Ordering::create"); - if(env.options->combinatorySup() || env.options->lambdaFreeHol()){ + /*if(env.options->combinatorySup() || env.options->lambdaFreeHol()){ return new SKIKBO(prb, opt, env.options->lambdaFreeHol()); - } + }*/ Ordering* out; switch (env.options->termOrdering()) { diff --git a/Kernel/Problem.cpp b/Kernel/Problem.cpp index b4d8f4eb23..ae492562a0 100644 --- a/Kernel/Problem.cpp +++ b/Kernel/Problem.cpp @@ -302,7 +302,6 @@ void Problem::readDetailsFromProperty() const _hasInterpretedOperations = _property->hasInterpretedOperations(); _hasNumerals = _property->hasNumerals(); _hasFOOL = _property->hasFOOL(); - _hasCombs = _property->hasCombs(); _hasApp = _property->hasApp(); _hasAppliedVar = _property->hasAppliedVar(); _hasLogicalProxy = _property->hasLogicalProxy(); @@ -331,7 +330,6 @@ void Problem::invalidateEverything() _hasInterpretedOperations = MaybeBool::UNKNOWN; _hasNumerals = MaybeBool::UNKNOWN; _hasFOOL = MaybeBool::UNKNOWN; - _hasCombs = MaybeBool::UNKNOWN; _hasApp = MaybeBool::UNKNOWN; _hasAppliedVar = MaybeBool::UNKNOWN; @@ -356,7 +354,6 @@ void Problem::invalidateByRemoval() _hasInterpretedOperations.mightBecameFalse(); _hasNumerals.mightBecameFalse(); _hasFOOL.mightBecameFalse(); - _hasCombs.mightBecameFalse(); _hasAppliedVar.mightBecameFalse(); _hasLogicalProxy.mightBecameFalse(); _hasPolymorphicSym.mightBecameFalse(); @@ -423,15 +420,6 @@ bool Problem::hasFOOL() const return _hasFOOL.value(); } -bool Problem::hasCombs() const -{ - CALL("Problem::hasCombs"); - - if(!_hasCombs.known()) { refreshProperty(); } - return _hasCombs.value(); -} - - bool Problem::hasApp() const { CALL("Problem::hasApp"); diff --git a/Kernel/Problem.hpp b/Kernel/Problem.hpp index 8b0280fca8..101055e823 100644 --- a/Kernel/Problem.hpp +++ b/Kernel/Problem.hpp @@ -112,7 +112,6 @@ class Problem { bool hasNumerals() const; // meaning the interpreted constants of arithmetic theories, e.g. 1,2, 3.1415,... /** Problem contains let terms or formulas, or term if-then-else */ bool hasFOOL() const; - bool hasCombs() const; bool hasLogicalProxy() const; bool hasBoolVar() const; bool hasApp() const; @@ -226,7 +225,6 @@ class Problem { mutable MaybeBool _hasInterpretedOperations; mutable MaybeBool _hasNumerals; mutable MaybeBool _hasFOOL; - mutable MaybeBool _hasCombs; mutable MaybeBool _hasApp; mutable MaybeBool _hasAppliedVar; mutable MaybeBool _hasLogicalProxy; diff --git a/Kernel/Signature.cpp b/Kernel/Signature.cpp index a860005b62..2bf7fb77fa 100644 --- a/Kernel/Signature.cpp +++ b/Kernel/Signature.cpp @@ -60,7 +60,7 @@ Signature::Symbol::Symbol(const vstring& nm, unsigned arity, bool interpreted, b _skolem(0), _tuple(0), _prox(NOT_PROXY), - _comb(NOT_COMB) + _dbIndex(-1) { CALL("Signature::Symbol::Symbol"); ASS(!stringConstant || arity==0); @@ -250,6 +250,7 @@ Signature::Signature (): _arrayCon(UINT_MAX), _arrowCon(UINT_MAX), _appFun(UINT_MAX), + _lamFun(UINT_MAX), _termAlgebras() { CALL("Signature::Signature"); @@ -741,6 +742,24 @@ unsigned Signature::getApp() return app; } +unsigned Signature::getLam() +{ + CALL("Signature::getLam"); + + bool added = false; + unsigned lam = addFunction("vLAM", 3, added); + if(added){ + _lamFun = lam; + TermList tv1 = TermList(0, false); + TermList tv2 = TermList(1, false); + TermList arrowType = AtomicSort::arrowSort(tv1, tv2); + OperatorType* ot = OperatorType::getFunctionType({tv2}, arrowType, 2); + Symbol* sym = getFunction(lam); + sym->setType(ot); + } + return lam; +} + unsigned Signature::getDiff(){ CALL("Signature::getDiff"); @@ -902,6 +921,23 @@ unsigned Signature::addNameFunction(unsigned arity) CALL("Signature::addNameFunction"); return addFreshFunction(arity,"sP"); } // addNamePredicate + +unsigned Signature::addDeBruijnIndex(int index, TermList sort, bool& added) +{ + CALL("Signature::addDeBruijnIndex"); + + unsigned fun; + auto sortIndexPair = make_pair(sort,index); + if(_dbIndices.find(sortIndexPair,fun)){ + added = false; + return fun; + } + added = true; + fun = addFreshFunction(0, "db"); + _dbIndices.insert(sortIndexPair, fun); + return fun; +} + /** * Add fresh function of a given arity and with a given prefix. If suffix is non-zero, * the function name will be prefixI, where I is an integer, otherwise it will be diff --git a/Kernel/Signature.hpp b/Kernel/Signature.hpp index 004e6a602e..de98316054 100644 --- a/Kernel/Signature.hpp +++ b/Kernel/Signature.hpp @@ -66,17 +66,6 @@ class Signature /** this is not a sort, it is just used to denote the first index of a user-define sort */ static const unsigned FIRST_USER_CON=5; - //Order is important - //Narrow.cpp relies on it - enum Combinator { - S_COMB, - B_COMB, - C_COMB, - I_COMB, - K_COMB, - NOT_COMB - }; - enum Proxy { AND, OR, @@ -156,7 +145,7 @@ class Signature /** proxy type */ Proxy _prox; /** combinator type */ - Combinator _comb; + int _dbIndex; public: /** standard constructor */ @@ -262,9 +251,10 @@ class Signature inline void setProxy(Proxy prox){ _prox = prox; } inline Proxy proxy(){ return _prox; } - - inline void setComb(Combinator comb){ _comb = comb; } - inline Combinator combinator(){ return _comb; } + + inline void setDBIndex(int index){ _dbIndex = index; } + inline int dbIndex(){ return _dbIndex; } + inline bool isDBIndex(){ return _dbIndex > -1; } inline void markInductionSkolem(){ _inductionSkolem=1; _skolem=1;} inline bool inductionSkolem(){ return _inductionSkolem;} @@ -439,8 +429,10 @@ class Signature unsigned addSkolemPredicate(unsigned arity,const char* suffix = 0); unsigned addNamePredicate(unsigned arity); unsigned addNameFunction(unsigned arity); + unsigned addDeBruijnIndex(int index, TermList sort, bool& added); void addEquality(); unsigned getApp(); + unsigned getLam(); unsigned getDiff(); unsigned getChoice(); @@ -642,6 +634,10 @@ class Signature return (fun == _appFun && _appFun != UINT_MAX); } + bool isLamFun(unsigned fun) const{ + return (fun == _lamFun && _lamFun != UINT_MAX); + } + bool tryGetFunctionNumber(const vstring& name, unsigned arity, unsigned& out) const; bool tryGetPredicateNumber(const vstring& name, unsigned arity, unsigned& out) const; unsigned getFunctionNumber(const vstring& name, unsigned arity) const; @@ -835,67 +831,6 @@ class Signature return proxy; } //TODO merge with above? - //TODO make all these names protected - - unsigned getCombinator(Combinator c){ - bool added = false; - unsigned comb; - - auto convert = [] (Combinator cb) { - switch(cb){ - case S_COMB: - return "sCOMB"; - case C_COMB: - return "cCOMB"; - case B_COMB: - return "bCOMB"; - case K_COMB: - return "kCOMB"; - default: - return "iCOMB"; - } - }; - - vstring name = convert(c); - if(c == S_COMB || c == B_COMB || c == C_COMB){ - comb = addFunction(name,3, added); - } else if ( c == K_COMB) { - comb = addFunction(name,2, added); - } else { - comb = addFunction(name,1, added); - } - - if(added){ - unsigned typeArgsArity = 3; - TermList x0 = TermList(0, false); - TermList x1 = TermList(1, false); - TermList x2 = TermList(2, false); - TermList t0 = AtomicSort::arrowSort(x1, x2); - TermList t1 = AtomicSort::arrowSort(x0, t0); - TermList t2 = AtomicSort::arrowSort(x0, x1); - TermList t3 = AtomicSort::arrowSort(x0, x2); - TermList sort; - if(c == S_COMB){ - sort = AtomicSort::arrowSort(t1, t2, t3); - }else if(c == C_COMB){ - sort = AtomicSort::arrowSort(t1, x1, t3); - }else if(c == B_COMB){ - sort = AtomicSort::arrowSort(t0, t2, t3); - }else if(c == K_COMB){ - typeArgsArity = 2; - sort = AtomicSort::arrowSort(x0, x1 , x0); - }else if(c == I_COMB){ - typeArgsArity = 1; - sort = AtomicSort::arrowSort(x0, x0); - } - - Symbol* sym = getFunction(comb); - sym->setType(OperatorType::getConstantsType(sort, typeArgsArity)); - sym->setComb(c); - } - return comb; - } - void incrementFormulaCount(Term* t); void decrementFormulaCount(Term* t); void formulaNamed(Term* t); @@ -972,6 +907,12 @@ class Signature */ DHMap _iSymbols; + /** + * Map from the sort and number of a de bruijn index, to the functor used to + * represent it + */ + DHMap, unsigned> _dbIndices; + /** the number of string constants */ unsigned _strings; /** the number of integer constants */ @@ -984,6 +925,7 @@ class Signature unsigned _arrayCon; unsigned _arrowCon; unsigned _appFun; + unsigned _lamFun; /** * Map from sorts to the associated term algebra, if applicable for the sort diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 32b42b6da1..55f4695bad 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -362,7 +362,7 @@ bool AtomicSort::isRealSort() const { } bool TermList::isApplication() const { - CALL("Term::isApplication"); + CALL("TermList::isApplication"); return !isVar() && term()->isApplication(); } @@ -373,6 +373,28 @@ bool Term::isApplication() const { return !isSort() && !isLiteral() && env.signature->isAppFun(_functor); } +bool TermList::isLambdaTerm() const { + CALL("TermList::isLambdaTerm"); + + return !isVar() && term()->isLambdaTerm(); +} + +bool Term::isLambdaTerm() const { + CALL("Term::isLambdaTerm"); + + return !isSort() && !isLiteral() && env.signature->isLamFun(_functor); +} + +int TermList::deBruijnIndex() const { + CALL("TermList::deBruijnIndex"); + return isVar() ? -1 : term()->deBruijnIndex(); +} + +int Term::deBruijnIndex() const { + CALL("Term::deBruijnIndex"); + return isSort() || isLiteral() ? -1 : env.signature->getFunction(_functor)->dbIndex(); +} + unsigned Term::numTypeArguments() const { CALL("Term::numTypeArguments"); ASS(!isSort()); @@ -687,8 +709,6 @@ vstring Term::headToString() const if (!isSort() && Theory::tuples()->findProjection(functor(), isLiteral(), proj)) { return "$proj(" + Int::toString(proj) + ", "; } - bool print = (isLiteral() || isSort() || - (env.signature->getFunction(_functor)->combinator() == Signature::NOT_COMB)) && arity(); vstring name = ""; if(isLiteral()) { name = static_cast(this)->predicateName(); @@ -697,7 +717,7 @@ vstring Term::headToString() const } else { name = functionName(); } - return name + (print ? "(" : ""); + return name + (arity() ? "(" : ""); } } @@ -780,8 +800,6 @@ vstring Term::toString(bool topLevel) const { CALL("Term::toString"); - bool printArgs = true; - if(isSuper()){ return "$tType"; } @@ -797,13 +815,11 @@ vstring Term::toString(bool topLevel) const res += topLevel ? "" : ")"; return res; } - - printArgs = isSort() || env.signature->getFunction(_functor)->combinator() == Signature::NOT_COMB; } vstring s = headToString(); - if (_arity && printArgs) { + if (_arity) { s += args()->asArgsToString(); // will also print the ')' } return s; diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index e2526f8984..054e1bc13d 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -183,6 +183,8 @@ class TermList { bool isRatSort(); bool isRealSort(); bool isApplication() const; + bool isLambdaTerm() const; + int deBruijnIndex() const; bool containsSubterm(TermList v); bool containsAllVariablesOf(TermList t); @@ -633,6 +635,10 @@ class Term bool isSort() const { return _args[0]._info.sort; } /** true if the term is an application */ bool isApplication() const; + /** true if the term is a lambda term */ + bool isLambdaTerm() const; + /** returns -1 if not a De Bruijn index and index otherwise */ + int deBruijnIndex() const; /** Return an index of the argument to which @b arg points */ unsigned getArgumentIndex(TermList* arg) diff --git a/Kernel/TermIterators.cpp b/Kernel/TermIterators.cpp index 81f143f37b..2cd6118aa6 100644 --- a/Kernel/TermIterators.cpp +++ b/Kernel/TermIterators.cpp @@ -155,7 +155,7 @@ void SubtermIterator::right() /// /// ////////////////////////////////////////////////////////////////////////// -bool TopLevelVarLikeTermIterator::hasNext() +/*bool TopLevelVarLikeTermIterator::hasNext() { CALL("TopLevelVarLikeTermIterator::hasNext"); @@ -241,7 +241,7 @@ bool TopLevelVarIterator::hasNext() } return false; -} +}*/ TermList FirstOrderSubtermIt::next() { @@ -253,7 +253,7 @@ TermList FirstOrderSubtermIt::next() args.reset(); Term* t = _stack.pop(); AH::getHeadAndArgs(t, head, args); - if(!AH::isComb(head) || AH::isUnderApplied(head, args.size())){ + if(!head.isLambdaTerm()){ for(unsigned i = 0; i < args.size(); i++){ if(!args[i].isVar()){ _added++; @@ -274,40 +274,6 @@ void FirstOrderSubtermIt::right() } } // FirstOrderSubtermIt::right - -bool NarrowableSubtermIt::hasNext() -{ - CALL("NarrowableSubtermIt::hasNext"); - - if(!_used){ return true; } - - static TermStack args; - TermList head; - while(!_stack.isEmpty()){ - Term* t = _stack.pop(); - AH::getHeadAndArgs(t, head, args); - if((AH::isComb(head) && AH::isExactApplied(head, args.size())) || - (head.isVar() && args.size() <= 3)){ - _next = TermList(t); - _used = false; - } - if(t->isApplication() && (!AH::isComb(head) || _used)){ - TermList* trm = t->nthArgument(2); - if(trm->isApplication()){ - _stack.push(trm->term()); - } - if(!AH::isComb(head) || AH::isUnderApplied(head, args.size())){ - trm = t->nthArgument(3); - if(trm->isApplication()){ - _stack.push(trm->term()); - } - } - } - if(!_used){ return true; } - } - return false; -} - bool BooleanSubtermIt::hasNext() { CALL("BooleanSubtermIt::hasNext"); @@ -334,66 +300,6 @@ bool BooleanSubtermIt::hasNext() return false; } -bool RewritableVarsIt::hasNext() -{ - CALL("RewritableVarsIt::hasNext"); - - if(!_next.isEmpty()){ return true; } - - static TermStack args; - TermList head; - TermList headSort; - while(!_stack.isEmpty()){ - TermList t = _stack.pop(); - TermList s = _sorts.pop(); - AH::getHeadSortAndArgs(t, head, headSort, args); - if(head.isVar() && args.size() <= 1 && _unstableVars->find(head.var()) - && (s.isVar() || s.isArrowSort())){ - _next = head; - } - if(!AH::isComb(head) || AH::isUnderApplied(head, args.size())){ - unsigned count = 1; - while(!args.isEmpty()){ - _sorts.push(AH::getNthArg(headSort, count++)); - _stack.push(args.pop()); - } - } - if(!_next.isEmpty()){ return true; } - } - return false; -} - -//TODO relook at stability and instability -bool UnstableVarIt::hasNext() -{ - CALL("UnstableVarIt::hasNext"); - - if(!_next.isEmpty()){ return true; } - - static TermStack args; - TermList head; - while(!_stack.isEmpty()){ - ASS(_stack.size() == _stable.size()); - TermList t = _stack.pop(); - bool stable = _stable.pop(); - AH::getHeadAndArgs(t, head, args); - if(head.isVar()){ - if(!stable || args.size()){ - _next = head; - } - } - bool argsStable = !head.isVar() && (!AH::isComb(head) || - (AH::isUnderApplied(head, args.size()) && stable)); - for(unsigned i = 0; i < args.size(); i++){ - _stack.push(args[i]); - _stable.push(argsStable); - } - if(!_next.isEmpty()){ return true; } - } - return false; - -} - ////////////////////////////////////////////////////////////////////////// /// /// /// END OF HIGHER-ORDER ITERATORS /// diff --git a/Kernel/TermIterators.hpp b/Kernel/TermIterators.hpp index 4a212cdf44..183742145f 100644 --- a/Kernel/TermIterators.hpp +++ b/Kernel/TermIterators.hpp @@ -256,7 +256,7 @@ class SubtermIterator * that can be called at any time to return the head * of @b applicative term */ -class ApplicativeArgsIt +/*class ApplicativeArgsIt : public IteratorCore { public: @@ -273,8 +273,8 @@ class ApplicativeArgsIt bool hasNext(){ return !_stack.isEmpty(); } - /** Return next arg of _head - * @warning hasNext() must have been called before */ + // Return next arg of _head + // @warning hasNext() must have been called before TermList next() { ASS(!_stack.isEmpty()); @@ -361,84 +361,8 @@ class TopLevelVarIterator private: TermStack _stack; TermList _next; -}; - +};*/ -class RewritableVarsIt - : public IteratorCore -{ -public: //includeSelf for compatibility - RewritableVarsIt(DHSet* unstableVars, Term* t, bool includeSelf = false) : _stack(8) - { - CALL("RewritableVarsIt"); - - _unstableVars = unstableVars; - _next.makeEmpty(); - if(t->isLiteral()){ - TermList t0 = *t->nthArgument(0); - TermList t1 = *t->nthArgument(1); - if(!t0.isVar()){ - _stack.push(t0); - _sorts.push(SortHelper::getResultSort(t0.term())); - } - if(!t1.isVar()){ - _stack.push(t1); - _sorts.push(SortHelper::getResultSort(t1.term())); - } - return; - } - _stack.push(TermList(t)); - _sorts.push(SortHelper::getResultSort(t)); - } - - bool hasNext(); - TermList next(){ - ASS(!_next.isEmpty()); - ASS(_next.isVar()); - TermList res = _next; - _next.makeEmpty(); - return res; - } -private: - TermList _next; - Stack _stack; - Stack _sorts; - DHSet* _unstableVars; -}; - -class UnstableVarIt - : public IteratorCore -{ -public: - UnstableVarIt(Term* t) : _stable(8), _stack(8) - { - CALL("UnstableVarIt"); - _next.makeEmpty(); - if(t->isLiteral()){ - _stack.push(*t->nthArgument(0)); - _stack.push(*t->nthArgument(1)); - _stable.push(true); - _stable.push(true); - return; - } - _stable.push(true); - _stack.push(TermList(t)); - } - - bool hasNext(); - TermList next() - { - ASS(!_next.isEmpty()); - TermList res = _next; - _next.makeEmpty(); - return res; - } - -private: - TermList _next; - Stack _stable; - Stack _stack; -}; class FirstOrderSubtermIt : public IteratorCore @@ -471,39 +395,6 @@ class FirstOrderSubtermIt int _added; }; - -class NarrowableSubtermIt -: public IteratorCore -{ -public: - NarrowableSubtermIt(Term* term, bool includeSelf=false) - : _used(true), _stack(8) - { - CALL("NarrowableSubtermIt::NarrowableSubtermIt"); - if(term->isLiteral()){ - TermList t0 = *term->nthArgument(0); - TermList t1 = *term->nthArgument(1); - if(!t0.isVar()){ _stack.push(t0.term()); } - if(!t1.isVar()){ _stack.push(t1.term()); } - return; - } - _stack.push(term); - //TODO - } - - bool hasNext(); - TermList next(){ - ASS(!_used); - _used = true; - return _next; - } - -private: - bool _used; - TermList _next; - Stack _stack; -}; - /* * Returns Boolean subterms of a term. */ diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index b2e485653d..560cec8a0c 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -59,7 +59,7 @@ #include "Inferences/BoolEqToDiseq.hpp" #include "Inferences/ExtensionalityResolution.hpp" #include "Inferences/FOOLParamodulation.hpp" -#include "Inferences/Injectivity.hpp" +//#include "Inferences/Injectivity.hpp" #include "Inferences/Factoring.hpp" #include "Inferences/ForwardDemodulation.hpp" #include "Inferences/ForwardLiteralRewriting.hpp" @@ -73,11 +73,11 @@ #include "Inferences/Superposition.hpp" #include "Inferences/ArgCong.hpp" #include "Inferences/NegativeExt.hpp" -#include "Inferences/Narrow.hpp" -#include "Inferences/PrimitiveInstantiation.hpp" +//#include "Inferences/Narrow.hpp" +//#include "Inferences/PrimitiveInstantiation.hpp" #include "Inferences/Choice.hpp" -#include "Inferences/ElimLeibniz.hpp" -#include "Inferences/SubVarSup.hpp" +//#include "Inferences/ElimLeibniz.hpp" +//#include "Inferences/SubVarSup.hpp" #include "Inferences/CNFOnTheFly.hpp" //#include "Inferences/RenamingOnTheFly.hpp" #include "Inferences/URResolution.hpp" @@ -86,8 +86,7 @@ #include "Inferences/Induction.hpp" #include "Inferences/ArithmeticSubtermGeneralization.hpp" #include "Inferences/TautologyDeletionISE.hpp" -#include "Inferences/CombinatorDemodISE.hpp" -#include "Inferences/CombinatorNormalisationISE.hpp" +//#include "Inferences/CombinatorDemodISE.hpp" #include "Inferences/BoolSimp.hpp" #include "Inferences/CasesSimp.hpp" #include "Inferences/Cases.hpp" @@ -1560,12 +1559,12 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if(opt.combinatorySup() && prb.higherOrder()){ gie->addFront(new ArgCong()); gie->addFront(new NegativeExt());//TODO add option - if(opt.narrow() != Options::Narrow::OFF){ + /*if(opt.narrow() != Options::Narrow::OFF){ gie->addFront(new Narrow()); } if(!opt.pragmatic()){ gie->addFront(new SubVarSup()); - } + }*/ } if(prb.hasFOOL() && @@ -1573,11 +1572,11 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(new BoolEqToDiseq()); } - if(opt.complexBooleanReasoning() && prb.hasBoolVar() && + /*if(opt.complexBooleanReasoning() && prb.hasBoolVar() && prb.higherOrder() && !opt.lambdaFreeHol()){ gie->addFront(new PrimitiveInstantiation()); //TODO only add in some cases gie->addFront(new ElimLeibniz()); - } + }*/ if(env.options->choiceReasoning()){ gie->addFront(new Choice()); @@ -1608,9 +1607,9 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const } } - if (opt.injectivityReasoning()) { + /*if (opt.injectivityReasoning()) { gie->addFront(new Injectivity()); - } + }*/ if(prb.hasEquality() && env.signature->hasTermAlgebras()) { if (opt.termAlgebraCyclicityCheck() == Options::TACyclicityCheck::RULE) { gie->addFront(new AcyclicityGIE()); @@ -1784,10 +1783,10 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons break; } - if(env.options->combinatorySup() && prb.higherOrder()){ + /*if(env.options->combinatorySup() && prb.higherOrder()){ res->addFront(new CombinatorDemodISE()); res->addFront(new CombinatorNormalisationISE()); - } + }*/ if(env.options->choiceReasoning() && prb.higherOrder()){ res->addFront(new ChoiceDefinitionISE()); diff --git a/Shell/FOOLElimination.cpp b/Shell/FOOLElimination.cpp index 048c25e778..cfcd7b9312 100644 --- a/Shell/FOOLElimination.cpp +++ b/Shell/FOOLElimination.cpp @@ -31,7 +31,7 @@ #include "Shell/Options.hpp" #include "Shell/SymbolOccurrenceReplacement.hpp" -#include "Shell/LambdaElimination.hpp" +#include "Shell/LambdaConversion.hpp" #include "Shell/Statistics.hpp" #include "Rectify.hpp" @@ -179,8 +179,7 @@ Formula* FOOLElimination::process(Formula* formula) { if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && !_polymorphic){ - LambdaElimination le = LambdaElimination(); - TermList proxifiedFormula = le.elimLambda(formula); + TermList proxifiedFormula = LambdaConversion().convertLambda(formula); Formula* processedFormula = toEquality(proxifiedFormula); if (env.options->showPreprocessing()) { @@ -762,16 +761,13 @@ void FOOLElimination::process(Term* term, Context context, TermList& termResult, termResult = freshSymbolApplication; } else { - LambdaElimination le = LambdaElimination(); - termResult = le.elimLambda(sd->getFormula()); + termResult = LambdaConversion().convertLambda(sd->getFormula()); } break; } case Term::SF_LAMBDA: { - // Lambda terms are translated to FOL using SKIBC combinators which are extensively described in - // the literature. - LambdaElimination le = LambdaElimination(); - termResult = le.elimLambda(term); + // Lambda terms using named representation are converted to nameless De Bruijn representation + termResult = LambdaConversion().convertLambda(term); break; } diff --git a/Shell/LambdaElimination.cpp b/Shell/LambdaConversion.cpp similarity index 58% rename from Shell/LambdaElimination.cpp rename to Shell/LambdaConversion.cpp index a1c6dce644..567f6d10e9 100644 --- a/Shell/LambdaElimination.cpp +++ b/Shell/LambdaConversion.cpp @@ -30,15 +30,12 @@ #include "Kernel/Signature.hpp" #include "Kernel/SortHelper.hpp" #include "Kernel/ApplicativeHelper.hpp" -#include "Kernel/SKIKBO.hpp" #include "Kernel/TermIterators.hpp" #include "Skolem.hpp" #include "Options.hpp" -//#include "Shell/SymbolOccurrenceReplacement.hpp" - -#include "LambdaElimination.hpp" +#include "LambdaConversion.hpp" using namespace Lib; using namespace Kernel; @@ -46,73 +43,17 @@ using namespace Shell; typedef ApplicativeHelper AH; - -/** - * Return true if t1 is less than t2 in some arbitrary - * total ordering. - * - * Is used just for normalization of commutative term and - * literal arguments. - */ -bool LambdaElimination::TermListComparator::lessThan(TermList t1, TermList t2) +TermList LambdaConversion::convertLambda(Formula* formula) { - CALL("TermListComparator::lessThan"); + CALL("LambdaConversion::convertLambda(Formula*)"); - if(t1.tag()!=t2.tag()) { - return t1.tag() < t2.tag(); - } - if(!t2.isTerm()) { - return t2.content() > t1.content(); - } - Term* trm1=t1.term(); - Term* trm2=t2.term(); - if(trm1->functor()!=trm2->functor()) { - return trm1->functor()functor(); - } - if(trm1->weight()!=trm2->weight()) { - return trm1->weight()weight(); - } - if(trm1->numVarOccs()!=trm2->numVarOccs()) { - return trm1->numVarOccs()numVarOccs(); - } - - //To avoid non-determinism, now we'll compare the terms lexicographicaly. - static DisagreementSetIterator dsit; - dsit.reset(trm1, trm2, false); - - if(!dsit.hasNext()) { - ASS_EQ(trm1,trm2); - return false; - } - - pair diff=dsit.next(); - TermList st1=diff.first; - TermList st2=diff.second; - if(st1.isTerm()) { - if(st2.isTerm()) { - unsigned f1=st1.term()->functor(); - unsigned f2=st2.term()->functor(); - ASS_NEQ(f1,f2); - return f1literal(); ASS(lit->isEquality()); //Is this a valid assumption? - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - - if (lhs.isTerm()) { lhs = elimLambda(lhs); } - if (rhs.isTerm()) { rhs = elimLambda(rhs); } + TermList lhs = convertLambda(*lit->nthArgument(0), map); + TermList rhs = convertLambda(*lit->nthArgument(1), map); TermList equalsSort = SortHelper::getEqualityArgumentSort(lit); @@ -151,15 +89,8 @@ TermList LambdaElimination::elimLambda(Formula* formula) vstring name = (conn == IFF ? "vIFF" : (conn == IMP ? "vIMP" : "vXOR")); constant = TermList(Term::createConstant(env.signature->getBinaryProxy(name))); - TermList form1 = elimLambda(lhs); - TermList form2 = elimLambda(rhs); - - /*TermListComparator tlc; - if((conn == IFF || conn == XOR) && tlc.lessThan(form2, form1)){ - TermList temp = form1; - form1 = form2; - form2 = temp; - }*/ + TermList form1 = convertLambda(lhs, map); + TermList form2 = convertLambda(rhs, map); return AH::createAppTerm3(sortOf(constant), constant, form1, form2);; } @@ -170,23 +101,11 @@ TermList LambdaElimination::elimLambda(Formula* formula) vstring name = (conn == AND ? "vAND" : "vOR"); constant = TermList(Term::createConstant(env.signature->getBinaryProxy(name))); - /*TermListComparator tlc; - unsigned length = FormulaList::length(formula->args()); - Sort srt(length, tlc); - while(argsIt.hasNext()){ - srt.add(processBeyondLambda(argsIt.next())); - } - srt.sort(); - - appTerm = AH::createAppTerm3(sortOf(constant), constant, srt[0], srt[1]); - for(unsigned i = 2; i < length; i++){ - appTerm = AH::createAppTerm3(sortOf(constant), constant, appTerm, srt[i]); - }*/ TermList form; unsigned count = 1; while(argsIt.hasNext()){ Formula* arg = argsIt.next(); - form = elimLambda(arg); + form = convertLambda(arg, map); if(count == 1){ appTerm = AH::createAppTerm(sortOf(constant), constant, form); }else if(count == 2){ @@ -200,7 +119,7 @@ TermList LambdaElimination::elimLambda(Formula* formula) } case NOT: { constant = TermList(Term::createConstant(env.signature->getNotProxy())); - TermList form = elimLambda(formula->uarg()); + TermList form = convertLambda(formula->uarg(), map); return AH::createAppTerm(sortOf(constant), constant, form); } case FORALL: @@ -210,7 +129,7 @@ TermList LambdaElimination::elimLambda(Formula* formula) SList* sort = SList::singleton(TermList(0, true)); //dummy data VList* var = VList::singleton(0); - TermList form = elimLambda(formula->qarg()); + TermList form = convertLambda(formula->qarg(), map); vstring name = (conn == FORALL ? "vPI" : "vSIGMA"); unsigned proxy = env.signature->getPiSigmaProxy(name); @@ -220,14 +139,14 @@ TermList LambdaElimination::elimLambda(Formula* formula) ALWAYS(SortHelper::tryGetVariableSort(v, formula->qarg(), s)); var->setHead(v); sort->setHead(s); - form = elimLambda(Term::createLambda(form, var, sort, AtomicSort::boolSort())); + form = convertLambda(TermList(Term::createLambda(form, var, sort, AtomicSort::boolSort())), map); constant = TermList(Term::create1(proxy, s)); form = AH::createAppTerm(sortOf(constant), constant, form); } return form; } case BOOL_TERM: - return elimLambda(formula->getBooleanTerm()); + return convertLambda(formula->getBooleanTerm(), map); case TRUE: return TermList(Term::foolTrue()); case FALSE: @@ -238,11 +157,23 @@ TermList LambdaElimination::elimLambda(Formula* formula) }//switch conn } -TermList LambdaElimination::elimLambda(TermList term) +TermList LambdaConversion::convertLambda(TermList term) { - CALL("LambdaElimination::elimLambda(TermList)"); + CALL("LambdaConversion::convertLambda(TermList)"); - if(term.isVar()){ + VarToIndexMap map; + return convertLambda(term, map); +} + +TermList LambdaConversion::convertLambda(TermList term, VarToIndexMap& map) +{ + CALL("LambdaConversion::convertLambda(TermList)/2"); + + if(term.isVar()){ + IndexSortPair p; + if(map.find(term.var(), p)){ + return AH::getDeBruijnIndex(p.first,p.second); + } return term; } @@ -250,23 +181,14 @@ TermList LambdaElimination::elimLambda(TermList term) if(t->isSpecial()){ switch(t->functor()){ case Term::SF_FORMULA: - return elimLambda(t->getSpecialData()->getFormula()); + return convertLambda(t->getSpecialData()->getFormula(), map); case Term::SF_LAMBDA:{ - Stack vars; - TermStack sorts; Term::SpecialTermData* sd = t->getSpecialData(); - SList* srts = sd->getLambdaVarSorts(); - VList* vrs = sd->getLambdaVars(); + SList* sorts = sd->getLambdaVarSorts(); + VList* vars = sd->getLambdaVars(); - VList::Iterator vlit(vrs); - SList::Iterator slit(srts); - - while(vlit.hasNext()){ - vars.push(vlit.next()); - sorts.push(slit.next()); - } - TermList eliminated = elimLambda(vars, sorts, sd->getLambdaExp(), sd->getLambdaExpSort()); + TermList eliminated = convertLambda(vars, sorts, sd->getLambdaExp(), sd->getLambdaExpSort(), map); ASS_REP2(eliminated.isVar() || sortOf(eliminated) == sd->getSort(), t->toString(), eliminated.toString()) return eliminated; } @@ -286,210 +208,55 @@ TermList LambdaElimination::elimLambda(TermList term) TermList arg1 = *t->nthArgument(2); TermList arg2 = *t->nthArgument(3); - return AH::createAppTerm(s1, s2, elimLambda(arg1), elimLambda(arg2)); + return AH::createAppTerm(s1, s2, convertLambda(arg1, map), convertLambda(arg2, map)); } -TermList LambdaElimination::elimLambda(Stack& vars, TermStack& sorts, - TermList body, TermList sort) +TermList LambdaConversion::convertLambda(VList* vars, SList* sorts, + TermList body, TermList bodySort, VarToIndexMap& map) { - CALL("LambdaElimination::elimLambda(Stack& vars...)"); - - TermList bodye = elimLambda(body); - // Lambda elimination should not change the sort - // of a term - ASS(bodye.isVar() || sortOf(bodye) == sort); - - while(vars.size()){ - int v = vars.pop(); - TermList s = sorts.pop(); - bodye = elimLambda(v, s, bodye, sort); - sort = AtomicSort::arrowSort(s, sort); - } - - return bodye; -} - - -TermList LambdaElimination::elimLambda(int var, TermList varSort, - TermList body, TermList sort) -{ - CALL("LambdaElimination::elimLambda(int var...)"); - - if(!body.isFreeVariable(var)){ - return createKTerm(sort, varSort, body); - } + CALL("LambdaConversion::LambdaConversion(VList* vars...)"); - if(body.isVar()){ - ASS(body.var() == (unsigned)var); - return TermList(Term::create1(env.signature->getCombinator(Signature::I_COMB), varSort)); - } + TermList converted; - Term* t = body.term(); - // Specials should already have been removed via earlier - // recursive calls - ASS_REP(!t->isSpecial(), t->toString()); - - //must be of the form app(s1, s2, arg1, arg2) - TermList s1 = *t->nthArgument(0); - TermList s2 = *t->nthArgument(1); - TermList arg1 = *t->nthArgument(2); - TermList arg2 = *t->nthArgument(3); - TermList a1sort = AtomicSort::arrowSort(s1, s2); - TermList a2sort = s1; + unsigned v = (unsigned)vars->head(); + TermList s = sorts->head(); + vars = vars->tail(); + sorts = sorts->tail(); - bool freeInArg1 = arg1.isFreeVariable(var); - bool freeInArg2 = arg2.isFreeVariable(var); + VarToIndexMap newMap(map); + newMap.mapValues([](IndexSortPair p){ return make_pair(p.first + 1, p.second); }); + newMap.insert(v, make_pair(0, s)); - if(arg2.isVar() && (arg2.var() == (unsigned)var) && !freeInArg1){ - //This is the case [\x. exp @ x] wehere x is not free in exp. - return arg1; + if(vars){ + converted = convertLambda(vars, sorts, body, bodySort, newMap); + } else { + converted = convertLambda(body, newMap); } - if (freeInArg1 && freeInArg2){ - TermList arg1e = elimLambda(var, varSort, arg1, a1sort); - TermList s1e = AtomicSort::arrowSort(varSort, a1sort); - TermList arg2e = elimLambda(var, varSort, arg2, a2sort); - TermList s2e = AtomicSort::arrowSort(varSort, a2sort); - return createSCorBTerm(arg1e, s1e, arg2e, s2e, Signature::S_COMB); - } else if (freeInArg1) { - TermList arg1e = elimLambda(var, varSort, arg1, a1sort); - TermList s1e = AtomicSort::arrowSort(varSort, a1sort); - return createSCorBTerm(arg1e, s1e, arg2, a2sort, Signature::C_COMB); - } else{ - ASS(freeInArg2); - TermList arg2e = elimLambda(var, varSort, arg2, a2sort); - TermList s2e = AtomicSort::arrowSort(varSort, a2sort); - return createSCorBTerm(arg1, a1sort, arg2e, s2e, Signature::B_COMB); - } + bodySort = converted.isVar() ? bodySort : sortOf(converted); + return AH::createLambdaTerm(s, bodySort, converted); } -TermList LambdaElimination::elimLambda(Term* lambdaTerm) +TermList LambdaConversion::convertLambda(Term* lambdaTerm) { - CALL("LambdaElimination::elimLambda"); + CALL("LambdaConversion::convertLambda"); - return elimLambda(TermList(lambdaTerm)); + return convertLambda(TermList(lambdaTerm)); } -TermList LambdaElimination::createKTerm(TermList s1, TermList s2, TermList arg1) -{ - CALL("LambdaElimination::createKTerm"); - - unsigned kcomb = env.signature->getCombinator(Signature::K_COMB); - TermList res = TermList(Term::create2(kcomb, s1, s2)); - return AH::createAppTerm(sortOf(res), res, arg1); -} - -TermList LambdaElimination::createSCorBTerm(TermList arg1, TermList arg1sort, - TermList arg2, TermList arg2sort, Signature::Combinator comb) -{ - CALL("LambdaElimination::createSCorBTerm"); - - TermList s1, s2, s3; - unsigned cb = env.signature->getCombinator(comb); - - if(comb == Signature::S_COMB || comb == Signature::C_COMB){ - s1 = AH::getNthArg(arg1sort, 1); - s2 = AH::getNthArg(arg1sort, 2); - s3 = AH::getResultApplieadToNArgs(arg1sort, 2); - } else { - s1 = AH::getNthArg(arg2sort, 1); - s2 = AH::getNthArg(arg1sort, 1); - s3 = AH::getResultApplieadToNArgs(arg1sort, 1); - } - - TermList args[] = {s1, s2, s3}; - TermList c = TermList(Term::create(cb, 3, args)); - return AH::createAppTerm3(sortOf(c), c, arg1, arg2); -} -TermList LambdaElimination::sortOf(TermList t) +TermList LambdaConversion::sortOf(TermList t) { - CALL("LambdaElimination::sortOf"); + CALL("LambdaConversion::sortOf"); ASS(t.isTerm()); return SortHelper::getResultSort(t.term()); } -void LambdaElimination::addCombinatorAxioms(Problem& prb) -{ - CALL("LambdaElimination::addCombinatorAxioms"); - - auto srtOf = [] (TermList t) { - ASS(t.isTerm()); - return SortHelper::getResultSort(t.term()); - }; - - TermList s1 = TermList(0, false); - TermList s2 = TermList(1, false); - TermList s3 = TermList(2, false); - TermList x = TermList(3, false); - TermList y = TermList(4, false); - TermList z = TermList(5, false); - TermList args[] = {s1, s2, s3}; - - unsigned s_comb = env.signature->getCombinator(Signature::S_COMB); - TermList constant = TermList(Term::create(s_comb, 3, args)); - TermList lhs = AH::createAppTerm(srtOf(constant), constant, x, y, z); //TODO fix - TermList rhs = AH::createAppTerm3(AtomicSort::arrowSort(s1, s2, s3), x, z, AH::createAppTerm(AtomicSort::arrowSort(s1, s2), y, z)); - - Clause* sAxiom = new(1) Clause(1, TheoryAxiom(InferenceRule::COMBINATOR_AXIOM)); - (*sAxiom)[0] = Literal::createEquality(true, lhs, rhs, s3); - sAxiom->inference().setCombAxiomsDescendant(true); - UnitList::push(sAxiom, prb.units()); - - unsigned c_comb = env.signature->getCombinator(Signature::C_COMB); - constant = TermList(Term::create(c_comb, 3, args)); - lhs = AH::createAppTerm(srtOf(constant), constant, x, y, z); //TODO fix - rhs = AH::createAppTerm3(AtomicSort::arrowSort(s1, s2, s3), x, z, y); - - Clause* cAxiom = new(1) Clause(1, TheoryAxiom(InferenceRule::COMBINATOR_AXIOM)); - (*cAxiom)[0] = Literal::createEquality(true, lhs, rhs, s3); - cAxiom->inference().setCombAxiomsDescendant(true); - UnitList::push(cAxiom, prb.units()); - - unsigned b_comb = env.signature->getCombinator(Signature::B_COMB); - constant = TermList(Term::create(b_comb, 3, args)); - lhs = AH::createAppTerm(srtOf(constant), constant, x, y, z); //TODO fix - rhs = AH::createAppTerm(AtomicSort::arrowSort(s2, s3), x, AH::createAppTerm(AtomicSort::arrowSort(s1, s2), y, z)); - - Clause* bAxiom = new(1) Clause(1, TheoryAxiom(InferenceRule::COMBINATOR_AXIOM)); - (*bAxiom)[0] = Literal::createEquality(true, lhs, rhs, s3); - bAxiom->inference().setCombAxiomsDescendant(true); - UnitList::push(bAxiom, prb.units()); - - unsigned k_comb = env.signature->getCombinator(Signature::K_COMB); - constant = TermList(Term::create2(k_comb, s1, s2)); - lhs = AH::createAppTerm3(srtOf(constant), constant, x, y); - - Clause* kAxiom = new(1) Clause(1, TheoryAxiom(InferenceRule::COMBINATOR_AXIOM)); - (*kAxiom)[0] = Literal::createEquality(true, lhs, x, s1); - bAxiom->inference().setCombAxiomsDescendant(true); - UnitList::push(kAxiom, prb.units()); - - unsigned i_comb = env.signature->getCombinator(Signature::I_COMB); - constant = TermList(Term::create1(i_comb, s1)); - lhs = AH::createAppTerm(srtOf(constant), constant, x); - - Clause* iAxiom = new(1) Clause(1, TheoryAxiom(InferenceRule::COMBINATOR_AXIOM)); - (*iAxiom)[0] = Literal::createEquality(true, lhs, x, s1); - iAxiom->inference().setCombAxiomsDescendant(true); - UnitList::push(iAxiom, prb.units()); - - if (env.options->showPreprocessing()) { - env.out() << "Added combinator axioms: " << std::endl; - env.out() << sAxiom->toString() << std::endl; - env.out() << cAxiom->toString() << std::endl; - env.out() << bAxiom->toString() << std::endl; - env.out() << kAxiom->toString() << std::endl; - env.out() << iAxiom->toString() << std::endl; - } -} - - -void LambdaElimination::addFunctionExtensionalityAxiom(Problem& prb) +void LambdaConversion::addFunctionExtensionalityAxiom(Problem& prb) { - CALL("LambdaElimination::addFunctionExtensionalityAxiom"); + CALL("LambdaConversion::addFunctionExtensionalityAxiom"); auto srtOf = [] (TermList t) { ASS(t.isTerm()); @@ -519,9 +286,9 @@ void LambdaElimination::addFunctionExtensionalityAxiom(Problem& prb) } } -void LambdaElimination::addChoiceAxiom(Problem& prb) +void LambdaConversion::addChoiceAxiom(Problem& prb) { - CALL("LambdaElimination::addChoiceAxiom"); + CALL("LambdaConversion::addChoiceAxiom"); TermList alpha = TermList(0, false); TermList boolS = AtomicSort::boolSort(); @@ -547,9 +314,9 @@ void LambdaElimination::addChoiceAxiom(Problem& prb) } } -void LambdaElimination::addProxyAxioms(Problem& prb) +void LambdaConversion::addProxyAxioms(Problem& prb) { - CALL("LambdaElimination::addProxyAxioms"); + CALL("LambdaConversion::addProxyAxioms"); auto srtOf = [] (TermList t) { ASS(t.isTerm()); @@ -718,7 +485,7 @@ void LambdaElimination::addProxyAxioms(Problem& prb) } -Literal* LambdaElimination::toEquality(TermList booleanTerm, bool polarity) { +Literal* LambdaConversion::toEquality(TermList booleanTerm, bool polarity) { TermList boolVal = polarity ? TermList(Term::foolTrue()) : TermList(Term::foolFalse()); return Literal::createEquality(true, booleanTerm, boolVal, AtomicSort::boolSort()); } diff --git a/Shell/LambdaConversion.hpp b/Shell/LambdaConversion.hpp new file mode 100644 index 0000000000..211cb446df --- /dev/null +++ b/Shell/LambdaConversion.hpp @@ -0,0 +1,59 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file LambdaElimination.hpp + * Defines class LambdaElimination. + */ + +#ifndef __LambdaConversion__ +#define __LambdaConversion__ + +#include "Lib/Deque.hpp" +#include "Forwards.hpp" + +using namespace Kernel; +using namespace Shell; + +/** + * A class that converts lamba terms from named to nameless (De Bruijn indices) representation. + * + * Along the way, it also converts formulas to terms with proxy symbols for connectives + */ +class LambdaConversion { +public: + + typedef pair IndexSortPair; + typedef DHMap VarToIndexMap; + + LambdaConversion() {}; +// LambdaElimination(DHMap varSorts) : _varSorts(varSorts){}; + + TermList convertLambda(Term* lambdaTerm); + TermList convertLambda(TermList term); + TermList convertLambda(Formula*); + + //void addFunctionExtensionalityAxioms(UnitList*& units); + //void addBooleanExtensionalityAxiom(UnitList*& units); + + static void addProxyAxioms(Problem& prb); + static void addFunctionExtensionalityAxiom(Problem& prb); + static void addChoiceAxiom(Problem& prb); + static Literal* toEquality(TermList booleanTerm, bool polarity); + +private: + + TermList convertLambda(TermList term, VarToIndexMap& map); + TermList convertLambda(VList* vars, SList* sorts, TermList body, TermList bodySort, VarToIndexMap& map); + TermList convertLambda(Formula*, VarToIndexMap& map); + + TermList sortOf(TermList t); +}; + +#endif // __LambdaConversion__ diff --git a/Shell/LambdaElimination.hpp b/Shell/LambdaElimination.hpp deleted file mode 100644 index f1a8e9c4ac..0000000000 --- a/Shell/LambdaElimination.hpp +++ /dev/null @@ -1,86 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file LambdaElimination.hpp - * Defines class LambdaElimination. - */ - -#ifndef __LambdaElimination__ -#define __LambdaElimination__ - -#include "Lib/Deque.hpp" -#include "Forwards.hpp" - -using namespace Kernel; -using namespace Shell; - -/** - * A class with function @b elimLambda() that eliminates a lambda expressions - * It does this by applying the well known rewrite rules for SKIBC combinators. - * - * These can be found: - * https://en.wikipedia.org/wiki/Combinatory_logic - */ -class LambdaElimination { -public: - - LambdaElimination() {}; -// LambdaElimination(DHMap varSorts) : _varSorts(varSorts){}; - - /** Set of recursive functions that rconvert lambda terms to - * combinatory terms and replace logical symbols by proxies. - * It can be used as an alternative to FOOLElimination - */ - TermList elimLambda(Term* lambdaTerm); - TermList elimLambda(TermList term); - TermList elimLambda(Stack& vars, TermStack& sorts, TermList body, TermList sort); - TermList elimLambda(int var, TermList varSort, TermList body, TermList sort); - TermList elimLambda(Formula*); - - //void addFunctionExtensionalityAxioms(UnitList*& units); - //void addBooleanExtensionalityAxiom(UnitList*& units); - - static void addCombinatorAxioms(Problem& prb); - static void addProxyAxioms(Problem& prb); - static void addFunctionExtensionalityAxiom(Problem& prb); - static void addChoiceAxiom(Problem& prb); - static Literal* toEquality(TermList booleanTerm, bool polarity); - - class TermListComparator { - public: - bool lessThan(TermList t1, TermList t2); - }; - -private: - - /********************************************* - * Lambda and application elimination functions - *********************************************/ - - TermList sortOf(TermList t); - - void addToProcessed(TermList ts, TermList sort, Stack &_argNums); - void dealWithApp(Term* app, const unsigned lambdaVar, - TermStack &toBeProcessed, TermStack &sorts, Stack &argNums); - - TermList createKTerm(TermList s1, TermList s2, TermList arg1); - TermList createSCorBTerm(TermList arg1, TermList arg1sort, - TermList arg2, TermList arg2sort, Signature::Combinator comb); - - void process(Stack &vars, TermStack &varSorts, - TermStack &toBeProcessed, TermStack &sorts); - - /** Lexical scope of the current unit */ - TermStack _processed; - TermStack _processedSorts; - Stack _combinators; -}; - -#endif // __LambdaElimination__ diff --git a/Shell/Options.cpp b/Shell/Options.cpp index f38bf5238b..50c407c7b1 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -3480,8 +3480,8 @@ bool Options::complete(const Problem& prb) const if (hasEquality && !_superposition.actualValue) return false; - if((prop.hasCombs() || prop.hasAppliedVar()) && - !_addCombAxioms.actualValue && !_combinatorySuperposition.actualValue) { + // TODO fix this whole thing up + if((prop.hasAppliedVar())) { //TODO make a more complex more precise case here //There are instance where we are complete return false; diff --git a/Shell/Preprocess.cpp b/Shell/Preprocess.cpp index 6f5da9d4cb..68f1f440fe 100644 --- a/Shell/Preprocess.cpp +++ b/Shell/Preprocess.cpp @@ -49,7 +49,7 @@ #include "SineUtils.hpp" #include "Statistics.hpp" #include "FOOLElimination.hpp" -#include "LambdaElimination.hpp" +#include "LambdaConversion.hpp" #include "TheoryAxioms.hpp" #include "TheoryFlattening.hpp" #include "TweeGoalTransformation.hpp" @@ -154,21 +154,17 @@ void Preprocess::preprocess(Problem& prb) } if(env.options->functionExtensionality() == Options::FunctionExtensionality::AXIOM){ - LambdaElimination::addFunctionExtensionalityAxiom(prb); + LambdaConversion::addFunctionExtensionalityAxiom(prb); } if(env.options->choiceAxiom()){ - LambdaElimination::addChoiceAxiom(prb); + LambdaConversion::addChoiceAxiom(prb); } prb.getProperty(); - if ((prb.hasCombs() || prb.hasAppliedVar()) && env.options->addCombAxioms()){ - LambdaElimination::addCombinatorAxioms(prb); - } - if ((prb.hasLogicalProxy() || prb.hasBoolVar()) && env.options->addProxyAxioms()){ - LambdaElimination::addProxyAxioms(prb); + LambdaConversion::addProxyAxioms(prb); } if (prb.hasInterpretedOperations() || env.signature->hasTermAlgebras()){ diff --git a/Shell/Property.cpp b/Shell/Property.cpp index 4df7612134..415fffe097 100644 --- a/Shell/Property.cpp +++ b/Shell/Property.cpp @@ -74,7 +74,6 @@ Property::Property() _hasNonDefaultSorts(false), _sortsUsed(0), _hasFOOL(false), - _hasCombs(false), _hasArrowSort(false), _hasApp(false), _hasAppliedVar(false), @@ -721,9 +720,7 @@ void Property::scan(TermList ts,bool unit,bool goal) } } - if(func->combinator() != Signature::NOT_COMB){ - _hasCombs = true; - } else if(func->proxy() != Signature::NOT_PROXY){ + if(func->proxy() != Signature::NOT_PROXY){ if(func->proxy() == Signature::PI || func->proxy() == Signature::SIGMA){ ASS(t->arity() == 1); TermList sort = *t->nthArgument(0); diff --git a/Shell/Property.hpp b/Shell/Property.hpp index bd1268b8c7..f09dcad052 100644 --- a/Shell/Property.hpp +++ b/Shell/Property.hpp @@ -226,14 +226,13 @@ class Property /** Problem contains non-default sorts */ bool hasNonDefaultSorts() const { return _hasNonDefaultSorts; } bool hasFOOL() const { return _hasFOOL; } - bool hasCombs() const { return _hasCombs;} bool hasArrowSort() const { return _hasArrowSort; } bool hasApp() const { return _hasApp; } bool hasAppliedVar() const { return _hasAppliedVar; } bool hasBoolVar() const { return _hasBoolVar; } bool hasLogicalProxy() const { return _hasLogicalProxy; } bool hasPolymorphicSym() const { return _hasPolymorphicSym; } - bool higherOrder() const { return hasCombs() || hasApp() || hasLogicalProxy() || + bool higherOrder() const { return hasApp() || hasLogicalProxy() || hasArrowSort() || _hasLambda; } bool quantifiesOverPolymorphicVar() const { return _quantifiesOverPolymorphicVar; } bool usesSort(unsigned sort) const { @@ -330,7 +329,6 @@ class Property DHSet _polymorphicInterpretations; bool _hasFOOL; - bool _hasCombs; bool _hasArrowSort; bool _hasApp; bool _hasAppliedVar; From 8c8cc22671ee8e37756de30f8622671217f4072a Mon Sep 17 00:00:00 2001 From: Johannes Schoisswohl Date: Thu, 1 Sep 2022 10:59:11 +0200 Subject: [PATCH 022/210] made unit tests for uwa machine checked --- UnitTests/tUnificationWithAbstraction.cpp | 393 ++++++++++++++++++---- 1 file changed, 324 insertions(+), 69 deletions(-) diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 13f6313589..41cfa22c9c 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -11,6 +11,7 @@ #include "Lib/Environment.hpp" #include "Shell/Options.hpp" +#include "Test/TestUtils.hpp" #include "Kernel/Unit.hpp" #include "Kernel/Clause.hpp" @@ -58,46 +59,93 @@ LiteralIndexingStructure* getLiteralIndex(Shell::Options::UnificationWithAbstrac return new LiteralSubstitutionTree(cmh); } -void reportTermMatches(TermIndexingStructure* index, TermList term, TermList sort) -{ - TermQueryResultIterator it= index->getUnificationsUsingSorts(term,sort,true); - cout << endl; - cout << "Unify with " << term.toString() << endl; - while(it.hasNext()){ - TermQueryResult qr = it.next(); - cout << qr.term.toString() << " matches with substitution: "<< endl; - // cout << qr.substitution->tryGetRobSubstitution()->toString() << endl; - cout << "and constraints: "<< endl; - qr.substitution->numberOfConstraints(); - auto constraints = qr.substitution->getConstraints(); - while(constraints.hasNext()){ - Literal* constraint = constraints.next(); - cout << "> " << constraint->toString() << endl; +template +struct UnificationResultSpec { + TermOrLit querySigma; + TermOrLit resultSigma; + Stack constraints; + + friend bool operator==(UnificationResultSpec const& l, UnificationResultSpec const& r) + { + return Test::TestUtils::eqModAC(l.querySigma, r.querySigma) + && Test::TestUtils::eqModAC(l.resultSigma, r.resultSigma) + && Test::TestUtils::permEq(l.constraints, r.constraints, + [](auto& l, auto& r) { return Test::TestUtils::eqModAC(l,r); }); + } + + friend std::ostream& operator<<(std::ostream& out, UnificationResultSpec const& self) + { + out << "{ querySigma = " << Test::pretty(self.querySigma) << ", resultSigma = " << Test::pretty(self.resultSigma) << ", cons = [ "; + for (auto& c : self.constraints) { + out << *c << ", "; } + return out << "] }"; } - cout << endl; -} +}; -void reportMatches(LiteralIndexingStructure* index, Literal* qlit) +using TermUnificationResultSpec = UnificationResultSpec; +using LiteralUnificationResultSpec = UnificationResultSpec; + + + +void checkLiteralMatches(LiteralIndexingStructure* index, Literal* lit, Stack expected) { - SLQueryResultIterator it= index->getUnifications(qlit,false,true); - cout << endl; - cout << "Unify with " << qlit->toString() << endl; - while(it.hasNext()){ - SLQueryResult qr = it.next(); - cout << qr.clause->toString() << " matches with substitution: "<< endl; - // cout << qr.substitution->tryGetRobSubstitution()->toString() << endl; - cout << "and constraints: "<< endl; + Stack is; + for (auto qr : iterTraits(index->getUnifications(lit,false,true)) ) { qr.substitution->numberOfConstraints(); - auto constraints = qr.substitution->getConstraints(); - while(constraints.hasNext()){ - Literal* constraint = constraints.next(); - cout << "> " << constraint->toString() << endl; - } + + is.push(LiteralUnificationResultSpec { + .querySigma = qr.substitution->apply(lit, /* result */ false), + .resultSigma = qr.substitution->apply(qr.literal, /* result */ true), + .constraints = iterTraits(qr.substitution->getConstraints()).collect(), + }); } - cout << endl; + if (Test::TestUtils::permEq(is, expected, [](auto& l, auto& r) { return l == r; })) { + cout << "[ OK ] " << *lit << endl; + } else { + cout << "[ FAIL ] " << *lit << endl; + + cout << "is:" << endl; + for (auto& x : is) + cout << " " << x << endl; + + cout << "expected:" << endl; + for (auto& x : expected) + cout << " " << x << endl; + + exit(-1); + } + // cout << endl; } +void checkTermMatches(TermIndexingStructure* index, TermList term, TermList sort, Stack expected) +{ + Stack is; + for (auto qr : iterTraits(index->getUnificationsUsingSorts(term,sort,true)) ) { + qr.substitution->numberOfConstraints(); + + is.push(TermUnificationResultSpec { + .querySigma = qr.substitution->apply(term, /* result */ false), + .resultSigma = qr.substitution->apply(qr.term, /* result */ true), + .constraints = iterTraits(qr.substitution->getConstraints()).collect(), + }); + } + if (Test::TestUtils::permEq(is, expected, [](auto& l, auto& r) { return l == r; })) { + cout << "[ OK ] " << term << endl; + } else { + cout << "[ FAIL ] " << term << endl; + + cout << "is:" << endl; + for (auto& x : is) + cout << " " << x << endl; + + cout << "expected:" << endl; + for (auto& x : expected) + cout << " " << x << endl; + exit(-1); + } + // cout << endl; +} TEST_FUN(term_indexing_one_side_interp) { @@ -113,17 +161,108 @@ TEST_FUN(term_indexing_one_side_interp) index->insert(num(1) + num(1), p(num(1) + num(1)), unit(p(num(1) + num(1)))); index->insert(1 + a, p(1 + a), unit(p(a + a))); - reportTermMatches(index,b + 2, Int); + checkTermMatches(index, b + 2, Int, + { + + TermUnificationResultSpec + { .querySigma = 2 + b, + .resultSigma = 1 + a, + .constraints = { 1 + a != 2 + b, } }, + + TermUnificationResultSpec + { .querySigma = 2 + b, + .resultSigma = 1 + num(1), + .constraints = { 2 + b != 1 + num(1), } }, + + }); index->insert(a,p(a),unit(p(a))); - reportTermMatches(index,b + 2, Int); - reportTermMatches(index,x,Int); + checkTermMatches(index,b + 2, Int, { + + TermUnificationResultSpec + { .querySigma = 2 + b, + .resultSigma = 1 + a, + .constraints = { 1 + a != 2 + b, } }, + + TermUnificationResultSpec + { .querySigma = 2 + b, + .resultSigma = 1 + num(1), + .constraints = { 2 + b != 1 + num(1), } }, + + TermUnificationResultSpec + { .querySigma = 2 + b, + .resultSigma = a, + .constraints = { 2 + b != a, } }, + + }); + + + checkTermMatches(index, x, Int, { + + TermUnificationResultSpec + { .querySigma = 1 + a, + .resultSigma = 1 + a, + .constraints = Stack{} }, + + TermUnificationResultSpec + { .querySigma = 1 + num(1), + .resultSigma = 1 + num(1), + .constraints = Stack{} }, + + TermUnificationResultSpec + { .querySigma = a, + .resultSigma = a, + .constraints = Stack{} }, + + }); + index->insert(f(x),p(f(x)),unit(p(f(x)))); - reportTermMatches(index, f(a), Int); - reportTermMatches(index, a + 3 ,Int); + checkTermMatches(index, f(a), Int, { + + TermUnificationResultSpec + { .querySigma = f(a), + .resultSigma = 1 + a, + .constraints = { 1 + a != f(a), } }, + + TermUnificationResultSpec + { .querySigma = f(a), + .resultSigma = 1 + num(1), + .constraints = { f(a) != 1 + num(1), } }, + + + TermUnificationResultSpec + { .querySigma = f(a), + .resultSigma = f(a), + .constraints = Stack{} }, + + }); + + checkTermMatches(index, a + 3, Int, { + + TermUnificationResultSpec + { .querySigma = 3 + a, + .resultSigma = 1 + a, + .constraints = { 1 + a != 3 + a, } }, + + TermUnificationResultSpec + { .querySigma = 3 + a, + .resultSigma = 1 + num(1), + .constraints = { 3 + a != 1 + num(1), } }, + + TermUnificationResultSpec + { .querySigma = 3 + a, + .resultSigma = a, + .constraints = { 3 + a != a, } }, + + TermUnificationResultSpec + { .querySigma = 3 + a, + .resultSigma = f(x), + .constraints = { 3 + a != f(x) } }, + + }); } TEST_FUN(term_indexing_poly) @@ -136,11 +275,26 @@ TEST_FUN(term_indexing_poly) DECL_PRED(p, {Int}) DECL_CONST(a, Int) DECL_POLY_CONST(h, 1, alpha) + DECL_SORT(A) index->insert(1 + a, p(1 + a), unit(p(a + a))); index->insert(h(Int), p(h(Int)), unit(p(h(Int)))); - - reportTermMatches(index,h(alpha), alpha); + + checkTermMatches(index, h(alpha), alpha, Stack{ + + TermUnificationResultSpec + { .querySigma = h(Int), + .resultSigma = h(Int), + .constraints = Stack{ } }, + + TermUnificationResultSpec + { .querySigma = h(Int), + .resultSigma = 1 + a, + .constraints = { 1 + a != h(Int), } }, + + }); + + checkTermMatches(index, h(A), A, Stack{ }); } TEST_FUN(term_indexing_interp_only) @@ -157,12 +311,36 @@ TEST_FUN(term_indexing_interp_only) index->insert(num(1) + num(1), p(num(1) + num(1)), unit(p(num(1) + num(1)))); index->insert(1 + a, p(1 + a), unit(p(a + a))); - reportTermMatches(index,b + 2,Int); + checkTermMatches(index,b + 2,Int,{ + + TermUnificationResultSpec + { .querySigma = b + 2, + .resultSigma = 1 + a, + .constraints = { 1 + a != b + 2, } }, + + TermUnificationResultSpec + { .querySigma = b + 2, + .resultSigma = 1 + num(1), + .constraints = { 1 + num(1) != b + 2, } }, + + }); index->insert(a,p(a),unit(p(a))); - reportTermMatches(index,b + 2,Int); - reportTermMatches(index,x,Int); + checkTermMatches(index,b + 2,Int, { + + TermUnificationResultSpec + { .querySigma = b + 2, + .resultSigma = 1 + a, + .constraints = { 1 + a != b + 2, } }, + + TermUnificationResultSpec + { .querySigma = b + 2, + .resultSigma = 1 + num(1), + .constraints = { 1 + num(1) != b + 2, } }, + + }); + } TEST_FUN(literal_indexing) @@ -180,11 +358,48 @@ TEST_FUN(literal_indexing) index->insert(p(1 + a), unit(p(1 + a))); - reportMatches(index,p(b + 2)); + checkLiteralMatches(index,p(b + 2),{ + + LiteralUnificationResultSpec { + .querySigma = p(b + 2), + .resultSigma = p(num(1) + 1), + .constraints = { b + 2 != num(1) + 1 }, }, + + LiteralUnificationResultSpec { + .querySigma = p(b + 2), + .resultSigma = p(a + 1), + .constraints = { b + 2 != a + 1 }, }, + + }); index->insert(p(b + 2),unit(p(b + 2))); + index->insert(p(2 + b),unit(p(2 + b))); + + checkLiteralMatches(index,p(b + 2),{ + + LiteralUnificationResultSpec { + .querySigma = p(b + 2), + .resultSigma = p(num(1) + 1), + .constraints = { b + 2 != num(1) + 1 }, }, + + LiteralUnificationResultSpec { + .querySigma = p(b + 2), + .resultSigma = p(a + 1), + .constraints = { b + 2 != a + 1 }, }, + + LiteralUnificationResultSpec { + .querySigma = p(b + 2), + .resultSigma = p(b + 2), + .constraints = Stack{ }, }, + + LiteralUnificationResultSpec { + .querySigma = p(b + 2), + .resultSigma = p(b + 2), + .constraints = Stack{ b + 2 != 2 + b }, }, + + }); + - reportMatches(index,p(b +2)); } TEST_FUN(higher_order) @@ -208,17 +423,26 @@ TEST_FUN(higher_order) index->insert(ap(f,a), 0, 0); - reportTermMatches(index,ap(f,b),srt); + checkTermMatches(index,ap(f,b),srt, Stack{ + + TermUnificationResultSpec + { .querySigma = ap(f,b), + .resultSigma = ap(f,a), + .constraints = { a != b, } }, + + }); index->insert(ap(g,c), 0, 0); index->insert(g, 0, 0); - reportTermMatches(index,x0,xSrt); + // TODO + // reportTermMatches(index,x0,xSrt); index->insert(h(alpha), 0, 0); - reportTermMatches(index,h(beta),beta); - reportTermMatches(index,h(srt),srt); + // TODO + // reportTermMatches(index,h(beta),beta); + // reportTermMatches(index,h(srt),srt); } TEST_FUN(higher_order2) @@ -237,32 +461,56 @@ TEST_FUN(higher_order2) index->insert(ap(ap(f,a),b), 0, 0); - reportTermMatches(index,ap(ap(f,b),a),srt); + // TODO + // reportTermMatches(index,ap(ap(f,b),a),srt); } static const int NORM_QUERY_BANK=2; static const int NORM_RESULT_BANK=3; -void reportRobUnify(TermList a, TermList b, RobSubstitution& sub) +void checkRobUnify(TermList a, TermList b, RobSubstitution& sub, TermUnificationResultSpec exp) { - cout << endl; - cout << "Unifying " << a.toString() << " with " << b.toString() << endl; + bool result = sub.unify(a,NORM_QUERY_BANK,b,NORM_RESULT_BANK); + ASS(result) + sub.numberOfConstraints(); + auto is = TermUnificationResultSpec { + .querySigma = sub.apply(a, NORM_QUERY_BANK), + .resultSigma = sub.apply(b, NORM_RESULT_BANK), + .constraints = iterTraits(sub.getConstraints()).collect(), + }; + + if (is == exp) { + cout << "[ OK ] " << a << " unify " << b << endl; + } else { + cout << "[ FAIL ] " << a << " unify " << b << endl; + cout << "is: " << is << endl; + cout << "expected: " << exp << endl; + exit(-1); + } +} + +void checkRobUnifyFail(TermList a, TermList b, RobSubstitution& sub) +{ bool result = sub.unify(a,NORM_QUERY_BANK,b,NORM_RESULT_BANK); - cout << "Result is " << result << endl; - if(result){ - // cout << "> Substitution is " << endl << sub.toString(); - cout << "> Constraints are:" << endl; + if(!result) { + cout << "[ OK ] " << a << " unify " << b << endl; + } else { sub.numberOfConstraints(); - auto constraints = sub.getConstraints(); - while(constraints.hasNext()){ - Literal* constraint = constraints.next(); - cout << "> " << constraint->toString() << endl; - } + auto is = TermUnificationResultSpec { + .querySigma = sub.apply(a, NORM_QUERY_BANK), + .resultSigma = sub.apply(b, NORM_RESULT_BANK), + .constraints = iterTraits(sub.getConstraints()).collect(), + }; + + cout << "[ FAIL ] " << a << " unify " << b << endl; + cout << "is: " << is << endl; + cout << "expected: nothing" << endl; + exit(-1); } - cout << endl; } + TEST_FUN(using_robsub) { DECL_DEFAULT_VARS @@ -276,14 +524,21 @@ TEST_FUN(using_robsub) cmh->addHandler(make_unique(Options::UnificationWithAbstraction::ONE_INTERP)); RobSubstitution sub(cmh); - auto t1 = f(b + 2); - auto t2 = f(x + 2); - auto t3 = f(a); - auto t4 = g(1 + a); + checkRobUnify(f(b + 2), f(x + 2), sub, + TermUnificationResultSpec { + .querySigma = f(b + 2), + .resultSigma = f(x + 2), + .constraints = { x + 2 != b + 2 }, + }); - reportRobUnify(t1, t2,sub); sub.reset(); - reportRobUnify(t2, t3,sub); + checkRobUnify(f(x + 2), f(a), sub, + TermUnificationResultSpec { + .querySigma = f(x + 2), + .resultSigma = f(a), + .constraints = { x + 2 != a }, + }); + sub.reset(); - reportRobUnify(t3, t4,sub); + checkRobUnifyFail(f(a), g(1 + a), sub); } From 8275da8dd0b8c713d077812f740c724298cabf91 Mon Sep 17 00:00:00 2001 From: Johannes Schoisswohl Date: Thu, 1 Sep 2022 11:45:59 +0200 Subject: [PATCH 023/210] performance improvement --- Indexing/IndexManager.cpp | 6 +++--- Indexing/IndexManager.hpp | 2 +- Kernel/MismatchHandler.hpp | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index dfb1f049de..037ffd7f14 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -124,7 +124,7 @@ Index* IndexManager::create(IndexType t) switch(t) { case BINARY_RESOLUTION_SUBST_TREE: - is=new LiteralSubstitutionTree(&_handler); + is=new LiteralSubstitutionTree(mismatchHandler()); res=new BinaryResolutionIndex(is); isGenerating = true; break; @@ -150,12 +150,12 @@ Index* IndexManager::create(IndexType t) break; case SUPERPOSITION_SUBTERM_SUBST_TREE: - tis=new TermSubstitutionTree(&_handler); + tis=new TermSubstitutionTree(mismatchHandler()); res=new SuperpositionSubtermIndex(tis, _alg->getOrdering()); isGenerating = true; break; case SUPERPOSITION_LHS_SUBST_TREE: - tis=new TermSubstitutionTree(&_handler); + tis=new TermSubstitutionTree(mismatchHandler()); res=new SuperpositionLHSIndex(tis, _alg->getOrdering(), _alg->getOptions()); isGenerating = true; break; diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index 2ab89fb16e..edb090ab78 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -89,7 +89,7 @@ class IndexManager void release(IndexType t); bool contains(IndexType t); Index* get(IndexType t); - MismatchHandler* mismatchHandler(){ return &_handler; } + MismatchHandler* mismatchHandler(){ return _handler.isEmpty() ? nullptr : &_handler; } void provideIndex(IndexType t, Index* index); private: diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 38b80a6944..b2f08452fd 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -89,6 +89,7 @@ class MismatchHandler : Term* get(unsigned var); void addHandler(unique_ptr hndlr); + bool isEmpty() const { return _inners.isEmpty(); } CLASS_NAME(MismatchHandler); USE_ALLOCATOR(MismatchHandler); From 8cb23c1284895ae0db0eda71f2fd3f46d4606a68 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 1 Sep 2022 12:13:58 +0100 Subject: [PATCH 024/210] merging Joe's changes with mine --- Inferences/CombinatorDemodISE.cpp | 4 +- Inferences/CombinatorDemodISE.hpp | 11 +- Inferences/CombinatorNormalisationISE.cpp | 2 +- Inferences/CombinatorNormalisationISE.hpp | 11 +- Kernel/MismatchHandler.hpp | 5 +- Kernel/TermTransformer.cpp | 167 +++------------------- Kernel/TermTransformer.hpp | 45 +++++- 7 files changed, 79 insertions(+), 166 deletions(-) diff --git a/Inferences/CombinatorDemodISE.cpp b/Inferences/CombinatorDemodISE.cpp index 802e4b9def..8a17337319 100644 --- a/Inferences/CombinatorDemodISE.cpp +++ b/Inferences/CombinatorDemodISE.cpp @@ -84,9 +84,9 @@ Clause* CombinatorDemodISE::simplify(Clause* c) return newC; } -TermList TermReducer::transformSubterm(TermList trm) +TermList TermReducer::transformFirstOrderSubterm(TermList trm) { - CALL("TermReducer::transformSubterm"); + CALL("TermReducer::transformFirstOrderSubterm"); TermList res = CombinatorDemodISE::headNormalForm(trm); if(res != trm){ diff --git a/Inferences/CombinatorDemodISE.hpp b/Inferences/CombinatorDemodISE.hpp index 9d03cd9b26..8db599a6d8 100644 --- a/Inferences/CombinatorDemodISE.hpp +++ b/Inferences/CombinatorDemodISE.hpp @@ -22,13 +22,16 @@ namespace Inferences { -class TermReducer : public TermTransformer { +class TermReducer : public ApplicativeTermTransformer { public: - TermReducer() : TermTransformer(true, true), _reducLen(0) {} - TermList transformSubterm(TermList trm) override; + TermReducer() : _reducLen(0) { + recurseIntoReplaced(); + dontTransformSorts(); + } + TermList transformFirstOrderSubterm(TermList trm) override; // TODO are we calculating reduction length in the best way? - // should we not be counting individual reductions rahter than the number + // should we not be counting individual reductions rather than the number // of separate head normal forms achieved? unsigned getReductionLen(){ return _reducLen; } diff --git a/Inferences/CombinatorNormalisationISE.cpp b/Inferences/CombinatorNormalisationISE.cpp index 4375d7bff3..c489738ca2 100644 --- a/Inferences/CombinatorNormalisationISE.cpp +++ b/Inferences/CombinatorNormalisationISE.cpp @@ -76,7 +76,7 @@ Clause* CombinatorNormalisationISE::simplify(Clause* c) return newC; } -TermList CombinatorNormaliser::transformSubterm(TermList trm) +TermList CombinatorNormaliser::transformFirstOrderSubterm(TermList trm) { CALL("CombinatorSimplifier::transformSubterm"); diff --git a/Inferences/CombinatorNormalisationISE.hpp b/Inferences/CombinatorNormalisationISE.hpp index b8d03ae60b..b36460f620 100644 --- a/Inferences/CombinatorNormalisationISE.hpp +++ b/Inferences/CombinatorNormalisationISE.hpp @@ -37,12 +37,13 @@ namespace Inferences { -class CombinatorNormaliser : public TermTransformer { +class CombinatorNormaliser : public ApplicativeTermTransformer { public: - // true means create shared terms - // true means recurse into replaced terms - CombinatorNormaliser() : TermTransformer(true, true) {} - TermList transformSubterm(TermList trm) override; + CombinatorNormaliser() { + recurseIntoReplaced(); + dontTransformSorts(); + } + TermList transformFirstOrderSubterm(TermList trm) override; }; class CombinatorNormalisationISE diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index b2f08452fd..df2c03c796 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -74,7 +74,10 @@ class MismatchHandler : { public: - MismatchHandler() : TermTransformer(false) {} + MismatchHandler() { + createNonShared(); + dontTransformSorts(); + } // Returns true if the mismatch can be handled by some handler // diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index 88accfc4bc..2908472e14 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -33,10 +33,6 @@ Term* TermTransformer::transform(Term* term) return transformSpecial(term); } - if(term->isApplication()){ - return transformApplication(term); - } - Stack toDo(8); Stack terms(8); Stack modified(8); @@ -60,6 +56,9 @@ Term* TermTransformer::transform(Term* term) break; } Term* orig = terms.pop(); + + onTermExit(orig); + ASS(!orig->isSpecial()); if (!modified.pop()) { args.truncate(args.length() - orig->arity()); @@ -73,10 +72,7 @@ Term* TermTransformer::transform(Term* term) TermList *argLst = &args.top() - (orig->arity() - 1); args.truncate(args.length() - orig->arity()); // potentially evil. Calls destructors on the truncated objects, which we are happily reading just below Term* newTrm; - if(orig->isSort()){ - //For most applications we probably dont want to transform sorts. - //However, we don't enforce that here, inheriting classes can decide - //for themselves + if(orig->isSort()){ if(_sharedResult){ newTrm=AtomicSort::create(static_cast(orig), argLst); } else { @@ -86,7 +82,7 @@ Term* TermTransformer::transform(Term* term) if(_sharedResult){ newTrm=Term::create(orig,argLst); } else { - newTrm=Term::createNonShared(orig,argLst); + newTrm=Term::createNonShared(orig,argLst); } } args.push(TermList(newTrm)); @@ -97,6 +93,14 @@ Term* TermTransformer::transform(Term* term) } TermList tl = *tt; + + // We still transform sort variables ... + // It is difficult to avoid this though + if(tl.isTerm() && tl.term()->isSort() && !_transformSorts){ + args.push(tl); + continue; + } + if (tl.isTerm() && tl.term()->isSpecial()) { Term* td = transformSpecial(tl.term()); if (td != tl.term()) { @@ -109,8 +113,11 @@ Term* TermTransformer::transform(Term* term) TermList dest = transformSubterm(tl); if (tl != dest) { modified.setTop(true); - args.push(dest); - continue; + if(!_recurseIntoReplaced){ + args.push(dest); + continue; + } + tl = dest; } if (tl.isVar()) { args.push(tl); @@ -119,6 +126,9 @@ Term* TermTransformer::transform(Term* term) ASS(tl.isTerm()); Term* t = tl.term(); + + onTermEntry(t); + ASS(!t->isSpecial()); terms.push(t); modified.push(false); @@ -160,141 +170,6 @@ Literal* TermTransformer::transform(Literal* lit) return static_cast(t); } -Term* TermTransformer::transformApplication(Term* appTerm) -{ - CALL("TermTransformer::transformApplication"); - - ASS(appTerm->isApplication()); - - Stack toDo(8); - Stack argNumbers; - Stack terms(8); - Stack modified(8); - Stack args(8); - ASS(toDo.isEmpty()); - ASS(terms.isEmpty()); - modified.reset(); - args.reset(); - - modified.push(false); - toDo.push(appTerm->args()); - argNumbers.push(0); - - for (;;) { - TermList* tt = toDo.pop(); - unsigned argNumber = argNumbers.pop(); - - if (tt->isEmpty()) { - if (terms.isEmpty()) { - //we're done, args stack contains modified arguments - //of the literal. - ASS(toDo.isEmpty()); - break; - } - Term* orig = terms.pop(); - if (!modified.pop()) { - args.truncate(args.length() - orig->arity()); - args.push(TermList(orig)); - continue; - } - ASS(orig->isApplication()) - - //here we assume, that stack is an array with - //second topmost element as &top()-1, third at - //&top()-2, etc... - TermList *argLst = &args.top() - (orig->arity() - 1); - args.truncate(args.length() - orig->arity()); // potentially evil. Calls destructors on the truncated objects, which we are happily reading just below - Term* newTrm; - if(orig->isSort()){ - //For most applications we probably dont want to transform sorts. - //However, we don't enforce that here, inheriting classes can decide - //for themselves - if(_sharedResult){ - newTrm=AtomicSort::create(static_cast(orig), argLst); - } else { - newTrm=AtomicSort::createNonShared(static_cast(orig), argLst); - } - } else { - if(_sharedResult){ - newTrm=Term::create(orig,argLst); - } else { - newTrm=Term::createNonShared(orig,argLst); - } - } - args.push(TermList(newTrm)); - modified.setTop(true); - continue; - } else { - argNumbers.push(argNumber + 1); - toDo.push(tt->next()); - } - - TermList tl = *tt; - if(argNumber == 0 || argNumber == 1){ - // don't transform sorts - args.push(tl); - continue; - } - - if(argNumber == 3){ - // only want to transform argument "first-order" subterms - // e.g @($int, $int, f, a), only transform a, not f - TermList dest = transformSubterm(tl); - if (tl != dest) { - modified.setTop(true); - if(!_recurseIntoReplaced){ - args.push(dest); - continue; - } - tl = dest; - } - } - if (tl.isVar()) { - args.push(tl); - continue; - } - - ASS(tl.isTerm()); - Term* t = tl.term(); - if(!t->isApplication()){ - args.push(tl); - continue; - } - - ASS(!t->isSpecial()); - terms.push(t); - modified.push(false); - toDo.push(t->args()); - argNumbers.push(0); - } - ASS(toDo.isEmpty()); - ASS(terms.isEmpty()); - ASS_EQ(modified.length(), 1); - ASS_EQ(args.length(), appTerm->arity()); - - if (!modified.pop()) { - return appTerm; - } - - ASS_EQ(args.size(), appTerm->arity()); - //here we assume, that stack is an array with - //second topmost element as &top()-1, third at - //&top()-2, etc... - TermList* argLst = &args.top() - (appTerm->arity() - 1); - - if (appTerm->isLiteral()) { - if(_sharedResult){ - return Literal::create(static_cast(appTerm), argLst); - } - return Literal::createNonShared(static_cast(appTerm), argLst); - } - if(_sharedResult){ - return Term::create(appTerm, argLst); - } - return Term::createNonShared(appTerm, argLst); -} - - Term* TermTransformer::transformSpecial(Term* term) { CALL("TermTransformer::transformSpecial(Term* term)"); diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index 02202ba5d6..4869ac9633 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -38,25 +38,56 @@ namespace Kernel { */ class TermTransformer { public: - TermTransformer(bool shared = true, bool recurseIntoReplaced = false) : - _sharedResult(shared), _recurseIntoReplaced(recurseIntoReplaced) {} + TermTransformer() : + _sharedResult(true), + _recurseIntoReplaced(false), + _transformSorts(true) {} + + void createNonShared(){ _sharedResult = false; } + void recurseIntoReplaced(){ _recurseIntoReplaced = true; } + void dontTransformSorts(){ _transformSorts = false; } + virtual ~TermTransformer() {} Term* transform(Term* term); Literal* transform(Literal* lit); TermList transform(TermList ts); + protected: virtual TermList transformSubterm(TermList trm) = 0; + // Deliberately empty bodies. + // By default we do nothing on entry and exit + virtual void onTermEntry(Term*){} + virtual void onTermExit(Term*){} Term* transformSpecial(Term* specialTerm); - // currently this can be used to transform the - // first-order / "green" subterms of an applicative term. - // TODO update to allow transformation of prefix subterms - // TODO try and code share with transform(Term*) - Term* transformApplication(Term* appTerm); + virtual Formula* transform(Formula* f); bool _sharedResult; // recurse into repalced only affects applicative terms currently // can easily be extended to standard terms if required bool _recurseIntoReplaced; + bool _transformSorts; +}; + +class ApplicativeTermTransformer : public TermTransformer +{ +public: + ApplicativeTermTransformer() {} + + virtual TermList transformSubterm(TermList trm){ + Term* t = _terms.top(); + if(t->isApplication() && trm == *t->nthArgument(2)){ + return trm; + } + return transformFirstOrderSubterm(trm); + } + virtual void onTermEntry(Term* t){ _terms.push(t);} + virtual void onTermExit(Term* t){ _terms.pop(); } +protected: + + virtual TermList transformFirstOrderSubterm(TermList trm) = 0; + +private: + Stack _terms; }; /** From 43d435e0ae1a230ef5c79d17cd815832b7c38bd9 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 1 Sep 2022 12:28:33 +0100 Subject: [PATCH 025/210] code refinement --- Kernel/TermTransformer.cpp | 31 ++++++------------------------- Kernel/TermTransformer.hpp | 5 +++++ 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index 2908472e14..dd4133fc25 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -71,20 +71,9 @@ Term* TermTransformer::transform(Term* term) //&top()-2, etc... TermList *argLst = &args.top() - (orig->arity() - 1); args.truncate(args.length() - orig->arity()); // potentially evil. Calls destructors on the truncated objects, which we are happily reading just below - Term* newTrm; - if(orig->isSort()){ - if(_sharedResult){ - newTrm=AtomicSort::create(static_cast(orig), argLst); - } else { - newTrm=AtomicSort::createNonShared(static_cast(orig), argLst); - } - } else { - if(_sharedResult){ - newTrm=Term::create(orig,argLst); - } else { - newTrm=Term::createNonShared(orig,argLst); - } - } + Term* newTrm = orig->isSort() ? + create (orig, argLst, _sharedResult) : + create (orig, argLst, _sharedResult) ; args.push(TermList(newTrm)); modified.setTop(true); continue; @@ -149,17 +138,9 @@ Term* TermTransformer::transform(Term* term) //&top()-2, etc... TermList* argLst = &args.top() - (term->arity() - 1); - if (term->isLiteral()) { - if(_sharedResult){ - return Literal::create(static_cast(term), argLst); - } - return Literal::createNonShared(static_cast(term), argLst); - } - if(_sharedResult){ - return Term::create(term, argLst); - } - return Term::createNonShared(term, argLst); - + return term->isLiteral() ? + create (term, argLst, _sharedResult) : + create (term, argLst, _sharedResult) ; } Literal* TermTransformer::transform(Literal* lit) diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index 4869ac9633..249ae074a8 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -66,6 +66,11 @@ class TermTransformer { // can easily be extended to standard terms if required bool _recurseIntoReplaced; bool _transformSorts; + +private: + template + Term* create(Term* t, TermList* argLst, bool shared) + { return shared ? T::create(static_cast(t), argLst) : T::createNonShared(static_cast(t), argLst); } }; class ApplicativeTermTransformer : public TermTransformer From 5b704f0f82eaf93d04028757ee60b1d29cdf9821 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 1 Sep 2022 16:45:27 +0100 Subject: [PATCH 026/210] changing beta reduction code --- Kernel/ApplicativeHelper.hpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 3132a4f45f..da31dabd43 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -37,11 +37,17 @@ class ApplicativeHelper { // reduce a term to normal form // uses a applicative order reduction stragegy // (inner-most left-most redex first) - class BetaReducer : public BottomUpTermTransformer + class BetaNormaliser : public BottomUpTermTransformer { TermList transformSubterm(TermList t) override; }; + class RedexReducer : public TermTransformer + { + TermList reduce(TermList redex); + TermList transformSubterm(TermList t) override; + } + static TermList createAppTerm(TermList sort, TermList arg1, TermList arg2); static TermList createAppTerm(TermList s1, TermList s2, TermList arg1, TermList arg2, bool shared = true); static TermList createAppTerm3(TermList sort, TermList arg1, TermList arg2, TermList arg3); From 54dec9721d583dcd2bbb792df368920ecc3bf9d8 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 2 Sep 2022 00:29:15 +0100 Subject: [PATCH 027/210] finishing beta reduction and adding unit tests --- CMakeLists.txt | 1 + Kernel/ApplicativeHelper.cpp | 203 +++++++++++++++++++---------------- Kernel/ApplicativeHelper.hpp | 65 +++++++---- Kernel/Signature.cpp | 2 + Kernel/Signature.hpp | 8 +- Kernel/Term.cpp | 8 +- Kernel/Term.hpp | 6 +- Kernel/TermTransformer.hpp | 2 +- Test/SyntaxSugar.hpp | 33 +++--- 9 files changed, 186 insertions(+), 142 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8080876e5a..34a7352aba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -750,6 +750,7 @@ set(UNIT_TESTS UnitTests/tIterator.cpp UnitTests/tOption.cpp UnitTests/tStack.cpp + UnitTests/tBetaReduction.cpp ) source_group(unit_tests FILES ${UNIT_TESTS}) diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 27c92a2450..95a2b422e7 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -20,16 +20,113 @@ using namespace Lib; using namespace Kernel; using namespace Shell; -TermList BetaReducer::transformSubterm(TermList t) +TermList BetaNormaliser::normalise(TermList t) { - CALL("BetaReducer::transformSubterm"); + CALL("BetaNormaliser::normalise"); - if(!t.isApplication()) return t; - t = ApplicativeHelper::betaReduce(t); - t = BetaReducer().transform(t); + // term transformer does not work at the top level... + t = transformSubterm(t); + return transform(t); +} + +TermList BetaNormaliser::transformSubterm(TermList t) +{ + CALL("BetaNormaliser::transformSubterm"); + + while(ApplicativeHelper::isRedex(t)){ + t = RedexReducer().reduce(t); + } return t; } +TermList RedexReducer::reduce(TermList redex) +{ + CALL("RedexReducer::reduce"); + ASS(ApplicativeHelper::isRedex(redex)); + + _replace = 0; + TermList t1 = *redex.term()->nthArgument(2)->term()->nthArgument(2); + _t2 = *redex.term()->nthArgument(3); + + TermList transformed = transformSubterm(t1); + if(transformed != t1) return transformed; + return transform(t1); +} + +TermList RedexReducer::transformSubterm(TermList t) +{ + CALL("RedexReducer::transformSubterm"); + + if(t.deBruijnIndex().isSome()){ + unsigned index = t.deBruijnIndex().unwrap(); + if(index == _replace){ + // any free indices in _t2 need to e lifted by the number of extra lambdas + // that now surround them + return TermLifter().lift(_t2, _replace); + } + if(index > _replace){ + // free index. replace by index 1 less as now surrounded by one fewer lambdas + TermList sort = SortHelper::getResultSort(t.term()); + return ApplicativeHelper::getDeBruijnIndex(index - 1, sort); + } + } + return t; +} + +void RedexReducer::onTermEntry(Term* t) +{ + CALL("RedexReducer::onTermEntry"); + + if(t->isLambdaTerm()) _replace++; +} + +void RedexReducer::onTermExit(Term* t) +{ + CALL("RedexReducer::onTermExit"); + + if(t->isLambdaTerm()) _replace--; +} + +TermList TermLifter::lift(TermList term, unsigned liftBy) +{ + CALL("TermLifter::lift"); + + _cutOff = 0; + _liftBy = liftBy; + TermList transformed = transformSubterm(term); + if(transformed != term) return transformed; + return transform(term); +} + +TermList TermLifter::transformSubterm(TermList t) +{ + CALL("TermLifter::transformSubterm"); + + if(t.deBruijnIndex().isSome()){ + unsigned index = t.deBruijnIndex().unwrap(); + if(index > _cutOff){ + // free index. lift + TermList sort = SortHelper::getResultSort(t.term()); + return ApplicativeHelper::getDeBruijnIndex(index + _liftBy, sort); + } + } + return t; +} + +void TermLifter::onTermEntry(Term* t) +{ + CALL("TermLifter::onTermEntry"); + + if(t->isLambdaTerm()) _cutOff++; +} + +void TermLifter::onTermExit(Term* t) +{ + CALL("TermLifter::onTermExit"); + + if(t->isLambdaTerm()) _cutOff--; +} + TermList ApplicativeHelper::createAppTerm(TermList sort, TermList arg1, TermList arg2, TermList arg3, TermList arg4) { CALL("ApplicativeHelper::createAppTerm/3"); @@ -133,7 +230,8 @@ TermList ApplicativeHelper::getDeBruijnIndex(int index, TermList sort) if(added){ env.signature->getFunction(fun)->setType(OperatorType::getConstantsType(sort)); } - return TermList(Term::createConstant(fun)); + auto t = TermList(Term::createConstant(fun)); + return t; } /** indexed from 1 */ @@ -334,94 +432,9 @@ bool ApplicativeHelper::isFalse(TermList term){ return term.isTerm() && env.signature->isFoolConstantSymbol(false, term.term()->functor()); } -TermList ApplicativeHelper::betaReduce(TermList redex){ - CALL("ApplicativeHelper::betaReduce"); - - ASS(redex.isApplication()); - TermList t1 = *redex.term()->nthArgument(2); - TermList t2 = *redex.term()->nthArgument(3); - ASS(t1.isLambdaTerm()); +bool ApplicativeHelper::isRedex(TermList t){ + CALL("ApplicativeHelper::isRedex"); - Signature::Symbol* sym; - - unsigned replace = 0; - Stack toDo; - Stack terms; - Stack modified; - Stack args; - - modified.push(false); - toDo.push(t1.term()->args()); - - for (;;) { - - TermList* tt=toDo.pop(); - if (tt->isEmpty()) { - if (terms.isEmpty()) { - //we're done, args stack contains modified arguments - //of the literal. - ASS(toDo.isEmpty()); - break; - } - Term* orig=terms.pop(); - if(orig->isLambdaTerm()){ replace--; } - - if (!modified.pop()) { - args.truncate(args.length() - orig->arity()); - args.push(TermList(orig)); - continue; - } - //here we assume, that stack is an array with - //second topmost element as &top()-1, third at - //&top()-2, etc... - TermList* argLst=&args.top() - (orig->arity()-1); - args.truncate(args.length() - orig->arity()); - - args.push(TermList(Term::create(orig,argLst))); - modified.setTop(true); - continue; - } - toDo.push(tt->next()); - - TermList tl=*tt; - if (tl.isVar()) { - args.push(tl); - continue; - } - ASS(tl.isTerm()); - Term* t=tl.term(); - - if(t->isLambdaTerm()){ replace++; } - - int index = t->deBruijnIndex(); - if(index > -1){ - if((unsigned)index == replace){ - //replace index with appropriately lifted term - TermList liftedTerm = lift(t2, replace); - args.push(liftedTerm); - modified.setTop(true); - continue; - } - if((unsigned)index > replace){ - //free index, decrement by one, as now surrounded by one less lambda. - args.push(getDeBruijnIndex(index - 1, SortHelper::getResultSort(t))); - modified.setTop(true); - continue; - } - } - - terms.push(t); - modified.push(false); - toDo.push(t->args()); - } - ASS(toDo.isEmpty()); - ASS(terms.isEmpty()); - ASS_EQ(modified.length(),1); - ASS_EQ(args.length(), 1); - - //original abstracted term being a lambda term must have - //arity 1. Currently, there is a problem if the abstractedTerm is of - //the form lam(X). In that case we want to return X, but X is not - //a term. - return args.top(); + return t.isApplication() && t.term()->nthArgument(2)->isLambdaTerm(); } + diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index da31dabd43..1a5cc39346 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -24,29 +24,49 @@ using namespace Kernel; using namespace Shell; -/** - * A class with function @b elimLambda() that eliminates a lambda expressions - * It does this by applying the well known rewrite rules for SKIBC combinators. - * - * These can be found: - * https://en.wikipedia.org/wiki/Combinatory_logic - */ -class ApplicativeHelper { +// reduce a term to normal form +// uses a applicative order reduction stragegy +// (inner-most left-most redex first) +class BetaNormaliser : public TermTransformer +{ +public: + + BetaNormaliser() { + recurseIntoReplaced(); + dontTransformSorts(); + } + TermList normalise(TermList t); + TermList transformSubterm(TermList t) override; +}; + +class RedexReducer : public TermTransformer +{ public: + TermList reduce(TermList redex); + TermList transformSubterm(TermList t) override; + void onTermEntry(Term* t) override; + void onTermExit(Term* t) override; - // reduce a term to normal form - // uses a applicative order reduction stragegy - // (inner-most left-most redex first) - class BetaNormaliser : public BottomUpTermTransformer - { - TermList transformSubterm(TermList t) override; - }; - - class RedexReducer : public TermTransformer - { - TermList reduce(TermList redex); - TermList transformSubterm(TermList t) override; - } +private: + TermList _t2; // term to replace index with (^x.t1) t2 + unsigned _replace; // index to replace +}; + +class TermLifter : public TermTransformer +{ +public: + TermList lift(TermList term, unsigned liftBy); + TermList transformSubterm(TermList t) override; + void onTermEntry(Term* t) override; + void onTermExit(Term* t) override; + +private: + unsigned _cutOff; // any index higher than _cutOff is a free index + unsigned _liftBy; // the amount to lift a free index by (the number of extra lambdas between it and its binder) +}; + +class ApplicativeHelper { +public: static TermList createAppTerm(TermList sort, TermList arg1, TermList arg2); static TermList createAppTerm(TermList s1, TermList s2, TermList arg1, TermList arg2, bool shared = true); @@ -71,8 +91,7 @@ class ApplicativeHelper { static bool isBool(TermList t); static bool isTrue(TermList term); static bool isFalse(TermList term); - // reduces a single redex - static TermList betaReduce(TermList redex); + static bool isRedex(TermList term); }; #endif // __ApplicativeHelper__ diff --git a/Kernel/Signature.cpp b/Kernel/Signature.cpp index 2bf7fb77fa..b0fd6f0c60 100644 --- a/Kernel/Signature.cpp +++ b/Kernel/Signature.cpp @@ -934,6 +934,8 @@ unsigned Signature::addDeBruijnIndex(int index, TermList sort, bool& added) } added = true; fun = addFreshFunction(0, "db"); + Symbol* sym = getFunction(fun); + sym->setDBIndex(index); _dbIndices.insert(sortIndexPair, fun); return fun; } diff --git a/Kernel/Signature.hpp b/Kernel/Signature.hpp index de98316054..7941f2b967 100644 --- a/Kernel/Signature.hpp +++ b/Kernel/Signature.hpp @@ -253,8 +253,12 @@ class Signature inline Proxy proxy(){ return _prox; } inline void setDBIndex(int index){ _dbIndex = index; } - inline int dbIndex(){ return _dbIndex; } - inline bool isDBIndex(){ return _dbIndex > -1; } + inline Option dbIndex(){ + if(_dbIndex > -1){ + return Option((unsigned)_dbIndex); + } + return Option(); + } inline void markInductionSkolem(){ _inductionSkolem=1; _skolem=1;} inline bool inductionSkolem(){ return _inductionSkolem;} diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 55f4695bad..fab5e64b1e 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -385,14 +385,14 @@ bool Term::isLambdaTerm() const { return !isSort() && !isLiteral() && env.signature->isLamFun(_functor); } -int TermList::deBruijnIndex() const { +Option TermList::deBruijnIndex() const { CALL("TermList::deBruijnIndex"); - return isVar() ? -1 : term()->deBruijnIndex(); + return isVar() ? Option() : term()->deBruijnIndex(); } -int Term::deBruijnIndex() const { +Option Term::deBruijnIndex() const { CALL("Term::deBruijnIndex"); - return isSort() || isLiteral() ? -1 : env.signature->getFunction(_functor)->dbIndex(); + return isSort() || isLiteral() ? Option() : env.signature->getFunction(_functor)->dbIndex(); } unsigned Term::numTypeArguments() const { diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 054e1bc13d..2c2ed178f7 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -184,7 +184,7 @@ class TermList { bool isRealSort(); bool isApplication() const; bool isLambdaTerm() const; - int deBruijnIndex() const; + Option deBruijnIndex() const; bool containsSubterm(TermList v); bool containsAllVariablesOf(TermList t); @@ -637,8 +637,8 @@ class Term bool isApplication() const; /** true if the term is a lambda term */ bool isLambdaTerm() const; - /** returns -1 if not a De Bruijn index and index otherwise */ - int deBruijnIndex() const; + /** returns empty option if not a De Bruijn index and index otherwise */ + Option deBruijnIndex() const; /** Return an index of the argument to which @b arg points */ unsigned getArgumentIndex(TermList* arg) diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index 249ae074a8..b4034a075f 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -34,7 +34,7 @@ namespace Kernel { * This class can be used to transform sort arguments as well by suitably * implementing the transform(TermList) function * - * TermTransformer goes top down but does no recurse into the replaced term + * TermTransformer goes top down */ class TermTransformer { public: diff --git a/Test/SyntaxSugar.hpp b/Test/SyntaxSugar.hpp index b2dd4455be..7368b2c38d 100644 --- a/Test/SyntaxSugar.hpp +++ b/Test/SyntaxSugar.hpp @@ -34,6 +34,7 @@ #include "Kernel/Signature.hpp" #include "Kernel/OperatorType.hpp" #include "Shell/TermAlgebra.hpp" +#include "Shell/LambdaConversion.hpp" #define __TO_SORT_RAT RationalConstantType::getSort() #define __TO_SORT_INT IntegerConstantType::getSort() @@ -122,11 +123,6 @@ #define DECL_VAR(x, i) auto x = TermSugar(TermList::var(i)); #define DECL_SORT_VAR(x, i) auto x = SortSugar(TermList::var(i)); #define DECL_HOL_VAR(x, i, s) auto x = TermSugar(TermList::var(i), s); -#define DECL_I_COMB(i) auto i = FuncSugar(env.signature->getCombinator(Signature::I_COMB)); -#define DECL_K_COMB(k) auto k = FuncSugar(env.signature->getCombinator(Signature::K_COMB)); -#define DECL_B_COMB(b) auto b = FuncSugar(env.signature->getCombinator(Signature::B_COMB)); -#define DECL_C_COMB(c) auto c = FuncSugar(env.signature->getCombinator(Signature::C_COMB)); -#define DECL_S_COMB(s) auto s = FuncSugar(env.signature->getCombinator(Signature::S_COMB)); #define DECL_DEFAULT_VARS \ __ALLOW_UNUSED( \ @@ -146,15 +142,6 @@ DECL_SORT_VAR(gamma, 103) \ ) -#define DECL_COMBINATORS \ - __ALLOW_UNUSED( \ - DECL_I_COMB(I) \ - DECL_K_COMB(K) \ - DECL_B_COMB(B) \ - DECL_C_COMB(C) \ - DECL_S_COMB(S) \ - ) - /** tldr: For examples on usage see UnitTesting/tSyntaxSugar.cpp * @@ -260,6 +247,7 @@ class SyntaxSugarGlobals public: static SyntaxSugarGlobals& instance() { _instance.setApply(); + _instance.setLambda(); return _instance; } @@ -272,6 +260,18 @@ class SyntaxSugarGlobals }; } + void setLambda() + { + lambda = [](TermList varSort, TermList var, TermList termSort, TermList term) { + VList* boundVar = new VList(var.var()); + SList* boundVarSort = new SList(varSort); + Term* lambdaTerm = Term::createLambda(term, boundVar, boundVarSort, termSort); + // convert to De Bruijn indices + TermList lam = LambdaConversion().convertLambda(lambdaTerm); + return lam; + }; + } + void setNumTraits(IntTraits) { setAllNumTraits(); @@ -292,6 +292,7 @@ class SyntaxSugarGlobals { setFracTraits(); } std::function apply; + std::function lambda; std::function createFraction; std::function createNumeral; @@ -448,6 +449,10 @@ inline TermSugar ap(TermSugar lhs, TermSugar rhs) { return syntaxSugarGlobals().apply(lhs.sort(), lhs, rhs); } +inline TermSugar lam(TermSugar var, TermSugar term) { + return syntaxSugarGlobals().lambda(var.sort(), var, term.sort(), term); +} + inline TermSugar operator+(TermSugar lhs, TermSugar rhs) { return syntaxSugarGlobals().add(lhs, rhs); } inline TermSugar operator*(TermSugar lhs, TermSugar rhs) { return syntaxSugarGlobals().mul(lhs, rhs); } inline TermSugar operator/(TermSugar lhs, TermSugar rhs) { return syntaxSugarGlobals().div(lhs, rhs); } From b760aad934212e7eca1b0125c09b24431ee7a571 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 6 Sep 2022 09:31:45 +0100 Subject: [PATCH 028/210] working on lambda higher-order calculus --- CASC/PortfolioMode.cpp | 4 + CMakeLists.txt | 10 +- Indexing/IndexManager.cpp | 20 +- Indexing/IndexManager.hpp | 1 - Indexing/LiteralSubstitutionTree.cpp | 5 +- Indexing/TermIndex.cpp | 53 +--- Indexing/TermIndex.hpp | 34 +- Indexing/TermSharing.cpp | 26 +- Inferences/ArgCong.cpp | 4 + Inferences/ArgCong.hpp | 4 + Inferences/BackwardDemodulation.cpp | 32 +- Inferences/BackwardDemodulation.hpp | 3 +- .../BackwardSubsumptionDemodulation.cpp | 4 +- Inferences/BetaNormaliser.cpp | 69 ++++ Inferences/BetaNormaliser.hpp | 42 +++ Inferences/BoolEqToDiseq.cpp | 10 +- Inferences/BoolEqToDiseq.hpp | 4 + Inferences/BoolSimp.cpp | 3 + Inferences/BoolSimp.hpp | 4 + Inferences/CNFOnTheFly.cpp | 4 + Inferences/CNFOnTheFly.hpp | 60 +--- Inferences/Cases.cpp | 4 + Inferences/Cases.hpp | 4 + Inferences/CasesSimp.cpp | 5 + Inferences/CasesSimp.hpp | 4 + Inferences/Choice.cpp | 4 + Inferences/Choice.hpp | 4 + Inferences/ForwardDemodulation.cpp | 22 +- Inferences/ForwardDemodulation.hpp | 15 +- Inferences/ForwardSubsumptionDemodulation.cpp | 4 +- Inferences/InferenceEngine.cpp | 122 ++++---- Inferences/InferenceEngine.hpp | 15 +- Inferences/NegativeExt.cpp | 4 + Inferences/NegativeExt.hpp | 4 + Inferences/RenamingOnTheFly.cpp | 294 ------------------ Inferences/RenamingOnTheFly.hpp | 62 ---- Inferences/Superposition.cpp | 15 +- Kernel/ApplicativeHelper.cpp | 85 +++-- Kernel/ApplicativeHelper.hpp | 23 +- Kernel/BestLiteralSelector.hpp | 26 +- Kernel/EqHelper.cpp | 4 + Kernel/EqHelper.hpp | 2 + Kernel/FormulaVarIterator.cpp | 4 +- Kernel/Inference.cpp | 68 +--- Kernel/Inference.hpp | 67 +--- Kernel/InferenceStore.cpp | 6 +- Kernel/MainLoop.cpp | 12 +- Kernel/MismatchHandler.cpp | 4 +- Kernel/MismatchHandler.hpp | 3 +- Kernel/Problem.cpp | 49 ++- Kernel/Problem.hpp | 17 +- Kernel/Signature.cpp | 48 +-- Kernel/Signature.hpp | 16 +- Kernel/SortHelper.cpp | 7 +- Kernel/SubformulaIterator.cpp | 2 + Kernel/Term.cpp | 149 ++++++++- Kernel/Term.hpp | 92 +++++- Kernel/TermIterators.cpp | 8 +- Kernel/TermIterators.hpp | 3 + Kernel/TermTransformer.cpp | 23 +- Kernel/TermTransformer.hpp | 31 +- Kernel/Unit.hpp | 4 - Parse/TPTP.cpp | 65 +++- Parse/TPTP.hpp | 6 + Saturation/AWPassiveClauseContainer.cpp | 2 + Saturation/SaturationAlgorithm.cpp | 79 +++-- Shell/FOOLElimination.cpp | 28 +- Shell/FOOLElimination.hpp | 2 + Shell/Flattening.cpp | 7 +- Shell/FunctionDefinition.cpp | 10 +- Shell/InequalitySplitting.cpp | 26 +- Shell/InequalitySplitting.hpp | 2 + Shell/LambdaConversion.cpp | 10 +- Shell/LambdaConversion.hpp | 4 + Shell/Naming.cpp | 17 +- Shell/Naming.hpp | 4 +- Shell/Normalisation.cpp | 4 +- Shell/Options.cpp | 59 +--- Shell/Options.hpp | 29 +- Shell/Preprocess.cpp | 59 +++- Shell/Preprocess.hpp | 2 +- Shell/Property.cpp | 48 ++- Shell/Property.hpp | 14 +- Shell/Rectify.cpp | 2 + Shell/Skolem.cpp | 14 +- Shell/Skolem.hpp | 6 +- Shell/SubexpressionIterator.cpp | 3 +- Shell/SymCounter.cpp | 2 + Shell/TPTPPrinter.cpp | 2 + Shell/TheoryAxioms.cpp | 7 +- Shell/UIHelper.cpp | 10 +- UnitTests/tBetaReduction.cpp | 89 ++++++ vampire.cpp | 6 +- 93 files changed, 1234 insertions(+), 1115 deletions(-) create mode 100644 Inferences/BetaNormaliser.cpp create mode 100644 Inferences/BetaNormaliser.hpp delete mode 100644 Inferences/RenamingOnTheFly.cpp delete mode 100644 Inferences/RenamingOnTheFly.hpp create mode 100644 UnitTests/tBetaReduction.cpp diff --git a/CASC/PortfolioMode.cpp b/CASC/PortfolioMode.cpp index 6c6ee2c5a0..ca5bd16058 100644 --- a/CASC/PortfolioMode.cpp +++ b/CASC/PortfolioMode.cpp @@ -239,11 +239,15 @@ void PortfolioMode::getExtraSchedules(Property& prop, Schedule& old, Schedule& e //extra_opts.push("etr=on"); // equational_tautology_removal extra_opts.push("av=on:atotf=0.5"); // turn AVATAR off +#if VHOL if(!prop.higherOrder()){ +#endif //these options are not currently HOL compatible extra_opts.push("bsd=on:fsd=on"); // subsumption demodulation extra_opts.push("to=lpo"); // lpo +#if VHOL } +#endif // If contains integers, rationals and reals if(prop.props() & (Property::PR_HAS_INTEGERS | Property::PR_HAS_RATS | Property::PR_HAS_REALS)){ diff --git a/CMakeLists.txt b/CMakeLists.txt index 34a7352aba..fdb851a0b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -318,8 +318,8 @@ set(VAMPIRE_KERNEL_SOURCES Indexing/TypeSubstitutionTree.hpp Inferences/CNFOnTheFly.cpp Inferences/CNFOnTheFly.hpp -# Inferences/CombinatorDemodISE.cpp -# Inferences/CombinatorDemodISE.hpp + Inferences/BetaNormaliser.cpp + Inferences/BetaNormaliser.hpp # Inferences/CombinatorNormalisationISE.hpp # Inferences/CombinatorNormalisationISE.cpp Inferences/ArgCong.hpp @@ -809,6 +809,12 @@ elseif(CMAKE_BUILD_TYPE STREQUAL Release) add_compile_definitions(VDEBUG=0) endif() +if(CMAKE_BUILD_HOL STREQUAL On) + add_compile_definitions(VHOL=1) +elseif(CMAKE_BUILD_HOL STREQUAL Off) + add_compile_definitions(VHOL=0) +endif() + if (CYGWIN) add_compile_definitions(_BSD_SOURCE) endif() diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 7558267acc..a11294df37 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -26,6 +26,8 @@ #include "TermIndex.hpp" #include "TermSubstitutionTree.hpp" +#include "Kernel/TermIterators.hpp" + #include "Shell/Statistics.hpp" #include "IndexManager.hpp" @@ -41,10 +43,12 @@ IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _handler() if(env.options->unificationWithAbstraction() != Options::UnificationWithAbstraction::OFF){ _handler.addHandler(make_unique(env.options->unificationWithAbstraction())); } +#if VHOL if((env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) && env.property->higherOrder()){ _handler.addHandler(make_unique()); } +#endif } IndexManager::~IndexManager() { } @@ -166,12 +170,6 @@ Index* IndexManager::create(IndexType t) isGenerating = false; break; - /*case RENAMING_FORMULA_INDEX: - tis=new TermSubstitutionTree(false, false, true); - res=new RenamingFormulaIndex(tis); - attachPassive = true; - break;*/ - case PRIMITIVE_INSTANTIATION_INDEX: tis=new TermSubstitutionTree(); res=new PrimitiveInstantiationIndex(tis); @@ -185,11 +183,15 @@ Index* IndexManager::create(IndexType t) case DEMODULATION_SUBTERM_SUBST_TREE: tis=new TermSubstitutionTree(); - if (env.options->combinatorySup()) { - res=new DemodulationSubtermIndexImpl(tis); +#if VHOL + if (env.property->higherOrder()) { + res=new DemodulationSubtermIndex(tis); } else { - res=new DemodulationSubtermIndexImpl(tis); +#endif + res=new DemodulationSubtermIndex(tis); +#if VHOL } +#endif isGenerating = false; break; case DEMODULATION_LHS_CODE_TREE: diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index ff71190ac5..762e3b1bd7 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -58,7 +58,6 @@ enum IndexType { ACYCLICITY_INDEX, PRIMITIVE_INSTANTIATION_INDEX, SKOLEMISING_FORMULA_INDEX, - RENAMING_FORMULA_INDEX, UNIT_INT_COMPARISON_INDEX, INDUCTION_TERM_INDEX, diff --git a/Indexing/LiteralSubstitutionTree.cpp b/Indexing/LiteralSubstitutionTree.cpp index 3d952bd212..25e925b384 100644 --- a/Indexing/LiteralSubstitutionTree.cpp +++ b/Indexing/LiteralSubstitutionTree.cpp @@ -35,7 +35,10 @@ LiteralSubstitutionTree::LiteralSubstitutionTree(MismatchHandler* hndlr) //However, there is no need to guard aginst it, as equalityProxy removes all //equality literals. The flag below is only used during the unification of //equality literals. - _polymorphic = env.property->hasPolymorphicSym() || env.property->higherOrder(); + _polymorphic = env.property->hasPolymorphicSym(); +#if VHOL + _polymorphic = _polymorphic || env.property->higherOrder(); +#endif } void LiteralSubstitutionTree::insert(Literal* lit, Clause* cls) diff --git a/Indexing/TermIndex.cpp b/Indexing/TermIndex.cpp index 6687c04251..68c1daedaa 100644 --- a/Indexing/TermIndex.cpp +++ b/Indexing/TermIndex.cpp @@ -74,11 +74,15 @@ void SuperpositionSubtermIndex::handleClause(Clause* c, bool adding) for (unsigned i=0; icombinatorySup()){ +#if VHOL + if(!env.property->higherOrder()){ +#endif rsti = EqHelper::getSubtermIterator(lit,_ord); +#if VHOL } else { rsti = EqHelper::getFoSubtermIterator(lit,_ord); } +#endif while (rsti.hasNext()) { if (adding) { _is->insert(rsti.next(), lit, c); @@ -112,8 +116,8 @@ void SuperpositionLHSIndex::handleClause(Clause* c, bool adding) } } -template -void DemodulationSubtermIndexImpl::handleClause(Clause* c, bool adding) +template +void DemodulationSubtermIndex::handleClause(Clause* c, bool adding) { CALL("DemodulationSubtermIndex::handleClause"); @@ -129,9 +133,7 @@ void DemodulationSubtermIndexImpl::handleClause(Clause* c // the removes could be called on different literals than the inserts! inserted.reset(); Literal* lit=(*c)[i]; - typename std::conditional::type it(lit); + SubtermIterator it(lit); while (it.hasNext()) { TermList t=it.next(); if (!inserted.insert(t)) {//TODO existing error? Terms are inserted once per a literal @@ -151,10 +153,10 @@ void DemodulationSubtermIndexImpl::handleClause(Clause* c } } -// This is necessary for templates defined in cpp files. -// We are happy to do it for DemodulationSubtermIndexImpl, since it (at the moment) has only two specializations: -template class DemodulationSubtermIndexImpl; -template class DemodulationSubtermIndexImpl; +#if VHOL +template class DemodulationSubtermIndex; +#endif +template class DemodulationSubtermIndex; void DemodulationLHSIndex::handleClause(Clause* c, bool adding) { @@ -411,36 +413,5 @@ void HeuristicInstantiationIndex::handleClause(Clause* c, bool adding) VList::destroy(boundVar); }*/ -void RenamingFormulaIndex::insertFormula(TermList formula, TermList name, - Literal* lit, Clause* cls) -{ - CALL("RenamingFormulaIndex::insertFormula"); - _is->insert(formula, name, lit, cls); -} - -void RenamingFormulaIndex::handleClause(Clause* c, bool adding) -{ - CALL("RenamingFormulaIndex::handleClause"); - - typedef ApplicativeHelper AH; - - for (unsigned i=0; ilength(); i++) { - Literal* lit=(*c)[i]; - NonVariableNonTypeIterator it(lit); - while (it.hasNext()) { - TermList trm = it.next(); - Term* t = trm.term(); - if(SortHelper::getResultSort(t) == AtomicSort::boolSort() && - AH::getProxy(AH::getHead(t)) != Signature::NOT_PROXY){ - if(adding){ - env.signature->incrementFormulaCount(t); - } else { - env.signature->decrementFormulaCount(t); - } - } - } - } -} - } // namespace Indexing diff --git a/Indexing/TermIndex.hpp b/Indexing/TermIndex.hpp index 9a249f9285..5e17ec56cb 100644 --- a/Indexing/TermIndex.hpp +++ b/Indexing/TermIndex.hpp @@ -81,28 +81,16 @@ class SuperpositionLHSIndex /** * Term index for backward demodulation */ +template class DemodulationSubtermIndex : public TermIndex { public: - // people seemed to like the class, although it add's no interface on top of TermIndex + CLASS_NAME(DemodulationSubtermIndex); + USE_ALLOCATOR(DemodulationSubtermIndex); + DemodulationSubtermIndex(TermIndexingStructure* is) : TermIndex(is) {}; -protected: - // it's the implementation of this below in DemodulationSubtermIndexImpl, which makes this work - void handleClause(Clause* c, bool adding) = 0; -}; - -template -class DemodulationSubtermIndexImpl -: public DemodulationSubtermIndex -{ -public: - CLASS_NAME(DemodulationSubtermIndexImpl); - USE_ALLOCATOR(DemodulationSubtermIndexImpl); - - DemodulationSubtermIndexImpl(TermIndexingStructure* is) - : DemodulationSubtermIndex(is) {}; protected: void handleClause(Clause* c, bool adding); }; @@ -207,19 +195,5 @@ class SkolemisingFormulaIndex Set _insertedInstantiations; };*/ -class RenamingFormulaIndex -: public TermIndex -{ -public: - CLASS_NAME(RenamingFormulaIndex); - USE_ALLOCATOR(RenamingFormulaIndex); - - RenamingFormulaIndex(TermIndexingStructure* is) : TermIndex(is) - {} - void insertFormula(TermList formula, TermList name, Literal* lit, Clause* cls); -protected: - void handleClause(Clause* c, bool adding); -}; - }; #endif /* __TermIndex__ */ diff --git a/Indexing/TermSharing.cpp b/Indexing/TermSharing.cpp index d605dcc499..bb624df69a 100644 --- a/Indexing/TermSharing.cpp +++ b/Indexing/TermSharing.cpp @@ -31,8 +31,6 @@ using namespace Kernel; using namespace Indexing; -typedef ApplicativeHelper AH; - /** * Initialise the term sharing structure. * @since 29/12/2007 Manchester @@ -80,8 +78,11 @@ void TermSharing::setPoly() { CALL("TermSharing::setPoly()"); - //combinatory superposiiton can introduce polymorphism into a monomorphic problem - _poly = env.property->higherOrder() || env.property->hasPolymorphicSym() || + _poly = +#if VHOL + env.property->higherOrder() || +#endif + env.property->hasPolymorphicSym() || (env.options->equalityProxy() != Options::EqualityProxy::OFF && !env.options->useMonoEqualityProxy()); } @@ -115,9 +116,11 @@ Term* TermSharing::insert(Term* t) if (s == t) { unsigned weight = 1; unsigned vars = 0; - bool hasInterpretedConstants=t->arity()==0 && - env.signature->getFunction(t->functor())->interpreted(); bool hasTermVar = false; + bool hasInterpretedConstants=t->arity()==0 && + env.signature->getFunction(t->functor())->interpreted(); + bool hasDBIndex = t->deBruijnIndex().isSome(); + bool hasRedex = t->isRedex(); Color color = COLOR_TRANSPARENT; unsigned typeArity = t->numTypeArguments(); @@ -140,12 +143,12 @@ Term* TermSharing::insert(Term* t) vars += r->numVarOccs(); weight += r->weight(); hasTermVar |= r->hasTermVar(); + hasDBIndex = hasDBIndex ? true : r->hasDBIndex(); + hasRedex = hasRedex ? true : r->hasRedex(); + hasInterpretedConstants = hasInterpretedConstants ? true : r->hasInterpretedConstants(); if (env.colorUsed) { color = static_cast(color | r->color()); } - if(!hasInterpretedConstants && r->hasInterpretedConstants()) { - hasInterpretedConstants=true; - } } } t->markShared(); @@ -153,12 +156,15 @@ Term* TermSharing::insert(Term* t) t->setNumVarOccs(vars); t->setWeight(weight); t->setHasTermVar(hasTermVar); + if (env.colorUsed) { Color fcolor = env.signature->getFunction(t->functor())->color(); color = static_cast(color | fcolor); t->setColor(color); } - + + t->setHasRedex(hasRedex); + t->setHasDBIndex(hasDBIndex); t->setInterpretedConstantsPresence(hasInterpretedConstants); _totalTerms++; diff --git a/Inferences/ArgCong.cpp b/Inferences/ArgCong.cpp index 7d51c8b456..c75029e814 100644 --- a/Inferences/ArgCong.cpp +++ b/Inferences/ArgCong.cpp @@ -12,6 +12,8 @@ * Implements class ArgCong. */ +#if VHOL + #include #include "Lib/VirtualIterator.hpp" @@ -162,3 +164,5 @@ ClauseIterator ArgCong::generateClauses(Clause* premise) } } + +#endif \ No newline at end of file diff --git a/Inferences/ArgCong.hpp b/Inferences/ArgCong.hpp index 089072636f..9a6007ffb4 100644 --- a/Inferences/ArgCong.hpp +++ b/Inferences/ArgCong.hpp @@ -16,6 +16,8 @@ #ifndef __ArgCong__ #define __ArgCong__ +#if VHOL + #include "Forwards.hpp" #include "InferenceEngine.hpp" @@ -44,4 +46,6 @@ class ArgCong }; +#endif + #endif /* __ArgCong__ */ diff --git a/Inferences/BackwardDemodulation.cpp b/Inferences/BackwardDemodulation.cpp index f616d2a48e..13a7852611 100644 --- a/Inferences/BackwardDemodulation.cpp +++ b/Inferences/BackwardDemodulation.cpp @@ -30,6 +30,7 @@ #include "Kernel/SortHelper.hpp" #include "Kernel/Term.hpp" #include "Kernel/RobSubstitution.hpp" +#include "Kernel/TermIterators.hpp" #include "Indexing/Index.hpp" #include "Indexing/TermIndex.hpp" @@ -49,15 +50,17 @@ using namespace Kernel; using namespace Indexing; using namespace Saturation; -void BackwardDemodulation::attach(SaturationAlgorithm* salg) +template +void BackwardDemodulation::attach(SaturationAlgorithm* salg) { CALL("BackwardDemodulation::attach"); BackwardSimplificationEngine::attach(salg); - _index=static_cast( + _index=static_cast*>( _salg->getIndexManager()->request(DEMODULATION_SUBTERM_SUBST_TREE) ); } -void BackwardDemodulation::detach() +template +void BackwardDemodulation::detach() { CALL("BackwardDemodulation::detach"); _index=0; @@ -65,7 +68,8 @@ void BackwardDemodulation::detach() BackwardSimplificationEngine::detach(); } -struct BackwardDemodulation::RemovedIsNonzeroFn +template +struct BackwardDemodulation::RemovedIsNonzeroFn { bool operator() (BwSimplificationRecord arg) { @@ -73,19 +77,20 @@ struct BackwardDemodulation::RemovedIsNonzeroFn } }; -struct BackwardDemodulation::RewritableClausesFn +template +struct BackwardDemodulation::RewritableClausesFn { - RewritableClausesFn(DemodulationSubtermIndex* index) : _index(index) {} + RewritableClausesFn(DemodulationSubtermIndex* index) : _index(index) {} VirtualIterator > operator() (TermList lhs) { return pvi( pushPairIntoRightIterator(lhs, _index->getInstances(lhs, true)) ); } private: - DemodulationSubtermIndex* _index; + DemodulationSubtermIndex* _index; }; - -struct BackwardDemodulation::ResultFn +template +struct BackwardDemodulation::ResultFn { typedef DHMultiset ClauseSet; @@ -245,8 +250,8 @@ struct BackwardDemodulation::ResultFn Ordering& _ordering; }; - -void BackwardDemodulation::perform(Clause* cl, +template +void BackwardDemodulation::perform(Clause* cl, BwSimplificationRecordIterator& simplifications) { CALL("BackwardDemodulation::perform"); @@ -274,4 +279,9 @@ void BackwardDemodulation::perform(Clause* cl, simplifications=getPersistentIterator(replacementIterator); } +#if VHOL +template class BackwardDemodulation; +#endif +template class BackwardDemodulation; + } diff --git a/Inferences/BackwardDemodulation.hpp b/Inferences/BackwardDemodulation.hpp index b83350dab6..7e471dae19 100644 --- a/Inferences/BackwardDemodulation.hpp +++ b/Inferences/BackwardDemodulation.hpp @@ -26,6 +26,7 @@ namespace Inferences { using namespace Indexing; using namespace Kernel; +template class BackwardDemodulation : public BackwardSimplificationEngine { @@ -42,7 +43,7 @@ class BackwardDemodulation struct RewritableClausesFn; struct ResultFn; - DemodulationSubtermIndex* _index; + DemodulationSubtermIndex* _index; }; }; diff --git a/Inferences/BackwardSubsumptionDemodulation.cpp b/Inferences/BackwardSubsumptionDemodulation.cpp index 979960abe1..0a84879758 100644 --- a/Inferences/BackwardSubsumptionDemodulation.cpp +++ b/Inferences/BackwardSubsumptionDemodulation.cpp @@ -489,7 +489,9 @@ bool BackwardSubsumptionDemodulation::rewriteCandidate(Clause* sideCl, Clause* m // TODO higher-order support not yet implemented; see forward demodulation // (maybe it's enough to just use the different iterator) - ASS(!env.options->combinatorySup()); +#if VHOL + ASS(!env.property->higherOrder()); +#endif NonVariableNonTypeIterator nvi(dlit); while (nvi.hasNext()) { TermList lhsS = nvi.next(); // named 'lhsS' because it will be matched against 'lhs' diff --git a/Inferences/BetaNormaliser.cpp b/Inferences/BetaNormaliser.cpp new file mode 100644 index 0000000000..e3c410dc13 --- /dev/null +++ b/Inferences/BetaNormaliser.cpp @@ -0,0 +1,69 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file CombinatorDemodISE.cpp + * Implements class CombinatorDemodISE. + */ + +#if VHOL + +#include "Kernel/Term.hpp" +#include "Kernel/Clause.hpp" +#include "Kernel/ApplicativeHelper.hpp" +#include "Kernel/TermIterators.hpp" +#include "Kernel/Inference.hpp" +#include "Kernel/SortHelper.hpp" +#include "Shell/Statistics.hpp" +#include "BetaNormaliser.hpp" + +using namespace Lib; +using namespace Kernel; +using namespace Inferences; + + +Clause* BetaSimplify::simplify(Clause* c) +{ + CALL("BetaSimplify::simplify"); + + Literal* newLit; + LiteralStack litStack; + bool modified = false; + + for(unsigned i = 0; i < c->length(); i++){ + Literal* lit = (*c)[i]; + ASS(lit->isEquality()); + TermList t0 = *lit->nthArgument(0); + TermList t1 = *lit->nthArgument(1); + + TermList t0r = BetaNormaliser().normalise(t0); + TermList t1r = BetaNormaliser().normalise(t1); + + + if((t0r != t0) || (t1r != t1)){ + modified = true; + newLit = Literal::createEquality(lit->polarity(), t0r, t1r, SortHelper::getResultSort(t0.term())); + litStack.push(newLit); + continue; + } + litStack.push(lit); + } + + if(!modified){ + return c; + } + + Inference inf = SimplifyingInference1(InferenceRule::BETA_NORMALISE, c); + Clause* newC = Clause::fromStack(litStack, inf); + + return newC; +} + +#endif + diff --git a/Inferences/BetaNormaliser.hpp b/Inferences/BetaNormaliser.hpp new file mode 100644 index 0000000000..7f3913e8e2 --- /dev/null +++ b/Inferences/BetaNormaliser.hpp @@ -0,0 +1,42 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file CombinatorDemodISE.hpp + * Defines class CombinatorDemodISE. + */ + + +#ifndef __BetaSimplify__ +#define __BetaSimplify__ + +#if VHOL + +#include "Forwards.hpp" +#include "InferenceEngine.hpp" +#include "Kernel/TermTransformer.hpp" + +namespace Inferences { + + +class BetaSimplify +: public ImmediateSimplificationEngine +{ +public: + CLASS_NAME(BetaSimplify); + USE_ALLOCATOR(BetaSimplify); + + Clause* simplify(Clause* cl); +}; + +}; + +#endif + +#endif /* __CombinatorDemodISE__ */ diff --git a/Inferences/BoolEqToDiseq.cpp b/Inferences/BoolEqToDiseq.cpp index 4cbd3f42f2..1ad6bb6eb6 100644 --- a/Inferences/BoolEqToDiseq.cpp +++ b/Inferences/BoolEqToDiseq.cpp @@ -12,6 +12,8 @@ * Implements class PrimitiveInstantiation. */ +#if VHOL + #include "Debug/RuntimeStatistics.hpp" #include "Kernel/OperatorType.hpp" @@ -56,14 +58,14 @@ ClauseIterator BoolEqToDiseq::generateClauses(Clause* cl) continue; } TermList eqSort = SortHelper::getEqualityArgumentSort(lit); - if(eqSort == AtomicSort::boolSort()){ + if(eqSort.isBoolSort()){ TermList lhs = *lit->nthArgument(0); TermList rhs = *lit->nthArgument(1); if(AH::isBool(lhs) || AH::isBool(rhs)){ pos++; continue; } - TermList head = AH::getHead(lhs); + TermList head = lhs.head(); if(!head.isVar()){ Signature::Symbol* sym = env.signature->getFunction(head.term()->functor()); if(sym->proxy() != Signature::NOT){ @@ -74,7 +76,7 @@ ClauseIterator BoolEqToDiseq::generateClauses(Clause* cl) goto afterLoop; } } - head = AH::getHead(rhs); + head = rhs.head(); if(!head.isVar()){ Signature::Symbol* sym = env.signature->getFunction(head.term()->functor()); if(sym->proxy() != Signature::NOT){ @@ -104,3 +106,5 @@ ClauseIterator BoolEqToDiseq::generateClauses(Clause* cl) } } + +#endif diff --git a/Inferences/BoolEqToDiseq.hpp b/Inferences/BoolEqToDiseq.hpp index 36cd9a685a..e0b8cea0e0 100644 --- a/Inferences/BoolEqToDiseq.hpp +++ b/Inferences/BoolEqToDiseq.hpp @@ -15,6 +15,8 @@ #ifndef __BoolEqToDiseq__ #define __BoolEqToDiseq__ +#if VHOL + #include "Forwards.hpp" #include "InferenceEngine.hpp" @@ -34,3 +36,5 @@ class BoolEqToDiseq : public GeneratingInferenceEngine } #endif + +#endif diff --git a/Inferences/BoolSimp.cpp b/Inferences/BoolSimp.cpp index d2069ac6c4..7c83f3eb1a 100644 --- a/Inferences/BoolSimp.cpp +++ b/Inferences/BoolSimp.cpp @@ -8,6 +8,7 @@ * and in the source directory */ +#if VHOL #include "Lib/Environment.hpp" @@ -189,3 +190,5 @@ TermList BoolSimp::boolSimplify(TermList term){ } + +#endif \ No newline at end of file diff --git a/Inferences/BoolSimp.hpp b/Inferences/BoolSimp.hpp index 367bd07b3f..e81bc957fc 100644 --- a/Inferences/BoolSimp.hpp +++ b/Inferences/BoolSimp.hpp @@ -15,6 +15,8 @@ #ifndef __BOOL_SIMP__ #define __BOOL_SIMP__ +#if VHOL + #include "Forwards.hpp" #include "InferenceEngine.hpp" @@ -37,3 +39,5 @@ class BoolSimp : public ImmediateSimplificationEngine } #endif + +#endif diff --git a/Inferences/CNFOnTheFly.cpp b/Inferences/CNFOnTheFly.cpp index 3d580a3e4e..6f03675c2c 100644 --- a/Inferences/CNFOnTheFly.cpp +++ b/Inferences/CNFOnTheFly.cpp @@ -12,6 +12,8 @@ * */ +#if VHOL + #include "Lib/Environment.hpp" #include "Kernel/Clause.hpp" @@ -808,3 +810,5 @@ ClauseIterator LazyClausification::perform(Clause* c) } + +#endif \ No newline at end of file diff --git a/Inferences/CNFOnTheFly.hpp b/Inferences/CNFOnTheFly.hpp index c6ef4ffa4a..c708b7774a 100644 --- a/Inferences/CNFOnTheFly.hpp +++ b/Inferences/CNFOnTheFly.hpp @@ -15,6 +15,8 @@ #ifndef __CNFOnTheFly__ #define __CNFOnTheFly__ +#if VHOL + #include "Forwards.hpp" #include "InferenceEngine.hpp" #include "Kernel/Term.hpp" @@ -95,63 +97,9 @@ class LazyClausificationGIE SkolemisingFormulaIndex* _formulaIndex; }; -/*class NotProxyISE - : public ImmediateSimplificationEngine -{ -public: - CLASS_NAME(NotProxyISE); - USE_ALLOCATOR(NotProxyISE); - - Kernel::Clause* simplify(Kernel::Clause* c); -}; - - -class EqualsProxyISE - : public ImmediateSimplificationEngine -{ - -public: - CLASS_NAME(EqualsProxyISE); - USE_ALLOCATOR(EqualsProxyISE); - - Kernel::Clause* simplify(Kernel::Clause* c); -}; - - -class OrImpAndProxyISE - : public ImmediateSimplificationEngine -{ - -public: - CLASS_NAME(OrImpAndProxyISE); - USE_ALLOCATOR(OrImpAndProxyISE); - - Kernel::Clause* simplify(Kernel::Clause* c); -}; - - -class PiSigmaProxyISE - : public ImmediateSimplificationEngine -{ - -public: - CLASS_NAME(PiSigmaProxyISE); - USE_ALLOCATOR(PiSigmaProxyISE); - - Kernel::Clause* simplify(Kernel::Clause* c); -}; - - -class ProxyISE - : public ImmediateSimplificationEngine { - public: - CLASS_NAME(ProxyISE); - USE_ALLOCATOR(ProxyISE); - ClauseIterator simplifyMany(Clause* c); - Clause* simplify(Clause* c){ NOT_IMPLEMENTED; } -};*/ - } #endif + +#endif diff --git a/Inferences/Cases.cpp b/Inferences/Cases.cpp index 9e60675f6e..05a65736a0 100644 --- a/Inferences/Cases.cpp +++ b/Inferences/Cases.cpp @@ -17,6 +17,8 @@ * [1] http://arxiv.org/abs/1505.01682 */ +#if VHOL + #include "Lib/Environment.hpp" #include "Kernel/Clause.hpp" @@ -120,3 +122,5 @@ ClauseIterator Cases::generateClauses(Clause* premise) } } + +#endif diff --git a/Inferences/Cases.hpp b/Inferences/Cases.hpp index d7f4eef6bd..b025ba4945 100644 --- a/Inferences/Cases.hpp +++ b/Inferences/Cases.hpp @@ -15,6 +15,8 @@ #ifndef __Cases__ #define __Cases__ +#if VHOL + #include "Forwards.hpp" #include "InferenceEngine.hpp" @@ -35,3 +37,5 @@ class Cases : public GeneratingInferenceEngine { } #endif + +#endif diff --git a/Inferences/CasesSimp.cpp b/Inferences/CasesSimp.cpp index 587b3221f7..f97b8a1b19 100644 --- a/Inferences/CasesSimp.cpp +++ b/Inferences/CasesSimp.cpp @@ -17,6 +17,8 @@ * [1] http://arxiv.org/abs/1505.01682 */ +#if VHOL + #include "Lib/Environment.hpp" #include "Kernel/Clause.hpp" @@ -131,3 +133,6 @@ ClauseIterator CasesSimp::simplifyMany(Clause* premise) } } + +#endif + diff --git a/Inferences/CasesSimp.hpp b/Inferences/CasesSimp.hpp index c5fbbb4902..a766294def 100644 --- a/Inferences/CasesSimp.hpp +++ b/Inferences/CasesSimp.hpp @@ -15,6 +15,8 @@ #ifndef __CASES_SIMP__ #define __CASES_SIMP__ +#if VHOL + #include "Forwards.hpp" #include "InferenceEngine.hpp" @@ -45,3 +47,5 @@ class CasesSimp : public ImmediateSimplificationEngine { } #endif + +#endif diff --git a/Inferences/Choice.cpp b/Inferences/Choice.cpp index af5e03fb2a..0f9f490eca 100644 --- a/Inferences/Choice.cpp +++ b/Inferences/Choice.cpp @@ -12,6 +12,8 @@ * Implements class PrimitiveInstantiation. */ +#if VHOL + #include "Debug/RuntimeStatistics.hpp" #include "Saturation/SaturationAlgorithm.hpp" @@ -225,3 +227,5 @@ ClauseIterator Choice::generateClauses(Clause* premise) } } + +#endif diff --git a/Inferences/Choice.hpp b/Inferences/Choice.hpp index 70bbfb32e7..8b93170583 100644 --- a/Inferences/Choice.hpp +++ b/Inferences/Choice.hpp @@ -15,6 +15,8 @@ #ifndef __CHOICE__ #define __CHOICE__ +#if VHOL + #include "Forwards.hpp" #include "InferenceEngine.hpp" @@ -40,3 +42,5 @@ class Choice : public GeneratingInferenceEngine } #endif + +#endif diff --git a/Inferences/ForwardDemodulation.cpp b/Inferences/ForwardDemodulation.cpp index 67a5bf0abd..9bc3f0753e 100644 --- a/Inferences/ForwardDemodulation.cpp +++ b/Inferences/ForwardDemodulation.cpp @@ -51,7 +51,8 @@ using namespace Kernel; using namespace Indexing; using namespace Saturation; -void ForwardDemodulation::attach(SaturationAlgorithm* salg) +template +void ForwardDemodulation::attach(SaturationAlgorithm* salg) { CALL("ForwardDemodulation::attach"); ForwardSimplificationEngine::attach(salg); @@ -62,7 +63,8 @@ void ForwardDemodulation::attach(SaturationAlgorithm* salg) _encompassing = getOptions().demodulationEncompassment(); } -void ForwardDemodulation::detach() +template +void ForwardDemodulation::detach() { CALL("ForwardDemodulation::detach"); _index=0; @@ -70,8 +72,8 @@ void ForwardDemodulation::detach() ForwardSimplificationEngine::detach(); } -template -bool ForwardDemodulationImpl::perform(Clause* cl, Clause*& replacement, ClauseIterator& premises) +template +bool ForwardDemodulation::perform(Clause* cl, Clause*& replacement, ClauseIterator& premises) { CALL("ForwardDemodulation::perform"); @@ -89,9 +91,7 @@ bool ForwardDemodulationImpl::perform(Clause* cl, Clause* unsigned cLen=cl->length(); for(unsigned li=0;li::type it(lit); + SubtermIterator it(lit); while(it.hasNext()) { TermList trm=it.next(); if(!attempted.insert(trm)) { @@ -253,9 +253,9 @@ bool ForwardDemodulationImpl::perform(Clause* cl, Clause* return false; } -// This is necessary for templates defined in cpp files. -// We are happy to do it for ForwardDemodulationImpl, since it (at the moment) has only two specializations: -template class ForwardDemodulationImpl; -template class ForwardDemodulationImpl; +#if VHOL +template class ForwardDemodulation; +#endif +template class ForwardDemodulation; } diff --git a/Inferences/ForwardDemodulation.hpp b/Inferences/ForwardDemodulation.hpp index c6f3834bce..e3e6ba7eb0 100644 --- a/Inferences/ForwardDemodulation.hpp +++ b/Inferences/ForwardDemodulation.hpp @@ -28,6 +28,7 @@ using namespace Kernel; using namespace Indexing; using namespace Saturation; +template class ForwardDemodulation : public ForwardSimplificationEngine { @@ -37,25 +38,13 @@ class ForwardDemodulation void attach(SaturationAlgorithm* salg) override; void detach() override; - bool perform(Clause* cl, Clause*& replacement, ClauseIterator& premises) override = 0; + bool perform(Clause* cl, Clause*& replacement, ClauseIterator& premises) override; protected: bool _preorderedOnly; bool _encompassing; DemodulationLHSIndex* _index; }; -template -class ForwardDemodulationImpl -: public ForwardDemodulation -{ -public: - CLASS_NAME(ForwardDemodulationImpl); - USE_ALLOCATOR(ForwardDemodulationImpl); - - bool perform(Clause* cl, Clause*& replacement, ClauseIterator& premises) override; -private: -}; - }; diff --git a/Inferences/ForwardSubsumptionDemodulation.cpp b/Inferences/ForwardSubsumptionDemodulation.cpp index 4ec919cab9..c79b8e9d9c 100644 --- a/Inferences/ForwardSubsumptionDemodulation.cpp +++ b/Inferences/ForwardSubsumptionDemodulation.cpp @@ -406,7 +406,9 @@ bool ForwardSubsumptionDemodulation::perform(Clause* cl, Clause*& replacement, C // TODO higher-order support not yet implemented; see forward demodulation // (maybe it's enough to just use the different iterator) - ASS(!env.options->combinatorySup()); +#if VHOL + ASS(!env.property->higherOrder()); +#endif NonVariableNonTypeIterator nvi(dlit); while (nvi.hasNext()) { TermList lhsS = nvi.next(); // named 'lhsS' because it will be matched against 'lhs' diff --git a/Inferences/InferenceEngine.cpp b/Inferences/InferenceEngine.cpp index 73fd408f13..01057d8b91 100644 --- a/Inferences/InferenceEngine.cpp +++ b/Inferences/InferenceEngine.cpp @@ -41,7 +41,9 @@ using namespace Kernel; using namespace Indexing; using namespace Saturation; +#if VHOL typedef ApplicativeHelper AH; +#endif /** * Return options that control the inference engine. @@ -265,6 +267,8 @@ CompositeSGI::~CompositeSGI() { } } +#if VHOL + Clause* ChoiceDefinitionISE::simplify(Clause* c) { CALL("ChoiceDefinitionISE::simplify"); @@ -334,6 +338,64 @@ bool ChoiceDefinitionISE::is_of_form_xfx(Literal* lit, TermList x, TermList& f){ return false; } +Clause* TautologyDeletionISE2::simplify(Clause* c) +{ + CALL("TautologyDeletionISE2::simplify"); + + typedef ApplicativeHelper AH; + + static LiteralStack negLits; + static LiteralStack posLits; + + negLits.reset(); + posLits.reset(); + + for(unsigned i = 0; i < c->length(); i++){ + Literal* lit = (*c)[i]; + TermList lhs = *lit->nthArgument(0); + TermList rhs = *lit->nthArgument(1); + if(!lit->polarity() && AH::isBool(lhs) && AH::isBool(rhs) && + (AH::isTrue(lhs) != AH::isTrue(rhs))){ + //false != true + return 0; + } else if(AH::isBool(lhs) && AH::isBool(rhs)){ + continue; + } + + if(AH::isBool(lhs)){ + AH::isTrue(lhs) == lit->polarity() ? posLits.push(lit) : negLits.push(lit); + } else if (AH::isBool(rhs)){ + AH::isTrue(rhs) == lit->polarity() ? posLits.push(lit) : negLits.push(lit); + } + } + + for(unsigned i =0; i < posLits.size(); i++){ + Literal* posLit = posLits[i]; + TermList posNonBooleanSide = *posLit->nthArgument(0); + if(AH::isBool(posNonBooleanSide)){ + posNonBooleanSide = *posLit->nthArgument(1); + } + ASS(!AH::isBool(posNonBooleanSide)); + for(unsigned j = 0; j < negLits.size(); j++){ + Literal* negLit = negLits[j]; + TermList negNonBooleanSide = *negLit->nthArgument(0); + if(AH::isBool(negNonBooleanSide)){ + negNonBooleanSide = *negLit->nthArgument(1); + } + ASS_REP(!AH::isBool(negNonBooleanSide), negLit->toString()); + if(posNonBooleanSide == negNonBooleanSide){ + //t = true \/ t = false + //t = true \/ t != true + return 0; + } + } + } + + return c; +} + +#endif //VHOL + Clause* DuplicateLiteralRemovalISE::simplify(Clause* c) { CALL("DuplicateLiteralRemovalISE::simplify"); @@ -428,70 +490,12 @@ Clause* DuplicateLiteralRemovalISE::simplify(Clause* c) return d; } -Clause* TautologyDeletionISE2::simplify(Clause* c) -{ - CALL("TautologyDeletionISE2::simplify"); - - typedef ApplicativeHelper AH; - - static LiteralStack negLits; - static LiteralStack posLits; - - negLits.reset(); - posLits.reset(); - - for(unsigned i = 0; i < c->length(); i++){ - Literal* lit = (*c)[i]; - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - if(!lit->polarity() && AH::isBool(lhs) && AH::isBool(rhs) && - (AH::isTrue(lhs) != AH::isTrue(rhs))){ - //false != true - return 0; - } else if(AH::isBool(lhs) && AH::isBool(rhs)){ - continue; - } - - if(AH::isBool(lhs)){ - AH::isTrue(lhs) == lit->polarity() ? posLits.push(lit) : negLits.push(lit); - } else if (AH::isBool(rhs)){ - AH::isTrue(rhs) == lit->polarity() ? posLits.push(lit) : negLits.push(lit); - } - } - - for(unsigned i =0; i < posLits.size(); i++){ - Literal* posLit = posLits[i]; - TermList posNonBooleanSide = *posLit->nthArgument(0); - if(AH::isBool(posNonBooleanSide)){ - posNonBooleanSide = *posLit->nthArgument(1); - } - ASS(!AH::isBool(posNonBooleanSide)); - for(unsigned j = 0; j < negLits.size(); j++){ - Literal* negLit = negLits[j]; - TermList negNonBooleanSide = *negLit->nthArgument(0); - if(AH::isBool(negNonBooleanSide)){ - negNonBooleanSide = *negLit->nthArgument(1); - } - ASS_REP(!AH::isBool(negNonBooleanSide), negLit->toString()); - if(posNonBooleanSide == negNonBooleanSide){ - //t = true \/ t = false - //t = true \/ t != true - return 0; - } - } - } - - return c; -} - Clause* TrivialInequalitiesRemovalISE::simplify(Clause* c) { CALL("TrivialInequalitiesRemovalISE::simplify"); static DArray lits(32); - typedef ApplicativeHelper AH; - int length = c->length(); int j = 0; lits.ensure(length); @@ -504,11 +508,13 @@ Clause* TrivialInequalitiesRemovalISE::simplify(Clause* c) } TermList* t1 = l->args(); TermList* t2 = t1->next(); +#if VHOL if((AH::isTrue(*t1) && AH::isFalse(*t2) && l->polarity()) || (AH::isTrue(*t2) && AH::isFalse(*t1) && l->polarity())){ found++; continue; } +#endif if(l->isPositive()){ lits[j++] = l; continue; diff --git a/Inferences/InferenceEngine.hpp b/Inferences/InferenceEngine.hpp index 216f6c2524..d101b432f6 100644 --- a/Inferences/InferenceEngine.hpp +++ b/Inferences/InferenceEngine.hpp @@ -426,6 +426,7 @@ class CompositeSGI Stack _generators; }; +#if VHOL //removes clauses which define choice operators class ChoiceDefinitionISE : public ImmediateSimplificationEngine @@ -442,22 +443,24 @@ class ChoiceDefinitionISE bool is_of_form_xfx(Literal* lit, TermList x, TermList& f); }; -class DuplicateLiteralRemovalISE +class TautologyDeletionISE2 : public ImmediateSimplificationEngine { public: - CLASS_NAME(DuplicateLiteralRemovalISE); - USE_ALLOCATOR(DuplicateLiteralRemovalISE); + CLASS_NAME(TautologyDeletionISE2); + USE_ALLOCATOR(TautologyDeletionISE2); Clause* simplify(Clause* cl); }; -class TautologyDeletionISE2 +#endif + +class DuplicateLiteralRemovalISE : public ImmediateSimplificationEngine { public: - CLASS_NAME(TautologyDeletionISE2); - USE_ALLOCATOR(TautologyDeletionISE2); + CLASS_NAME(DuplicateLiteralRemovalISE); + USE_ALLOCATOR(DuplicateLiteralRemovalISE); Clause* simplify(Clause* cl); }; diff --git a/Inferences/NegativeExt.cpp b/Inferences/NegativeExt.cpp index 9049b870ac..f59da72c01 100644 --- a/Inferences/NegativeExt.cpp +++ b/Inferences/NegativeExt.cpp @@ -12,6 +12,8 @@ * Implements class NegativeExt. */ +#if VHOL + #include #include "Lib/VirtualIterator.hpp" @@ -187,3 +189,5 @@ ClauseIterator NegativeExt::generateClauses(Clause* premise) } } + +#endif diff --git a/Inferences/NegativeExt.hpp b/Inferences/NegativeExt.hpp index 58b1f87666..1a357953dc 100644 --- a/Inferences/NegativeExt.hpp +++ b/Inferences/NegativeExt.hpp @@ -16,6 +16,8 @@ #ifndef __NegativeExt__ #define __NegativeExt__ +#if VHOL + #include "Forwards.hpp" #include "InferenceEngine.hpp" @@ -43,4 +45,6 @@ class NegativeExt }; +#endif + #endif /* __NegativeExt__ */ diff --git a/Inferences/RenamingOnTheFly.cpp b/Inferences/RenamingOnTheFly.cpp deleted file mode 100644 index edca725d26..0000000000 --- a/Inferences/RenamingOnTheFly.cpp +++ /dev/null @@ -1,294 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file ProxyElimination.cpp - * - */ - -#include "Lib/Environment.hpp" - -#include "Kernel/Clause.hpp" -#include "Kernel/EqHelper.hpp" -#include "Kernel/Inference.hpp" -#include "Kernel/Signature.hpp" -#include "Kernel/Term.hpp" -#include "Kernel/TermIterators.hpp" -#include "Kernel/Signature.hpp" -#include "Kernel/OperatorType.hpp" -#include "Kernel/SortHelper.hpp" -#include "Kernel/ApplicativeHelper.hpp" - -#include "Shell/Statistics.hpp" -#include "Shell/Skolem.hpp" - -#include "Saturation/SaturationAlgorithm.hpp" - -#include "RenamingOnTheFly.hpp" - -namespace Inferences { -using namespace Indexing; - -typedef ApplicativeHelper AH; - -void RenamingOnTheFly::attach(SaturationAlgorithm* salg) -{ - CALL("RenamingOnTheFly::attach"); - - SimplificationEngine::attach(salg); - _formulaIndex=static_cast ( - _salg->getIndexManager()->request(RENAMING_FORMULA_INDEX) ); -} - -void RenamingOnTheFly::detach() -{ - CALL("RenamingOnTheFly::detach"); - - _formulaIndex=0; - _salg->getIndexManager()->release(RENAMING_FORMULA_INDEX); - SimplificationEngine::detach(); -} - -ClauseIterator RenamingOnTheFly::produceClauses(Clause* c) -{ - CALL("RenamingOnTheFly::produceClauses"); - - //0 means dont rename - static int namingBound = env.options->naming(); - - TermList troo = TermList(Term::foolTrue()); - TermList boolSort = AtomicSort::boolSort(); - - unsigned clen = c->length(); - UnitList* defs = 0; - ClauseStack newClauses; - LiteralStack lits; - static TermStack args; - TermList head; - bool modified = false; - - for(unsigned i = 0; inthArgument(0); - TermList rhs = *lit->nthArgument(1); - TermList formula; - TermList boolVal; - if(AH::isBool(lhs)){ - boolVal = lhs; - formula = rhs; - } else if(AH::isBool(rhs)){ - boolVal = rhs; - formula = lhs; - } else { - lits.push(lit); - continue; - } - - bool positive = AH::isTrue(boolVal) == lit->polarity(); - - AH::getHeadAndArgs(formula, head, args); - Signature::Proxy prox = AH::getProxy(head); - - if(prox != Signature::NOT_PROXY){ - auto results = _formulaIndex->getGeneralizations(formula, true); - - bool nameExists = false; - bool needToAddDefClause = true; - TermQueryResult tqr; - TermList nameS; - TermList name; - while(results.hasNext()){ - nameExists = true; - tqr = results.next(); - - name = tqr.term; - nameS = tqr.substitution->applyToBoundResult(name); - - Literal* defLit = tqr.literal; - if(positive == defLit->polarity()){ - needToAddDefClause = false; - break; - } - } - - if(nameExists){ - //cout << "the clause is " + c->toString() << endl; - //cout << "the formula is " + formula.toString() << endl; - //cout << "the name is " + name.toString() << endl; - //cout << "the lit is " + tqr.literal->toString() << endl; - //cout << "other clause is " + tqr.clause->toString() << endl; - //cout << "the sub is " + tqr.substitution->toString() << endl; - Literal* newLit = Literal::createEquality(positive, nameS, troo, boolSort); - if(needToAddDefClause){ - Clause* defClause = tqr.clause; - ASS(defClause->size() == 2); - Literal* l1 = (*defClause)[0]; - Literal* l2 = (*defClause)[1]; - Literal* l1RevPol = Literal::complementaryLiteral(l1); - Literal* l2RevPol = Literal::complementaryLiteral(l2); - Inference* inf = new Inference(Inference::PREDICATE_DEFINITION); - Clause* defClauseRevPol = new(2) Clause(2, Unit::AXIOM, inf); - (*defClauseRevPol)[0] = l1RevPol; - (*defClauseRevPol)[1] = l2RevPol; - UnitList::push(defClauseRevPol, defs); - newClauses.push(defClauseRevPol); - if(isNamingLit(l1)){ - addToQueue(getFormula(l2), name, l1RevPol, defClauseRevPol); - } else { - addToQueue(getFormula(l1), name, l2RevPol, defClauseRevPol); - } - } - lits.push(newLit); - modified = true; - continue; - } - - if(namingBound > 0 && - env.signature->formulaCount(formula.term()) >= namingBound) { - env.signature->formulaNamed(formula.term()); - - //create name - static DHMap varSorts; - varSorts.reset(); - - VariableIterator2 vit(formula.term()); - while(vit.hasNext()){ - pair varTypePair = vit.next(); - if(!varSorts.find(varTypePair.first.var())){ - varSorts.insert(varTypePair.first.var(), varTypePair.second); - } - } - - static Stack argSorts; - static Stack termArgs; - static Stack args; - argSorts.reset(); - termArgs.reset(); - args.reset(); - - unsigned var; - TermList varSort; - DHMap::Iterator mapIt(varSorts); - while(mapIt.hasNext()) { - mapIt.next(var, varSort); - if(varSort == AtomicSort::superSort()){ - args.push(TermList(var, false)); - } else { - argSorts.push(varSort); - termArgs.push(TermList(var, false)); - } - } - ASS(termArgs.size() == argSorts.size()); - - VList* vl = VList::empty(); - for(int i = args.size() -1; i >= 0 ; i--){ - VList::push(args[i].var(), vl); - } - - unsigned fun = env.signature->addNameFunction(args.size()); - TermList sort = AtomicSort::arrowSort(argSorts, AtomicSort::boolSort()); - Signature::Symbol* sym = env.signature->getFunction(fun); - sym->setType(OperatorType::getConstantsType(sort, vl)); - TermList funApplied = TermList(Term::create(fun, args.size(), args.begin())); - TermList name = AH::createAppTerm(sort, funApplied, termArgs); - - - //create definition clause - Inference* inf = new Inference(Inference::PREDICATE_DEFINITION); - Clause* defClause = new(2) Clause(2, Unit::AXIOM, inf); - Literal* l1 = Literal::createEquality(!positive, name, troo, boolSort); - Literal* l2 = Literal::createEquality(positive, formula, troo, boolSort); - (*defClause)[0] = l1; - (*defClause)[1] = l2; - UnitList::push(defClause, defs); - newClauses.push(defClause); - addToQueue(formula, name, l1, defClause); - - Literal* newLit = Literal::createEquality(positive, name, troo, boolSort); - lits.push(newLit); - modified = true; - continue; - } - - lits.push(lit); - continue; - } - lits.push(lit); - - } - - if(!modified){ - ASS(newClauses.isEmpty()); - return ClauseIterator::getEmpty(); - } - - UnitList::push(c, defs); - Inference* inf = new InferenceMany(Inference::DEFINITION_FOLDING, defs); - Clause* res = Clause::fromStack(lits, c->inputType(), inf); - newClauses.push(res); - return pvi(getUniquePersistentIterator(ClauseStack::Iterator(newClauses))); -} - -ClauseIterator RenamingOnTheFly::perform(Clause* c) -{ - CALL("RenamingOnTheFly::perform"); - - if(c->inference()->rule() == Inference::PREDICATE_DEFINITION){ - //dont want to name definitions - return ClauseIterator::getEmpty(); - } - - ClauseIterator cit = produceClauses(c); - processQueue(); - return cit; -} - -void RenamingOnTheFly::addToQueue(TermList formula, TermList name, Literal* lit, Clause* c) -{ - CALL("RenamingOnTheFly::addToQueue"); - - _formulas.push(formula); - _names.push(name); - _lits.push(lit); - _clauses.push(c); -} - -void RenamingOnTheFly::processQueue() -{ - CALL("RenamingOnTheFly::processQueue"); - - while(!_formulas.isEmpty()){ - _formulaIndex->insertFormula(_formulas.pop(), _names.pop(), _lits.pop(), _clauses.pop()); - } - -} - - -bool RenamingOnTheFly::isNamingLit(Literal* lit) -{ - CALL("RenamingOnTheFly::isNamingLit"); - - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - bool lhsIsAtom = AH::getProxy(AH::getHead(lhs)) == Signature::NOT_PROXY; - bool rhsIsAtom = AH::getProxy(AH::getHead(rhs)) == Signature::NOT_PROXY; - return lhsIsAtom && rhsIsAtom; -} - -TermList RenamingOnTheFly::getFormula(Literal* lit) -{ - CALL("RenamingOnTheFly::getFormula"); - - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - return AH::isBool(lhs) ? rhs : lhs; -} - - -} diff --git a/Inferences/RenamingOnTheFly.hpp b/Inferences/RenamingOnTheFly.hpp deleted file mode 100644 index b4001af13a..0000000000 --- a/Inferences/RenamingOnTheFly.hpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file ProxyElimination.hpp - * Defines class ProxyElimination. - */ - -#ifndef __RenamingOnTheFly__ -#define __RenamingOnTheFly__ - -#include "Forwards.hpp" -#include "InferenceEngine.hpp" -#include "Kernel/Inference.hpp" - -#include "Indexing/TermIndex.hpp" - -#include "InferenceEngine.hpp" - -namespace Inferences { -using namespace Indexing; - - -class RenamingOnTheFly - : public SimplificationEngine -{ -public: - CLASS_NAME(RenamingOnTheFly); - USE_ALLOCATOR(RenamingOnTheFly); - - ClauseIterator perform(Clause* c); - - void attach(SaturationAlgorithm* salg) override; - void detach() override; - - //todo make an option -private: - ClauseIterator produceClauses(Clause* c); - void addToQueue(TermList formula, TermList name, Literal* lit, Clause* c); - void processQueue(); - bool isNamingLit(Literal* lit); - TermList getFormula(Literal* lit); - - TermStack _formulas; - TermStack _names; - LiteralStack _lits; - ClauseStack _clauses; - RenamingFormulaIndex* _formulaIndex; -}; - - - - -} - -#endif diff --git a/Inferences/Superposition.cpp b/Inferences/Superposition.cpp index 4e65d7eafc..89884ef384 100644 --- a/Inferences/Superposition.cpp +++ b/Inferences/Superposition.cpp @@ -107,8 +107,11 @@ struct Superposition::RewriteableSubtermsFn VirtualIterator > operator()(Literal* lit) { CALL("Superposition::RewriteableSubtermsFn()"); - TermIterator it = env.options->combinatorySup() ? EqHelper::getFoSubtermIterator(lit, _ord) : - EqHelper::getSubtermIterator(lit, _ord); + TermIterator it = +#if VHOL + env.property->higherOrder() ? EqHelper::getFoSubtermIterator(lit, _ord) : +#endif + EqHelper::getSubtermIterator(lit, _ord); return pvi( pushPairIntoRightIterator(lit, it) ); } @@ -186,10 +189,12 @@ ClauseIterator Superposition::generateClauses(Clause* premise) //TODO probably shouldn't go here! static bool withConstraints = - env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF - || (env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION - && env.property->higherOrder()); + env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF; +#if VHOL + withConstraints = withConstraints || (env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION && env.property->higherOrder()); +#endif + auto itf1 = premise->getSelectedLiteralIterator(); // Get an iterator of pairs of selected literals and rewritable subterms of those literals diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 95a2b422e7..4bf6c8fea1 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -20,6 +20,8 @@ using namespace Lib; using namespace Kernel; using namespace Shell; +#if VHOL + TermList BetaNormaliser::normalise(TermList t) { CALL("BetaNormaliser::normalise"); @@ -33,20 +35,28 @@ TermList BetaNormaliser::transformSubterm(TermList t) { CALL("BetaNormaliser::transformSubterm"); - while(ApplicativeHelper::isRedex(t)){ + while(t.isRedex()){ t = RedexReducer().reduce(t); } return t; } +bool BetaNormaliser::exploreSubterms(TermList orig, TermList newTerm) +{ + CALL("BetaNormaliser::exploreSubterms"); + + if(newTerm.term()->hasRedex()) return true; + return false; +} + TermList RedexReducer::reduce(TermList redex) { CALL("RedexReducer::reduce"); - ASS(ApplicativeHelper::isRedex(redex)); + ASS(redex.isRedex()); _replace = 0; - TermList t1 = *redex.term()->nthArgument(2)->term()->nthArgument(2); - _t2 = *redex.term()->nthArgument(3); + TermList t1 = redex.lhs().lambdaBody(); + _t2 = redex.rhs(); TermList transformed = transformSubterm(t1); if(transformed != t1) return transformed; @@ -60,7 +70,7 @@ TermList RedexReducer::transformSubterm(TermList t) if(t.deBruijnIndex().isSome()){ unsigned index = t.deBruijnIndex().unwrap(); if(index == _replace){ - // any free indices in _t2 need to e lifted by the number of extra lambdas + // any free indices in _t2 need to be lifted by the number of extra lambdas // that now surround them return TermLifter().lift(_t2, _replace); } @@ -87,6 +97,15 @@ void RedexReducer::onTermExit(Term* t) if(t->isLambdaTerm()) _replace--; } +bool RedexReducer::exploreSubterms(TermList orig, TermList newTerm) +{ + CALL("RedexReducer::exploreSubterms"); + + if(orig != newTerm) return false; + if(newTerm.term()->hasDBIndex()) return true; + return false; +} + TermList TermLifter::lift(TermList term, unsigned liftBy) { CALL("TermLifter::lift"); @@ -127,6 +146,16 @@ void TermLifter::onTermExit(Term* t) if(t->isLambdaTerm()) _cutOff--; } +bool TermLifter::exploreSubterms(TermList orig, TermList newTerm) +{ + CALL("TermLifter::exploreSubterms"); + + // already lifted, so must be DB index and won't have subterms anyway + if(orig != newTerm) return false; + if(newTerm.term()->hasDBIndex()) return true; + return false; +} + TermList ApplicativeHelper::createAppTerm(TermList sort, TermList arg1, TermList arg2, TermList arg3, TermList arg4) { CALL("ApplicativeHelper::createAppTerm/3"); @@ -264,16 +293,6 @@ TermList ApplicativeHelper::getNthArg(TermList arrowSort, unsigned argNum) return res; } -TermList ApplicativeHelper::getResultSort(TermList sort) -{ - CALL("ApplicativeHelper::getResultSort"); - - while(sort.isArrowSort()){ - sort = *sort.term()->nthArgument(1); - } - return sort; -} - unsigned ApplicativeHelper::getArity(TermList sort) { CALL("ApplicativeHelper::getArity"); @@ -379,35 +398,6 @@ void ApplicativeHelper::getHeadAndArgs(const Term* term, TermList& head, DequenthArgument(2); - if(!t.isTerm() || t.term()->isSpecial()){ break; } - } - return t; -} - -TermList ApplicativeHelper::getHead(Term* t) -{ - CALL("ApplicativeHelper::getHead(Term*)"); - - TermList trm = TermList(t); - while(t->isApplication()){ - trm = *t->nthArgument(2); - if(!trm.isTerm() || trm.term()->isSpecial()){ break; } - t = trm.term(); - } - return trm; -} - Signature::Proxy ApplicativeHelper::getProxy(const TermList t) { CALL("ApplicativeHelper::getProxy"); @@ -432,9 +422,4 @@ bool ApplicativeHelper::isFalse(TermList term){ return term.isTerm() && env.signature->isFoolConstantSymbol(false, term.term()->functor()); } -bool ApplicativeHelper::isRedex(TermList t){ - CALL("ApplicativeHelper::isRedex"); - - return t.isApplication() && t.term()->nthArgument(2)->isLambdaTerm(); -} - +#endif diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 1a5cc39346..cc5f96e89f 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -24,28 +24,35 @@ using namespace Kernel; using namespace Shell; +#if VHOL // reduce a term to normal form -// uses a applicative order reduction stragegy -// (inner-most left-most redex first) +// uses a applicative order reduction strategy +// Currently use a leftmost outermost stratgey +// An innermost strategy is theoretically more efficient +// but is difficult to write iteratively TODO class BetaNormaliser : public TermTransformer { public: BetaNormaliser() { - recurseIntoReplaced(); dontTransformSorts(); } TermList normalise(TermList t); TermList transformSubterm(TermList t) override; + bool exploreSubterms(TermList orig, TermList newTerm) override; }; class RedexReducer : public TermTransformer { public: + RedexReducer() { + dontTransformSorts(); + } TermList reduce(TermList redex); TermList transformSubterm(TermList t) override; void onTermEntry(Term* t) override; void onTermExit(Term* t) override; + bool exploreSubterms(TermList orig, TermList newTerm) override; private: TermList _t2; // term to replace index with (^x.t1) t2 @@ -55,10 +62,14 @@ class RedexReducer : public TermTransformer class TermLifter : public TermTransformer { public: + TermLifter() { + dontTransformSorts(); + } TermList lift(TermList term, unsigned liftBy); TermList transformSubterm(TermList t) override; void onTermEntry(Term* t) override; void onTermExit(Term* t) override; + bool exploreSubterms(TermList orig, TermList newTerm) override; private: unsigned _cutOff; // any index higher than _cutOff is a free index @@ -78,7 +89,6 @@ class ApplicativeHelper { static TermList getDeBruijnIndex(int index, TermList sort); static TermList getNthArg(TermList arrowSort, unsigned argNum); static TermList getResultApplieadToNArgs(TermList arrowSort, unsigned argNum); - static TermList getResultSort(TermList sort); static unsigned getArity(TermList sort); static void getHeadAndAllArgs(TermList term, TermList& head, TermStack& args); static void getHeadAndArgs(TermList term, TermList& head, TermStack& args); @@ -86,12 +96,11 @@ class ApplicativeHelper { static void getHeadAndArgs(const Term* term, TermList& head, Deque& args); static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); static Signature::Proxy getProxy(const TermList t); - static TermList getHead(TermList t); - static TermList getHead(Term* t); static bool isBool(TermList t); static bool isTrue(TermList term); static bool isFalse(TermList term); - static bool isRedex(TermList term); }; +#endif + #endif // __ApplicativeHelper__ diff --git a/Kernel/BestLiteralSelector.hpp b/Kernel/BestLiteralSelector.hpp index 572b4d43c6..58b8a740b8 100644 --- a/Kernel/BestLiteralSelector.hpp +++ b/Kernel/BestLiteralSelector.hpp @@ -137,18 +137,19 @@ class CompleteBestLiteralSelector CALL("CompleteBestLiteralSelector::doSelection"); ASS_G(eligible, 1); //trivial cases should be taken care of by the base LiteralSelector - static bool combSup = env.options->combinatorySup(); +// static bool combSup = env.options->combinatorySup(); static DArray litArr(64); - static Set maxTermHeads; - maxTermHeads.reset(); +// TODO AYB decide what to do with selection +// static Set maxTermHeads; +// maxTermHeads.reset(); litArr.initFromArray(eligible,*c); litArr.sortInversed(_comp); LiteralList* maximals=0; Literal* singleSelected=0; //If equals to 0 in the end, all maximal - if(combSup){ +/* if(combSup){ fillMaximals(maximals, litArr); LiteralList::Iterator maxIt(maximals); while(maxIt.hasNext()){ @@ -159,15 +160,16 @@ class CompleteBestLiteralSelector if(h.isVar()){ maxTermHeads.insert(h.var()); } } } - } + } */ //literals will be selected. bool allSelected=false; - if(isNegativeForSelection(litArr[0]) && - (!combSup || canBeSelected(litArr[0], &maxTermHeads))) { + if(isNegativeForSelection(litArr[0]) /*&& + (!combSup || canBeSelected(litArr[0], &maxTermHeads))*/) { singleSelected=litArr[0]; } else { - if(!combSup){ fillMaximals(maximals, litArr); } + //if(!combSup){ fillMaximals(maximals, litArr); } + fillMaximals(maximals, litArr); unsigned besti=0; LiteralList* nextMax=maximals; while(true) { @@ -179,8 +181,8 @@ class CompleteBestLiteralSelector } besti++; ASS_L(besti,eligible); - if(isNegativeForSelection(litArr[besti]) && - (!combSup || canBeSelected(litArr[besti], &maxTermHeads))){ + if(isNegativeForSelection(litArr[besti]) /*&& + (!combSup || canBeSelected(litArr[besti], &maxTermHeads))*/){ singleSelected=litArr[besti]; break; } @@ -256,7 +258,7 @@ class CompleteBestLiteralSelector _ord.removeNonMaximal(maximals); } - bool canBeSelected(Literal* lit, Set* maxTermHeads) + /*bool canBeSelected(Literal* lit, Set* maxTermHeads) { CALL("CompleteBestLiteralSelector::canBeSelected"); @@ -269,7 +271,7 @@ class CompleteBestLiteralSelector } } return true; - } + }*/ private: QComparator _comp; diff --git a/Kernel/EqHelper.cpp b/Kernel/EqHelper.cpp index 685410367c..222ca7c4ec 100644 --- a/Kernel/EqHelper.cpp +++ b/Kernel/EqHelper.cpp @@ -175,6 +175,8 @@ TermIterator EqHelper::getSubtermIterator(Literal* lit, const Ordering& ord) return getRewritableSubtermIterator(lit, ord); } +#if VHOL + TermIterator EqHelper::getBooleanSubtermIterator(Literal* lit, const Ordering& ord) { CALL("EqHelper::getSubtermIterator"); @@ -187,6 +189,8 @@ TermIterator EqHelper::getFoSubtermIterator(Literal* lit, const Ordering& ord) return getRewritableSubtermIterator(lit, ord); } +#endif + /** * Return iterator on subterms of a literal, that can be rewritten by * superposition. diff --git a/Kernel/EqHelper.hpp b/Kernel/EqHelper.hpp index d90732c5a6..907a2c6eaf 100644 --- a/Kernel/EqHelper.hpp +++ b/Kernel/EqHelper.hpp @@ -36,8 +36,10 @@ class EqHelper static TermList getOtherEqualitySide(Literal* eq, TermList lhs); static bool hasGreaterEqualitySide(Literal* eq, const Ordering& ord, TermList& lhs, TermList& rhs); static TermIterator getSubtermIterator(Literal* lit, const Ordering& ord); +#if VHOL static TermIterator getFoSubtermIterator(Literal* lit, const Ordering& ord); static TermIterator getBooleanSubtermIterator(Literal* lit, const Ordering& ord); +#endif static TermIterator getLHSIterator(Literal* lit, const Ordering& ord); static TermIterator getSuperpositionLHSIterator(Literal* lit, const Ordering& ord, const Options& opt); static TermIterator getDemodulationLHSIterator(Literal* lit, bool forward, const Ordering& ord, const Options& opt); diff --git a/Kernel/FormulaVarIterator.cpp b/Kernel/FormulaVarIterator.cpp index 1d518d250d..ed46d1fda8 100644 --- a/Kernel/FormulaVarIterator.cpp +++ b/Kernel/FormulaVarIterator.cpp @@ -199,7 +199,7 @@ bool FormulaVarIterator::hasNext() } break; } - +#if VHOL case Term::SF_LAMBDA:{ _instructions.push(FVI_UNBIND); SList* sorts = sd->getLambdaVarSorts(); @@ -216,7 +216,7 @@ bool FormulaVarIterator::hasNext() _vars.push(sd->getLambdaVars()); break; } - +#endif case Term::SF_MATCH: { for (unsigned int i = 0; i < t->arity(); i++) { _instructions.push(FVI_TERM_LIST); diff --git a/Kernel/Inference.cpp b/Kernel/Inference.cpp index 717524f9e7..edc0d1ab16 100644 --- a/Kernel/Inference.cpp +++ b/Kernel/Inference.cpp @@ -229,13 +229,10 @@ void Inference::updateStatistics() */ } else if (_ptr2 == nullptr) { _inductionDepth = static_cast(_ptr1)->inference().inductionDepth(); - _XXNarrows = static_cast(_ptr1)->inference().xxNarrows(); _reductions = static_cast(_ptr1)->inference().reductions(); } else { _inductionDepth = max(static_cast(_ptr1)->inference().inductionDepth(), static_cast(_ptr2)->inference().inductionDepth()); - _XXNarrows = max(static_cast(_ptr1)->inference().xxNarrows(), - static_cast(_ptr2)->inference().xxNarrows()); _reductions = max(static_cast(_ptr1)->inference().reductions(), static_cast(_ptr2)->inference().reductions()); } @@ -244,12 +241,10 @@ void Inference::updateStatistics() case Kind::INFERENCE_MANY: case Kind::INFERENCE_FROM_SAT_REFUTATION: _inductionDepth = 0; - _XXNarrows = 0; _reductions = 0; UnitList* it= static_cast(_ptr1); while(it) { _inductionDepth = max(_inductionDepth,it->head()->inference().inductionDepth()); - _XXNarrows = max(_XXNarrows,it->head()->inference().xxNarrows()); _reductions = max(_reductions,it->head()->inference().reductions()); it=it->tail(); } @@ -279,22 +274,17 @@ vstring Inference::toString() const result += ", incl: " + Int::toString(_included); result += ", ptd: " + Int::toString(_isPureTheoryDescendant); - if(env.options->addCombAxioms()){ - result += ", cad: " + Int::toString(_combAxiomsDescendant); - } + + result += ", id: " + Int::toString(_inductionDepth); + // AYB TODO +#if VHOL if(env.options->addProxyAxioms()){ result += ", pad: " + Int::toString(_proxyAxiomsDescendant); - } - if(env.options->addCombAxioms() && env.options->addProxyAxioms()){ - result += ", had: " + Int::toString(_holAxiomsDescendant); - } - result += ", id: " + Int::toString(_inductionDepth); - if(env.options->maxXXNarrows() > 0){ - result += ", xxNarrs " + Int::toString(_XXNarrows); - } + } if(env.options->prioritiseClausesProducedByLongReduction()){ result += ", redLen " + Int::toString(_reductions); } +#endif result += ", sl: " + Int::toString(_sineLevel); result += ", age: " + Int::toString(_age); result += ", thAx:" + Int::toString((int)(th_ancestors)); @@ -316,9 +306,7 @@ void Inference::init0(UnitInputType inputType, InferenceRule r) computeTheoryRunningSums(); _isPureTheoryDescendant = isTheoryAxiom(); - _combAxiomsDescendant = isCombinatorAxiom(); _proxyAxiomsDescendant = isProxyAxiom(); - _holAxiomsDescendant = _combAxiomsDescendant || _proxyAxiomsDescendant; //_inductionDepth = 0 from initDefault (or set externally) //_sineLevel = MAX from initDefault (or set externally) @@ -338,9 +326,7 @@ void Inference::init1(InferenceRule r, Unit* premise) computeTheoryRunningSums(); _isPureTheoryDescendant = premise->isPureTheoryDescendant(); - _combAxiomsDescendant = premise->isCombAxiomsDescendant(); _proxyAxiomsDescendant = premise->isProxyAxiomsDescendant(); - _holAxiomsDescendant = premise->isHolAxiomsDescendant(); _sineLevel = premise->getSineLevel(); updateStatistics(); @@ -361,9 +347,7 @@ void Inference::init2(InferenceRule r, Unit* premise1, Unit* premise2) computeTheoryRunningSums(); _isPureTheoryDescendant = premise1->isPureTheoryDescendant() && premise2->isPureTheoryDescendant(); - _combAxiomsDescendant = premise1->isCombAxiomsDescendant() && premise2->isCombAxiomsDescendant() ; _proxyAxiomsDescendant = premise1->isProxyAxiomsDescendant() && premise2->isProxyAxiomsDescendant(); - _holAxiomsDescendant = premise1->isHolAxiomsDescendant() && premise2->isHolAxiomsDescendant(); _sineLevel = min(premise1->getSineLevel(),premise2->getSineLevel()); updateStatistics(); @@ -389,25 +373,19 @@ void Inference::initMany(InferenceRule r, UnitList* premises) if (premises) { _isPureTheoryDescendant = true; - _combAxiomsDescendant = true; _proxyAxiomsDescendant = true; - _holAxiomsDescendant = true; it=premises; while(it) { const Inference& inf = it->head()->inference(); _inputType = getInputType(_inputType,inf.inputType()); _isPureTheoryDescendant &= inf.isPureTheoryDescendant(); - _combAxiomsDescendant &= inf.isCombAxiomsDescendant(); _proxyAxiomsDescendant &= inf.isProxyAxiomsDescendant(); - _holAxiomsDescendant &= inf.isHolAxiomsDescendant(); _sineLevel = min(_sineLevel,inf.getSineLevel()); it=it->tail(); } } else { _isPureTheoryDescendant = isTheoryAxiom(); - _combAxiomsDescendant = isCombinatorAxiom(); _proxyAxiomsDescendant = isProxyAxiom(); - _holAxiomsDescendant = _combAxiomsDescendant || _proxyAxiomsDescendant; } updateStatistics(); @@ -929,8 +907,6 @@ vstring Kernel::ruleName(InferenceRule rule) return "generalized induction hyperresolution"; case InferenceRule::GAUSSIAN_VARIABLE_ELIMINIATION: return "gaussian variable elimination"; - case InferenceRule::COMBINATOR_AXIOM: - return "combinator axiom"; case InferenceRule::FUNC_EXT_AXIOM: return "functional extensionality axiom"; case InferenceRule::EQUALITY_PROXY_AXIOM: @@ -949,36 +925,6 @@ vstring Kernel::ruleName(InferenceRule rule) return "sigma proxy axiom"; case InferenceRule::ARG_CONG: return "argument congruence"; - case InferenceRule::SXX_NARROW: - return "sxx_narrow"; - case InferenceRule::SX_NARROW: - return "sx_narrow"; - case InferenceRule::S_NARROW: - return "s_narrow"; - case InferenceRule::CXX_NARROW: - return "cxx_narrow"; - case InferenceRule::CX_NARROW: - return "cx_narrow"; - case InferenceRule::C_NARROW: - return "c_narrow"; - case InferenceRule::BXX_NARROW: - return "bxx_narrow"; - case InferenceRule::BX_NARROW: - return "bx_narrow"; - case InferenceRule::B_NARROW: - return "b_narrow"; - case InferenceRule::KX_NARROW: - return "kx_narrow"; - case InferenceRule::K_NARROW: - return "k_narrow"; - case InferenceRule::I_NARROW: - return "i_narrow"; - case InferenceRule::SUB_VAR_SUP: - return "sub-var superposition"; - case InferenceRule::COMBINATOR_DEMOD: - return "combinator demodulation"; - case InferenceRule::COMBINATOR_NORMALISE: - return "combinator normalisation"; case InferenceRule::NEGATIVE_EXT: return "negative extensionality"; case InferenceRule::INJECTIVITY: @@ -1003,6 +949,8 @@ vstring Kernel::ruleName(InferenceRule rule) return "leibniz equality elimination"; case InferenceRule::CASES_SIMP: return "cases simplifying"; + case InferenceRule::BETA_NORMALISE: + return "beta normalization"; /* this cases are no actual inference rules but only markeres to separatea groups of rules */ case InferenceRule::PROXY_AXIOM: case InferenceRule::GENERIC_FORMULA_TRANSFORMATION: diff --git a/Kernel/Inference.hpp b/Kernel/Inference.hpp index 437f0de4cd..3328311bb1 100644 --- a/Kernel/Inference.hpp +++ b/Kernel/Inference.hpp @@ -253,15 +253,13 @@ enum class InferenceRule : unsigned char { /** the last simplifying inference marker -- inferences between GENERIC_SIMPLIFYING_INFERNCE and INTERNAL_SIMPLIFYING_INFERNCE_LAST will be automatically understood simplifying (see also isSimplifyingInferenceRule) */ - /* eager demodulation with combinator axioms */ - COMBINATOR_DEMOD, - /* normalising combinators */ - COMBINATOR_NORMALISE, - /* negative extnsionality */ + /* FOOL paramodulation-like simplifying rule */ CASES_SIMP, BOOL_SIMP, + BETA_NORMALISE, + INTERNAL_SIMPLIFYING_INFERNCE_LAST, @@ -309,32 +307,6 @@ enum class InferenceRule : unsigned char { (see also isGeneratingInferenceRule) */ /* argument congruence: t = t' => tx = t'x*/ ARG_CONG, - /* narrow with combinator axiom */ - SXX_NARROW, - - SX_NARROW, - - S_NARROW, - - CXX_NARROW, - - CX_NARROW, - - C_NARROW, - - BXX_NARROW, - - BX_NARROW, - - B_NARROW, - - KX_NARROW, - - K_NARROW, - - I_NARROW, - /* superposition beneath variable */ - SUB_VAR_SUP, INJECTIVITY, @@ -526,9 +498,7 @@ enum class InferenceRule : unsigned char { /** one of two axioms of FOOL (distinct constants or finite domain) */ FOOL_AXIOM_TRUE_NEQ_FALSE, FOOL_AXIOM_ALL_IS_TRUE_OR_FALSE, - - COMBINATOR_AXIOM, - + FUNC_EXT_AXIOM, /** beginning of proxy funxtion axioms marker --*/ @@ -590,10 +560,6 @@ inline bool isInternalTheoryAxiomRule(InferenceRule r) { toNumber(r) < toNumber(InferenceRule::INTERNAL_THEORY_AXIOM_LAST)); } -inline bool isCombinatorAxiomRule(InferenceRule r) { - return r == InferenceRule::COMBINATOR_AXIOM; -} - inline bool isProxyAxiomRule(InferenceRule r) { return (toNumber(r) >= toNumber(InferenceRule::PROXY_AXIOM) && toNumber(r) < toNumber(InferenceRule::INTERNAL_THEORY_AXIOM_LAST)); @@ -728,7 +694,6 @@ class Inference _rule = r; _included = false; _inductionDepth = 0; - _XXNarrows = 0; _reductions = 0; _sineLevel = std::numeric_limits::max(); _splits = nullptr; @@ -895,10 +860,6 @@ class Inference return isInternalTheoryAxiomRule(_rule) || isExternalTheoryAxiomRule(_rule); } - bool isCombinatorAxiom() const { - return isCombinatorAxiomRule(_rule); - } - bool isProxyAxiom() const { return isProxyAxiomRule(_rule); } @@ -941,23 +902,12 @@ class Inference /** This is how AVATAR sets it... */ void setPureTheoryDescendant(bool val) { _isPureTheoryDescendant = val; } - bool isCombAxiomsDescendant() const { return _combAxiomsDescendant; } - void setCombAxiomsDescendant(bool val) { _combAxiomsDescendant=val; } - bool isProxyAxiomsDescendant() const { return _proxyAxiomsDescendant; } - void setProxyAxiomsDescendant(bool val) { _proxyAxiomsDescendant=val; } - - bool isHolAxiomsDescendant() const { return _holAxiomsDescendant; } - void setHolAxiomsDescendant(bool val) { _holAxiomsDescendant=val; } + void setProxyAxiomsDescendant(bool val) { _proxyAxiomsDescendant=val; } unsigned inductionDepth() const { return _inductionDepth; } void setInductionDepth(unsigned d) { _inductionDepth = d; } - unsigned xxNarrows() const { return _XXNarrows; } - /** used to propagate in AVATAR **/ - void setXXNarrows(unsigned n) { _XXNarrows = n; } - void incXXNarrows(){ if(_XXNarrows < 8){ _XXNarrows++; } } - unsigned reductions() const { return _reductions; } void setReductions(unsigned r) { _reductions = r; } void increaseReductions(unsigned n){ _reductions += n; } @@ -989,12 +939,8 @@ class Inference /** track whether all leafs were theory axioms only */ bool _isPureTheoryDescendant : 1; - /** Clause is a combinator axiom descendant */ - unsigned _combAxiomsDescendant : 1; /** */ unsigned _proxyAxiomsDescendant : 1; - /** clause is descended only from proxy or combinator axioms */ - unsigned _holAxiomsDescendant : 1; /** Induction depth **/ unsigned _inductionDepth : 5; @@ -1003,8 +949,7 @@ class Inference **/ unsigned char _sineLevel : 8; // updated as the minimum from parents to children - /** number of XX' narrows carried out on clause */ - unsigned _XXNarrows : 3; + // AYB TODO /** number of weak reductions in the history of this clause */ unsigned _reductions : 30; diff --git a/Kernel/InferenceStore.cpp b/Kernel/InferenceStore.cpp index 97f66fc2bf..bfe578ac60 100644 --- a/Kernel/InferenceStore.cpp +++ b/Kernel/InferenceStore.cpp @@ -649,8 +649,9 @@ struct InferenceStore::TPTPProofPrinter vstring kind = "fof"; if(env.property->hasNonDefaultSorts()){ kind="tff"; } +#if VHOL if(env.property->higherOrder()){ kind="thf"; } - +#endif return kind+"("+id+","+getRole(rule,origin)+",("+"\n" +" "+formula+"),\n" +" "+inference+")."; @@ -945,8 +946,9 @@ struct InferenceStore::ProofCheckPrinter vstring kind = "fof"; if(env.property->hasNonDefaultSorts()){ kind="tff"; } +#if VHOL if(env.property->higherOrder()){ kind="thf"; } - +#endif out << kind << "(r"<<_is->getUnitIdStr(cs) << ",conjecture, " diff --git a/Kernel/MainLoop.cpp b/Kernel/MainLoop.cpp index 586d0e69e8..b4105b9b87 100644 --- a/Kernel/MainLoop.cpp +++ b/Kernel/MainLoop.cpp @@ -113,13 +113,21 @@ MainLoop* MainLoop::createFromOptions(Problem& prb, const Options& opt) switch (opt.saturationAlgorithm()) { case Options::SaturationAlgorithm::INST_GEN: - if(env.property->hasPolymorphicSym() || env.property->higherOrder()){ + if(env.property->hasPolymorphicSym() +#if VHOL + || env.property->higherOrder() +#endif + ){ USER_ERROR("The inst gen calculus is currently not compatible with polymorphism or higher-order constructs"); } res = new IGAlgorithm(prb, opt); break; case Options::SaturationAlgorithm::FINITE_MODEL_BUILDING: - if(env.property->hasPolymorphicSym() || env.property->higherOrder()){ + if(env.property->hasPolymorphicSym() +#if VHOL + || env.property->higherOrder() +#endif + ){ USER_ERROR("Finite model buillding is currently not compatible with polymorphism or higher-order constructs"); } if(env.options->outputMode() == Shell::Options::Output::UCORE){ diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index 546f1aeac8..45dc6de85a 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -168,7 +168,7 @@ Term* MismatchHandler::get(unsigned var) ASSERTION_VIOLATION; } - +#if VHOL bool HOMismatchHandler::isConstraintPair(TermList t1, TermList t2) { CALL("HOMismatchHandler::isConstraintPair"); @@ -217,6 +217,6 @@ TermList HOMismatchHandler::transformSubterm(TermList trm) } return trm; } - +#endif } diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index df2c03c796..3232adc42a 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -123,6 +123,7 @@ class UWAMismatchHandler : public AtomicMismatchHandler Shell::Options::UnificationWithAbstraction const _mode; }; +#if VHOL class HOMismatchHandler : public AtomicMismatchHandler { public: @@ -136,7 +137,7 @@ class HOMismatchHandler : public AtomicMismatchHandler CLASS_NAME(HOMismatchHandler); USE_ALLOCATOR(HOMismatchHandler); }; - +#endif } #endif /*__MismatchHandler__*/ diff --git a/Kernel/Problem.cpp b/Kernel/Problem.cpp index ae492562a0..e0f47fc054 100644 --- a/Kernel/Problem.cpp +++ b/Kernel/Problem.cpp @@ -302,13 +302,14 @@ void Problem::readDetailsFromProperty() const _hasInterpretedOperations = _property->hasInterpretedOperations(); _hasNumerals = _property->hasNumerals(); _hasFOOL = _property->hasFOOL(); - _hasApp = _property->hasApp(); - _hasAppliedVar = _property->hasAppliedVar(); - _hasLogicalProxy = _property->hasLogicalProxy(); _hasPolymorphicSym = _property->hasPolymorphicSym(); _quantifiesOverPolymorphicVar = _property->quantifiesOverPolymorphicVar(); _hasBoolVar = _property->hasBoolVar(); +#if VHOL _higherOrder = _property->higherOrder(); + _hasLogicalProxy = _property->hasLogicalProxy(); + _hasApp = _property->hasApp(); +#endif _mayHaveFormulas = _hasFormulas.value(); _mayHaveEquality = _hasEquality.value(); @@ -330,9 +331,9 @@ void Problem::invalidateEverything() _hasInterpretedOperations = MaybeBool::UNKNOWN; _hasNumerals = MaybeBool::UNKNOWN; _hasFOOL = MaybeBool::UNKNOWN; +#if VHOL _hasApp = MaybeBool::UNKNOWN; - _hasAppliedVar = MaybeBool::UNKNOWN; - +#endif _mayHaveFormulas = true; _mayHaveEquality = true; _mayHaveFunctionDefinitions = true; @@ -354,8 +355,9 @@ void Problem::invalidateByRemoval() _hasInterpretedOperations.mightBecameFalse(); _hasNumerals.mightBecameFalse(); _hasFOOL.mightBecameFalse(); - _hasAppliedVar.mightBecameFalse(); +#if VHOL _hasLogicalProxy.mightBecameFalse(); +#endif _hasPolymorphicSym.mightBecameFalse(); _quantifiesOverPolymorphicVar.mightBecameFalse(); _hasBoolVar.mightBecameFalse(); @@ -420,6 +422,7 @@ bool Problem::hasFOOL() const return _hasFOOL.value(); } +#if VHOL bool Problem::hasApp() const { CALL("Problem::hasApp"); @@ -428,29 +431,29 @@ bool Problem::hasApp() const return _hasApp.value(); } -bool Problem::hasAppliedVar() const +bool Problem::hasLogicalProxy() const { - CALL("Problem::hasAppliedVar"); + CALL("Problem::hasLogicalProxy"); - if(!_hasAppliedVar.known()) { refreshProperty(); } - return _hasAppliedVar.value(); + if(!_hasLogicalProxy.known()) { refreshProperty(); } + return _hasLogicalProxy.value(); } -bool Problem::hasBoolVar() const +bool Problem::higherOrder() const { - CALL("Problem::hasBoolVar"); + CALL("Problem::hasPolymorphicSym"); - if(!_hasBoolVar.known()) { refreshProperty(); } - return _hasBoolVar.value(); + if(!_higherOrder.known()) { refreshProperty(); } + return _higherOrder.value(); } +#endif - -bool Problem::hasLogicalProxy() const +bool Problem::hasBoolVar() const { - CALL("Problem::hasLogicalProxy"); + CALL("Problem::hasBoolVar"); - if(!_hasLogicalProxy.known()) { refreshProperty(); } - return _hasLogicalProxy.value(); + if(!_hasBoolVar.known()) { refreshProperty(); } + return _hasBoolVar.value(); } bool Problem::hasPolymorphicSym() const @@ -469,14 +472,6 @@ bool Problem::quantifiesOverPolymorphicVar() const return _quantifiesOverPolymorphicVar.value(); } -bool Problem::higherOrder() const -{ - CALL("Problem::hasPolymorphicSym"); - - if(!_higherOrder.known()) { refreshProperty(); } - return _higherOrder.value(); -} - /////////////////////// // utility functions diff --git a/Kernel/Problem.hpp b/Kernel/Problem.hpp index 101055e823..40a97fc753 100644 --- a/Kernel/Problem.hpp +++ b/Kernel/Problem.hpp @@ -112,13 +112,15 @@ class Problem { bool hasNumerals() const; // meaning the interpreted constants of arithmetic theories, e.g. 1,2, 3.1415,... /** Problem contains let terms or formulas, or term if-then-else */ bool hasFOOL() const; - bool hasLogicalProxy() const; bool hasBoolVar() const; - bool hasApp() const; - bool hasAppliedVar() const; bool hasPolymorphicSym() const; bool quantifiesOverPolymorphicVar() const; + +#if VHOL + bool hasApp() const; bool higherOrder() const; + bool hasLogicalProxy() const; +#endif bool mayHaveEquality() const { return _mayHaveEquality; } bool mayHaveFormulas() const { return _mayHaveFormulas; } @@ -225,13 +227,14 @@ class Problem { mutable MaybeBool _hasInterpretedOperations; mutable MaybeBool _hasNumerals; mutable MaybeBool _hasFOOL; - mutable MaybeBool _hasApp; - mutable MaybeBool _hasAppliedVar; - mutable MaybeBool _hasLogicalProxy; mutable MaybeBool _hasPolymorphicSym; mutable MaybeBool _quantifiesOverPolymorphicVar; - mutable MaybeBool _hasBoolVar; + mutable MaybeBool _hasBoolVar; +#if VHOL + mutable MaybeBool _hasApp; + mutable MaybeBool _hasLogicalProxy; mutable MaybeBool _higherOrder; +#endif SMTLIBLogic _smtlibLogic; diff --git a/Kernel/Signature.cpp b/Kernel/Signature.cpp index b0fd6f0c60..9f587809b5 100644 --- a/Kernel/Signature.cpp +++ b/Kernel/Signature.cpp @@ -248,9 +248,11 @@ Signature::Signature (): _rationals(0), _reals(0), _arrayCon(UINT_MAX), +#if VHOL _arrowCon(UINT_MAX), _appFun(UINT_MAX), _lamFun(UINT_MAX), +#endif _termAlgebras() { CALL("Signature::Signature"); @@ -723,7 +725,7 @@ unsigned Signature::addStringConstant(const vstring& name) return result; } // addStringConstant - +#if VHOL unsigned Signature::getApp() { CALL("Signature::getApp"); @@ -792,49 +794,7 @@ unsigned Signature::getChoice(){ } return choice; } - -void Signature::incrementFormulaCount(Term* t){ - CALL("Signature::incrementFormulaCount"); - ASS(SortHelper::getResultSort(t) == AtomicSort::boolSort()); - - if(_formulaCounts.find(t)){ - int count = _formulaCounts.get(t); - if(count != -1){ - _formulaCounts.set(t, count + 1); - } - } else { - _formulaCounts.set(t, 1); - } -} - -void Signature::decrementFormulaCount(Term* t){ - CALL("Signature::incrementFormulaCount"); - ASS(SortHelper::getResultSort(t) == AtomicSort::boolSort()); - - ASS(_formulaCounts.find(t)) - int count = _formulaCounts.get(t); - if(count != -1){ - _formulaCounts.set(t, count - 1); - } -} - -void Signature::formulaNamed(Term* t){ - CALL("Signature::formulaNamed"); - ASS(SortHelper::getResultSort(t) == AtomicSort::boolSort()); - - ASS(_formulaCounts.find(t)); - _formulaCounts.set(t, -1); -} - -unsigned Signature::formulaCount(Term* t){ - CALL("Signature::formulaCount"); - - if(_formulaCounts.find(t)){ - return _formulaCounts.get(t); - } - return 0; -} - +#endif /** * If a type constructor with this name and arity exists, return its number. diff --git a/Kernel/Signature.hpp b/Kernel/Signature.hpp index 7941f2b967..9463c0dc3e 100644 --- a/Kernel/Signature.hpp +++ b/Kernel/Signature.hpp @@ -435,10 +435,12 @@ class Signature unsigned addNameFunction(unsigned arity); unsigned addDeBruijnIndex(int index, TermList sort, bool& added); void addEquality(); +#if VHOL unsigned getApp(); unsigned getLam(); unsigned getDiff(); unsigned getChoice(); +#endif // Interpreted symbol declarations unsigned addIntegerConstant(const vstring& number,bool defaultSort); @@ -630,6 +632,7 @@ class Signature return (con == _arrayCon && _arrayCon != UINT_MAX); } +#if VHOL bool isArrowCon(unsigned con) const{ return (con == _arrowCon && _arrowCon != UINT_MAX); } @@ -641,6 +644,7 @@ class Signature bool isLamFun(unsigned fun) const{ return (fun == _lamFun && _lamFun != UINT_MAX); } +#endif bool tryGetFunctionNumber(const vstring& name, unsigned arity, unsigned& out) const; bool tryGetPredicateNumber(const vstring& name, unsigned arity, unsigned& out) const; @@ -735,6 +739,7 @@ class Signature return ratSort; } +#if VHOL unsigned getArrowConstructor(){ bool added = false; unsigned arrow = addTypeCon("sTfun",2, added); @@ -746,6 +751,7 @@ class Signature } return arrow; } +#endif unsigned getArrayConstructor(){ bool added = false; @@ -771,6 +777,7 @@ class Signature return tuple; } +#if VHOL unsigned getEqualityProxy(){ bool added = false; unsigned eqProxy = addFunction("vEQ",1, added); @@ -834,11 +841,7 @@ class Signature } return proxy; } //TODO merge with above? - - void incrementFormulaCount(Term* t); - void decrementFormulaCount(Term* t); - void formulaNamed(Term* t); - unsigned formulaCount(Term* t); +#endif bool isTermAlgebraSort(TermList sort) { return _termAlgebras.find(sort); } @@ -856,7 +859,6 @@ class Signature private: Stack _dividesNvalues; - DHMap _formulaCounts; bool _foolConstantsDefined; unsigned _foolTrue; @@ -927,9 +929,11 @@ class Signature unsigned _reals; unsigned _arrayCon; +#if VHOL unsigned _arrowCon; unsigned _appFun; unsigned _lamFun; +#endif /** * Map from sorts to the associated term algebra, if applicable for the sort diff --git a/Kernel/SortHelper.cpp b/Kernel/SortHelper.cpp index 506fc77ac5..91cd21be2b 100644 --- a/Kernel/SortHelper.cpp +++ b/Kernel/SortHelper.cpp @@ -186,10 +186,12 @@ bool SortHelper::getResultSortOrMasterVariable(const Term* t, TermList& resultSo case Term::SF_FORMULA: resultSort = AtomicSort::boolSort(); return true; +#if VHOL case Term::SF_LAMBDA: { resultSort = t->getSpecialData()->getSort(); return true; } +#endif case Term::SF_TUPLE: { resultSort = getResultSort(t->getSpecialData()->getTupleTerm()); return true; @@ -496,6 +498,7 @@ void SortHelper::collectVariableSortsIter(CollectTask task, DHMapgetFormula(); todo.push(newTask); } break; +#if VHOL case Term::SF_LAMBDA: { CollectTask newTask; newTask.fncTag = COLLECT_TERMLIST; @@ -503,7 +506,7 @@ void SortHelper::collectVariableSortsIter(CollectTask task, DHMapgetLambdaExp(); todo.push(newTask); } break; - +#endif case Term::SF_TUPLE: { CollectTask newTask; newTask.fncTag = COLLECT_TERM; @@ -846,6 +849,7 @@ bool SortHelper::tryGetVariableSort(TermList var, Term* t0, TermList& result) return true; } } +#if VHOL if (t->isLambda()) { TermList sort = t->getSpecialData()->getLambdaExpSort(); TermList lambdaTerm = t->getSpecialData()->getLambdaExp(); @@ -862,6 +866,7 @@ bool SortHelper::tryGetVariableSort(TermList var, Term* t0, TermList& result) } continue; } +#endif if (t->isMatch()) { for (unsigned int i = 0; i < t->arity(); i++) { auto arg = t->nthArgument(i); diff --git a/Kernel/SubformulaIterator.cpp b/Kernel/SubformulaIterator.cpp index 2e4fb0803c..dbf9097b35 100644 --- a/Kernel/SubformulaIterator.cpp +++ b/Kernel/SubformulaIterator.cpp @@ -198,6 +198,7 @@ bool SubformulaIterator::hasNext () _reserve = rest; return true; } +#if VHOL case Term::SF_LAMBDA: { delete _reserve; TermList lambdaExp = term->getSpecialData()->getLambdaExp(); @@ -209,6 +210,7 @@ bool SubformulaIterator::hasNext () } break; } +#endif case Term::SF_TUPLE: { delete _reserve; Term* tupleTerm = term->getSpecialData()->getTupleTerm(); diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index fab5e64b1e..d8251b01ca 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -30,7 +30,9 @@ using namespace Kernel; const unsigned Term::SF_ITE; const unsigned Term::SF_LET; const unsigned Term::SF_FORMULA; +#if VHOL const unsigned Term::SF_LAMBDA; +#endif const unsigned Term::SPECIAL_FUNCTOR_LOWER_BOUND; void Term::setId(unsigned id) @@ -273,12 +275,14 @@ unsigned TermList::weight() const return isVar() ? 1 : term()->weight(); } +#if VHOL bool TermList::isArrowSort() { CALL("TermList::isArrowSort"); return !isVar() && term()->isSort() && static_cast(term())->isArrowSort(); } +#endif bool TermList::isBoolSort() { @@ -319,11 +323,52 @@ bool TermList::isRealSort(){ static_cast(term())->isRealSort(); } +#if VHOL + +TermList AtomicSort::domain(){ + CALL("AtomicSort::domain"); + ASS(isArrowSort()); + + return *nthArgument(0); +} + +TermList TermList::result(){ + CALL("AtomicSort::result"); + ASS(isArrowSort()); + + return *term()->nthArgument(1); +} + +TermList TermList::finalResult(){ + CALL("AtomicSort::finalResult"); + ASS(isArrowSort()); + + return isVar() ? *this : static_cast(term())->finalResult(); +} + +TermList AtomicSort::result(){ + CALL("AtomicSort::result"); + ASS(isArrowSort()); + + return *nthArgument(1); +} + +TermList AtomicSort::finalResult(){ + CALL("AtomicSort::finalResult"); + + TermList trm(this); + while(trm.isArrowSort()){ + trm = trm.result(); + } + return trm; +} + bool AtomicSort::isArrowSort() const { CALL("AtomicSort::isArrowSort"); return env.signature->isArrowCon(_functor); } +#endif bool AtomicSort::isBoolSort() const { CALL("AtomicSort::isBoolSort"); @@ -361,6 +406,8 @@ bool AtomicSort::isRealSort() const { return env.signature->isRealCon(_functor); } +#if VHOL + bool TermList::isApplication() const { CALL("TermList::isApplication"); @@ -370,7 +417,43 @@ bool TermList::isApplication() const { bool Term::isApplication() const { CALL("Term::isApplication"); - return !isSort() && !isLiteral() && env.signature->isAppFun(_functor); + return !isSort() && !isLiteral() && !isSpecial() && env.signature->isAppFun(_functor); +} + +TermList TermList::lhs() const { + CALL("TermList::lhs"); + ASS(isApplication()); + return *term()->nthArgument(2); +} + +TermList TermList::rhs() const { + CALL("TermList::rhs"); + ASS(isApplication()); + return *term()->nthArgument(3); +} + +TermList TermList::lambdaBody() const { + CALL("TermList::lambdaBody"); + ASS(isLambdaTerm()); + return *term()->nthArgument(2); +} + +TermList TermList::head() { + CALL("TermList::head"); + if(!isApplication()){ + return *this; + } + return term()->head(); +} + +TermList Term::head() { + CALL("Term::head"); + + TermList trm = TermList(this); + while(trm.isApplication()){ + trm = trm.lhs(); + } + return trm; } bool TermList::isLambdaTerm() const { @@ -382,7 +465,19 @@ bool TermList::isLambdaTerm() const { bool Term::isLambdaTerm() const { CALL("Term::isLambdaTerm"); - return !isSort() && !isLiteral() && env.signature->isLamFun(_functor); + return !isSort() && !isLiteral() && !isSpecial() && env.signature->isLamFun(_functor); +} + +bool TermList::isRedex() { + CALL("TermList::isRedex"); + + return isApplication() && lhs().isLambdaTerm(); +} + +bool Term::isRedex() { + CALL("Term::isRedex"); + + return TermList(this).isRedex(); } Option TermList::deBruijnIndex() const { @@ -395,6 +490,8 @@ Option Term::deBruijnIndex() const { return isSort() || isLiteral() ? Option() : env.signature->getFunction(_functor)->dbIndex(); } +#endif + unsigned Term::numTypeArguments() const { CALL("Term::numTypeArguments"); ASS(!isSort()); @@ -663,7 +760,7 @@ vstring Term::headToString() const vstring symbolsList = ""; vstring typesList = ""; for (unsigned i = 0; i < VList::length(symbols); i++) { - Signature::Symbol* symbol = (fnType->arg(i) == AtomicSort::boolSort()) + Signature::Symbol* symbol = (fnType->arg(i).isBoolSort()) ? env.signature->getPredicate(VList::nth(symbols, i)) : env.signature->getFunction(VList::nth(symbols, i)); symbolsList += symbol->name(); @@ -676,6 +773,7 @@ vstring Term::headToString() const return "$let([" + typesList + "], [" + symbolsList + "] := " + binding.toString() + ", "; } +#if VHOL case Term:: SF_LAMBDA: { VList* vars = sd->getLambdaVars(); SList* sorts = sd->getLambdaVarSorts(); @@ -697,6 +795,7 @@ vstring Term::headToString() const varList += "]"; return "(^" + varList + " : (" + lambdaExp.toString() + "))"; } +#endif case Term::SF_MATCH: { // we simply let the arguments be written out return "$match("; @@ -759,10 +858,12 @@ vstring TermList::asArgsToString() const } const Term* t = ts->term(); +#if VHOL if(!(t->isSort() && static_cast(const_cast(t))->isArrowSort())){ res += t->toString(); continue; } +#endif res += t->headToString(); @@ -804,6 +905,7 @@ vstring Term::toString(bool topLevel) const return "$tType"; } +#if VHOL if(!isSpecial() && !isLiteral()){ if(isSort() && static_cast(const_cast(this))->isArrowSort()){ ASS(arity() == 2); @@ -816,6 +918,7 @@ vstring Term::toString(bool topLevel) const return res; } } +#endif vstring s = headToString(); @@ -844,13 +947,13 @@ vstring Literal::toString() const } vstring res = s + lhs->next()->toString(); - if (env.property->higherOrder() || - (SortHelper::getEqualityArgumentSort(this) == AtomicSort::boolSort())){ + if ( +#if VHOL + env.property->higherOrder() || +#endif + (SortHelper::getEqualityArgumentSort(this).isBoolSort())){ res = "("+res+")"; } - /*if(isTwoVarEquality()){ - res += "___ sort: " + twoVarEqSort().toString(); - }*/ return res; } @@ -1193,7 +1296,7 @@ Term* Term::createTupleLet(unsigned tupleFunctor, VList* symbols, TermList bindi unsigned arg = 0; while (sit.hasNext()) { unsigned symbol = sit.next(); - bool isPredicate = tupleSymbol->fnType()->arg(arg) == AtomicSort::boolSort(); + bool isPredicate = tupleSymbol->fnType()->arg(arg).isBoolSort(); if (!distinctSymbols.contains(make_pair(symbol, isPredicate))) { distinctSymbols.insert(make_pair(symbol, isPredicate)); } else { @@ -1230,6 +1333,7 @@ Term* Term::createFormula(Formula* formula) } +#if VHOL /** * Create a lambda term from a list of lambda vars and an * expression and returns the resulting term @@ -1257,6 +1361,7 @@ Term* Term::createLambda(TermList lambdaExp, VList* vars, SList* sorts, TermList s->getSpecialData()->_lambdaData.sort = lambdaTmSort; return s; } +#endif Term* Term::createTuple(unsigned arity, TermList* sorts, TermList* elements) { CALL("Term::createTuple"); @@ -1400,6 +1505,7 @@ TermList AtomicSort::rationalSort(){ return TermList(_rat); } +#if VHOL TermList AtomicSort::arrowSort(TermList s1, TermList s2){ CALL("AtomicSort::arrowSort/1"); unsigned arrow = env.signature->getArrowConstructor(); @@ -1422,6 +1528,7 @@ TermList AtomicSort::arrowSort(TermStack& domSorts, TermList range) } return res; } +#endif AtomicSort* AtomicSort::createConstant(const vstring& name) { @@ -1544,8 +1651,10 @@ bool Term::isBoolean() const { case SF_FORMULA: return true; case SF_TUPLE: +#if VHOL case SF_LAMBDA: return false; +#endif case SF_ITE: case SF_LET: case SF_LET_TUPLE: { @@ -1886,7 +1995,29 @@ Literal* Literal::create(unsigned pred, bool polarity, std::initializer_list deBruijnIndex() const; + TermList lhs() const; + TermList rhs() const; + TermList lambdaBody() const; + TermList head(); + TermList result(); + TermList finalResult(); +#endif + bool containsSubterm(TermList v); bool containsAllVariablesOf(TermList t); @@ -238,6 +255,13 @@ class TermList { unsigned sort : 1; /** true if term contains at least one term var */ unsigned hasTermVar : 1; +#if VHOL + /** true if the term contains a De Bruijn index */ + unsigned hasDBIndex : 1; + /** true if the term contains a redex */ + unsigned hasRedex : 1; +#endif + /** Ordering comparison result for commutative term arguments, one of * 0 (unknown) 1 (less), 2 (equal), 3 (greater), 4 (incomparable) * @see Term::ArgumentOrder */ @@ -278,7 +302,9 @@ class Term static const unsigned SF_FORMULA = 0xFFFFFFFD; static const unsigned SF_TUPLE = 0xFFFFFFFC; static const unsigned SF_LET_TUPLE = 0xFFFFFFFB; +#if VHOL static const unsigned SF_LAMBDA = 0xFFFFFFFA; +#endif static const unsigned SF_MATCH = 0xFFFFFFF9; static const unsigned SPECIAL_FUNCTOR_LOWER_BOUND = 0xFFFFFFF9; @@ -309,6 +335,7 @@ class Term TermList binding; TermList sort; } _letTupleData; +#if VHOL struct { TermList lambdaExp; VList* _vars; @@ -316,6 +343,7 @@ class Term TermList sort; TermList expSort;//TODO is this needed? } _lambdaData; +#endif struct { TermList sort; TermList matchedSort; @@ -334,16 +362,20 @@ class Term ASS_REP(getType() == SF_LET || getType() == SF_LET_TUPLE, getType()); return getType() == SF_LET ? _letData.functor : _letTupleData.functor; } +#if VHOL VList* getLambdaVars() const { ASS_EQ(getType(), SF_LAMBDA); return _lambdaData._vars; } SList* getLambdaVarSorts() const { ASS_EQ(getType(), SF_LAMBDA); return _lambdaData._sorts; } TermList getLambdaExp() const { ASS_EQ(getType(), SF_LAMBDA); return _lambdaData.lambdaExp; } +#endif VList* getVariables() const { ASS_EQ(getType(), SF_LET); return _letData.variables; } VList* getTupleSymbols() const { return _letTupleData.symbols; } TermList getBinding() const { ASS_REP(getType() == SF_LET || getType() == SF_LET_TUPLE, getType()); return TermList(getType() == SF_LET ? _letData.binding : _letTupleData.binding); } +#if VHOL TermList getLambdaExpSort() const { ASS_EQ(getType(), SF_LAMBDA); return _lambdaData.expSort; } +#endif TermList getSort() const { switch (getType()) { case SF_ITE: @@ -352,8 +384,10 @@ class Term return _letData.sort; case SF_LET_TUPLE: return _letTupleData.sort; +#if VHOL case SF_LAMBDA: return _lambdaData.sort; +#endif case SF_MATCH: return _matchData.sort; default: @@ -381,7 +415,9 @@ class Term static Term* createConstant(unsigned symbolNumber) { return create(symbolNumber,0,0); } static Term* createITE(Formula * condition, TermList thenBranch, TermList elseBranch, TermList branchSort); static Term* createLet(unsigned functor, VList* variables, TermList binding, TermList body, TermList bodySort); +#if VHOL static Term* createLambda(TermList lambdaExp, VList* vars, SList* sorts, TermList expSort); +#endif static Term* createTupleLet(unsigned functor, VList* symbols, TermList binding, TermList body, TermList bodySort); static Term* createFormula(Formula* formula); static Term* createTuple(unsigned arity, TermList* sorts, TermList* elements); @@ -633,13 +669,46 @@ class Term bool isLiteral() const { return _args[0]._info.literal; } /** True if the term is, in fact, a sort */ bool isSort() const { return _args[0]._info.sort; } + +#if VHOL /** true if the term is an application */ bool isApplication() const; /** true if the term is a lambda term */ bool isLambdaTerm() const; + /** true if the term is a redex */ + bool isRedex(); + + void setHasRedex(bool b) + { + CALL("setHasRedex"); + ASS(shared() && !isSort()); + _args[0]._info.hasRedex = b; + } + /** true if term contains redex */ + bool hasRedex() const + { + ASS(_args[0]._info.shared); + return _args[0]._info.hasRedex; + } + /** returns the head of an applicative term */ + TermList head(); /** returns empty option if not a De Bruijn index and index otherwise */ Option deBruijnIndex() const; + void setHasDBIndex(bool b) + { + CALL("setHasDBIndex"); + ASS(shared() && !isSort()); + _args[0]._info.hasDBIndex = b; + } + /** returns true if term contains De Bruijn index */ + bool hasDBIndex() const + { + ASS(_args[0]._info.shared); + return _args[0]._info.hasDBIndex; + } +#endif + /** Return an index of the argument to which @b arg points */ unsigned getArgumentIndex(TermList* arg) { @@ -714,7 +783,9 @@ class Term bool isTupleLet() const { return functor() == SF_LET_TUPLE; } bool isTuple() const { return functor() == SF_TUPLE; } bool isFormula() const { return functor() == SF_FORMULA; } +#if VHOL bool isLambda() const { return functor() == SF_LAMBDA; } +#endif bool isMatch() const { return functor() == SF_MATCH; } bool isBoolean() const; bool isSuper() const; @@ -846,8 +917,10 @@ class AtomicSort static AtomicSort* createConstant(unsigned typeCon) { return create(typeCon,0,0); } static AtomicSort* createConstant(const vstring& name); +#if VHOL /** True if the sort is a higher-order arrow sort */ bool isArrowSort() const; +#endif /** True if the sort $o */ bool isBoolSort() const; /** true if sort is the sort of an array */ @@ -863,9 +936,19 @@ class AtomicSort const vstring& typeConName() const; +#if VHOL + + /** domain of an arrow sort */ + TermList domain(); + /** result sort of an arrow sort */ + TermList result(); + /** */ + TermList finalResult(); + static TermList arrowSort(TermStack& domSorts, TermList range); static TermList arrowSort(TermList s1, TermList s2); static TermList arrowSort(TermList s1, TermList s2, TermList s3); +#endif static TermList arraySort(TermList indexSort, TermList innerSort); static TermList tupleSort(unsigned arity, TermList* sorts); static TermList defaultSort(); @@ -944,6 +1027,11 @@ class Literal return l->isPositive() ? l : complementaryLiteral(l); } +#if VHOL + bool isFlexFlex() const; + bool isFlexRigid() const; +#endif + /** true if positive */ bool isPositive() const { diff --git a/Kernel/TermIterators.cpp b/Kernel/TermIterators.cpp index 2cd6118aa6..acbbef4016 100644 --- a/Kernel/TermIterators.cpp +++ b/Kernel/TermIterators.cpp @@ -24,8 +24,6 @@ namespace Kernel { -typedef ApplicativeHelper AH; - /** * True if there exists next variable */ @@ -243,6 +241,10 @@ bool TopLevelVarIterator::hasNext() }*/ +#if VHOL + +typedef ApplicativeHelper AH; + TermList FirstOrderSubtermIt::next() { CALL("FirstOrderSubtermIt::next"); @@ -300,6 +302,8 @@ bool BooleanSubtermIt::hasNext() return false; } +#endif + ////////////////////////////////////////////////////////////////////////// /// /// /// END OF HIGHER-ORDER ITERATORS /// diff --git a/Kernel/TermIterators.hpp b/Kernel/TermIterators.hpp index 183742145f..8da562a44c 100644 --- a/Kernel/TermIterators.hpp +++ b/Kernel/TermIterators.hpp @@ -363,6 +363,7 @@ class TopLevelVarIterator TermList _next; };*/ +#if VHOL class FirstOrderSubtermIt : public IteratorCore @@ -429,6 +430,8 @@ class BooleanSubtermIt Stack _stack; }; +#endif + ////////////////////////////////////////////////////////////////////////// /// /// /// END OF HIGHER-ORDER ITERATORS /// diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index dd4133fc25..89b1d19d54 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -102,19 +102,14 @@ Term* TermTransformer::transform(Term* term) TermList dest = transformSubterm(tl); if (tl != dest) { modified.setTop(true); - if(!_recurseIntoReplaced){ - args.push(dest); - continue; - } - tl = dest; } - if (tl.isVar()) { - args.push(tl); + if (dest.isVar() || !exploreSubterms(tl, dest)) { + args.push(dest); continue; } - ASS(tl.isTerm()); - Term* t = tl.term(); + ASS(dest.isTerm()); + Term* t = dest.term(); onTermEntry(t); @@ -143,6 +138,16 @@ Term* TermTransformer::transform(Term* term) create (term, argLst, _sharedResult) ; } +// default implementation, can override if required +bool TermTransformer::exploreSubterms(TermList orig, TermList newTerm) +{ + CALL("TermTransformer::exploreSubterms"); + ASS(newTerm.isTerm()) + + if(orig != newTerm) return false; + return true; +} + Literal* TermTransformer::transform(Literal* lit) { CALL("TermTransformer::transform(Literal* lit)"); diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index b4034a075f..09122642ba 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -40,11 +40,9 @@ class TermTransformer { public: TermTransformer() : _sharedResult(true), - _recurseIntoReplaced(false), _transformSorts(true) {} void createNonShared(){ _sharedResult = false; } - void recurseIntoReplaced(){ _recurseIntoReplaced = true; } void dontTransformSorts(){ _transformSorts = false; } virtual ~TermTransformer() {} @@ -58,13 +56,14 @@ class TermTransformer { // By default we do nothing on entry and exit virtual void onTermEntry(Term*){} virtual void onTermExit(Term*){} + // default implementation explores all subterms when + // a term has not been transformed (orig == new) + // and none otherwise + virtual bool exploreSubterms(TermList orig, TermList newTerm); Term* transformSpecial(Term* specialTerm); virtual Formula* transform(Formula* f); bool _sharedResult; - // recurse into repalced only affects applicative terms currently - // can easily be extended to standard terms if required - bool _recurseIntoReplaced; bool _transformSorts; private: @@ -73,28 +72,6 @@ class TermTransformer { { return shared ? T::create(static_cast(t), argLst) : T::createNonShared(static_cast(t), argLst); } }; -class ApplicativeTermTransformer : public TermTransformer -{ -public: - ApplicativeTermTransformer() {} - - virtual TermList transformSubterm(TermList trm){ - Term* t = _terms.top(); - if(t->isApplication() && trm == *t->nthArgument(2)){ - return trm; - } - return transformFirstOrderSubterm(trm); - } - virtual void onTermEntry(Term* t){ _terms.push(t);} - virtual void onTermExit(Term* t){ _terms.pop(); } -protected: - - virtual TermList transformFirstOrderSubterm(TermList trm) = 0; - -private: - Stack _terms; -}; - /** * Has similar philosophy to TermTransformer, but: * goes bottom up and so subterms of currently considered terms diff --git a/Kernel/Unit.hpp b/Kernel/Unit.hpp index 7edb7b0599..622f6ce491 100644 --- a/Kernel/Unit.hpp +++ b/Kernel/Unit.hpp @@ -76,12 +76,8 @@ class Unit bool derivedFromGoal() const { return _inference.derivedFromGoal(); } /** see isPureTheoryDescendant in Inference.cpp */ bool isPureTheoryDescendant() const { return _inference.isPureTheoryDescendant(); } - /** see isCombAxiomsDescendant in Inference.cpp */ - bool isCombAxiomsDescendant() const { return _inference.isCombAxiomsDescendant(); } /** see isProxyAxiomsDescendant in Inference.cpp */ bool isProxyAxiomsDescendant() const { return _inference.isProxyAxiomsDescendant(); } - /** see isHolAxiomsDescendant in Inference.cpp */ - bool isHolAxiomsDescendant() const { return _inference.isHolAxiomsDescendant(); } /** see isTheoryAxiom in Inference.cpp */ bool isTheoryAxiom() const { return _inference.isTheoryAxiom(); } diff --git a/Parse/TPTP.cpp b/Parse/TPTP.cpp index 238a763acd..c3df569221 100644 --- a/Parse/TPTP.cpp +++ b/Parse/TPTP.cpp @@ -88,7 +88,9 @@ TPTP::TPTP(istream& in) _allowedNames(0), _in(&in), _includeDirectory(""), +#if VHOL _isThf(false), +#endif _containsPolymorphism(false), _currentColor(COLOR_TRANSPARENT), _lastPushed(TM), @@ -137,7 +139,11 @@ void TPTP::parse() fof(true); break; case THF: +#if VHOL _isThf = true; +#else + PARSE_ERROR("To parse higher-order problems please build Vampire with higher-order support", _gpos); +#endif case TFF: _isFof = false; tff(); @@ -191,6 +197,7 @@ void TPTP::parse() case END_FORMULA: endFormula(); break; +#if VHOL case END_APP: endApp(); break; @@ -203,6 +210,7 @@ void TPTP::parse() case HOL_TERM: holTerm(); break; +#endif case FORMULA_INSIDE_TERM: formulaInsideTerm(); break; @@ -1419,6 +1427,7 @@ void TPTP::tff() } vstring nm = name(); consumeToken(T_COLON); +#if VHOL if(_isThf){ tok = getTok(0); if (tok.tag == T_TTYPE) { @@ -1447,6 +1456,7 @@ void TPTP::tff() return; } } +#endif // the matching number of rpars will be read _ints.push(lpars); // remember type name @@ -1519,6 +1529,8 @@ unsigned TPTP::getConstructorArity() * @author Ahmed Bhayat */ +#if VHOL + void TPTP::holFormula() { CALL("TPTP::holFunction"); @@ -1700,7 +1712,9 @@ void TPTP::holTerm() _lastPushed = TM; } - + +#endif + vstring TPTP::convert(Tag t) { CALL("TPTP::convert(Tag t)"); @@ -1736,6 +1750,8 @@ vstring TPTP::convert(Tag t) * @author Ahmed Bhayat */ +#if VHOL + void TPTP::endHolFormula() { CALL("TPTP::endHolFormula"); @@ -1799,6 +1815,7 @@ void TPTP::endHolFormula() _states.push(UNBIND_VARIABLES); return; } + case LITERAL: default: throw ::Exception((vstring)"tell me how to handle connective " + Int::toString(con)); @@ -1946,7 +1963,6 @@ switch (tag) { _states.push(HOL_FORMULA); } - /** * Process the end of an @ term * @since 05/11/2017 Manchester @@ -1975,6 +1991,7 @@ void TPTP::endApp() _termLists.push(TermList(Term::create(app, 4, args.begin()))); _lastPushed = TM; } +#endif /** * Process the end of the $ite expression @@ -2206,6 +2223,7 @@ void TPTP::formula() { CALL("TPTP::formula"); +#if VHOL if(_isThf){ _connectives.push(-2); //special connective for HOL funcs _connectives.push(-1); @@ -2213,10 +2231,13 @@ void TPTP::formula() _states.push(END_HOL_FORMULA); _states.push(HOL_FORMULA); }else{ +#endif _connectives.push(-1); _states.push(END_FORMULA); _states.push(SIMPLE_FORMULA); +#if VHOL } +#endif } // formula /** @@ -2863,7 +2884,11 @@ void TPTP::varList() PARSE_ERROR("two declarations of variable sort",tok); } resetToks(); - bindVariable(var,(_isThf ? readArrowSort() : readSort())); + bindVariable(var,( +#if VHOL + _isThf ? readArrowSort() : +#endif + readSort())); sortDeclared = true; goto afterVar; @@ -3120,9 +3145,11 @@ void TPTP::endEquality() _insideEqualityArgument--; - if((_isThf) && (_lastPushed == FORM)){ +#if VHOL + if(_isThf && (_lastPushed == FORM)){ endFormulaInsideTerm(); } +#endif TermList rhs = _termLists.pop(); TermList lhs = _termLists.pop(); @@ -3834,7 +3861,11 @@ void TPTP::endTff() vstring name = _strings.pop(); unsigned arity = ot->arity(); - bool isPredicate = ot->isPredicateType() && !_isThf; + bool isPredicate = ot->isPredicateType(); +#if VHOL + isPredicate = isPredicate && !_isThf; +#endif + bool isTypeCon = !isPredicate && (ot->result() == AtomicSort::superSort()); bool added; @@ -3878,11 +3909,13 @@ void TPTP::endTff() else { symbol->setType(ot); //TODO check whether the below is actually required or not. +#if VHOL if(_isThf){ if(!_typeArities.insert(name, ot->numTypeArguments())){ USER_ERROR("Symbol " + name + " used with different type arities"); } } +#endif } //cout << "added: " + symbol->name() + " of type " + ot->toString() + " and functor " << fun << endl; } @@ -3961,7 +3994,11 @@ OperatorType* TPTP::constructOperatorType(Type* t, VList* vars) SortHelper::normaliseSort(vars, resultSort); } - if (isPredicate && !_isThf) { //in THF, we treat predicates and boolean terms the same + if (isPredicate +#if VHOL + && !_isThf +#endif + ) { //in THF, we treat predicates and boolean terms the same return OperatorType::getPredicateType(arity, argumentSorts.begin(), VList::length(vars)); } else { return OperatorType::getFunctionType(arity, argumentSorts.begin(), resultSort, VList::length(vars)); @@ -4244,10 +4281,12 @@ void TPTP::simpleType() return; } +#if VHOL if(_isThf){ _types.push(new AtomicType(readArrowSort())); return; } +#endif if (tok.tag == T_LPAR) { resetToks(); @@ -4265,6 +4304,8 @@ void TPTP::simpleType() * @since 10/11/2017 Leicester * @author Ahmed Bhayat */ + +#if VHOL TermList TPTP::readArrowSort() { @@ -4341,6 +4382,8 @@ void TPTP::readTypeArgs(unsigned arity) } } +#endif + /** * Read a sort and return its number. If a sort is not built-in, then raise an * exception if it has been declared and newSortExpected, or it has not been @@ -4358,10 +4401,12 @@ TermList TPTP::readSort() { unsigned arity = 0; vstring fname = tok.content; +#if VHOL if(_isThf){ arity = _typeConstructorArities.find(fname) ? _typeConstructorArities.get(fname) : 0; readTypeArgs(arity); } else { +#endif int c = getChar(0); //Polymorphic sorts of are of the form //type_con(sort_1, ..., sort_n) @@ -4386,7 +4431,9 @@ TermList TPTP::readSort() } } } +#if VHOL } +#endif return createTypeConApplication(fname, arity); } case T_VAR: @@ -4680,9 +4727,11 @@ unsigned TPTP::addFunction(vstring name,int arity,bool& added,TermList& arg) Theory::RAT_TO_REAL, Theory::REAL_TO_REAL); } +#if VHOL if (name == "vPI" || name == "vSIGMA"){ return env.signature->getPiSigmaProxy(name); } +#endif if (arity > 0) { return env.signature->addFunction(name,arity,added); } @@ -4971,12 +5020,14 @@ unsigned TPTP::addUninterpretedConstant(const vstring& name, Set& overf } //TODO make sure Vampire internal names are unique to Vampire //and cannot occur in the input AYB +#if VHOL if(name == "vAND" || name == "vOR" || name == "vIMP" || name == "vIFF" || name == "vXOR"){ return env.signature->getBinaryProxy(name); } else if (name == "vNOT"){ return env.signature->getNotProxy(); } +#endif return env.signature->addFunction(name,0,added); } // TPTP::addUninterpretedConstant @@ -5213,6 +5264,7 @@ const char* TPTP::toString(State s) return "TYPE"; case END_TFF: return "END_TFF"; +#if VHOL case END_APP: return "END_APP"; case HOL_FORMULA: @@ -5221,6 +5273,7 @@ const char* TPTP::toString(State s) return "END_HOL_FORMULA"; case HOL_TERM: return "HOL_TERM"; +#endif case END_TYPE: return "END_TYPE"; case SIMPLE_TYPE: diff --git a/Parse/TPTP.hpp b/Parse/TPTP.hpp index f3da7895ae..dd11767e08 100644 --- a/Parse/TPTP.hpp +++ b/Parse/TPTP.hpp @@ -221,6 +221,7 @@ class TPTP INCLUDE, /** after the equality */ END_EQ, +#if VHOL /** Read a HOL formula */ HOL_FORMULA, /** build a HOL formula from a connective and one or more formulas */ @@ -229,6 +230,7 @@ class TPTP HOL_TERM, /** create an application term after reading an app */ END_APP, +#endif /** tff declaration */ TFF, /** THF declaration */ @@ -588,7 +590,9 @@ class TPTP * between fof() and tff() in treating numeric constants */ bool _isFof; /** */ +#if VHOL bool _isThf; +#endif /** */ bool _containsPolymorphism; /** various strings saved during parsing */ @@ -809,6 +813,7 @@ class TPTP //these functions were all written in early 2017 (start of PhD) and are consequently //pretty nasty and don't follow the philosophy of the parser. However, they should //not impact standard parsing functions in any way. +#if VHOL void endApp(); void holFormula(); void endHolFormula(); @@ -816,6 +821,7 @@ class TPTP void foldl(TermStack*); TermList readArrowSort(); void readTypeArgs(unsigned arity); +#endif //End of higher-order specific functions void bindVariable(unsigned var,TermList sort); diff --git a/Saturation/AWPassiveClauseContainer.cpp b/Saturation/AWPassiveClauseContainer.cpp index 66c011f8c4..ee9835b837 100644 --- a/Saturation/AWPassiveClauseContainer.cpp +++ b/Saturation/AWPassiveClauseContainer.cpp @@ -114,6 +114,7 @@ bool WeightQueue::lessThan(Clause* c1,Clause* c2) { CALL("WeightQueue::lessThan"); +#if VHOL if(env.options->prioritiseClausesProducedByLongReduction()){ if(c1->inference().reductions() < c2->inference().reductions()){ return false; @@ -123,6 +124,7 @@ bool WeightQueue::lessThan(Clause* c1,Clause* c2) return true; } } +#endif Comparison weightCmp=AWPassiveClauseContainer::compareWeight(c1, c2, _opt); if (weightCmp!=EQUAL) { diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 560cec8a0c..014f61989c 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -71,6 +71,8 @@ #include "Inferences/TermAlgebraReasoning.hpp" #include "Inferences/SLQueryBackwardSubsumption.hpp" #include "Inferences/Superposition.hpp" + +#if VHOL #include "Inferences/ArgCong.hpp" #include "Inferences/NegativeExt.hpp" //#include "Inferences/Narrow.hpp" @@ -80,16 +82,19 @@ //#include "Inferences/SubVarSup.hpp" #include "Inferences/CNFOnTheFly.hpp" //#include "Inferences/RenamingOnTheFly.hpp" +#include "Inferences/BoolSimp.hpp" +#include "Inferences/CasesSimp.hpp" +#include "Inferences/Cases.hpp" +#endif + #include "Inferences/URResolution.hpp" #include "Inferences/Instantiation.hpp" #include "Inferences/TheoryInstAndSimp.hpp" #include "Inferences/Induction.hpp" #include "Inferences/ArithmeticSubtermGeneralization.hpp" #include "Inferences/TautologyDeletionISE.hpp" -//#include "Inferences/CombinatorDemodISE.hpp" -#include "Inferences/BoolSimp.hpp" -#include "Inferences/CasesSimp.hpp" -#include "Inferences/Cases.hpp" +#include "Inferences/BetaNormaliser.hpp" + #include "Saturation/ExtensionalityClauseContainer.hpp" @@ -1556,7 +1561,8 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(new EqualityResolution()); } - if(opt.combinatorySup() && prb.higherOrder()){ +#if VHOL + if(prb.higherOrder()){ gie->addFront(new ArgCong()); gie->addFront(new NegativeExt());//TODO add option /*if(opt.narrow() != Options::Narrow::OFF){ @@ -1582,6 +1588,19 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(new Choice()); } + if (opt.cases() && prb.hasFOOL() && !opt.casesSimp()) { + gie->addFront(new Cases()); + } + + if((prb.hasLogicalProxy() || prb.hasBoolVar() || prb.hasFOOL()) && + prb.higherOrder() && !prb.quantifiesOverPolymorphicVar()){ + if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && + env.options->cnfOnTheFly() != Options::CNFOnTheFly::OFF){ + gie->addFront(new LazyClausificationGIE()); + } + } +#endif + gie->addFront(new Factoring()); if (opt.binaryResolution()) { gie->addFront(new BinaryResolution()); @@ -1595,17 +1614,6 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if (opt.FOOLParamodulation()) { gie->addFront(new FOOLParamodulation()); } - if (opt.cases() && prb.hasFOOL() && !opt.casesSimp()) { - gie->addFront(new Cases()); - } - - if((prb.hasLogicalProxy() || prb.hasBoolVar() || prb.hasFOOL()) && - prb.higherOrder() && !prb.quantifiesOverPolymorphicVar()){ - if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && - env.options->cnfOnTheFly() != Options::CNFOnTheFly::OFF){ - gie->addFront(new LazyClausificationGIE()); - } - } /*if (opt.injectivityReasoning()) { gie->addFront(new Injectivity()); @@ -1657,14 +1665,15 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const //create simplification engine +#if VHOL if((prb.hasLogicalProxy() || prb.hasBoolVar() || prb.hasFOOL()) && prb.higherOrder() && !prb.quantifiesOverPolymorphicVar()){ if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && env.options->cnfOnTheFly() != Options::CNFOnTheFly::OFF){ res->addSimplifierToFront(new LazyClausification()); } - //res->addSimplifierToFront(new RenamingOnTheFly()); } +#endif // create forward simplification engine if (prb.hasEquality() && opt.innerRewriting()) { @@ -1691,11 +1700,15 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const switch(opt.forwardDemodulation()) { case Options::Demodulation::ALL: case Options::Demodulation::PREORDERED: - if(opt.combinatorySup()){ - res->addForwardSimplifierToFront(new ForwardDemodulationImpl()); +#if VHOL + if(prb.higherOrder()){ + res->addForwardSimplifierToFront(new ForwardDemodulation()); } else { - res->addForwardSimplifierToFront(new ForwardDemodulationImpl()); +#endif + res->addForwardSimplifierToFront(new ForwardDemodulation()); +#if VHOL } +#endif break; case Options::Demodulation::OFF: break; @@ -1724,7 +1737,15 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const switch(opt.backwardDemodulation()) { case Options::Demodulation::ALL: case Options::Demodulation::PREORDERED: - res->addBackwardSimplifierToFront(new BackwardDemodulation()); +#if VHOL + if(prb.higherOrder()){ + res->addBackwardSimplifierToFront(new BackwardDemodulation()); + } else { +#endif + res->addBackwardSimplifierToFront(new BackwardDemodulation()); +#if VHOL + } +#endif break; case Options::Demodulation::OFF: break; @@ -1783,11 +1804,7 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons break; } - /*if(env.options->combinatorySup() && prb.higherOrder()){ - res->addFront(new CombinatorDemodISE()); - res->addFront(new CombinatorNormalisationISE()); - }*/ - +#if VHOL if(env.options->choiceReasoning() && prb.higherOrder()){ res->addFront(new ChoiceDefinitionISE()); } @@ -1806,6 +1823,13 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons res->addFrontMany(new CasesSimp()); } + if(env.options->newTautologyDel()){ + res->addFront(new TautologyDeletionISE2()); + } + + res->addFront(new BetaSimplify()); +#endif + // Only add if there are distinct groups if(prb.hasEquality() && env.signature->hasDistinctGroups()) { res->addFront(new DistinctEqualitySimplifier()); @@ -1852,9 +1876,6 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons res->addFront(new TrivialInequalitiesRemovalISE()); } res->addFront(new TautologyDeletionISE()); - if(env.options->newTautologyDel()){ - res->addFront(new TautologyDeletionISE2()); - } res->addFront(new DuplicateLiteralRemovalISE()); return res; diff --git a/Shell/FOOLElimination.cpp b/Shell/FOOLElimination.cpp index cfcd7b9312..066eca5c47 100644 --- a/Shell/FOOLElimination.cpp +++ b/Shell/FOOLElimination.cpp @@ -31,7 +31,9 @@ #include "Shell/Options.hpp" #include "Shell/SymbolOccurrenceReplacement.hpp" +#if VHOL #include "Shell/LambdaConversion.hpp" +#endif #include "Shell/Statistics.hpp" #include "Rectify.hpp" @@ -48,7 +50,11 @@ const char* FOOLElimination::LET_PREFIX = "lG"; const char* FOOLElimination::BOOL_PREFIX = "bG"; const char* FOOLElimination::MATCH_PREFIX = "mG"; -FOOLElimination::FOOLElimination() : _defs(0), _higherOrder(0), _polymorphic(0) {} +FOOLElimination::FOOLElimination() : _defs(0), +#if VHOL + _higherOrder(0), +#endif + _polymorphic(0) {} bool FOOLElimination::needsElimination(FormulaUnit* unit) { CALL("FOOLElimination::needsElimination"); @@ -98,7 +104,9 @@ bool FOOLElimination::needsElimination(FormulaUnit* unit) { void FOOLElimination::apply(Problem& prb) { CALL("FOOLElimination::apply(Problem*)"); +#if VHOL _higherOrder = prb.hasApp(); +#endif _polymorphic = prb.hasPolymorphicSym(); apply(prb.units()); prb.reportFOOLEliminated(); @@ -177,6 +185,7 @@ FormulaUnit* FOOLElimination::apply(FormulaUnit* unit) { Formula* FOOLElimination::process(Formula* formula) { CALL("FOOLElimination::process(Formula*)"); +#if VHOL if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && !_polymorphic){ TermList proxifiedFormula = LambdaConversion().convertLambda(formula); @@ -188,6 +197,7 @@ Formula* FOOLElimination::process(Formula* formula) { return processedFormula; } +#endif switch (formula->connective()) { case LITERAL: { @@ -211,8 +221,11 @@ Formula* FOOLElimination::process(Formula* formula) { * between FOOL boolean terms. */ - if (literal->isEquality() && - (!env.property->higherOrder() || env.options->equalityToEquivalence())) { + if (literal->isEquality() +#if VHOL + && (!env.property->higherOrder() || env.options->equalityToEquivalence()) +#endif + ) { ASS_EQ(literal->arity(), 2); TermList lhs = *literal->nthArgument(0); TermList rhs = *literal->nthArgument(1); @@ -737,7 +750,9 @@ void FOOLElimination::process(Term* term, Context context, TermList& termResult, * where true is FOOL constant * 3) Replace the term with g(Y1, ..., Ym, X1, ..., Xn) */ +#if VHOL if(!_higherOrder){ +#endif Formula *formula = process(sd->getFormula()); collectSorts(freeVars, typeVars, termVars, allVars, termVarSorts); @@ -760,16 +775,21 @@ void FOOLElimination::process(Term* term, Context context, TermList& termResult, NonspecificInference1(InferenceRule::FOOL_ELIMINATION, _unit))); termResult = freshSymbolApplication; - } else { +#if VHOL + } + else { termResult = LambdaConversion().convertLambda(sd->getFormula()); } +#endif break; } +#if VHOL case Term::SF_LAMBDA: { // Lambda terms using named representation are converted to nameless De Bruijn representation termResult = LambdaConversion().convertLambda(term); break; } +#endif case Term::SF_MATCH: { /** diff --git a/Shell/FOOLElimination.hpp b/Shell/FOOLElimination.hpp index 882fe2f5c3..33b88012d0 100644 --- a/Shell/FOOLElimination.hpp +++ b/Shell/FOOLElimination.hpp @@ -48,7 +48,9 @@ class FOOLElimination { /** A list of definitions, produced during preprocessing */ UnitList* _defs; +#if VHOL bool _higherOrder; +#endif bool _polymorphic; /** Add a new definitions to _defs */ diff --git a/Shell/Flattening.cpp b/Shell/Flattening.cpp index c745047a7d..a080ade800 100644 --- a/Shell/Flattening.cpp +++ b/Shell/Flattening.cpp @@ -104,8 +104,11 @@ Formula* Flattening::innerFlatten (Formula* f) { Literal* lit = f->literal(); - if (env.options->newCNF() && !env.property->higherOrder() && - !env.property->hasPolymorphicSym()) { + if (env.options->newCNF() +#if VHOL + && !env.property->higherOrder() +#endif + && !env.property->hasPolymorphicSym()) { // Convert equality between boolean FOOL terms to equivalence if (lit->isEquality()) { TermList lhs = *lit->nthArgument(0); diff --git a/Shell/FunctionDefinition.cpp b/Shell/FunctionDefinition.cpp index 906cb5c517..9eeccbb776 100644 --- a/Shell/FunctionDefinition.cpp +++ b/Shell/FunctionDefinition.cpp @@ -892,15 +892,23 @@ FunctionDefinition::defines (Term* lhs, Term* rhs) } //Higher-order often contains definitions of the form //f = ^x^y... - if (rhs->arity() && !env.property->higherOrder()) { // c = f(...) + if (rhs->arity() +#if VHOL + && !env.property->higherOrder() +#endif + ) { // c = f(...) return 0; } if (rhs->functor() == f) { return 0; } +#if VHOL if(!env.property->higherOrder()){ +#endif return new Def(lhs,rhs,true,true); +#if VHOL } +#endif } int vars = 0; // counter of variables occurring in the lhs diff --git a/Shell/InequalitySplitting.cpp b/Shell/InequalitySplitting.cpp index 74796d2dfe..502cfc5cf1 100644 --- a/Shell/InequalitySplitting.cpp +++ b/Shell/InequalitySplitting.cpp @@ -43,7 +43,10 @@ using namespace Kernel; InequalitySplitting::InequalitySplitting(const Options& opt) -: _splittingTreshold(opt.inequalitySplitting()), _appify(false) +: _splittingTreshold(opt.inequalitySplitting()) +#if VHOL + , _appify(false) +#endif { ASS_G(_splittingTreshold,0); } @@ -52,7 +55,9 @@ void InequalitySplitting::perform(Problem& prb) { CALL("InequalitySplitting::perform"); +#if VHOL _appify = prb.hasApp(); +#endif if(perform(prb.units())) { prb.invalidateByRemoval(); } @@ -161,22 +166,29 @@ Literal* InequalitySplitting::splitLiteral(Literal* lit, UnitInputType inpType, unsigned fun; OperatorType* type; +#if VHOL if(!_appify){ +#endif fun=env.signature->addNamePredicate(vars.size() + 1); type = OperatorType::getPredicateType({srt}, vars.size()); +#if VHOL } else { srt = AtomicSort::arrowSort(srt, AtomicSort::boolSort()); fun=env.signature->addNameFunction(vars.size()); type = OperatorType::getConstantsType(srt, vars.size()); } - +#endif Signature::Symbol* sym; +#if VHOL if(_appify){ sym = env.signature->getFunction(fun); } else { - sym = env.signature->getPredicate(fun); +#endif + sym = env.signature->getPredicate(fun); +#if VHOL } +#endif sym->setType(type); TermList s; @@ -202,11 +214,15 @@ Literal* InequalitySplitting::splitLiteral(Literal* lit, UnitInputType inpType, (*defCl)[0]=makeNameLiteral(fun, t, false, vars); _predDefs.push(defCl); +#if VHOL if(_appify){ InferenceStore::instance()->recordIntroducedSymbol(defCl,FUNC,fun); } else { +#endif InferenceStore::instance()->recordIntroducedSymbol(defCl,PRED,fun); +#if VHOL } +#endif premise=defCl; @@ -233,9 +249,12 @@ Literal* InequalitySplitting::makeNameLiteral(unsigned predNum, TermList arg, bo { CALL("InequalitySplitting::makeNameLiteral"); +#if VHOL if(!_appify){ +#endif vars.push(arg); return Literal::create(predNum, vars.size(), polarity, false, vars.begin()); +#if VHOL } else { TermList boolT = polarity ? TermList(Term::foolTrue()) : TermList(Term::foolFalse()); TermList head = TermList(Term::create(predNum, vars.size(), vars.begin())); @@ -243,6 +262,7 @@ Literal* InequalitySplitting::makeNameLiteral(unsigned predNum, TermList arg, bo TermList t = ApplicativeHelper::createAppTerm(headS, head, arg); return Literal::createEquality(true, t, boolT, AtomicSort::boolSort()); } +#endif } diff --git a/Shell/InequalitySplitting.hpp b/Shell/InequalitySplitting.hpp index 58c53743f3..605b7c8f30 100644 --- a/Shell/InequalitySplitting.hpp +++ b/Shell/InequalitySplitting.hpp @@ -46,7 +46,9 @@ class InequalitySplitting Stack _predDefs; unsigned _splittingTreshold; +#if VHOL bool _appify; // do it the higher-order way +#endif }; }; diff --git a/Shell/LambdaConversion.cpp b/Shell/LambdaConversion.cpp index 567f6d10e9..e53a8f031f 100644 --- a/Shell/LambdaConversion.cpp +++ b/Shell/LambdaConversion.cpp @@ -9,13 +9,13 @@ */ /** * @file LambdaElimination.cpp - * Takes a single lambda term and eliminates the lambda(s) - * from the term by translating to combinatory logic. - * A term of the form ^[X, Y, Z]:exp is interpreted as: - * ^[X]:(^[Y]:(^[Z]:exp)). I.e. as three lambdas in a single term. + * converts a term from namaed lambda representation to + * a nameless one */ +#if VHOL + #include "Indexing/TermSharing.hpp" #include "Lib/Environment.hpp" @@ -489,3 +489,5 @@ Literal* LambdaConversion::toEquality(TermList booleanTerm, bool polarity) { TermList boolVal = polarity ? TermList(Term::foolTrue()) : TermList(Term::foolFalse()); return Literal::createEquality(true, booleanTerm, boolVal, AtomicSort::boolSort()); } + +#endif diff --git a/Shell/LambdaConversion.hpp b/Shell/LambdaConversion.hpp index 211cb446df..93eff92cb7 100644 --- a/Shell/LambdaConversion.hpp +++ b/Shell/LambdaConversion.hpp @@ -15,6 +15,8 @@ #ifndef __LambdaConversion__ #define __LambdaConversion__ +#if VHOL + #include "Lib/Deque.hpp" #include "Forwards.hpp" @@ -56,4 +58,6 @@ class LambdaConversion { TermList sortOf(TermList t); }; +#endif + #endif // __LambdaConversion__ diff --git a/Shell/Naming.cpp b/Shell/Naming.cpp index 200c4860b5..12458991d5 100644 --- a/Shell/Naming.cpp +++ b/Shell/Naming.cpp @@ -28,7 +28,9 @@ #include "Kernel/SortHelper.hpp" #include "Kernel/SubformulaIterator.hpp" #include "Kernel/Term.hpp" +#if VHOL #include "Kernel/ApplicativeHelper.hpp" +#endif #include "Shell/Statistics.hpp" #include "Shell/Options.hpp" @@ -52,7 +54,10 @@ using namespace Shell; */ Naming::Naming(int threshold, bool preserveEpr, bool appify) : _threshold(threshold + 1), _preserveEpr(preserveEpr), - _appify(appify), _varsInScope(false) { +#if VHOL + _appify(appify), +#endif + _varsInScope(false) { ASS(threshold < 32768); } // Naming::Naming @@ -1160,11 +1165,17 @@ Literal* Naming::getDefinitionLiteral(Formula* f, VList* freeVars) { SortHelper::normaliseArgSorts(typeVars, termVarSorts); - for(unsigned i = 0; i < termVars.size() && !_appify; i++){ + for(unsigned i = 0; i < termVars.size() +#if VHOL + && !_appify +#endif + ; i++){ allVars.push(termVars[i]); } +#if VHOL if(!_appify){ +#endif unsigned pred = reused_symbol; if(!successfully_reused) { pred = env.signature->addNamePredicate(arity); @@ -1186,6 +1197,7 @@ Literal* Naming::getDefinitionLiteral(Formula* f, VList* freeVars) { predSym->setType(OperatorType::getPredicateType(arity - typeArgArity, termVarSorts.begin(), typeArgArity)); } return Literal::create(pred, arity, true, false, allVars.begin()); +#if VHOL } else { unsigned fun = reused_symbol; if(!successfully_reused) { @@ -1201,6 +1213,7 @@ Literal* Naming::getDefinitionLiteral(Formula* f, VList* freeVars) { SortHelper::getResultSort(head.term()), head, termVars); return Literal::createEquality(true, TermList(t), TermList(Term::foolTrue()), AtomicSort::boolSort()); } +#endif } /** diff --git a/Shell/Naming.hpp b/Shell/Naming.hpp index f7efeafa20..53bea6bcdb 100644 --- a/Shell/Naming.hpp +++ b/Shell/Naming.hpp @@ -32,7 +32,7 @@ namespace Shell { class Naming { public: - Naming (int threshold, bool preserveEpr, bool appify); + Naming (int threshold, bool preserveEpr, bool appify = false); FormulaUnit* apply(FormulaUnit* unit,UnitList*& defs); private: /** Encodes information about the position of the sub formula */ @@ -126,7 +126,9 @@ class Naming * Corresponds to the value of the epr_preserving_naming option. */ bool _preserveEpr; +#if VHOL bool _appify; // higher-order stuff +#endif /** * True if there are universally quantified variables at the scope of the current formula * diff --git a/Shell/Normalisation.cpp b/Shell/Normalisation.cpp index 0c0ffe0437..3c7f0b824d 100644 --- a/Shell/Normalisation.cpp +++ b/Shell/Normalisation.cpp @@ -506,6 +506,7 @@ Comparison Normalisation::compare(Term* t1, Term* t2) break; // compare body of the tuple below } +#if VHOL case Term::SF_LAMBDA: { comp = compare((int) VList::length(t1->getSpecialData()->getLambdaVars()), (int) VList::length(t2->getSpecialData()->getLambdaVars())); @@ -517,7 +518,8 @@ Comparison Normalisation::compare(Term* t1, Term* t2) comp = compare(b1, b2); return comp; } - +#endif + case Term::SF_MATCH: { break; // comparison by arity and pairwise by arguments is done below } diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 50c407c7b1..f397a302b6 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -420,8 +420,9 @@ void Options::init() _lookup.insert(&_equalityProxy); _equalityProxy.tag(OptionTag::PREPROCESSING); _equalityProxy.addProblemConstraint(hasEquality()); +#if VHOL _equalityProxy.addProblemConstraint(onlyFirstOrder()); - _equalityProxy.addHardConstraint(If(notEqual(EqualityProxy::OFF)).then(_combinatorySuperposition.is(notEqual(true)))); +#endif _equalityProxy.addHardConstraint(If(notEqual(EqualityProxy::OFF)).then(Or(_useMonoEqualityProxy.is(equal(true)), _saturationAlgorithm.is(notEqual(SaturationAlgorithm::INST_GEN))))); _equalityProxy.setRandomChoices(isRandOn(),{"R","RS","RST","RSTC","off","off","off","off","off"}); // wasn't tested, make off more likely @@ -564,7 +565,9 @@ void Options::init() _newCNF.description="Use NewCNF algorithm to do naming, preprecess3 and clausificiation."; _lookup.insert(&_newCNF); _newCNF.addProblemConstraint(hasFormulas()); +#if VHOL _newCNF.addProblemConstraint(onlyFirstOrder()); +#endif _newCNF.tag(OptionTag::PREPROCESSING); _newCNF.setRandomChoices({"on","off"}); @@ -1496,7 +1499,6 @@ void Options::init() _backwardSubsumptionDemodulation.tag(OptionTag::INFERENCES); _backwardSubsumptionDemodulation.onlyUsefulWith(InferencingSaturationAlgorithm()); _backwardSubsumptionDemodulation.addProblemConstraint(hasEquality()); - _backwardSubsumptionDemodulation.onlyUsefulWith(_combinatorySuperposition.is(equal(false))); // higher-order support is not yet implemented _backwardSubsumptionDemodulation.setRandomChoices({"on","off"}); _backwardSubsumptionDemodulationMaxMatches = UnsignedOptionValue("backward_subsumption_demodulation_max_matches", "bsdmm", 0); @@ -1677,7 +1679,6 @@ void Options::init() _forwardSubsumptionDemodulation.onlyUsefulWith(InferencingSaturationAlgorithm()); _forwardSubsumptionDemodulation.tag(OptionTag::INFERENCES); _forwardSubsumptionDemodulation.addProblemConstraint(hasEquality()); - _forwardSubsumptionDemodulation.onlyUsefulWith(_combinatorySuperposition.is(equal(false))); // higher-order support is not yet implemented _forwardSubsumptionDemodulation.setRandomChoices({"off","on"}); _forwardSubsumptionDemodulationMaxMatches = UnsignedOptionValue("forward_subsumption_demodulation_max_matches", "fsdmm", 0); @@ -1736,28 +1737,13 @@ void Options::init() //*********************** Higher-order *********************** - _addCombAxioms = BoolOptionValue("add_comb_axioms","aca",false); - _addCombAxioms.description="Add combinator axioms"; - _lookup.insert(&_addCombAxioms); - _addCombAxioms.addProblemConstraint(hasHigherOrder()); - _addCombAxioms.onlyUsefulWith(_combinatorySuperposition.is(equal(false))); //no point having two together - _addCombAxioms.tag(OptionTag::HIGHER_ORDER); - +#if VHOL _addProxyAxioms = BoolOptionValue("add_proxy_axioms","apa",false); _addProxyAxioms.description="Add logical proxy axioms"; _lookup.insert(&_addProxyAxioms); _addProxyAxioms.addProblemConstraint(hasHigherOrder()); _addProxyAxioms.tag(OptionTag::HIGHER_ORDER); - _combinatorySuperposition = BoolOptionValue("combinatory_sup","csup",false); - _combinatorySuperposition.description="Switches on a specific ordering and that orients combinator axioms left-right." - " Also turns on a number of special inference rules"; - _lookup.insert(&_combinatorySuperposition); - _combinatorySuperposition.addProblemConstraint(hasHigherOrder()); - _combinatorySuperposition.onlyUsefulWith(_addCombAxioms.is(equal(false))); //no point having two together - _combinatorySuperposition.onlyUsefulWith(ProperSaturationAlgorithm()); - _combinatorySuperposition.tag(OptionTag::HIGHER_ORDER); - _choiceAxiom = BoolOptionValue("choice_ax","cha",false); _choiceAxiom.description="Adds the cnf form of the Hilbert choice axiom"; _lookup.insert(&_choiceAxiom); @@ -1785,18 +1771,10 @@ void Options::init() _pragmatic = BoolOptionValue("pragmatic","prag",false); _pragmatic.description="Modifes various parameters to help Vampire solve 'hard' higher-order"; - _pragmatic.onlyUsefulWith(_combinatorySuperposition.is(equal(true))); _lookup.insert(&_pragmatic); _pragmatic.addProblemConstraint(hasHigherOrder()); _pragmatic.tag(OptionTag::HIGHER_ORDER); - _maximumXXNarrows = IntOptionValue("max_XX_narrows","mXXn", 0); - _maximumXXNarrows.description="Maximum number of BXX', CXX' and SXX' narrows that" - "can be carried out 0 means that there is no limit. "; - _lookup.insert(&_maximumXXNarrows); - _maximumXXNarrows.addProblemConstraint(hasHigherOrder()); - _maximumXXNarrows.tag(OptionTag::HIGHER_ORDER); - _functionExtensionality = ChoiceOptionValue("func_ext","fe",FunctionExtensionality::ABSTRACTION, {"off", "axiom", "abstraction"}); _functionExtensionality.description="Deal with extensionality using abstraction, axiom or neither"; @@ -1828,18 +1806,6 @@ void Options::init() _piSet.addProblemConstraint(hasHigherOrder()); _piSet.tag(OptionTag::HIGHER_ORDER); - - _narrow = ChoiceOptionValue("narrow","narr",Narrow::ALL, - {"all", - "sk", - "ski", - "off"}); - _narrow.description="Controls the set of combinator equations to use in narrowing"; - _lookup.insert(&_narrow); - _narrow.addProblemConstraint(hasHigherOrder()); - _narrow.tag(OptionTag::HIGHER_ORDER); - - _equalityToEquivalence = BoolOptionValue("equality_to_equiv","e2e",false); _equalityToEquivalence.description= "Equality between boolean terms changed to equivalence \n" @@ -1904,6 +1870,7 @@ void Options::init() "exponential complexity"; _lookup.insert(&_complexVarCondition); _complexVarCondition.tag(OptionTag::HIGHER_ORDER); +#endif //*********************** InstGen *********************** @@ -3432,10 +3399,12 @@ bool Options::complete(const Problem& prb) const { CALL("Options::complete"); +#if VHOL if(prb.higherOrder()){ //safer for competition return false; } +#endif if (_showInterpolant.actualValue != InterpolantMode::OFF) { return false; @@ -3480,18 +3449,6 @@ bool Options::complete(const Problem& prb) const if (hasEquality && !_superposition.actualValue) return false; - // TODO fix this whole thing up - if((prop.hasAppliedVar())) { - //TODO make a more complex more precise case here - //There are instance where we are complete - return false; - } - - //TODO update once we have another method of dealing with bools - if((prop.hasLogicalProxy() || prop.hasBoolVar()) && !_addProxyAxioms.actualValue){ - return false; - } - if (!unitEquality) { if (_selection.actualValue <= -1000 || _selection.actualValue >= 1000) return false; if (_literalComparisonMode.actualValue == LiteralComparisonMode::REVERSE) return false; diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 370853cc47..27b8a37a0e 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -744,14 +744,6 @@ class Options FALSE_TRUE_NOT_EQ_NOT_EQ = 3 }; - enum class Narrow : unsigned int { - ALL = 0, - SK = 1, - SKI = 2, - OFF = 3 - }; - - //========================================================== // The Internals //========================================================== @@ -1859,6 +1851,7 @@ bool _hard; vstring msg(){ return " only useful with equality"; } }; +#if VHOL struct HasHigherOrder : OptionProblemConstraint{ CLASS_NAME(HasHigherOrder); USE_ALLOCATOR(HasHigherOrder); @@ -1882,6 +1875,7 @@ bool _hard; } vstring msg(){ return " not compatible with higher-order problems"; } }; +#endif struct MayHaveNonUnits : OptionProblemConstraint{ CLASS_NAME(MayHaveNonUnits); @@ -1964,9 +1958,11 @@ bool _hard; static OptionProblemConstraintUP hasCat(Property::Category c){ return OptionProblemConstraintUP(new CategoryCondition(c,true)); } - static OptionProblemConstraintUP hasEquality(){ return OptionProblemConstraintUP(new UsesEquality); } +#if VHOL static OptionProblemConstraintUP hasHigherOrder(){ return OptionProblemConstraintUP(new HasHigherOrder); } static OptionProblemConstraintUP onlyFirstOrder(){ return OptionProblemConstraintUP(new OnlyFirstOrder); } +#endif + static OptionProblemConstraintUP hasEquality(){ return OptionProblemConstraintUP(new UsesEquality); } static OptionProblemConstraintUP mayHaveNonUnits(){ return OptionProblemConstraintUP(new MayHaveNonUnits); } static OptionProblemConstraintUP notJustEquality(){ return OptionProblemConstraintUP(new NotJustEquality); } static OptionProblemConstraintUP atomsMoreThan(int a){ @@ -2108,7 +2104,6 @@ bool _hard; void setNormalize(bool normalize) { _normalize.actualValue = normalize; } GoalGuess guessTheGoal() const { return _guessTheGoal.actualValue; } unsigned gtgLimit() const { return _guessTheGoalLimit.actualValue; } - void setMaxXX(unsigned max) { _maximumXXNarrows.actualValue = max; } void setNaming(int n){ _naming.actualValue = n;} //TODO: ensure global constraints vstring include() const { return _include.actualValue; } @@ -2388,20 +2383,17 @@ bool _hard; //Higher-order Options - bool addCombAxioms() const { return _addCombAxioms.actualValue; } +#if VHOL bool addProxyAxioms() const { return _addProxyAxioms.actualValue; } - bool combinatorySup() const { return _combinatorySuperposition.actualValue; } bool choiceAxiom() const { return _choiceAxiom.actualValue; } bool injectivityReasoning() const { return _injectivity.actualValue; } bool pragmatic() const { return _pragmatic.actualValue; } bool choiceReasoning() const { return _choiceReasoning.actualValue; } bool prioritiseClausesProducedByLongReduction() const { return _priortyToLongReducts.actualValue; } - int maxXXNarrows() const { return _maximumXXNarrows.actualValue; } FunctionExtensionality functionExtensionality() const { return _functionExtensionality.actualValue; } void setFE(FunctionExtensionality value){ _functionExtensionality.actualValue = value; } CNFOnTheFly cnfOnTheFly() const { return _clausificationOnTheFly.actualValue; } PISet piSet() const { return _piSet.actualValue; } - Narrow narrow() const { return _narrow.actualValue; } bool equalityToEquivalence () const { return _equalityToEquivalence.actualValue; } bool complexBooleanReasoning () const { return _complexBooleanReasoning.actualValue; } bool booleanEqTrick() const { return _booleanEqTrick.actualValue; } @@ -2410,11 +2402,8 @@ bool _hard; bool newTautologyDel() const { return _newTautologyDel.actualValue; } bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } bool complexVarCondition() const { return _complexVarCondition.actualValue; } +#endif // For unit testing - void useCombSup() { - _combinatorySuperposition.actualValue = true; - _complexVarCondition.actualValue = true; - } private: @@ -2829,19 +2818,15 @@ bool _hard; //Higher-order options - BoolOptionValue _addCombAxioms; BoolOptionValue _addProxyAxioms; - BoolOptionValue _combinatorySuperposition; BoolOptionValue _choiceAxiom; BoolOptionValue _injectivity; BoolOptionValue _pragmatic; BoolOptionValue _choiceReasoning; BoolOptionValue _priortyToLongReducts; - IntOptionValue _maximumXXNarrows; ChoiceOptionValue _functionExtensionality; ChoiceOptionValue _clausificationOnTheFly; ChoiceOptionValue _piSet; - ChoiceOptionValue _narrow; BoolOptionValue _equalityToEquivalence; BoolOptionValue _complexBooleanReasoning; BoolOptionValue _booleanEqTrick; diff --git a/Shell/Preprocess.cpp b/Shell/Preprocess.cpp index 68f1f440fe..e685e06938 100644 --- a/Shell/Preprocess.cpp +++ b/Shell/Preprocess.cpp @@ -49,7 +49,9 @@ #include "SineUtils.hpp" #include "Statistics.hpp" #include "FOOLElimination.hpp" +#if VHOL #include "LambdaConversion.hpp" +#endif #include "TheoryAxioms.hpp" #include "TheoryFlattening.hpp" #include "TweeGoalTransformation.hpp" @@ -77,9 +79,12 @@ void Preprocess::preprocess(Problem& prb) { CALL("Preprocess::preprocess"); +#if VHOL + //TODO AYB move to somewhere more appropriate if(env.options->choiceReasoning()){ env.signature->addChoiceOperator(env.signature->getChoice()); } +#endif if (env.options->showPreprocessing()) { env.beginOutput(); @@ -140,11 +145,19 @@ void Preprocess::preprocess(Problem& prb) } } - if (prb.hasFOOL() || prb.higherOrder()) { + if (prb.hasFOOL() +#if VHOL + || prb.higherOrder() +#endif + ) { // This is the point to extend the signature with $$true and $$false // If we don't have fool then these constants get in the way (a lot) - if (!_options.newCNF() || prb.hasPolymorphicSym() || prb.higherOrder()) { + if (!_options.newCNF() || prb.hasPolymorphicSym() +#if VHOL + || prb.higherOrder() +#endif + ) { if (env.options->showPreprocessing()) env.out() << "FOOL elimination" << std::endl; @@ -153,6 +166,7 @@ void Preprocess::preprocess(Problem& prb) } } +#if VHOL if(env.options->functionExtensionality() == Options::FunctionExtensionality::AXIOM){ LambdaConversion::addFunctionExtensionalityAxiom(prb); } @@ -160,12 +174,15 @@ void Preprocess::preprocess(Problem& prb) if(env.options->choiceAxiom()){ LambdaConversion::addChoiceAxiom(prb); } +#endif prb.getProperty(); +#if VHOL if ((prb.hasLogicalProxy() || prb.hasBoolVar()) && env.options->addProxyAxioms()){ LambdaConversion::addProxyAxioms(prb); } +#endif if (prb.hasInterpretedOperations() || env.signature->hasTermAlgebras()){ // Some axioms needed to be normalized, so we call InterpretedNormalizer twice @@ -268,14 +285,20 @@ void Preprocess::preprocess(Problem& prb) } if (prb.mayHaveFormulas() && _options.newCNF() && - !prb.hasPolymorphicSym() && !prb.higherOrder()) { + !prb.hasPolymorphicSym() +#if VHOL + && !prb.higherOrder() +#endif + ) { if (env.options->showPreprocessing()) env.out() << "newCnf" << std::endl; newCnf(prb); } else { if (prb.mayHaveFormulas() && _options.newCNF()) { // TODO: update newCNF to deal with polymorphism / higher-order +#if VHOL ASS(prb.hasPolymorphicSym() || prb.higherOrder()); +#endif if (outputAllowed()) { env.beginOutput(); addCommentSignForSZS(env.out()); @@ -360,7 +383,11 @@ void Preprocess::preprocess(Problem& prb) } if (_options.generalSplitting()) { - if (prb.higherOrder() || prb.hasPolymorphicSym()) { // TODO: extend GeneralSplitting to support polymorphism (would higher-order make sense?) + if ( +#if VHOL + prb.higherOrder() || +#endif + prb.hasPolymorphicSym()) { // TODO: extend GeneralSplitting to support polymorphism (would higher-order make sense?) if (outputAllowed()) { env.beginOutput(); addCommentSignForSZS(env.out()); @@ -386,7 +413,11 @@ void Preprocess::preprocess(Problem& prb) twee.apply(prb,(env.options->tweeGoalTransformation() == Options::TweeGoalTransformation::GROUND)); } - if (!prb.higherOrder() && _options.equalityProxy()!=Options::EqualityProxy::OFF && prb.mayHaveEquality()) { + if ( +#if VHOL + !prb.higherOrder() && +#endif + _options.equalityProxy()!=Options::EqualityProxy::OFF && prb.mayHaveEquality()) { env.statistics->phase=Statistics::EQUALITY_PROXY; if (env.options->showPreprocessing()) env.out() << "equality proxy" << std::endl; @@ -503,7 +534,11 @@ void Preprocess::preprocess1 (Problem& prb) fu = Rectify::rectify(fu); FormulaUnit* rectFu = fu; // Simplify the formula if it contains true or false - if (!_options.newCNF() || prb.higherOrder() || prb.hasPolymorphicSym()) { + if (!_options.newCNF() +#if VHOL + || prb.higherOrder() +#endif + || prb.hasPolymorphicSym()) { // NewCNF effectively implements this simplification already (but could have been skipped if higherOrder || hasPolymorphicSym) fu = SimplifyFalseTrue::simplify(fu); } @@ -570,7 +605,11 @@ void Preprocess::naming(Problem& prb) env.statistics->phase=Statistics::NAMING; UnitList::DelIterator us(prb.units()); //TODO fix the below - Naming naming(_options.naming(),false, prb.higherOrder()); // For now just force eprPreservingNaming to be false, should update Naming + Naming naming(_options.naming(),false +#if VHOL + , prb.higherOrder() +#endif + ); // For now just force eprPreservingNaming to be false, should update Naming while (us.hasNext()) { Unit* u = us.next(); if (u->isClause()) { @@ -700,7 +739,11 @@ void Preprocess::preprocess3 (Problem& prb) UnitList::DelIterator us(prb.units()); while (us.hasNext()) { Unit* u = us.next(); - Unit* v = preprocess3(u, prb.higherOrder()); + Unit* v = preprocess3(u +#if VHOL + ,prb.higherOrder() +#endif + ); if (u!=v) { us.replace(v); modified = true; diff --git a/Shell/Preprocess.hpp b/Shell/Preprocess.hpp index 1d36c9eb19..0f32d270f1 100644 --- a/Shell/Preprocess.hpp +++ b/Shell/Preprocess.hpp @@ -49,7 +49,7 @@ class Preprocess private: void preprocess2(Problem& prb); void naming(Problem& prb); - Unit* preprocess3(Unit* u, bool appify /*higher order stuff*/); + Unit* preprocess3(Unit* u, bool appify = false/*higher order stuff*/); void preprocess3(Problem& prb); void clausify(Problem& prb); diff --git a/Shell/Property.cpp b/Shell/Property.cpp index 415fffe097..4e4f43089d 100644 --- a/Shell/Property.cpp +++ b/Shell/Property.cpp @@ -28,7 +28,9 @@ #include "Kernel/Signature.hpp" #include "Kernel/Inference.hpp" #include "Kernel/TermIterators.hpp" +#if VHOL #include "Kernel/ApplicativeHelper.hpp" +#endif #include "Options.hpp" #include "Statistics.hpp" @@ -74,12 +76,13 @@ Property::Property() _hasNonDefaultSorts(false), _sortsUsed(0), _hasFOOL(false), + _hasBoolVar(false), +#if VHOL _hasArrowSort(false), _hasApp(false), - _hasAppliedVar(false), - _hasBoolVar(false), _hasLogicalProxy(false), _hasLambda(false), +#endif _hasPolymorphicSym(false), _quantifiesOverPolymorphicVar(false), _onlyFiniteDomainDatatypes(true), @@ -507,11 +510,17 @@ void Property::scanSort(TermList sort) return; } +#if VHOL if(sort.isArrowSort()){ _hasArrowSort = true; } +#endif - if(!higherOrder() && !hasPolymorphicSym()){ + if( +#if VHOL + !higherOrder() && +#endif + !hasPolymorphicSym()){ //used sorts is for FMB which is not compatible with //higher-order or polymorphism unsigned sortU = sort.term()->functor(); @@ -553,7 +562,10 @@ void Property::scanSort(TermList sort) return; } - TermList resultSort = ApplicativeHelper::getResultSort(sort); + TermList resultSort = sort; +#if VHOL + resultSort = sort.finalResult(); +#endif if(resultSort == AtomicSort::boolSort()){ _hasFOOL = true; } @@ -594,8 +606,11 @@ void Property::scan(Literal* lit, int polarity, unsigned cLen, bool goal) if((lhs.isVar() || rhs.isVar()) && eqSort == AtomicSort::boolSort()){ _hasBoolVar = true; } - if((eqSort.isVar() || eqSort.term()->arity()) && - !eqSort.isArrowSort() && !eqSort.isArraySort() && !eqSort.isTupleSort()){ + if((eqSort.isVar() || eqSort.term()->arity()) +#if VHOL + && !eqSort.isArrowSort() +#endif + && !eqSort.isArraySort() && !eqSort.isTupleSort()){ _hasPolymorphicSym = true; } scanSort(eqSort); @@ -685,11 +700,11 @@ void Property::scan(TermList ts,bool unit,bool goal) case Term::SF_MATCH: _hasFOOL = true; break; - +#if VHOL case Term::SF_LAMBDA: _hasLambda = true; break; - +#endif default: break; } @@ -709,14 +724,12 @@ void Property::scan(TermList ts,bool unit,bool goal) if(unit){ func->markInUnit();} if(goal){ func->markInGoal();} +#if VHOL if(t->isApplication()){ _hasApp = true; TermList sort = SortHelper::getResultSort(t); - if(ApplicativeHelper::getResultSort(sort) == AtomicSort::boolSort()){ - TermList head = ApplicativeHelper::getHead(ts); - if(head.isVar()){ - _hasBoolVar = true; - } + if(sort.finalResult().isBoolSort() && ts.head().isVar()){ + _hasBoolVar = true; } } @@ -724,14 +737,19 @@ void Property::scan(TermList ts,bool unit,bool goal) if(func->proxy() == Signature::PI || func->proxy() == Signature::SIGMA){ ASS(t->arity() == 1); TermList sort = *t->nthArgument(0); - if(ApplicativeHelper::getResultSort(sort) == AtomicSort::boolSort()){ + if(sort.finalResult().isBoolSort()){ _hasBoolVar = true; } } _hasLogicalProxy = true; } +#endif - if(!t->isApplication() && t->numTypeArguments() > 0){ + if( +#if VHOL + !t->isApplication() && !t->isLambdaTerm() && +#endif + t->numTypeArguments() > 0){ _hasPolymorphicSym = true; } diff --git a/Shell/Property.hpp b/Shell/Property.hpp index f09dcad052..2d5193950c 100644 --- a/Shell/Property.hpp +++ b/Shell/Property.hpp @@ -226,14 +226,17 @@ class Property /** Problem contains non-default sorts */ bool hasNonDefaultSorts() const { return _hasNonDefaultSorts; } bool hasFOOL() const { return _hasFOOL; } + bool hasBoolVar() const { return _hasBoolVar; } + +#if VHOL bool hasArrowSort() const { return _hasArrowSort; } bool hasApp() const { return _hasApp; } - bool hasAppliedVar() const { return _hasAppliedVar; } - bool hasBoolVar() const { return _hasBoolVar; } bool hasLogicalProxy() const { return _hasLogicalProxy; } - bool hasPolymorphicSym() const { return _hasPolymorphicSym; } bool higherOrder() const { return hasApp() || hasLogicalProxy() || hasArrowSort() || _hasLambda; } +#endif + + bool hasPolymorphicSym() const { return _hasPolymorphicSym; } bool quantifiesOverPolymorphicVar() const { return _quantifiesOverPolymorphicVar; } bool usesSort(unsigned sort) const { CALL("Property::usesSort"); @@ -329,12 +332,13 @@ class Property DHSet _polymorphicInterpretations; bool _hasFOOL; + bool _hasBoolVar; +#if VHOL bool _hasArrowSort; bool _hasApp; - bool _hasAppliedVar; - bool _hasBoolVar; bool _hasLogicalProxy; bool _hasLambda; +#endif bool _hasPolymorphicSym; bool _quantifiesOverPolymorphicVar; diff --git a/Shell/Rectify.cpp b/Shell/Rectify.cpp index aa56514813..4ed27ba983 100644 --- a/Shell/Rectify.cpp +++ b/Shell/Rectify.cpp @@ -201,6 +201,7 @@ Term* Rectify::rectifySpecialTerm(Term* t) } return Term::createFormula(orig); } +#if VHOL case Term::SF_LAMBDA: { ASS_EQ(t->arity(),0); @@ -235,6 +236,7 @@ Term* Rectify::rectifySpecialTerm(Term* t) } return Term::createLambda(lambdaTerm, vs, rectifiedSorts, lambdaTermS); } +#endif case Term::SF_TUPLE: { ASS_EQ(t->arity(),0); diff --git a/Shell/Skolem.cpp b/Shell/Skolem.cpp index 425d66219e..d23b4efbd4 100644 --- a/Shell/Skolem.cpp +++ b/Shell/Skolem.cpp @@ -23,7 +23,9 @@ #include "Kernel/SortHelper.hpp" #include "Kernel/SubformulaIterator.hpp" #include "Kernel/TermIterators.hpp" +#if VHOL #include "Kernel/ApplicativeHelper.hpp" +#endif #include "Lib/SharedSet.hpp" #include "Shell/NameReuse.hpp" @@ -74,7 +76,9 @@ FormulaUnit* Skolem::skolemiseImpl (FormulaUnit* unit, bool appify) ASS(_introducedSkolemSyms.isEmpty()); +#if VHOL _appify = appify; +#endif _beingSkolemised=unit; _skolimizingDefinitions = UnitList::empty(); _varOccs.reset(); @@ -474,7 +478,11 @@ Formula* Skolem::skolemise (Formula* f) arity++; } - for(unsigned i = 0; i < termVars.size() && !_appify; i++){ + for(unsigned i = 0; i < termVars.size() +#if VHOL + && !_appify +#endif + ; i++){ allVars.push(termVars[i]); } SortHelper::normaliseArgSorts(typeVars, termVarSorts); @@ -517,7 +525,9 @@ Formula* Skolem::skolemise (Formula* f) SortHelper::normaliseSort(typeVars, rangeSort); Term* skolemTerm; +#if VHOL if(!_appify || skolemisingTypeVar){ +#endif //Not the higher-order case. Create the term //sk(typevars, termvars). if(skolemisingTypeVar){ @@ -529,6 +539,7 @@ Formula* Skolem::skolemise (Formula* f) sym = addSkolemFunction(arity, termVarSorts.begin(), rangeSort, v, typeVars.size()); skolemTerm = Term::create(sym, arity, allVars.begin()); } +#if VHOL } else { //The higher-order case. Create the term //sk(typevars) @ termvar_1 @ termvar_2 @ ... @ termvar_n @@ -539,6 +550,7 @@ Formula* Skolem::skolemise (Formula* f) skolemTerm = ApplicativeHelper::createAppTerm( SortHelper::getResultSort(head.term()), head, termVars).term(); } +#endif _introducedSkolemSyms.push(make_pair(skolemisingTypeVar, sym)); if(!successfully_reused) { diff --git a/Shell/Skolem.hpp b/Shell/Skolem.hpp index ad3a308ed1..8e27b547fb 100644 --- a/Shell/Skolem.hpp +++ b/Shell/Skolem.hpp @@ -42,7 +42,9 @@ namespace Shell { class Skolem { public: - static FormulaUnit* skolemise(FormulaUnit*, bool appify = false); + // AYB perhaps should hide appify behind compiler directive + // but resulting code is seriously ugly + static FormulaUnit* skolemise(FormulaUnit* , bool appify = false); static unsigned addSkolemFunction(unsigned arity, TermList* domainSorts, TermList rangeSort, unsigned var, unsigned taArity = 0); static unsigned addSkolemFunction(unsigned arity, unsigned taArity, TermList* domainSorts, TermList rangeSort, const char* suffix=0); static unsigned addSkolemTypeCon(unsigned arity, unsigned var); @@ -114,7 +116,9 @@ class Skolem // to create one big inference after we are done UnitList* _skolimizingDefinitions; +#if VHOL bool _appify; // a higher-order solution +#endif }; // class Skolem diff --git a/Shell/SubexpressionIterator.cpp b/Shell/SubexpressionIterator.cpp index 2d2653166e..69b794c2a8 100644 --- a/Shell/SubexpressionIterator.cpp +++ b/Shell/SubexpressionIterator.cpp @@ -148,10 +148,11 @@ namespace Shell { _subexpressions.push(Expression(*term->nthArgument(0), polarity)); break; +#if VHOL case Term::SF_LAMBDA: _subexpressions.push(Expression(sd->getLambdaExp(), polarity)); break; - +#endif /*case Term::SF_TUPLE: _subexpressions.push(Expression(sd->getTupleTerm())); break; */ diff --git a/Shell/SymCounter.cpp b/Shell/SymCounter.cpp index 9bdd1d63d5..b17bdbbd4b 100644 --- a/Shell/SymCounter.cpp +++ b/Shell/SymCounter.cpp @@ -253,6 +253,7 @@ void SymCounter::count(Term* term, int polarity, int add) count(sd->getTupleTerm(), 0, add); break; } +#if VHOL case Term::SF_LAMBDA: { TermList lambdaExp = sd->getLambdaExp(); if(lambdaExp.isTerm()){ @@ -260,6 +261,7 @@ void SymCounter::count(Term* term, int polarity, int add) } break; } +#endif case Term::SF_MATCH: { for (unsigned i = 0; i < term->arity(); i++) { TermList t = *term->nthArgument(i); diff --git a/Shell/TPTPPrinter.cpp b/Shell/TPTPPrinter.cpp index 27883c3c71..038dcd3fe6 100644 --- a/Shell/TPTPPrinter.cpp +++ b/Shell/TPTPPrinter.cpp @@ -234,9 +234,11 @@ void TPTPPrinter::outputSymbolTypeDefinitions(unsigned symNumber, SymbolType sym } vstring cat = "tff("; +#if VHOL if(env.property->higherOrder()){ cat = "thf("; } +#endif vstring st = "func"; if(symType == SymbolType::PRED){ diff --git a/Shell/TheoryAxioms.cpp b/Shell/TheoryAxioms.cpp index e19bd93cd9..563a6bbac0 100644 --- a/Shell/TheoryAxioms.cpp +++ b/Shell/TheoryAxioms.cpp @@ -1146,8 +1146,11 @@ void TheoryAxioms::applyFOOL() { addTheoryClauseFromLits({tneqf},InferenceRule::FOOL_AXIOM_TRUE_NEQ_FALSE,CHEAP); // Do not add the finite domain axiom if --fool_paradomulation on - if (env.options->FOOLParamodulation() || env.options->cases() || - env.options->casesSimp()) { + if (env.options->FOOLParamodulation() +#if VHOL + || env.options->cases() || env.options->casesSimp() +#endif + ) { return; } diff --git a/Shell/UIHelper.cpp b/Shell/UIHelper.cpp index 35d7b1b8be..51840cc04f 100644 --- a/Shell/UIHelper.cpp +++ b/Shell/UIHelper.cpp @@ -609,16 +609,24 @@ void UIHelper::outputSymbolTypeDeclarationIfNeeded(ostream& out, bool function, //out << "tff(" << (function ? "func" : "pred") << "_def_" << symNumber << ", type, " // << sym->name() << ": "; + + bool higherOrder = false; +#if VHOL + higherOrder = env.property->higherOrder(); //don't output type of app. It is an internal Vampire thing if(!(function && env.signature->isAppFun(symNumber))){ - out << (env.property->higherOrder() ? "thf(" : "tff(") +#endif + + out << (higherOrder ? "thf(" : "tff(") << (function ? "func" : (typeCon ? "type" : "pred")) << "_def_" << symNumber << ", type, " << sym->name() << ": "; out << type->toString(); out << ")." << endl; +#if VHOL } +#endif //out << ")." << endl; } diff --git a/UnitTests/tBetaReduction.cpp b/UnitTests/tBetaReduction.cpp new file mode 100644 index 0000000000..55427a3fb1 --- /dev/null +++ b/UnitTests/tBetaReduction.cpp @@ -0,0 +1,89 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/**! This file contains examples on how to use Test/SyntaxSugar.hpp. + * + * @autor Johannes Schoisswohl + * @date 2020-04-29 + */ + +#include "Test/UnitTesting.hpp" +#include "Test/SyntaxSugar.hpp" +#include "Kernel/ApplicativeHelper.hpp" + +//////////////////////////////////////////////////////////////////////////////// +////////////////////////////////// TEST CASES ////////////////////////////////// +// +// How to read the test cases in this file: +// +TEST_FUN(beta_reduction01) { + DECL_DEFAULT_VARS + DECL_SORT(srt) + DECL_HOL_VAR(x0, 0, srt) + DECL_CONST(a, srt) + DECL_CONST(b, srt) + + BetaNormaliser bn; + auto reduced = bn.normalise(ap(lam(x0,x0),a)); + + ASS_EQ(reduced, a.sugaredExpr()); +} + +TEST_FUN(beta_reduction02) { + DECL_DEFAULT_VARS + DECL_SORT(srt) + DECL_ARROW_SORT(fSrt, {srt, srt}) + DECL_HOL_VAR(x0, 0, srt) + DECL_CONST(a, srt) + DECL_CONST(f,fSrt) + + BetaNormaliser bn; + auto reduced = bn.normalise(ap(lam(x0,ap(f, x0)),a)); + + ASS_EQ(reduced, ap(f, a).sugaredExpr()); +} + +TEST_FUN(beta_reduction03) { + DECL_SORT(srt) + DECL_ARROW_SORT(xSrt, {srt, srt}) + DECL_HOL_VAR(x, 0, xSrt) + DECL_HOL_VAR(y, 0, srt) + DECL_CONST(a, srt) + + BetaNormaliser bn; + auto reduced = bn.normalise( ap( lam(x,ap(x,a)) , lam(y, y) ) ); + + ASS_EQ(reduced, a.sugaredExpr()); +} + +TEST_FUN(beta_reduction04) { + DECL_SORT(srt) + DECL_ARROW_SORT(xSrt, {srt, srt}) + DECL_HOL_VAR(x, 0, xSrt) + DECL_HOL_VAR(y, 0, srt) + DECL_CONST(a, srt) + DECL_CONST(f, xSrt) + + BetaNormaliser bn; + auto reduced = bn.normalise( ap(f, ap( lam(x,ap(x,a)) , lam(y, y) ) ) ); + + ASS_EQ(reduced, ap(f, a).sugaredExpr()); +} + +TEST_FUN(beta_reduction05) { + DECL_SORT(srt) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(y, 0, srt) + DECL_HOL_VAR(z, 0, srt) + + BetaNormaliser bn; + auto reduced = bn.normalise( lam(x, ap(lam(y, lam(z, y) ), x)) ); + + ASS_EQ(reduced, lam(x,lam(z, x)).sugaredExpr()); +} \ No newline at end of file diff --git a/vampire.cpp b/vampire.cpp index 64f74433af..8b07533120 100644 --- a/vampire.cpp +++ b/vampire.cpp @@ -419,7 +419,11 @@ void modelCheckMode() env.options->setOutputAxiomNames(true); Problem* prb = UIHelper::getInputProblem(*env.options); - if(env.property->hasPolymorphicSym() || env.property->higherOrder()){ + if(env.property->hasPolymorphicSym() +#if VHOL + || env.property->higherOrder() +#endif + ){ USER_ERROR("Polymorphic Vampire is not yet compatible with theory reasoning"); } From 14085063ec2addd9a0d9230b4f6f6e2385577a10 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 8 Sep 2022 13:41:42 +0100 Subject: [PATCH 029/210] bug fixes and code improvements --- CMakeLists.txt | 4 +- Indexing/TermSharing.cpp | 10 ++ Inferences/BackwardDemodulation.cpp | 3 +- .../BackwardSubsumptionDemodulation.cpp | 3 +- .../{BetaNormaliser.cpp => BetaEtaISE.cpp} | 10 +- .../{BetaNormaliser.hpp => BetaEtaISE.hpp} | 12 +- Inferences/BoolSimp.cpp | 8 +- Inferences/Cases.cpp | 5 +- Inferences/CasesSimp.cpp | 8 +- Inferences/FOOLParamodulation.cpp | 4 +- Inferences/ForwardDemodulation.cpp | 3 +- Inferences/ForwardSubsumptionDemodulation.cpp | 3 +- Inferences/GaussianVariableElimination.cpp | 6 +- Inferences/HyperSuperposition.cpp | 6 +- Inferences/ImitateProject.cpp | 162 ++++++++++++++++++ Inferences/ImitateProject.hpp | 51 ++++++ Inferences/InnerRewriting.cpp | 5 +- Inferences/Superposition.cpp | 5 +- Kernel/ApplicativeHelper.cpp | 125 ++++++++++++-- Kernel/ApplicativeHelper.hpp | 35 +++- Kernel/ColorHelper.cpp | 6 +- Kernel/EqHelper.cpp | 102 ----------- Kernel/EqHelper.hpp | 4 - Kernel/Signature.hpp | 5 +- Kernel/Term.cpp | 15 +- Kernel/Term.hpp | 17 +- Kernel/TermTransformer.cpp | 14 +- Kernel/TermTransformer.hpp | 26 ++- Saturation/SaturationAlgorithm.cpp | 4 +- Test/SyntaxSugar.hpp | 17 +- UnitTests/tBetaReduction.cpp | 139 +++++++++++++-- 31 files changed, 613 insertions(+), 204 deletions(-) rename Inferences/{BetaNormaliser.cpp => BetaEtaISE.cpp} (83%) rename Inferences/{BetaNormaliser.hpp => BetaEtaISE.hpp} (76%) create mode 100644 Inferences/ImitateProject.cpp create mode 100644 Inferences/ImitateProject.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index fdb851a0b7..513c447df5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -318,8 +318,8 @@ set(VAMPIRE_KERNEL_SOURCES Indexing/TypeSubstitutionTree.hpp Inferences/CNFOnTheFly.cpp Inferences/CNFOnTheFly.hpp - Inferences/BetaNormaliser.cpp - Inferences/BetaNormaliser.hpp + Inferences/BetaEtaISE.cpp + Inferences/BetaEtaISE.hpp # Inferences/CombinatorNormalisationISE.hpp # Inferences/CombinatorNormalisationISE.cpp Inferences/ArgCong.hpp diff --git a/Indexing/TermSharing.cpp b/Indexing/TermSharing.cpp index bb624df69a..ef78718cfe 100644 --- a/Indexing/TermSharing.cpp +++ b/Indexing/TermSharing.cpp @@ -111,6 +111,10 @@ Term* TermSharing::insert(Term* t) } } +#if VHOL + +#endif + _termInsertions++; Term* s = _terms.insert(t); if (s == t) { @@ -119,8 +123,11 @@ Term* TermSharing::insert(Term* t) bool hasTermVar = false; bool hasInterpretedConstants=t->arity()==0 && env.signature->getFunction(t->functor())->interpreted(); +#if VHOL bool hasDBIndex = t->deBruijnIndex().isSome(); bool hasRedex = t->isRedex(); + bool hasLambda = t->isLambdaTerm(); +#endif Color color = COLOR_TRANSPARENT; unsigned typeArity = t->numTypeArguments(); @@ -143,8 +150,11 @@ Term* TermSharing::insert(Term* t) vars += r->numVarOccs(); weight += r->weight(); hasTermVar |= r->hasTermVar(); +#if VHOL hasDBIndex = hasDBIndex ? true : r->hasDBIndex(); hasRedex = hasRedex ? true : r->hasRedex(); + hasLambda = hasLambda ? true : r->hasLambda(); +#endif hasInterpretedConstants = hasInterpretedConstants ? true : r->hasInterpretedConstants(); if (env.colorUsed) { color = static_cast(color | r->color()); diff --git a/Inferences/BackwardDemodulation.cpp b/Inferences/BackwardDemodulation.cpp index 13a7852611..a502467b01 100644 --- a/Inferences/BackwardDemodulation.cpp +++ b/Inferences/BackwardDemodulation.cpp @@ -24,6 +24,7 @@ #include "Kernel/Clause.hpp" #include "Kernel/ColorHelper.hpp" #include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/Inference.hpp" #include "Kernel/Ordering.hpp" #include "Kernel/Renaming.hpp" @@ -213,7 +214,7 @@ struct BackwardDemodulation::ResultFn } } - Literal* resLit=EqHelper::replace(qr.literal,lhsS,rhsS); + Literal* resLit=SubtermReplacer(lhsS,rhsS).transform(qr.literal); if(EqHelper::isEqTautology(resLit)) { env.statistics->backwardDemodulationsToEqTaut++; _removed->insert(qr.clause); diff --git a/Inferences/BackwardSubsumptionDemodulation.cpp b/Inferences/BackwardSubsumptionDemodulation.cpp index 0a84879758..bdf7ed74ac 100644 --- a/Inferences/BackwardSubsumptionDemodulation.cpp +++ b/Inferences/BackwardSubsumptionDemodulation.cpp @@ -22,6 +22,7 @@ #include "Kernel/Clause.hpp" #include "Kernel/ColorHelper.hpp" #include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/Inference.hpp" #include "Kernel/LiteralByMatchability.hpp" #include "Kernel/MLMatcherSD.hpp" @@ -648,7 +649,7 @@ bool BackwardSubsumptionDemodulation::rewriteCandidate(Clause* sideCl, Clause* m /** * Step 4: found application of SD; now create the conclusion */ - Literal* newLit = EqHelper::replace(dlit, lhsS, rhsS); + Literal* newLit = SubtermReplacer(lhsS,rhsS).transform(dlit); ASS_EQ(ordering.compare(lhsS, rhsS), Ordering::GREATER); #if VDEBUG if (getOptions().literalComparisonMode() != Options::LiteralComparisonMode::REVERSE) { diff --git a/Inferences/BetaNormaliser.cpp b/Inferences/BetaEtaISE.cpp similarity index 83% rename from Inferences/BetaNormaliser.cpp rename to Inferences/BetaEtaISE.cpp index e3c410dc13..495c9ef91a 100644 --- a/Inferences/BetaNormaliser.cpp +++ b/Inferences/BetaEtaISE.cpp @@ -21,16 +21,16 @@ #include "Kernel/Inference.hpp" #include "Kernel/SortHelper.hpp" #include "Shell/Statistics.hpp" -#include "BetaNormaliser.hpp" +#include "BetaEtaISE.hpp" using namespace Lib; using namespace Kernel; using namespace Inferences; -Clause* BetaSimplify::simplify(Clause* c) +Clause* BetaEtaSimplify::simplify(Clause* c) { - CALL("BetaSimplify::simplify"); + CALL("BetaEtaSimplify::simplify"); Literal* newLit; LiteralStack litStack; @@ -42,8 +42,8 @@ Clause* BetaSimplify::simplify(Clause* c) TermList t0 = *lit->nthArgument(0); TermList t1 = *lit->nthArgument(1); - TermList t0r = BetaNormaliser().normalise(t0); - TermList t1r = BetaNormaliser().normalise(t1); + TermList t0r = EtaNormaliser().normalise(BetaNormaliser().normalise(t0)); + TermList t1r = EtaNormaliser().normalise(BetaNormaliser().normalise(t1)); if((t0r != t0) || (t1r != t1)){ diff --git a/Inferences/BetaNormaliser.hpp b/Inferences/BetaEtaISE.hpp similarity index 76% rename from Inferences/BetaNormaliser.hpp rename to Inferences/BetaEtaISE.hpp index 7f3913e8e2..8a13ac5709 100644 --- a/Inferences/BetaNormaliser.hpp +++ b/Inferences/BetaEtaISE.hpp @@ -13,8 +13,8 @@ */ -#ifndef __BetaSimplify__ -#define __BetaSimplify__ +#ifndef __BetaEtaSimplify__ +#define __BetaEtaSimplify__ #if VHOL @@ -25,12 +25,12 @@ namespace Inferences { -class BetaSimplify +class BetaEtaSimplify : public ImmediateSimplificationEngine { public: - CLASS_NAME(BetaSimplify); - USE_ALLOCATOR(BetaSimplify); + CLASS_NAME(BetaEtaSimplify); + USE_ALLOCATOR(BetaEtaSimplify); Clause* simplify(Clause* cl); }; @@ -39,4 +39,4 @@ class BetaSimplify #endif -#endif /* __CombinatorDemodISE__ */ +#endif /* __BetaEtaSimplify__ */ diff --git a/Inferences/BoolSimp.cpp b/Inferences/BoolSimp.cpp index 7c83f3eb1a..72091a8746 100644 --- a/Inferences/BoolSimp.cpp +++ b/Inferences/BoolSimp.cpp @@ -13,7 +13,7 @@ #include "Lib/Environment.hpp" #include "Kernel/Clause.hpp" -#include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/Inference.hpp" #include "Kernel/Term.hpp" #include "Kernel/TermIterators.hpp" @@ -42,7 +42,7 @@ Clause* BoolSimp::simplify(Clause* premise) { while (nvi.hasNext()) { subTerm = nvi.next(); - if(SortHelper::getResultSort(subTerm.term()) == AtomicSort::boolSort()){ + if(SortHelper::getResultSort(subTerm.term()).isBoolSort()){ simpedSubTerm = boolSimplify(subTerm); if(simpedSubTerm != subTerm){ goto substitution; @@ -60,7 +60,9 @@ Clause* BoolSimp::simplify(Clause* premise) { Clause* conclusion = new(conclusionLength) Clause(conclusionLength, SimplifyingInference1(InferenceRule::BOOL_SIMP, premise)); for (unsigned i = 0; i < conclusion->length(); i++) { - (*conclusion)[i] = i == literalPosition ? EqHelper::replace((*premise)[i], subTerm, simpedSubTerm) : (*premise)[i]; + (*conclusion)[i] = i == literalPosition ? + SubtermReplacer(subTerm, simpedSubTerm).transform((*premise)[i]) : + (*premise)[i]; } env.statistics->booleanSimps++; diff --git a/Inferences/Cases.cpp b/Inferences/Cases.cpp index 05a65736a0..0a24740dff 100644 --- a/Inferences/Cases.cpp +++ b/Inferences/Cases.cpp @@ -23,6 +23,7 @@ #include "Kernel/Clause.hpp" #include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/Inference.hpp" #include "Kernel/Term.hpp" #include "Kernel/TermIterators.hpp" @@ -52,7 +53,7 @@ Clause* Cases::performParamodulation(Clause* premise, Literal* lit, TermList t) static TermList fols(Term::foolFalse()); - // Found a boolean term! Create the C[true] \/ s = false clause + // Create the C[true] \/ s = false clause unsigned conclusionLength = premise->length() + 1; Clause* conclusion = new(conclusionLength) Clause(conclusionLength, @@ -65,7 +66,7 @@ Clause* Cases::performParamodulation(Clause* premise, Literal* lit, TermList t) if(curr != lit){ (*conclusion)[i] = (*premise)[i]; } else { - (*conclusion)[i] = EqHelper::replace((*premise)[i], t, troo); + (*conclusion)[i] = SubtermReplacer(t,troo).transform((*premise)[i]); } } diff --git a/Inferences/CasesSimp.cpp b/Inferences/CasesSimp.cpp index f97b8a1b19..86b7eb4a24 100644 --- a/Inferences/CasesSimp.cpp +++ b/Inferences/CasesSimp.cpp @@ -20,9 +20,10 @@ #if VHOL #include "Lib/Environment.hpp" +#include "Lib/PairUtils.hpp" #include "Kernel/Clause.hpp" -#include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/Inference.hpp" #include "Kernel/Term.hpp" #include "Kernel/TermIterators.hpp" @@ -72,8 +73,8 @@ ClauseIterator CasesSimp::performSimplification(Clause* premise, Literal* lit, T (*conclusion1)[i] = (*premise)[i]; (*conclusion2)[i] = (*premise)[i]; } else { - (*conclusion1)[i] = EqHelper::replace((*premise)[i], t, troo); - (*conclusion2)[i] = EqHelper::replace((*premise)[i], t, fols); + (*conclusion1)[i] = SubtermReplacer(t,troo).transform((*premise)[i]); + (*conclusion2)[i] = SubtermReplacer(t,fols).transform((*premise)[i]); } } @@ -126,7 +127,6 @@ ClauseIterator CasesSimp::simplifyMany(Clause* premise) auto it3 = getMapAndFlattenIterator(it2,RewriteableSubtermsFn()); - //Perform Narrow auto it4 = getMapAndFlattenIterator(it3,ResultFn(premise, *this)); return pvi( it4 ); diff --git a/Inferences/FOOLParamodulation.cpp b/Inferences/FOOLParamodulation.cpp index 1e899ca48c..74c7568012 100644 --- a/Inferences/FOOLParamodulation.cpp +++ b/Inferences/FOOLParamodulation.cpp @@ -20,7 +20,7 @@ #include "Lib/Environment.hpp" #include "Kernel/Clause.hpp" -#include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/Inference.hpp" #include "Kernel/Term.hpp" #include "Kernel/TermIterators.hpp" @@ -118,7 +118,7 @@ ClauseIterator FOOLParamodulation::generateClauses(Clause* premise) { // Copy the literals from the premise except for the one at `literalPosition`, // that has the occurrence of `booleanTerm` replaced with false for (unsigned i = 0; i < conclusion->length() - 1; i++) { - (*conclusion)[i] = i == literalPosition ? EqHelper::replace((*premise)[i], booleanTerm, troo) : (*premise)[i]; + (*conclusion)[i] = i == literalPosition ? SubtermReplacer(booleanTerm,troo).transform((*premise)[i]) : (*premise)[i]; } // Add s = false to the clause diff --git a/Inferences/ForwardDemodulation.cpp b/Inferences/ForwardDemodulation.cpp index 9bc3f0753e..e4d300316b 100644 --- a/Inferences/ForwardDemodulation.cpp +++ b/Inferences/ForwardDemodulation.cpp @@ -30,6 +30,7 @@ #include "Kernel/SortHelper.hpp" #include "Kernel/Term.hpp" #include "Kernel/TermIterators.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/ColorHelper.hpp" #include "Kernel/RobSubstitution.hpp" @@ -221,7 +222,7 @@ bool ForwardDemodulation::perform(Clause* cl, Clause*& replacem } } - Literal* resLit = EqHelper::replace(lit,trm,rhsS); + Literal* resLit = SubtermReplacer(trm, rhsS).transform(lit); if(EqHelper::isEqTautology(resLit)) { env.statistics->forwardDemodulationsToEqTaut++; premises = pvi( getSingletonIterator(qr.clause)); diff --git a/Inferences/ForwardSubsumptionDemodulation.cpp b/Inferences/ForwardSubsumptionDemodulation.cpp index c79b8e9d9c..0cb5e0a63b 100644 --- a/Inferences/ForwardSubsumptionDemodulation.cpp +++ b/Inferences/ForwardSubsumptionDemodulation.cpp @@ -18,6 +18,7 @@ #include "Indexing/LiteralMiniIndex.hpp" #include "Kernel/ColorHelper.hpp" #include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/Inference.hpp" #include "Kernel/MLMatcherSD.hpp" #include "Kernel/Matcher.hpp" @@ -599,7 +600,7 @@ bool ForwardSubsumptionDemodulation::perform(Clause* cl, Clause*& replacement, C /** * Step 4: found application of FSD; now create the conclusion */ - Literal* newLit = EqHelper::replace(dlit, lhsS, rhsS); + Literal* newLit = SubtermReplacer(lhsS,rhsS).transform(dlit); ASS_EQ(ordering.compare(lhsS, rhsS), Ordering::GREATER); #if VDEBUG if (getOptions().literalComparisonMode() != Options::LiteralComparisonMode::REVERSE) { diff --git a/Inferences/GaussianVariableElimination.cpp b/Inferences/GaussianVariableElimination.cpp index e752338357..d5d0ad6116 100644 --- a/Inferences/GaussianVariableElimination.cpp +++ b/Inferences/GaussianVariableElimination.cpp @@ -11,7 +11,7 @@ #include "Kernel/Rebalancing.hpp" #include "Kernel/Rebalancing/Inverters.hpp" #include "Kernel/Clause.hpp" -#include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/InterpretedLiteralEvaluator.hpp" #include "Inferences/InterpretedEvaluation.hpp" #include "Kernel/PolynomialNormalizer.hpp" @@ -78,11 +78,11 @@ SimplifyingGeneratingInference1::Result GaussianVariableElimination::rewrite(Cla auto sz = cl.size() - 1; Clause& out = *new(sz) Clause(sz, inf); for (unsigned i = 0; i < skipLiteral; i++) { - out[i] = checkLeq(cl[i], EqHelper::replace(cl[i], find, replace)); + out[i] = checkLeq(cl[i], SubtermReplacer(find,replace).transform(cl[i])); } for (unsigned i = skipLiteral; i < sz; i++) { - out[i] = checkLeq(cl[i+1], EqHelper::replace(cl[i+1], find, replace)); + out[i] = checkLeq(cl[i+1], SubtermReplacer(find,replace).transform(cl[i+1])); } if(!premiseRedundant) { diff --git a/Inferences/HyperSuperposition.cpp b/Inferences/HyperSuperposition.cpp index 2de64f35ae..5c03d09a59 100644 --- a/Inferences/HyperSuperposition.cpp +++ b/Inferences/HyperSuperposition.cpp @@ -24,7 +24,7 @@ #include "Kernel/Clause.hpp" #include "Kernel/ColorHelper.hpp" -#include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/Inference.hpp" #include "Kernel/RobSubstitution.hpp" #include "Kernel/SortHelper.hpp" @@ -272,7 +272,7 @@ void HyperSuperposition::tryUnifyingSuperpositioins(Clause* cl, unsigned literal TermList tgtBase = rwr.first.second; TermList src = subst.apply(srcBase, rwrBank); TermList tgt = subst.apply(tgtBase, rwrBank); - t1Rwr = EqHelper::replace(t1Rwr, src, tgt); + t1Rwr = SubtermReplacer(src,tgt).transform(t1Rwr); } static RobSubstitution checkerSubst; @@ -294,7 +294,7 @@ void HyperSuperposition::tryUnifyingSuperpositioins(Clause* cl, unsigned literal } else { Literal* lSubst = subst.apply(lit0, 0); - Literal* lRwr = EqHelper::replace(lSubst, TermList(t1Subst), TermList(t1Rwr)); + Literal* lRwr = SubtermReplacer(TermList(t1Subst),TermList(t1Rwr)).transform(lSubst); resLits.push(lRwr); } } diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp new file mode 100644 index 0000000000..385dca552e --- /dev/null +++ b/Inferences/ImitateProject.cpp @@ -0,0 +1,162 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file EqualityResolution.cpp + * Implements class EqualityResolution. + */ + +#if VHOL + +#include + +#include "Lib/VirtualIterator.hpp" +#include "Lib/Metaiterators.hpp" +#include "Lib/PairUtils.hpp" +#include "Lib/Stack.hpp" + +#include "Lib/Environment.hpp" +#include "Shell/Statistics.hpp" +#include "Shell/Options.hpp" +#include "Indexing/SubstitutionTree.hpp" + +#include "Kernel/Clause.hpp" +#include "Kernel/Unit.hpp" +#include "Kernel/Inference.hpp" +#include "Kernel/RobSubstitution.hpp" +#include "Kernel/EqHelper.hpp" +#include "Kernel/Ordering.hpp" +#include "Kernel/LiteralSelector.hpp" +#include "Kernel/SortHelper.hpp" +#include "Kernel/ApplicativeHelper.hpp" + +#include "Saturation/SaturationAlgorithm.hpp" + + +#include "EqualityResolution.hpp" +#include "Shell/UnificationWithAbstractionConfig.hpp" + +#if VDEBUG +#include +using namespace std; +#endif + +namespace Inferences +{ + +using namespace Lib; +using namespace Kernel; +using namespace Indexing; +using namespace Saturation; + +struct ImitateProject::IsFlexRigid +{ + bool operator()(Literal* l) + { + ASS(l->isEquality()); + return l->isFlexRigid(); + } +}; + + +struct ImitateProject::ResultFn +{ + ResultFn(Clause* cl) + : _cl(cl), _cLen(cl->length()) {} + ClauseIterator operator() (Literal* lit) + { + CALL("EqualityResolution::ResultFn::operator()"); + + ASS(lit->isEquality()); + ASS(lit->isFlexRigid()); + + TermList arg0 = *lit->nthArgument(0); + TermList arg1 = *lit->nthArgument(1); + + static RobSubstitution subst(_handler); + subst.reset(); + + if(!subst.unify(arg0,0,arg1,0)){ + return 0; + } + + //cout << "equalityResolution with " + _cl->toString() << endl; + //cout << "The literal is " + lit->toString() << endl; + //cout << "cLength " << cLength << endl; + + unsigned newLen=_cLen-1+ subst.numberOfConstraints(); + + Clause* res = new(newLen) Clause(newLen, GeneratingInference1(InferenceRule::EQUALITY_RESOLUTION, _cl)); + + Literal* litAfter = 0; + + if (_afterCheck && _cl->numSelected() > 1) { + TimeCounter tc(TC_LITERAL_ORDER_AFTERCHECK); + litAfter = subst.apply(lit, 0); + } + + unsigned next = 0; + for(unsigned i=0;i<_cLen;i++) { + Literal* curr=(*_cl)[i]; + if(curr!=lit) { + Literal* currAfter = subst.apply(curr, 0); + + if (litAfter) { + TimeCounter tc(TC_LITERAL_ORDER_AFTERCHECK); + + if (i < _cl->numSelected() && _ord->compare(currAfter,litAfter) == Ordering::GREATER) { + env.statistics->inferencesBlockedForOrderingAftercheck++; + res->destroy(); + return 0; + } + } + + (*res)[next++] = currAfter; + } + } + auto constraints = subst.getConstraints(); + while(constraints.hasNext()){ + Literal* constraint = constraints.next(); + (*res)[next++] = constraint; + } + ASS_EQ(next,newLen); + + env.statistics->equalityResolution++; + + return res; + } +private: + Clause* _cl; + unsigned _cLen; +}; + +ClauseIterator ImitateProject::generateClauses(Clause* premise) +{ + CALL("ImitateProject::generateClauses"); + + if(premise->isEmpty()) { + return ClauseIterator::getEmpty(); + } + ASS(premise->numSelected()>0); + + // selected literals + auto it1 = premise->getSelectedLiteralIterator(); + + // only selected literals which are flex rigid + auto it2 = getFilteredIterator(it1,IsNegativeEqualityFn()); + + // carry out imitations and projections + auto it3 = getMapAndFlattenIterator(it2,ResultFn(premise)); + + return pvi( it4 ); +} + +} + +#endif diff --git a/Inferences/ImitateProject.hpp b/Inferences/ImitateProject.hpp new file mode 100644 index 0000000000..c85c0b4eff --- /dev/null +++ b/Inferences/ImitateProject.hpp @@ -0,0 +1,51 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file EqualityResolution.hpp + * Defines class EqualityResolution. + */ + + +#ifndef __ImitateProject__ +#define __ImitateProject__ + +#if VHOL + +#include "Forwards.hpp" + +#include "InferenceEngine.hpp" +#include "Shell/Options.hpp" + +namespace Inferences { + +using namespace Kernel; +using namespace Indexing; +using namespace Saturation; + +class ImitateProject +: public GeneratingInferenceEngine +{ +public: + CLASS_NAME(ImitateProject); + USE_ALLOCATOR(ImitateProject); + + ClauseIterator generateClauses(Clause* premise); +private: + struct ResultFn; + struct IsFlexRigid; + +}; + + +}; + +#endif + +#endif /* __ImitateProject__ */ diff --git a/Inferences/InnerRewriting.cpp b/Inferences/InnerRewriting.cpp index 4a2817ae95..e37d4ae74b 100644 --- a/Inferences/InnerRewriting.cpp +++ b/Inferences/InnerRewriting.cpp @@ -15,6 +15,7 @@ #include "InnerRewriting.hpp" #include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/Inference.hpp" #include "Saturation/SaturationAlgorithm.hpp" @@ -39,7 +40,7 @@ bool InnerRewriting::perform(Clause* cl, Clause*& replacement, ClauseIterator& p for (unsigned j = 0; j < len; j++) { if (i != j) { Literal* lit = (*cl)[j]; - Literal* nLit = EqHelper::replace(lit,lhs,rhs); + Literal* nLit = SubtermReplacer(lhs,rhs).transform(lit); if (nLit != lit) { if(EqHelper::isEqTautology(nLit)) { env.statistics->innerRewritesToEqTaut++; @@ -57,7 +58,7 @@ bool InnerRewriting::perform(Clause* cl, Clause*& replacement, ClauseIterator& p (*res)[k] = nLit; } else { Literal* oLit = (*cl)[k]; - Literal* rLit = EqHelper::replace(oLit,lhs,rhs); + Literal* rLit = SubtermReplacer(lhs,rhs).transform(oLit); if(EqHelper::isEqTautology(rLit)) { env.statistics->innerRewritesToEqTaut++; res->destroy(); diff --git a/Inferences/Superposition.cpp b/Inferences/Superposition.cpp index 89884ef384..bb5a12c402 100644 --- a/Inferences/Superposition.cpp +++ b/Inferences/Superposition.cpp @@ -24,6 +24,7 @@ #include "Kernel/Clause.hpp" #include "Kernel/ColorHelper.hpp" #include "Kernel/EqHelper.hpp" +#include "Kernel/TermTransformer.hpp" #include "Kernel/Inference.hpp" #include "Kernel/Ordering.hpp" #include "Kernel/SortHelper.hpp" @@ -489,7 +490,7 @@ Clause* Superposition::performSuperposition( } } - Literal* tgtLitS = EqHelper::replace(rwLitS,rwTermS,tgtTermS); + Literal* tgtLitS = SubtermReplacer(rwTermS,tgtTermS).transform(rwLitS); static bool doSimS = getOptions().simulatenousSuperposition(); @@ -555,7 +556,7 @@ Clause* Superposition::performSuperposition( Literal* currAfter = subst->apply(curr, !eqIsResult); if (doSimS) { - currAfter = EqHelper::replace(currAfter,rwTermS,tgtTermS); + currAfter = SubtermReplacer(rwTermS,tgtTermS).transform(currAfter); } if(EqHelper::isEqTautology(currAfter)) { diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 4bf6c8fea1..319858d34e 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -11,8 +11,7 @@ #include "Kernel/Signature.hpp" #include "Kernel/SortHelper.hpp" #include "Kernel/TermIterators.hpp" - -#include "Lib/SmartPtr.hpp" +#include "Kernel/EqHelper.hpp" #include "ApplicativeHelper.hpp" @@ -38,6 +37,7 @@ TermList BetaNormaliser::transformSubterm(TermList t) while(t.isRedex()){ t = RedexReducer().reduce(t); } + return t; } @@ -49,6 +49,85 @@ bool BetaNormaliser::exploreSubterms(TermList orig, TermList newTerm) return false; } +TermList EtaNormaliser::normalise(TermList t) +{ + CALL("EtaNormaliser::normalise"); + + _ignoring = false; + t = transformSubterm(t); + return transform(t); +} + +TermList EtaNormaliser::transformSubterm(TermList t) +{ + CALL("EtaNormaliser::transformSubterm"); + + if(_ignoring && t != _awaiting) return t; + if(_ignoring && t == _awaiting) _ignoring = false; + + TermList body = t; + unsigned l = 0; // number of lambda binders + while(body.isLambdaTerm()){ + l++; + body = body.lambdaBody(); + } + if(!l) return t; //not a lambda term, cannot eta reduce + + unsigned n = 0; // number of De bruijn indices at end of term + TermList newBody = body; + while(body.isApplication()){ + auto dbIndex = body.rhs().deBruijnIndex(); + if(!dbIndex.isSome() || dbIndex.unwrap() != n){ + break; + } + body = body.lhs(); + n++; + } + + TermShifter ts; + ts.shift(body, 0); + auto mfi = ts.minFreeIndex(); + unsigned j = mfi.isSome() ? mfi.unwrap() : UINT_MAX; // j is minimum free index + unsigned k = std::min(l, std::min(n, j)); + + if(!k){ + _ignoring = true; + _awaiting = newBody; + return t; + } + + for(unsigned i = 0; i < k; i++){ + newBody = newBody.lhs(); + } + newBody = TermShifter().shift(newBody, 0 - k); + + body = t; + for(unsigned i = 0; i < l - k; i++){ + body = body.lambdaBody(); + } + + // TermTransform doesn't work at top level... + if(body == t){ + return newBody; + } + + _ignoring = true; + _awaiting = newBody; + + return SubtermReplacer(body, newBody).transform(t); +} + +bool EtaNormaliser::exploreSubterms(TermList orig, TermList newTerm) +{ + CALL("EtaNormaliser::exploreSubterms"); + + while(newTerm.isLambdaTerm()){ + newTerm = newTerm.lambdaBody(); + } + if(newTerm.isVar() || !newTerm.term()->hasLambda()) return false; + return true; +} + TermList RedexReducer::reduce(TermList redex) { CALL("RedexReducer::reduce"); @@ -58,7 +137,9 @@ TermList RedexReducer::reduce(TermList redex) TermList t1 = redex.lhs().lambdaBody(); _t2 = redex.rhs(); + if(t1.isTerm()) onTermEntry(t1.term()); TermList transformed = transformSubterm(t1); + if(transformed != t1) return transformed; return transform(t1); } @@ -72,7 +153,7 @@ TermList RedexReducer::transformSubterm(TermList t) if(index == _replace){ // any free indices in _t2 need to be lifted by the number of extra lambdas // that now surround them - return TermLifter().lift(_t2, _replace); + return TermShifter().shift(_t2, _replace); } if(index > _replace){ // free index. replace by index 1 less as now surrounded by one fewer lambdas @@ -106,51 +187,58 @@ bool RedexReducer::exploreSubterms(TermList orig, TermList newTerm) return false; } -TermList TermLifter::lift(TermList term, unsigned liftBy) +TermList TermShifter::shift(TermList term, int shiftBy) { - CALL("TermLifter::lift"); + CALL("TermShifter::shift"); _cutOff = 0; - _liftBy = liftBy; + _shiftBy = shiftBy; + + if(term.isTerm()) onTermEntry(term.term()); TermList transformed = transformSubterm(term); if(transformed != term) return transformed; return transform(term); } -TermList TermLifter::transformSubterm(TermList t) +TermList TermShifter::transformSubterm(TermList t) { - CALL("TermLifter::transformSubterm"); + CALL("TermShifter::transformSubterm"); if(t.deBruijnIndex().isSome()){ unsigned index = t.deBruijnIndex().unwrap(); - if(index > _cutOff){ + if(index >= _cutOff){ // free index. lift - TermList sort = SortHelper::getResultSort(t.term()); - return ApplicativeHelper::getDeBruijnIndex(index + _liftBy, sort); + if(_shiftBy != 0){ + TermList sort = SortHelper::getResultSort(t.term()); + ASS(_shiftBy >= 0 || index >= std::abs(_shiftBy)); + return ApplicativeHelper::getDeBruijnIndex(index + _shiftBy, sort); + } else { + _minFreeIndex = (int)index; + } } } return t; } -void TermLifter::onTermEntry(Term* t) +void TermShifter::onTermEntry(Term* t) { - CALL("TermLifter::onTermEntry"); + CALL("TermShifter::onTermEntry"); if(t->isLambdaTerm()) _cutOff++; } -void TermLifter::onTermExit(Term* t) +void TermShifter::onTermExit(Term* t) { - CALL("TermLifter::onTermExit"); + CALL("TermShifter::onTermExit"); if(t->isLambdaTerm()) _cutOff--; } -bool TermLifter::exploreSubterms(TermList orig, TermList newTerm) +bool TermShifter::exploreSubterms(TermList orig, TermList newTerm) { - CALL("TermLifter::exploreSubterms"); + CALL("TermShifter::exploreSubterms"); - // already lifted, so must be DB index and won't have subterms anyway + // already shifted, so must be DB index and won't have subterms anyway if(orig != newTerm) return false; if(newTerm.term()->hasDBIndex()) return true; return false; @@ -422,4 +510,5 @@ bool ApplicativeHelper::isFalse(TermList term){ return term.isTerm() && env.signature->isFoolConstantSymbol(false, term.term()->functor()); } + #endif diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index cc5f96e89f..01e3783e8e 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -42,6 +42,25 @@ class BetaNormaliser : public TermTransformer bool exploreSubterms(TermList orig, TermList newTerm) override; }; +// reduce to eta short form +// normalises top down carrying out parallel eta reductions +// for terms such as ^^^.f 2 1 0 +class EtaNormaliser : public TermTransformer +{ +public: + + EtaNormaliser() { + dontTransformSorts(); + } + TermList normalise(TermList t); + TermList transformSubterm(TermList t) override; + bool exploreSubterms(TermList orig, TermList newTerm) override; + +private: + bool _ignoring; + TermList _awaiting; +}; + class RedexReducer : public TermTransformer { public: @@ -59,21 +78,29 @@ class RedexReducer : public TermTransformer unsigned _replace; // index to replace }; -class TermLifter : public TermTransformer +class TermShifter : public TermTransformer { public: - TermLifter() { + TermShifter() : _minFreeIndex(-1) { dontTransformSorts(); } - TermList lift(TermList term, unsigned liftBy); + // positive value -> shift up + // negative -> shift down + // 0 record minimum free index + TermList shift(TermList term, int shiftBy); TermList transformSubterm(TermList t) override; void onTermEntry(Term* t) override; void onTermExit(Term* t) override; bool exploreSubterms(TermList orig, TermList newTerm) override; + Option minFreeIndex(){ + return _minFreeIndex > -1 ? Option((unsigned)_minFreeIndex) : Option(); + } + private: unsigned _cutOff; // any index higher than _cutOff is a free index - unsigned _liftBy; // the amount to lift a free index by (the number of extra lambdas between it and its binder) + int _shiftBy; // the amount to shift a free index by + int _minFreeIndex; }; class ApplicativeHelper { diff --git a/Kernel/ColorHelper.cpp b/Kernel/ColorHelper.cpp index fc5b5bc31c..9c025abcbe 100644 --- a/Kernel/ColorHelper.cpp +++ b/Kernel/ColorHelper.cpp @@ -20,7 +20,7 @@ #include "Shell/Options.hpp" #include "Clause.hpp" -#include "EqHelper.hpp" +#include "TermTransformer.hpp" #include "Inference.hpp" #include "Renaming.hpp" #include "Signature.hpp" @@ -117,7 +117,7 @@ Clause* ColorHelper::skolemizeColoredConstants(Clause* c) TermList newTrm = TermList(Term::create(newFn, 0, 0)); for (unsigned i=0; ifunctor())) { //here we each time remove at least one colored symbol Term* newTrm = applyReplacement(t,replMap); - lit = EqHelper::replace(lit,TermList(t),TermList(newTrm)); + lit = SubtermReplacer(TermList(t),TermList(newTrm)).transform(lit); goto start_replacing; } } diff --git a/Kernel/EqHelper.cpp b/Kernel/EqHelper.cpp index 222ca7c4ec..7caae4f621 100644 --- a/Kernel/EqHelper.cpp +++ b/Kernel/EqHelper.cpp @@ -67,108 +67,6 @@ bool EqHelper::hasGreaterEqualitySide(Literal* eq, const Ordering& ord, TermList ASSERTION_VIOLATION; } -Literal* EqHelper::replace(Literal* lit, TermList what, TermList by) -{ - CALL("EqHelper::replace(Literal*,...)"); - - return static_cast(replace(static_cast(lit), what, by)); -} - -/** - * Replace all occurences of the subterm @b tSrc by @b tDest in the term/literal - * @b lit, and return the result - * - * Cannot be used to replace a sort - */ -Term* EqHelper::replace(Term* trm0, TermList tSrc, TermList tDest) -{ - CALL("EqHelper::replace(Term*,...)"); - ASS(trm0->shared()); - ASS(!trm0->isSort()); - ASS(tSrc.isVar() || !tSrc.term()->isSort()); - ASS(tDest.isVar() || !tDest.term()->isSort()); - - - static Stack toDo(8); - static Stack terms(8); - static Stack modified(8); - static Stack args(8); - ASS(toDo.isEmpty()); - ASS(terms.isEmpty()); - modified.reset(); - args.reset(); - - modified.push(false); - toDo.push(trm0->args()); - - for (;;) { - TermList* tt=toDo.pop(); - if (tt->isEmpty()) { - if (terms.isEmpty()) { - //we're done, args stack contains modified arguments - //of the literal. - ASS(toDo.isEmpty()); - break; - } - Term* orig=terms.pop(); - if (!modified.pop()) { - args.truncate(args.length() - orig->arity()); - args.push(TermList(orig)); - continue; - } - //here we assume, that stack is an array with - //second topmost element as &top()-1, third at - //&top()-2, etc... - TermList* argLst=&args.top() - (orig->arity()-1); - args.truncate(args.length() - orig->arity()); - - args.push(TermList(Term::create(orig,argLst))); - modified.setTop(true); - continue; - } - toDo.push(tt->next()); - - TermList tl=*tt; - if (tl == tSrc) { - args.push(tDest); - modified.setTop(true); - continue; - } - if (tl.isVar() || tl.term()->isSort()) { - args.push(tl); - continue; - } - ASS(tl.isTerm()); - Term* t=tl.term(); - terms.push(t); - modified.push(false); - toDo.push(t->args()); - } - ASS(toDo.isEmpty()); - ASS(terms.isEmpty()); - ASS_EQ(modified.length(),1); - ASS_EQ(args.length(),trm0->arity()); - - if (!modified.pop()) { - // we call replace in superposition only if we already know, - // there is something to be replaced. - // ASSERTION_VIOLATION; // MS: but there is now a new use in InnerRewriting which does not like this extra check - return trm0; - } - - // here we assume, that stack is an array with - // second topmost element as &top()-1, third at - // &top()-2, etc... - TermList* argLst=&args.top() - (trm0->arity()-1); - if (trm0->isLiteral()) { - Literal* lit = static_cast(trm0); - ASS_EQ(args.size(), lit->arity()); - return Literal::create(lit,argLst); - } - return Term::create(trm0,argLst); -} - - TermIterator EqHelper::getSubtermIterator(Literal* lit, const Ordering& ord) { CALL("EqHelper::getSubtermIterator"); diff --git a/Kernel/EqHelper.hpp b/Kernel/EqHelper.hpp index 907a2c6eaf..54551cd5e4 100644 --- a/Kernel/EqHelper.hpp +++ b/Kernel/EqHelper.hpp @@ -45,10 +45,6 @@ class EqHelper static TermIterator getDemodulationLHSIterator(Literal* lit, bool forward, const Ordering& ord, const Options& opt); static TermIterator getEqualityArgumentIterator(Literal* lit); - //WARNING, this function cannot be used when @param t is a sort. - static Term* replace(Term* t, TermList what, TermList by); - static Literal* replace(Literal* lit, TermList what, TermList by); - struct LHSIteratorFn { LHSIteratorFn(const Ordering& ord) : _ord(ord) {} diff --git a/Kernel/Signature.hpp b/Kernel/Signature.hpp index 9463c0dc3e..b6df47734b 100644 --- a/Kernel/Signature.hpp +++ b/Kernel/Signature.hpp @@ -254,10 +254,7 @@ class Signature inline void setDBIndex(int index){ _dbIndex = index; } inline Option dbIndex(){ - if(_dbIndex > -1){ - return Option((unsigned)_dbIndex); - } - return Option(); + return _dbIndex > -1 ? Option((unsigned)_dbIndex) : Option(); } inline void markInductionSkolem(){ _inductionSkolem=1; _skolem=1;} diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index d8251b01ca..6b3378c673 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -815,6 +815,11 @@ vstring Term::headToString() const name = static_cast(this)->typeConName(); } else { name = functionName(); +#if VHOL + if(deBruijnIndex().isSome()){ + name = name + "_" + Int::toString(deBruijnIndex().unwrap()); + } +#endif } return name + (arity() ? "(" : ""); } @@ -2012,9 +2017,17 @@ bool Literal::isFlexRigid() const CALL("Literal::isFlexRigid"); ASS(isEquality()); + auto check = [](TermList head1, TermList term1, TermList head2){ + // only one side has a variable head, and that side isn't is a variable + return head1.isVar() && !term1.isVar() && !head2.isVar(); + }; + TermList lhs = *nthArgument(0); TermList rhs = *nthArgument(1); - return !polarity() && (lhs.head().isVar() != rhs.head().isVar()); + TermList lhsHead = lhs.head(); + TermList rhsHead = rhs.head(); + + return !polarity() && (check(lhsHead, lhs, rhsHead) || check(rhsHead, rhs, lhsHead)); } #endif diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 2889592574..cea445b6bb 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -41,7 +41,7 @@ // the number of bits used for "TermList::_info::distinctVars" #if VHOL - #define TERM_DIST_VAR_BITS 19 + #define TERM_DIST_VAR_BITS 18 #else #define TERM_DIST_VAR_BITS 21 #endif @@ -260,6 +260,8 @@ class TermList { unsigned hasDBIndex : 1; /** true if the term contains a redex */ unsigned hasRedex : 1; + /** true if a term contains a lambda */ + unsigned hasLambda : 1; #endif /** Ordering comparison result for commutative term arguments, one of @@ -707,6 +709,19 @@ class Term ASS(_args[0]._info.shared); return _args[0]._info.hasDBIndex; } + + void setHasLambda(bool b) + { + CALL("setHasLambda"); + ASS(shared() && !isSort()); + _args[0]._info.hasLambda = b; + } + /** true if term contains redex */ + bool hasLambda() const + { + ASS(_args[0]._info.shared); + return _args[0]._info.hasLambda; + } #endif /** Return an index of the argument to which @b arg points */ diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index 89b1d19d54..2c69774b84 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -83,9 +83,11 @@ Term* TermTransformer::transform(Term* term) TermList tl = *tt; - // We still transform sort variables ... + // We still transform sort and term variables ... // It is difficult to avoid this though - if(tl.isTerm() && tl.term()->isSort() && !_transformSorts){ + if(tl.isTerm() && + (( tl.term()->isSort() && _dontTransformSorts) || + (!tl.term()->isSort() && _onlyTransformSorts))){ args.push(tl); continue; } @@ -253,6 +255,14 @@ TermList TermTransformer::transform(TermList ts) return ts; } } +} + +TermList SubtermReplacer::transformSubterm(TermList t) +{ + CALL("SubtermReplacer::transformSubterm"); + + if(t == _what) return _by; + return t; } Formula* TermTransformer::transform(Formula* f) diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index 09122642ba..a9e914c698 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -16,7 +16,7 @@ #define __TermTransformer__ #include "Forwards.hpp" - +#include "Term.hpp" namespace Kernel { @@ -40,11 +40,13 @@ class TermTransformer { public: TermTransformer() : _sharedResult(true), - _transformSorts(true) {} + _dontTransformSorts(false), + _onlyTransformSorts(false) {} void createNonShared(){ _sharedResult = false; } - void dontTransformSorts(){ _transformSorts = false; } - + void dontTransformSorts(){ _dontTransformSorts = true; } + void onltTransformSorts(){ _onlyTransformSorts = true; } + virtual ~TermTransformer() {} Term* transform(Term* term); Literal* transform(Literal* lit); @@ -64,7 +66,8 @@ class TermTransformer { virtual Formula* transform(Formula* f); bool _sharedResult; - bool _transformSorts; + bool _dontTransformSorts; + bool _onlyTransformSorts; private: template @@ -72,6 +75,19 @@ class TermTransformer { { return shared ? T::create(static_cast(t), argLst) : T::createNonShared(static_cast(t), argLst); } }; +class SubtermReplacer : public TermTransformer { +public: + SubtermReplacer(TermList what, TermList by) : _what(what), _by(by) { + dontTransformSorts(); + } + + TermList transformSubterm(TermList t) override; + +private: + TermList _what; + TermList _by; +}; + /** * Has similar philosophy to TermTransformer, but: * goes bottom up and so subterms of currently considered terms diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 014f61989c..1f1087668c 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -93,7 +93,7 @@ #include "Inferences/Induction.hpp" #include "Inferences/ArithmeticSubtermGeneralization.hpp" #include "Inferences/TautologyDeletionISE.hpp" -#include "Inferences/BetaNormaliser.hpp" +#include "Inferences/BetaEtaISE.hpp" #include "Saturation/ExtensionalityClauseContainer.hpp" @@ -1827,7 +1827,7 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons res->addFront(new TautologyDeletionISE2()); } - res->addFront(new BetaSimplify()); + res->addFront(new BetaEtaSimplify()); #endif // Only add if there are distinct groups diff --git a/Test/SyntaxSugar.hpp b/Test/SyntaxSugar.hpp index 7368b2c38d..f912a1860a 100644 --- a/Test/SyntaxSugar.hpp +++ b/Test/SyntaxSugar.hpp @@ -34,7 +34,6 @@ #include "Kernel/Signature.hpp" #include "Kernel/OperatorType.hpp" #include "Shell/TermAlgebra.hpp" -#include "Shell/LambdaConversion.hpp" #define __TO_SORT_RAT RationalConstantType::getSort() #define __TO_SORT_INT IntegerConstantType::getSort() @@ -266,9 +265,7 @@ class SyntaxSugarGlobals VList* boundVar = new VList(var.var()); SList* boundVarSort = new SList(varSort); Term* lambdaTerm = Term::createLambda(term, boundVar, boundVarSort, termSort); - // convert to De Bruijn indices - TermList lam = LambdaConversion().convertLambda(lambdaTerm); - return lam; + return TermList(lambdaTerm); }; } @@ -362,7 +359,11 @@ struct SortSugar : public ExpressionSugar } else { Stack as; for (auto a : as_){ as.push(a.sugaredExpr()); } - _sugaredExpr = AtomicSort::arrowSort(as, as.pop()); + auto res = as.pop(); + // reverse arguments. Bit of a hack really + Stack as2; + while(!as.isEmpty()){ as2.push(as.pop()); } + _sugaredExpr = AtomicSort::arrowSort(as2, res); } } @@ -389,7 +390,11 @@ class TermSugar : public ExpressionSugar { ASS_REP(!_sugaredExpr.isEmpty(), _sugaredExpr); if(!_sugaredExpr.isVar()){ - _srt = SortHelper::getResultSort(_sugaredExpr.term()); + if(_sugaredExpr.term()->isSpecial()){ + _srt = _sugaredExpr.term()->getSpecialData()->getSort(); + } else { + _srt = SortHelper::getResultSort(_sugaredExpr.term()); + } } } diff --git a/UnitTests/tBetaReduction.cpp b/UnitTests/tBetaReduction.cpp index 55427a3fb1..f80dbb0468 100644 --- a/UnitTests/tBetaReduction.cpp +++ b/UnitTests/tBetaReduction.cpp @@ -16,12 +16,15 @@ #include "Test/UnitTesting.hpp" #include "Test/SyntaxSugar.hpp" #include "Kernel/ApplicativeHelper.hpp" +#include "Shell/LambdaConversion.hpp" + +TermList toDeBruijnIndices(TermList t){ + return LambdaConversion().convertLambda(t); +} //////////////////////////////////////////////////////////////////////////////// ////////////////////////////////// TEST CASES ////////////////////////////////// -// -// How to read the test cases in this file: -// + TEST_FUN(beta_reduction01) { DECL_DEFAULT_VARS DECL_SORT(srt) @@ -30,7 +33,8 @@ TEST_FUN(beta_reduction01) { DECL_CONST(b, srt) BetaNormaliser bn; - auto reduced = bn.normalise(ap(lam(x0,x0),a)); + auto t = ap(lam(x0,x0),a); + auto reduced = bn.normalise(toDeBruijnIndices(t)); ASS_EQ(reduced, a.sugaredExpr()); } @@ -44,7 +48,8 @@ TEST_FUN(beta_reduction02) { DECL_CONST(f,fSrt) BetaNormaliser bn; - auto reduced = bn.normalise(ap(lam(x0,ap(f, x0)),a)); + auto t = ap(lam(x0,ap(f, x0)),a); + auto reduced = bn.normalise( toDeBruijnIndices(t)); ASS_EQ(reduced, ap(f, a).sugaredExpr()); } @@ -53,11 +58,12 @@ TEST_FUN(beta_reduction03) { DECL_SORT(srt) DECL_ARROW_SORT(xSrt, {srt, srt}) DECL_HOL_VAR(x, 0, xSrt) - DECL_HOL_VAR(y, 0, srt) + DECL_HOL_VAR(y, 1, srt) DECL_CONST(a, srt) BetaNormaliser bn; - auto reduced = bn.normalise( ap( lam(x,ap(x,a)) , lam(y, y) ) ); + auto t = ap( lam(x,ap(x,a)) , lam(y, y) ); + auto reduced = bn.normalise( toDeBruijnIndices(t) ); ASS_EQ(reduced, a.sugaredExpr()); } @@ -66,12 +72,13 @@ TEST_FUN(beta_reduction04) { DECL_SORT(srt) DECL_ARROW_SORT(xSrt, {srt, srt}) DECL_HOL_VAR(x, 0, xSrt) - DECL_HOL_VAR(y, 0, srt) + DECL_HOL_VAR(y, 1, srt) DECL_CONST(a, srt) DECL_CONST(f, xSrt) BetaNormaliser bn; - auto reduced = bn.normalise( ap(f, ap( lam(x,ap(x,a)) , lam(y, y) ) ) ); + auto t = ap(f, ap( lam(x,ap(x,a)) , lam(y, y) ) ); + auto reduced = bn.normalise( toDeBruijnIndices(t) ); ASS_EQ(reduced, ap(f, a).sugaredExpr()); } @@ -79,11 +86,115 @@ TEST_FUN(beta_reduction04) { TEST_FUN(beta_reduction05) { DECL_SORT(srt) DECL_HOL_VAR(x, 0, srt) - DECL_HOL_VAR(y, 0, srt) - DECL_HOL_VAR(z, 0, srt) + DECL_HOL_VAR(y, 1, srt) + DECL_HOL_VAR(z, 2, srt) BetaNormaliser bn; - auto reduced = bn.normalise( lam(x, ap(lam(y, lam(z, y) ), x)) ); + auto t = lam(x, ap(lam(y, lam(z, y) ), x)) ; + auto res = lam(x,lam(z, x)); + auto reduced = bn.normalise( toDeBruijnIndices(t) ); + + ASS_EQ(reduced, toDeBruijnIndices(res)); +} + +TEST_FUN(eta_reduction01) { + DECL_SORT(srt) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(y, 1, srt) + DECL_HOL_VAR(z, 2, srt) + DECL_ARROW_SORT(fSrt, {srt, srt, srt, srt}) + DECL_CONST(f, fSrt) + + EtaNormaliser en; + auto t = lam(x, lam(y, lam(z, ap(ap(ap(f, x), y), z)))); + + auto reduced = en.normalise( toDeBruijnIndices(t) ); + + ASS_EQ(reduced, f.sugaredExpr()); +} + +TEST_FUN(eta_reduction02) { + DECL_SORT(srt) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(y, 1, srt) + DECL_HOL_VAR(z, 2, srt) + DECL_ARROW_SORT(fSrt, {srt, srt, srt, srt}) + DECL_CONST(f, fSrt) + + EtaNormaliser en; + auto t = lam(x, lam(y, lam(z, ap(ap(ap(f, x), z), y)))); + auto tdb = toDeBruijnIndices(t); + + auto reduced = en.normalise( tdb ); + + ASS_EQ(reduced, tdb); +} + +TEST_FUN(eta_reduction03) { + DECL_SORT(srt) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(y, 1, srt) + DECL_HOL_VAR(z, 2, srt) + DECL_ARROW_SORT(fSrt, {srt, srt, srt, srt}) + DECL_CONST(f, fSrt) + + EtaNormaliser en; + auto t = lam(x, lam(y, lam(z, ap(ap(ap(f, y), x), z)))); + auto tdb = toDeBruijnIndices(t); + auto res = lam(x, lam(y, ap(ap(f, y), x) )); - ASS_EQ(reduced, lam(x,lam(z, x)).sugaredExpr()); -} \ No newline at end of file + auto reduced = en.normalise( tdb ); + + ASS_EQ(reduced, toDeBruijnIndices(res)); +} + +TEST_FUN(eta_reduction04) { + DECL_SORT(srt) + DECL_ARROW_SORT(xSrt, {srt, srt, srt}) + DECL_HOL_VAR(x, 0, xSrt) + DECL_HOL_VAR(y, 1, srt) + DECL_HOL_VAR(z, 2, srt) + + EtaNormaliser en; + auto t = lam(x, lam(y, lam(z, ap(ap(x, y), z)))); + auto tdb = toDeBruijnIndices(t); + auto res = lam(x, x); + + auto reduced = en.normalise( tdb ); + + ASS_EQ(reduced, toDeBruijnIndices(res)); +} + +TEST_FUN(eta_reduction05) { + DECL_SORT(srt) + DECL_HOL_VAR(x, 0, srt) + DECL_ARROW_SORT(fSrt, {srt, srt, srt}) + DECL_CONST(f, fSrt) + + EtaNormaliser en; + auto t = lam(x, ap(ap(f, x), x)); + auto tdb = toDeBruijnIndices(t); + + auto reduced = en.normalise( tdb ); + + ASS_EQ(reduced, tdb); +} + +TEST_FUN(eta_reduction06) { + DECL_SORT(srt) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(y, 1, srt) + DECL_ARROW_SORT(gSrt, {srt, srt}) + // TODO wierd stuff below... + DECL_ARROW_SORT(fSrt, {gSrt, srt, srt}) + DECL_CONST(f, fSrt) + DECL_CONST(g, gSrt) + + EtaNormaliser en; + auto t = lam(x, ap(ap(f, lam(y, ap(g, y))), x)); + auto tdb = toDeBruijnIndices(t); + + auto reduced = en.normalise( tdb ); + + ASS_EQ(reduced, ap(f,g).sugaredExpr()); +} From 21255e8ac75f8f3cc95b9363f30a16f28ede1295 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 13 Sep 2022 12:00:45 +0100 Subject: [PATCH 030/210] intermediate stage, working on Imitation Projection --- Inferences/ImitateProject.cpp | 55 ++++++++++++++++++++++++++++++++++- Kernel/ApplicativeHelper.cpp | 18 ++++++++++++ Kernel/ApplicativeHelper.hpp | 5 +++- Kernel/TermTransformer.cpp | 13 +++++++-- 4 files changed, 86 insertions(+), 5 deletions(-) diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp index 385dca552e..aae2a8e046 100644 --- a/Inferences/ImitateProject.cpp +++ b/Inferences/ImitateProject.cpp @@ -68,17 +68,69 @@ struct ImitateProject::IsFlexRigid struct ImitateProject::ResultFn { ResultFn(Clause* cl) - : _cl(cl), _cLen(cl->length()) {} + : _cl(cl), _cLen(cl->length()), _maxVar(cl->maxVar()) {} ClauseIterator operator() (Literal* lit) { CALL("EqualityResolution::ResultFn::operator()"); + typedef ApplicativeHelper AH; + ASS(lit->isEquality()); ASS(lit->isFlexRigid()); + static RobSubstitution subst; + static ClauseStack results; + results.reset(); + TermList arg0 = *lit->nthArgument(0); TermList arg1 = *lit->nthArgument(1); + TermList flexTerm, rigidTerm; + + if(arg0.head().isVar()){ + flexTerm = arg0; + rigidTerm = arg1; + } else { + flexTerm = arg1; + rigidTerm = arg0; + } + + TermList headFlex, headRigid; + TermStack argsFlex, argsRigid; + + AH::getHeadAndArgs(flexTerm, headFlex, argsFlex); + AH::getHeadAndArgs(rigidTerm, headRigid, argsRigid); + ASS(argsFlex.size()); // Flex side is not a variable + + // replaces the result sort with a new result sort + // e.g. i > i > o ==> i > i > nat + auto replaceRes = [](TermList arrowSort, TermList newRes){ + TermStack args; + while(arrowSort.isArrowSort()){ + args.push(arrowSort.domain()); + arrowSort = arrowSort.result(); + } + while(!args.isEmpty()){ + newRes = AtomicSort::arrowSort(args.pop(), newRes); + } + return newRes; + }; + + // imitation + TermStack sorts; //sorts of arguments of flex head + TermStack deBruijnIndices; + AH::getArgSorts(flexTerm, sorts); + if(argsRigid.size()){ + for(int i = argsFlex.size() - 1; i >= 0; i--){ + deBruijnIndices.push(AH::getDeBruijnIndex(i, sorts[i])); + } + } + + for(unsigned i = 0; i < argsRigid.size(); i++){ + + } + + static RobSubstitution subst(_handler); subst.reset(); @@ -134,6 +186,7 @@ struct ImitateProject::ResultFn private: Clause* _cl; unsigned _cLen; + unsigned _maxVar; }; ClauseIterator ImitateProject::generateClauses(Clause* premise) diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 319858d34e..5371f04a07 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -364,6 +364,13 @@ TermList ApplicativeHelper::getResultApplieadToNArgs(TermList arrowSort, unsigne return arrowSort; } +TermList ApplicativeHelper::headSort(TermList app) +{ + CALL("ApplicativeHelper::getHeadSort"); + ASS(app.isApplication()); + + return AtomicSort::arrowSort(*app.term()->nthArgument(0), *app.term()->nthArgument(1)); +} /** indexed from 1 */ TermList ApplicativeHelper::getNthArg(TermList arrowSort, unsigned argNum) @@ -435,6 +442,17 @@ void ApplicativeHelper::getHeadSortAndArgs(TermList term, TermList& head, } +void ApplicativeHelper::getArgSorts(TermList t, TermStack& sorts) +{ + CALL("ApplicativeHelper::getArgSorts"); + ASS(t.isApplication()); + + while(t.isApplication()){ + sorts.push(*t.term()->nthArgument(0)); + t = t.lhs(); + } +} + void ApplicativeHelper::getHeadAndArgs(TermList term, TermList& head, TermStack& args) { diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 01e3783e8e..882be2141c 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -116,12 +116,15 @@ class ApplicativeHelper { static TermList getDeBruijnIndex(int index, TermList sort); static TermList getNthArg(TermList arrowSort, unsigned argNum); static TermList getResultApplieadToNArgs(TermList arrowSort, unsigned argNum); + //Broken! + static TermList headSort(TermList app); static unsigned getArity(TermList sort); static void getHeadAndAllArgs(TermList term, TermList& head, TermStack& args); static void getHeadAndArgs(TermList term, TermList& head, TermStack& args); static void getHeadAndArgs(Term* term, TermList& head, TermStack& args); static void getHeadAndArgs(const Term* term, TermList& head, Deque& args); - static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); + static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); + static void getArgSorts(TermList t, TermStack& sorts); static Signature::Proxy getProxy(const TermList t); static bool isBool(TermList t); static bool isTrue(TermList term); diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index 2c69774b84..b693f99f55 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -135,9 +135,16 @@ Term* TermTransformer::transform(Term* term) //&top()-2, etc... TermList* argLst = &args.top() - (term->arity() - 1); - return term->isLiteral() ? - create (term, argLst, _sharedResult) : - create (term, argLst, _sharedResult) ; + if(term->isLiteral()){ + Literal* lit = static_cast(term); + if(lit->isEquality() && argLst[0].isVar() && argLst[1].isVar() && !_dontTransformSorts){ + return Literal::createEquality(lit->polarity(), argLst[0], argLst[1], + transform(SortHelper::getEqualityArgumentSort(lit))); + } + return create (term, argLst, _sharedResult); + } + + return create(term, argLst, _sharedResult); } // default implementation, can override if required From 7315863305ff6c31b5e5e4973a47b289064ceabe Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 14 Sep 2022 22:04:29 +0100 Subject: [PATCH 031/210] adding pretty HOL printing and completing implementation of ImitateProject --- CMakeLists.txt | 4 +- Inferences/ImitateProject.cpp | 208 +++++++++++++++++------------ Inferences/ImitateProject.hpp | 2 +- Kernel/ApplicativeHelper.cpp | 6 +- Kernel/Inference.cpp | 4 + Kernel/Inference.hpp | 4 + Kernel/Term.cpp | 34 +++-- Kernel/Term.hpp | 2 + Saturation/SaturationAlgorithm.cpp | 5 +- Shell/Options.cpp | 7 + Shell/Options.hpp | 5 +- 11 files changed, 179 insertions(+), 102 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 513c447df5..2ab5b607af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -320,8 +320,8 @@ set(VAMPIRE_KERNEL_SOURCES Inferences/CNFOnTheFly.hpp Inferences/BetaEtaISE.cpp Inferences/BetaEtaISE.hpp -# Inferences/CombinatorNormalisationISE.hpp -# Inferences/CombinatorNormalisationISE.cpp + Inferences/ImitateProject.hpp + Inferences/ImitateProject.cpp Inferences/ArgCong.hpp Inferences/ArgCong.cpp Inferences/NegativeExt.cpp diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp index aae2a8e046..e8bbd872a0 100644 --- a/Inferences/ImitateProject.cpp +++ b/Inferences/ImitateProject.cpp @@ -32,21 +32,16 @@ #include "Kernel/RobSubstitution.hpp" #include "Kernel/EqHelper.hpp" #include "Kernel/Ordering.hpp" -#include "Kernel/LiteralSelector.hpp" +#include "Kernel/SubstHelper.hpp" #include "Kernel/SortHelper.hpp" #include "Kernel/ApplicativeHelper.hpp" #include "Saturation/SaturationAlgorithm.hpp" -#include "EqualityResolution.hpp" +#include "ImitateProject.hpp" #include "Shell/UnificationWithAbstractionConfig.hpp" -#if VDEBUG -#include -using namespace std; -#endif - namespace Inferences { @@ -55,32 +50,68 @@ using namespace Kernel; using namespace Indexing; using namespace Saturation; -struct ImitateProject::IsFlexRigid +struct ImitateProject::CanImitateAndProject { bool operator()(Literal* l) { ASS(l->isEquality()); - return l->isFlexRigid(); + return l->isFlexRigid() && !SortHelper::getEqualityArgumentSort(l).isArrowSort(); } }; struct ImitateProject::ResultFn { + void getConstraints(TermStack& lhss, TermStack& rhss, TermStack& sorts, LiteralStack& constraints) + { + CALL("ImitateProject::ResultFn::getConstraints"); + ASS(!constraints.size()); + ASS(lhss.size() == rhss.size()); + + for(unsigned i = 0; i < lhss.length(); i++){ + TermList lhs = SubstHelper::apply(lhss[i], _subst); + TermList rhs = SubstHelper::apply(rhss[i], _subst); + constraints.push(Literal::createEquality(false, lhs, rhs, sorts[i])); + } + } + + Clause* createRes(InferenceRule rule, LiteralStack& constraints, Literal* lit, bool sameHeads) + { + CALL("ImitateProject::ResultFn::createRes"); + + unsigned newLen = sameHeads ? _cLen - 1 + constraints.length() : _cLen; + Clause* res = new(newLen) Clause(newLen, GeneratingInference1(rule, _cl)); + + unsigned next = 0; + for(unsigned i=0;i<_cLen;i++) { + Literal* curr=(*_cl)[i]; + if(curr!=lit || !sameHeads) { + Literal* currAfter = SubstHelper::apply(curr, _subst); + (*res)[next++] = currAfter; + } + } + while(!constraints.isEmpty()){ + (*res)[next++] = constraints.pop(); + } + cout << "IN " << _cl->toString() << endl; + cout << "OUT " << res->toString() << endl; + return res; + } + ResultFn(Clause* cl) : _cl(cl), _cLen(cl->length()), _maxVar(cl->maxVar()) {} ClauseIterator operator() (Literal* lit) { - CALL("EqualityResolution::ResultFn::operator()"); + CALL("ImitateProject::ResultFn::operator()"); typedef ApplicativeHelper AH; ASS(lit->isEquality()); ASS(lit->isFlexRigid()); - static RobSubstitution subst; static ClauseStack results; results.reset(); + _subst.reset(); TermList arg0 = *lit->nthArgument(0); TermList arg1 = *lit->nthArgument(1); @@ -95,95 +126,106 @@ struct ImitateProject::ResultFn rigidTerm = arg0; } + // since term is rigid, cannot be a variable + TermList sort = SortHelper::getResultSort(rigidTerm.term()); + ASS(!sort.isArrowSort()); TermList headFlex, headRigid; - TermStack argsFlex, argsRigid; + TermStack argsFlex; + TermStack argsRigid; + TermStack sortsFlex; //sorts of arguments of flex head + TermStack sortsRigid; + // after an imitation, or the projection of an argument with a rigid head, + // we create a new set of constrainst literals + LiteralStack newConstraints; AH::getHeadAndArgs(flexTerm, headFlex, argsFlex); AH::getHeadAndArgs(rigidTerm, headRigid, argsRigid); ASS(argsFlex.size()); // Flex side is not a variable - // replaces the result sort with a new result sort - // e.g. i > i > o ==> i > i > nat - auto replaceRes = [](TermList arrowSort, TermList newRes){ - TermStack args; - while(arrowSort.isArrowSort()){ - args.push(arrowSort.domain()); - arrowSort = arrowSort.result(); - } - while(!args.isEmpty()){ - newRes = AtomicSort::arrowSort(args.pop(), newRes); - } - return newRes; - }; - - // imitation - TermStack sorts; //sorts of arguments of flex head - TermStack deBruijnIndices; - AH::getArgSorts(flexTerm, sorts); - if(argsRigid.size()){ - for(int i = argsFlex.size() - 1; i >= 0; i--){ - deBruijnIndices.push(AH::getDeBruijnIndex(i, sorts[i])); - } - } - - for(unsigned i = 0; i < argsRigid.size(); i++){ - - } - - - static RobSubstitution subst(_handler); - subst.reset(); + AH::getArgSorts(flexTerm, sortsFlex); + AH::getArgSorts(rigidTerm, sortsRigid); - if(!subst.unify(arg0,0,arg1,0)){ - return 0; + TermStack deBruijnIndices; + for(int i = 0; i < argsFlex.size(); i++){ + // could get away with only creating these when we certainly need them + // but the logic becomes a lot more complicated + deBruijnIndices.push(AH::getDeBruijnIndex(i, sortsFlex[i])); } - //cout << "equalityResolution with " + _cl->toString() << endl; - //cout << "The literal is " + lit->toString() << endl; - //cout << "cLength " << cLength << endl; - - unsigned newLen=_cLen-1+ subst.numberOfConstraints(); - - Clause* res = new(newLen) Clause(newLen, GeneratingInference1(InferenceRule::EQUALITY_RESOLUTION, _cl)); - - Literal* litAfter = 0; - - if (_afterCheck && _cl->numSelected() > 1) { - TimeCounter tc(TC_LITERAL_ORDER_AFTERCHECK); - litAfter = subst.apply(lit, 0); - } + TermStack args; + TermStack args2; - unsigned next = 0; - for(unsigned i=0;i<_cLen;i++) { - Literal* curr=(*_cl)[i]; - if(curr!=lit) { - Literal* currAfter = subst.apply(curr, 0); + auto surroundWithLambdas = [](TermList t, TermStack& sorts){ + ASS(t.isTerm()); + for(int i = 0; i < sorts.size(); i++){ + t = AH::createLambdaTerm(sorts[i], SortHelper::getResultSort(t.term()), t); + } + return t; + }; - if (litAfter) { - TimeCounter tc(TC_LITERAL_ORDER_AFTERCHECK); + cout << "CLAUSE " << _cl->toString() << endl; - if (i < _cl->numSelected() && _ord->compare(currAfter,litAfter) == Ordering::GREATER) { - env.statistics->inferencesBlockedForOrderingAftercheck++; - res->destroy(); - return 0; - } - } + { // imitation + unsigned fVar = _maxVar; - (*res)[next++] = currAfter; + for(unsigned i = 0; i < argsRigid.size(); i++){ + TermList freshVar(++fVar, false); + TermList varSort = AtomicSort::arrowSort(sortsFlex, sortsRigid[i]); + args.push(AH::createAppTerm(varSort, freshVar, deBruijnIndices)); + args2.push(AH::createAppTerm(varSort, freshVar, argsFlex)); } + TermList headRigidSort = SortHelper::getResultSort(headRigid.term()); + //pb stands for partial binding + TermList pb = AH::createAppTerm(headRigidSort, headRigid, args); + pb = surroundWithLambdas(pb, sortsFlex); + + _subst.bind(headFlex.var(), pb); + getConstraints(args2, argsRigid, sortsRigid, newConstraints); + results.push(createRes(InferenceRule::IMITATE, newConstraints, lit, true)); } - auto constraints = subst.getConstraints(); - while(constraints.hasNext()){ - Literal* constraint = constraints.next(); - (*res)[next++] = constraint; + + // projections + for(unsigned i = 0; i < argsFlex.size(); i++){ + // try and project each of the arguments of the flex head in turn + _subst.reset(); + args.reset(); + args2.reset(); + TermList arg = argsFlex[i]; + TermList argSort = sortsFlex[i]; + // sort wrong, cannot project this arg + if(argSort.finalResult() != sort) continue; + TermList head; + AH::getHeadAndArgs(arg, head, args2); + // argument has a rigid head different to that of rhs. no point projecting + if(!head.isVar() && head != headRigid) continue; + + unsigned fVar = _maxVar; + for(unsigned j = 0; j < AH::getArity(argSort); j++){ + TermList freshVar(++fVar, false); + TermList varSort = AtomicSort::arrowSort(sortsFlex, AH::getNthArg(argSort, j + 1)); + args.push(AH::createAppTerm(varSort, freshVar, deBruijnIndices)); + args2.push(AH::createAppTerm(varSort, freshVar, argsFlex)); + } + cout << "ARG " << arg.toString() << endl; + cout << "ARG SORT " << argSort.toString() << endl; + cout << "INDEX " << deBruijnIndices[i].toString() << endl; + cout << "INDEX SORT " << SortHelper::getResultSort(deBruijnIndices[i].term()).toString() << endl; + TermList pb = AH::createAppTerm(argSort, deBruijnIndices[i], args); + pb = surroundWithLambdas(pb, sortsFlex); + cout << "PB " << pb.toString() << endl; + + _subst.bind(headFlex.var(), pb); + if(!head.isVar()){ + getConstraints(args2, argsRigid, sortsRigid, newConstraints); + } + results.push(createRes(InferenceRule::PROJECT, newConstraints, lit, !head.isVar())); } - ASS_EQ(next,newLen); - - env.statistics->equalityResolution++; + - return res; + return pvi(getUniquePersistentIterator(ClauseStack::Iterator(results)));; } private: + Substitution _subst; Clause* _cl; unsigned _cLen; unsigned _maxVar; @@ -202,12 +244,12 @@ ClauseIterator ImitateProject::generateClauses(Clause* premise) auto it1 = premise->getSelectedLiteralIterator(); // only selected literals which are flex rigid - auto it2 = getFilteredIterator(it1,IsNegativeEqualityFn()); + auto it2 = getFilteredIterator(it1,CanImitateAndProject()); // carry out imitations and projections auto it3 = getMapAndFlattenIterator(it2,ResultFn(premise)); - return pvi( it4 ); + return pvi( it3 ); } } diff --git a/Inferences/ImitateProject.hpp b/Inferences/ImitateProject.hpp index c85c0b4eff..cc5e880dee 100644 --- a/Inferences/ImitateProject.hpp +++ b/Inferences/ImitateProject.hpp @@ -39,7 +39,7 @@ class ImitateProject ClauseIterator generateClauses(Clause* premise); private: struct ResultFn; - struct IsFlexRigid; + struct CanImitateAndProject; }; diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 5371f04a07..957eae5074 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -296,7 +296,7 @@ TermList ApplicativeHelper::createAppTerm(TermList sort, TermList head, TermStac TermList res = head; TermList s1, s2; - + for(int i = terms.size() - 1; i >= 0; i--){ s1 = getNthArg(sort, 1); s2 = getResultApplieadToNArgs(sort, 1); @@ -328,6 +328,9 @@ TermList ApplicativeHelper::createLambdaTerm(TermList varSort, TermList termSort { CALL("ApplicativeHelper::createLambdaTerm"); + ASS(varSort.isVar() || varSort.term()->isSort()); + ASS(termSort.isVar() || termSort.term()->isSort()); + static TermStack args; args.reset(); args.push(varSort); @@ -445,7 +448,6 @@ void ApplicativeHelper::getHeadSortAndArgs(TermList term, TermList& head, void ApplicativeHelper::getArgSorts(TermList t, TermStack& sorts) { CALL("ApplicativeHelper::getArgSorts"); - ASS(t.isApplication()); while(t.isApplication()){ sorts.push(*t.term()->nthArgument(0)); diff --git a/Kernel/Inference.cpp b/Kernel/Inference.cpp index edc0d1ab16..feac031b9a 100644 --- a/Kernel/Inference.cpp +++ b/Kernel/Inference.cpp @@ -951,6 +951,10 @@ vstring Kernel::ruleName(InferenceRule rule) return "cases simplifying"; case InferenceRule::BETA_NORMALISE: return "beta normalization"; + case InferenceRule::IMITATE: + return "imitate"; + case InferenceRule::PROJECT: + return "project"; /* this cases are no actual inference rules but only markeres to separatea groups of rules */ case InferenceRule::PROXY_AXIOM: case InferenceRule::GENERIC_FORMULA_TRANSFORMATION: diff --git a/Kernel/Inference.hpp b/Kernel/Inference.hpp index 3328311bb1..eb0be867b8 100644 --- a/Kernel/Inference.hpp +++ b/Kernel/Inference.hpp @@ -316,6 +316,10 @@ enum class InferenceRule : unsigned char { NEGATIVE_EXT, + IMITATE, + + PROJECT, + EQ_TO_DISEQ, /** The next five rules can be either simplifying or generating */ HOL_NOT_ELIMINATION, diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 6b3378c673..ce0c3625f6 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -282,6 +282,13 @@ bool TermList::isArrowSort() return !isVar() && term()->isSort() && static_cast(term())->isArrowSort(); } + +bool Term::isArrowSort() const +{ + CALL("Term::isArrowSort"); + return isSort() && env.signature->isArrowCon(_functor); +} + #endif bool TermList::isBoolSort() @@ -341,9 +348,8 @@ TermList TermList::result(){ TermList TermList::finalResult(){ CALL("AtomicSort::finalResult"); - ASS(isArrowSort()); - return isVar() ? *this : static_cast(term())->finalResult(); + return isVar() || !isArrowSort() ? *this : static_cast(term())->finalResult(); } TermList AtomicSort::result(){ @@ -862,13 +868,6 @@ vstring TermList::asArgsToString() const continue; } const Term* t = ts->term(); - -#if VHOL - if(!(t->isSort() && static_cast(const_cast(t))->isArrowSort())){ - res += t->toString(); - continue; - } -#endif res += t->headToString(); @@ -912,7 +911,7 @@ vstring Term::toString(bool topLevel) const #if VHOL if(!isSpecial() && !isLiteral()){ - if(isSort() && static_cast(const_cast(this))->isArrowSort()){ + if(isArrowSort()){ ASS(arity() == 2); vstring res; TermList arg1 = *(nthArgument(0)); @@ -922,6 +921,21 @@ vstring Term::toString(bool topLevel) const res += topLevel ? "" : ")"; return res; } + if(env.options->prettyHolPrinting()){ + vstring res; + if(isApplication()){ + TermList lhs = *(nthArgument(2)); + TermList rhs = *(nthArgument(3)); + res += topLevel ? "" : "("; + res += lhs.toString() + " " + rhs.toString(false); + res += topLevel ? "" : ")"; + return res; + } + if(isLambdaTerm()){ + res = "(^." + nthArgument(2)->toString() + ")"; + return res; + } + } } #endif diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index cea445b6bb..486b856164 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -679,6 +679,8 @@ class Term bool isLambdaTerm() const; /** true if the term is a redex */ bool isRedex(); + /** true if term is a sort which is a arrow sort */ + bool isArrowSort() const; void setHasRedex(bool b) { diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 1f1087668c..959d7fce58 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -85,6 +85,7 @@ #include "Inferences/BoolSimp.hpp" #include "Inferences/CasesSimp.hpp" #include "Inferences/Cases.hpp" +#include "Inferences/ImitateProject.hpp" #endif #include "Inferences/URResolution.hpp" @@ -1565,11 +1566,9 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if(prb.higherOrder()){ gie->addFront(new ArgCong()); gie->addFront(new NegativeExt());//TODO add option + gie->addFront(new ImitateProject()); /*if(opt.narrow() != Options::Narrow::OFF){ gie->addFront(new Narrow()); - } - if(!opt.pragmatic()){ - gie->addFront(new SubVarSup()); }*/ } diff --git a/Shell/Options.cpp b/Shell/Options.cpp index f397a302b6..e73bba7061 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1870,6 +1870,13 @@ void Options::init() "exponential complexity"; _lookup.insert(&_complexVarCondition); _complexVarCondition.tag(OptionTag::HIGHER_ORDER); + + _prettyHolPrinting = BoolOptionValue("pretty_hol_printing","php",false); + _prettyHolPrinting.description= + "Outputs HOL terms in a 'pretty' but not TPTP compliant format."; + _lookup.insert(&_prettyHolPrinting); + _prettyHolPrinting.tag(OptionTag::HIGHER_ORDER); + #endif //*********************** InstGen *********************** diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 27b8a37a0e..f573ba3bc3 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2402,6 +2402,7 @@ bool _hard; bool newTautologyDel() const { return _newTautologyDel.actualValue; } bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } bool complexVarCondition() const { return _complexVarCondition.actualValue; } + bool prettyHolPrinting() const { return _prettyHolPrinting.actualValue; } #endif // For unit testing @@ -2816,7 +2817,7 @@ bool _hard; ChoiceOptionValue _cancellation; ChoiceOptionValue _arithmeticSubtermGeneralizations; - +#if VHOL //Higher-order options BoolOptionValue _addProxyAxioms; BoolOptionValue _choiceAxiom; @@ -2836,6 +2837,8 @@ bool _hard; BoolOptionValue _newTautologyDel; BoolOptionValue _lambdaFreeHol; BoolOptionValue _complexVarCondition; + BoolOptionValue _prettyHolPrinting; +#endif }; // class Options From e2c6bff3bd0a599c4af0765836dd78d58b14c558 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Mon, 19 Sep 2022 17:17:10 +0100 Subject: [PATCH 032/210] improving term printing and refactoring code for producing general bindings --- Inferences/ImitateProject.cpp | 45 +---- Kernel/ApplicativeHelper.cpp | 84 ++++++-- Kernel/ApplicativeHelper.hpp | 9 +- Kernel/Formula.cpp | 6 +- Kernel/Formula.hpp | 15 ++ Kernel/Term.cpp | 362 ++++++++++++++++++++++++++++------ Kernel/Term.hpp | 28 ++- Shell/LambdaConversion.cpp | 8 +- Shell/Options.cpp | 15 +- Shell/Options.hpp | 11 +- Shell/UIHelper.cpp | 40 ++-- 11 files changed, 478 insertions(+), 145 deletions(-) diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp index e8bbd872a0..8bd6003189 100644 --- a/Inferences/ImitateProject.cpp +++ b/Inferences/ImitateProject.cpp @@ -93,8 +93,6 @@ struct ImitateProject::ResultFn while(!constraints.isEmpty()){ (*res)[next++] = constraints.pop(); } - cout << "IN " << _cl->toString() << endl; - cout << "OUT " << res->toString() << endl; return res; } @@ -153,34 +151,14 @@ struct ImitateProject::ResultFn } TermStack args; - TermStack args2; - - auto surroundWithLambdas = [](TermList t, TermStack& sorts){ - ASS(t.isTerm()); - for(int i = 0; i < sorts.size(); i++){ - t = AH::createLambdaTerm(sorts[i], SortHelper::getResultSort(t.term()), t); - } - return t; - }; - - cout << "CLAUSE " << _cl->toString() << endl; { // imitation unsigned fVar = _maxVar; - for(unsigned i = 0; i < argsRigid.size(); i++){ - TermList freshVar(++fVar, false); - TermList varSort = AtomicSort::arrowSort(sortsFlex, sortsRigid[i]); - args.push(AH::createAppTerm(varSort, freshVar, deBruijnIndices)); - args2.push(AH::createAppTerm(varSort, freshVar, argsFlex)); - } - TermList headRigidSort = SortHelper::getResultSort(headRigid.term()); - //pb stands for partial binding - TermList pb = AH::createAppTerm(headRigidSort, headRigid, args); - pb = surroundWithLambdas(pb, sortsFlex); + TermList pb = AH::createGeneralBinding(fVar,headRigid,argsFlex,sortsFlex,deBruijnIndices,args); _subst.bind(headFlex.var(), pb); - getConstraints(args2, argsRigid, sortsRigid, newConstraints); + getConstraints(args, argsRigid, sortsRigid, newConstraints); results.push(createRes(InferenceRule::IMITATE, newConstraints, lit, true)); } @@ -189,34 +167,21 @@ struct ImitateProject::ResultFn // try and project each of the arguments of the flex head in turn _subst.reset(); args.reset(); - args2.reset(); TermList arg = argsFlex[i]; TermList argSort = sortsFlex[i]; // sort wrong, cannot project this arg if(argSort.finalResult() != sort) continue; TermList head; - AH::getHeadAndArgs(arg, head, args2); + AH::getHeadAndArgs(arg, head, args); // argument has a rigid head different to that of rhs. no point projecting if(!head.isVar() && head != headRigid) continue; unsigned fVar = _maxVar; - for(unsigned j = 0; j < AH::getArity(argSort); j++){ - TermList freshVar(++fVar, false); - TermList varSort = AtomicSort::arrowSort(sortsFlex, AH::getNthArg(argSort, j + 1)); - args.push(AH::createAppTerm(varSort, freshVar, deBruijnIndices)); - args2.push(AH::createAppTerm(varSort, freshVar, argsFlex)); - } - cout << "ARG " << arg.toString() << endl; - cout << "ARG SORT " << argSort.toString() << endl; - cout << "INDEX " << deBruijnIndices[i].toString() << endl; - cout << "INDEX SORT " << SortHelper::getResultSort(deBruijnIndices[i].term()).toString() << endl; - TermList pb = AH::createAppTerm(argSort, deBruijnIndices[i], args); - pb = surroundWithLambdas(pb, sortsFlex); - cout << "PB " << pb.toString() << endl; + TermList pb = AH::createGeneralBinding(fVar,deBruijnIndices[i],argsFlex,sortsFlex,deBruijnIndices,args); _subst.bind(headFlex.var(), pb); if(!head.isVar()){ - getConstraints(args2, argsRigid, sortsRigid, newConstraints); + getConstraints(args, argsRigid, sortsRigid, newConstraints); } results.push(createRes(InferenceRule::PROJECT, newConstraints, lit, !head.isVar())); } diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 957eae5074..27923681e7 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -1,3 +1,4 @@ + /* * This file is part of the source code of the software program * Vampire. It is protected by applicable @@ -367,14 +368,6 @@ TermList ApplicativeHelper::getResultApplieadToNArgs(TermList arrowSort, unsigne return arrowSort; } -TermList ApplicativeHelper::headSort(TermList app) -{ - CALL("ApplicativeHelper::getHeadSort"); - ASS(app.isApplication()); - - return AtomicSort::arrowSort(*app.term()->nthArgument(0), *app.term()->nthArgument(1)); -} - /** indexed from 1 */ TermList ApplicativeHelper::getNthArg(TermList arrowSort, unsigned argNum) { @@ -449,6 +442,11 @@ void ApplicativeHelper::getArgSorts(TermList t, TermStack& sorts) { CALL("ApplicativeHelper::getArgSorts"); + while(t.isArrowSort()){ + sorts.push(*t.term()->nthArgument(0)); + t = *t.term()->nthArgument(1); + } + while(t.isApplication()){ sorts.push(*t.term()->nthArgument(0)); t = t.lhs(); @@ -489,6 +487,13 @@ void ApplicativeHelper::getHeadAndArgs(Term* term, TermList& head, TermStack& ar } +void ApplicativeHelper::getHeadAndArgs(const Term* term, TermList& head, TermStack& args) +{ + CALL("ApplicativeHelper::getHeadAndArgs/5"); + + getHeadAndArgs(const_cast(term),head,args); +} + void ApplicativeHelper::getHeadAndArgs(const Term* term, TermList& head, Deque& args) { CALL("ApplicativeHelper::getHeadAndArgs/3"); @@ -522,13 +527,70 @@ bool ApplicativeHelper::isBool(TermList t){ bool ApplicativeHelper::isTrue(TermList term){ CALL("ApplicativeHelper::isTrue"); - return term.isTerm() && env.signature->isFoolConstantSymbol(true, term.term()->functor()); + return term.isTerm() && !term.term()->isSort() && env.signature->isFoolConstantSymbol(true, term.term()->functor()); } bool ApplicativeHelper::isFalse(TermList term){ CALL("ApplicativeHelper::isFalse"); - return term.isTerm() && env.signature->isFoolConstantSymbol(false, term.term()->functor()); + return term.isTerm() && !term.term()->isSort() && env.signature->isFoolConstantSymbol(false, term.term()->functor()); } + +TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList head, + TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, TermStack& args2){ + CALL("ApplicativeHelper::createGeneralBinding"); + ASS(head.isTerm()); + ASS(argsFlex.size() == sortsFlex.size()); + ASS(indices.size() == argsFlex.size()); + + auto surroundWithLambdas = [](TermList t, TermStack& sorts){ + ASS(t.isTerm()); + for(int i = 0; i < sorts.size(); i++){ + t = createLambdaTerm(sorts[i], SortHelper::getResultSort(t.term()), t); + } + return t; + }; + + TermStack args; + TermStack argSorts; + TermList headSort = SortHelper::getResultSort(head.term()); + getArgSorts(headSort, argSorts); + + for(unsigned i = 0; i < argSorts.size(); i++){ + TermList fVar(++freshVar, false); + TermList varSort = AtomicSort::arrowSort(sortsFlex, argSorts[i]); + args.push(createAppTerm(varSort, fVar, indices)); + args2.push(createAppTerm(varSort, fVar, argsFlex)); + } + + TermList pb = createAppTerm(headSort, head, args); + return surroundWithLambdas(pb, sortsFlex); +} + + + + + + + + + + + + + + + + + + + + + + + + + + -#endif +#endif \ No newline at end of file diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 882be2141c..c3b4ddc804 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -116,19 +116,20 @@ class ApplicativeHelper { static TermList getDeBruijnIndex(int index, TermList sort); static TermList getNthArg(TermList arrowSort, unsigned argNum); static TermList getResultApplieadToNArgs(TermList arrowSort, unsigned argNum); - //Broken! - static TermList headSort(TermList app); static unsigned getArity(TermList sort); static void getHeadAndAllArgs(TermList term, TermList& head, TermStack& args); static void getHeadAndArgs(TermList term, TermList& head, TermStack& args); - static void getHeadAndArgs(Term* term, TermList& head, TermStack& args); + static void getHeadAndArgs(Term* term, TermList& head, TermStack& args); + static void getHeadAndArgs(const Term* term, TermList& head, TermStack& args); static void getHeadAndArgs(const Term* term, TermList& head, Deque& args); static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); - static void getArgSorts(TermList t, TermStack& sorts); + static void getArgSorts(TermList t, TermStack& sorts); static Signature::Proxy getProxy(const TermList t); static bool isBool(TermList t); static bool isTrue(TermList term); static bool isFalse(TermList term); + static TermList createGeneralBinding(unsigned freshVar, TermList head, + TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, TermStack& args); }; #endif diff --git a/Kernel/Formula.cpp b/Kernel/Formula.cpp index d74f602185..b389f3de4c 100644 --- a/Kernel/Formula.cpp +++ b/Kernel/Formula.cpp @@ -180,11 +180,7 @@ void Formula::destroy () */ vstring Formula::toString (Connective c) { - static vstring names [] = - { "", "&", "|", "=>", "<=>", "<~>", "~", "!", "?", "$var", "$false", "$true","",""}; - ASS_EQ(sizeof(names)/sizeof(vstring), NOCONN+1); - - return names[(int)c]; + return names()[(int)c]; } // Formula::toString (Connective c) /** diff --git a/Kernel/Formula.hpp b/Kernel/Formula.hpp index 87c735d51a..18c6b110ab 100644 --- a/Kernel/Formula.hpp +++ b/Kernel/Formula.hpp @@ -38,6 +38,21 @@ using namespace Lib; class Formula { +private: + + static vstring* names(){ + CALL("Formula::names"); +#if VHOL + if(env.options->holPrinting() == Shell::Options::HPrinting::PRETTY){ + static vstring names [] = { "", "∧", "∨", "⇒", "⇔", "⊕", "¬", "∀", "∃", "$var", "⊥", "⊤","",""}; + return names; + } +#endif + + static vstring names [] = { "", "&", "|", "=>", "<=>", "<~>", "~", "!", "?", "$var", "$false", "$true","",""}; + return names; + } + public: /** * Constructor of constant formulas (true/false) diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index ce0c3625f6..9886b17e76 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -20,6 +20,7 @@ #include "SubstHelper.hpp" #include "TermIterators.hpp" #include "RobSubstitution.hpp" +#include "ApplicativeHelper.hpp" #include "Term.hpp" #include "FormulaVarIterator.hpp" @@ -486,6 +487,114 @@ bool Term::isRedex() { return TermList(this).isRedex(); } +bool TermList::isNot() { + CALL("TermList::isNot"); + + return !isVar() && term()->isNot(); +} + +bool Term::isNot() const { + CALL("Term::isNot"); + + return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::NOT; +} + +bool TermList::isSigma() { + CALL("TermList::isSigma"); + + return !isVar() && term()->isSigma(); +} + +bool Term::isSigma() const { + CALL("Term::isSigma"); + + return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::SIGMA; +} + +bool TermList::isPi() { + CALL("TermList::isPi"); + + return !isVar() && term()->isPi(); +} + +bool Term::isPi() const { + CALL("Term::isPi"); + + return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::PI; +} + +bool TermList::isIff() { + CALL("TermList::isIff"); + + return !isVar() && term()->isIff(); +} + +bool Term::isIff() const { + CALL("Term::isIff"); + + return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::IFF; +} + +bool TermList::isAnd() { + CALL("TermList::isAnd"); + + return !isVar() && term()->isAnd(); +} + +bool Term::isAnd() const { + CALL("Term::isAnd"); + + return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::AND; +} + +bool TermList::isOr() { + CALL("TermList::isOr"); + + return !isVar() && term()->isOr(); +} + +bool Term::isOr() const { + CALL("Term::isOr"); + + return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::OR; +} + +bool TermList::isXOr() { + CALL("TermList::isXOr"); + + return !isVar() && term()->isXOr(); +} + +bool Term::isXOr() const { + CALL("Term::isXOr"); + + return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::XOR; +} + +bool TermList::isImp() { + CALL("TermList::isImp"); + + return !isVar() && term()->isImp(); +} + +bool Term::isImp() const { + CALL("Term::isImp"); + + return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::IMP; +} + +bool TermList::isEquals() { + CALL("TermList::isEquals"); + + return !isVar() && term()->isEquals(); +} + +bool Term::isEquals() const { + CALL("Term::isEquals"); + + return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::EQUALS; +} + Option TermList::deBruijnIndex() const { CALL("TermList::deBruijnIndex"); return isVar() ? Option() : term()->deBruijnIndex(); @@ -780,27 +889,8 @@ vstring Term::headToString() const return "$let([" + typesList + "], [" + symbolsList + "] := " + binding.toString() + ", "; } #if VHOL - case Term:: SF_LAMBDA: { - VList* vars = sd->getLambdaVars(); - SList* sorts = sd->getLambdaVarSorts(); - TermList lambdaExp = sd->getLambdaExp(); - - vstring varList = "["; - - VList::Iterator vs(vars); - SList::Iterator ss(sorts); - TermList sort; - bool first = true; - while(vs.hasNext()) { - if (!first){ - varList += ", "; - }else{ first = false; } - varList += Term::variableToString(vs.next()) + " : "; - varList += ss.next().toString(); - } - varList += "]"; - return "(^" + varList + " : (" + lambdaExp.toString() + "))"; - } + case Term::SF_LAMBDA: + ASSERTION_VIOLATION; #endif case Term::SF_MATCH: { // we simply let the arguments be written out @@ -821,11 +911,6 @@ vstring Term::headToString() const name = static_cast(this)->typeConName(); } else { name = functionName(); -#if VHOL - if(deBruijnIndex().isSome()){ - name = name + "_" + Int::toString(deBruijnIndex().unwrap()); - } -#endif } return name + (arity() ? "(" : ""); } @@ -883,7 +968,7 @@ vstring TermList::asArgsToString() const * Write as a vstring the head of the term list. * @since 27/02/2008 Manchester */ -vstring TermList::toString(bool topLevel) const +vstring TermList::toString() const { CALL("TermList::toString"); @@ -893,7 +978,19 @@ vstring TermList::toString(bool topLevel) const if (isVar()) { return Term::variableToString(*this); } - return term()->toString(topLevel); + +#if VHOL + if(env.options->holPrinting() == Options::HPrinting::PRETTY){ + if(ApplicativeHelper::isTrue(*this)){ + return "⊤"; + } + if(ApplicativeHelper::isFalse(*this)){ + return "⊥"; + } + } +#endif + + return term()->toString(); } // TermList::toString @@ -901,7 +998,7 @@ vstring TermList::toString(bool topLevel) const * Return the result of conversion of a term into a vstring. * @since 16/05/2007 Manchester */ -vstring Term::toString(bool topLevel) const +vstring Term::toString() const { CALL("Term::toString"); @@ -910,32 +1007,9 @@ vstring Term::toString(bool topLevel) const } #if VHOL - if(!isSpecial() && !isLiteral()){ - if(isArrowSort()){ - ASS(arity() == 2); - vstring res; - TermList arg1 = *(nthArgument(0)); - TermList arg2 = *(nthArgument(1)); - res += topLevel ? "" : "("; - res += arg1.toString(false) + " > " + arg2.toString(); - res += topLevel ? "" : ")"; - return res; - } - if(env.options->prettyHolPrinting()){ - vstring res; - if(isApplication()){ - TermList lhs = *(nthArgument(2)); - TermList rhs = *(nthArgument(3)); - res += topLevel ? "" : "("; - res += lhs.toString() + " " + rhs.toString(false); - res += topLevel ? "" : ")"; - return res; - } - if(isLambdaTerm()){ - res = "(^." + nthArgument(2)->toString() + ")"; - return res; - } - } + if(env.property->higherOrder() && env.options->holPrinting() != Options::HPrinting::RAW){ + IndexVarStack st; + return toString(true, st); } #endif @@ -947,6 +1021,173 @@ vstring Term::toString(bool topLevel) const return s; } // Term::toString +#if VHOL + +vstring Term::toString(bool topLevel, IndexVarStack& st) const +{ + CALL("Term::toString(bool, ...)"); + + auto termToStr = [](TermList t, bool top, IndexVarStack& st){ + if (t.isVar()) { + return Term::variableToString(t); + } + return t.term()->toString(top, st); + }; + + auto incrementAll = [](IndexVarStack& st){ + for(unsigned i=0; i < st.size(); i++){ + st[i] = make_pair(++st[i].first, st[i].second); + } + }; + + auto findVar = [](int index, IndexVarStack& st){ + for(unsigned i=0; i < st.size(); i++){ + if(st[i].first == index){ + return st[i].second; + } + } + ASSERTION_VIOLATION; + }; + + ASS(!isLiteral()); + + //TODO does not print polymorphic sorts correctly + auto printSetting = env.options->holPrinting(); + bool pretty = printSetting == Options::HPrinting::PRETTY; + bool db = printSetting == Options::HPrinting::DB_INDICES; + + vstring res; + if(isSpecial()){ + const Term::SpecialTermData* sd = getSpecialData(); + switch(functor()) { + case Term::SF_FORMULA: { + return sd->getFormula()->toString(); + } + case Term:: SF_LAMBDA: { + VList* vars = sd->getLambdaVars(); + SList* sorts = sd->getLambdaVarSorts(); + TermList lambdaExp = sd->getLambdaExp(); + + vstring varList = pretty ? "" : "["; + + VList::Iterator vs(vars); + SList::Iterator ss(sorts); + TermList sort; + bool first = true; + while(vs.hasNext()) { + varList += first ? "" : ", "; + first = false; + varList += Term::variableToString(vs.next()) + " : "; + varList += ss.next().toString(); + } + varList += pretty ? "" : "]"; + vstring lambda = pretty ? "λ" : "^"; + return "(" + lambda + varList + " : (" + lambdaExp.toString() + "))"; + } + default: + // currently HOL doesn't support any other specials + ASSERTION_VIOLATION; + } + } + if(isArrowSort()){ + ASS(arity() == 2); + TermList arg1 = *(nthArgument(0)); + TermList arg2 = *(nthArgument(1)); + vstring arrow = pretty ? " → " : " > "; + res += topLevel ? "" : "("; + res += termToStr(arg1,false,st) + arrow + termToStr(arg2,true,st); + res += topLevel ? "" : ")"; + return res; + } + if(isSort()){ + auto sort = static_cast(this); + if(sort->isBoolSort() && pretty) return "ο"; + if(sort->functor() == Signature::DEFAULT_SORT_CON && pretty) return "ι"; + // any non-arrow sort + res = sort->typeConName(); + if(pretty && arity()) res += "⟨"; + for(unsigned i = 0; i < arity(); i++){ + res += pretty && i != 0 ? ", " : ""; + res += !pretty ? " @ " : ""; + res += termToStr(*nthArgument(i),pretty,st); + } + if(pretty && arity()) res += "⟩"; + return res; + } + if(isLambdaTerm()){ + unsigned v = st.size() ? st.top().second + 1 : 0; + vstring bvar = (pretty ? "y" : "Y") + Int::toString(v); + bvar = !pretty ? "[" + bvar + " : " + termToStr(*nthArgument(0),true,st) + "]" : bvar; + bvar = db ? "" : bvar; + + IndexVarStack newSt(st); + incrementAll(newSt); + newSt.push(make_pair(0, v)); + + vstring sep = pretty || db ? ". " : ": "; + vstring lambda = pretty ? "λ" : "^"; + + res = "(" + lambda + bvar + sep + "(" + termToStr(*nthArgument(2),true,newSt) + "))"; + return res; + } + if(deBruijnIndex().isSome() && !db){ + unsigned var = findVar(deBruijnIndex().unwrap(), st); + return (pretty ? "y" : "Y") + Int::toString(var); + } + + TermList head; + TermStack args; + ApplicativeHelper::getHeadAndArgs(this, head, args); + + vstring headStr; + if(head.isVar() || (head.deBruijnIndex().isSome() && !db) || head.isLambdaTerm()){ + headStr = termToStr(head,false,st); + } + else if(head.isNot()){ headStr = pretty ? "¬" : "~"; } + else if(head.isSigma()){ headStr = pretty ? "Σ" : "??"; } + else if(head.isPi()){ headStr = pretty ? "Π" : "!!"; } + else if(head.isAnd()){ headStr = pretty ? "∧" : "&"; } + else if(head.isOr()){ headStr = pretty ? "∨" : "|"; } + else if(head.isXOr()){ headStr = pretty ? "⊕" : "<~>"; } + else if(head.isImp()){ headStr = pretty ? "⇒" : "=>"; } + else if(head.isIff() || head.isEquals()){ headStr = pretty ? "≈" : "="; } + else { + headStr = head.term()->functionName(); + if(head.deBruijnIndex().isSome()){ + headStr = headStr + "_" + Int::toString(head.deBruijnIndex().unwrap()); + } + } + + if(head.isTerm() && !head.isEquals() && !head.isLambdaTerm() && head.term()->arity()){ + Term* t = head.term(); + if(pretty) headStr += "⟨"; + for(unsigned i = 0; i < t->arity(); i++){ + headStr += pretty && i != 0 ? ", " : ""; + headStr += !pretty ? " @ " : ""; + headStr += termToStr(*t->nthArgument(i),pretty,st); + } + if(pretty) headStr += "⟩"; + } + + res += (!topLevel && args.size()) ? "(" : ""; + + if((head.isAnd() || head.isOr() || head.isIff() || head.isEquals() || head.isImp() || head.isXOr()) && + args.size() == 2){ + res += termToStr(args[0],false,st) + " " + headStr + " " + termToStr(args[1],false,st); + } else { + vstring app = pretty || head.isNot() ? " " : " @ "; + res += headStr; + for(unsigned i = 0; i < args.size(); i++){ + res += app + termToStr(args[i],false,st); + } + } + res += (!topLevel && args.size()) ? ")" : ""; + return res; +} + +#endif + + /** * Return the result of conversion of a literal into a vstring. * @since 16/05/2007 Manchester @@ -958,12 +1199,13 @@ vstring Literal::toString() const if (isEquality()) { const TermList* lhs = args(); vstring s = lhs->toString(); - if (isPositive()) { - s += " = "; - } - else { - s += " != "; + vstring eqSym = isPositive() ? " = " : " != "; +#if VHOL + if(env.options->holPrinting() == Options::HPrinting::PRETTY){ + eqSym = isPositive() ? " ≈ " : " ≉ "; } +#endif + s += eqSym; vstring res = s + lhs->next()->toString(); if ( diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 486b856164..816a5e0f34 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -157,7 +157,7 @@ class TermList { { return sameContent(&t); } /** return the content, useful for e.g., term argument comparison */ inline size_t content() const { return _content; } - vstring toString(bool topLevel = true) const; + vstring toString() const; /** make the term into an ordinary variable with a given number */ inline void makeVar(unsigned vnumber) { _content = vnumber * 4 + ORD_VAR; } @@ -193,6 +193,15 @@ class TermList { bool isApplication() const; bool isLambdaTerm() const; bool isRedex(); + bool isNot(); + bool isSigma(); + bool isPi(); + bool isIff(); + bool isAnd(); + bool isOr(); + bool isXOr(); + bool isImp(); + bool isEquals(); Option deBruijnIndex() const; TermList lhs() const; TermList rhs() const; @@ -441,7 +450,7 @@ class Term /** Function or predicate symbol of a term */ const unsigned functor() const { return _functor; } - vstring toString(bool topLevel = true) const; + vstring toString() const; static vstring variableToString(unsigned var); static vstring variableToString(TermList var); @@ -673,12 +682,27 @@ class Term bool isSort() const { return _args[0]._info.sort; } #if VHOL + + typedef Stack> IndexVarStack; + + vstring toString(bool topLevel, IndexVarStack& map) const; /** true if the term is an application */ bool isApplication() const; /** true if the term is a lambda term */ bool isLambdaTerm() const; /** true if the term is a redex */ bool isRedex(); + /** true if the term is a negation of a Boolean term*/ + bool isNot() const; + + bool isSigma() const; + bool isPi() const; + bool isIff() const; + bool isAnd() const; + bool isOr() const; + bool isXOr() const; + bool isImp() const; + bool isEquals() const; /** true if term is a sort which is a arrow sort */ bool isArrowSort() const; diff --git a/Shell/LambdaConversion.cpp b/Shell/LambdaConversion.cpp index e53a8f031f..881dc462a5 100644 --- a/Shell/LambdaConversion.cpp +++ b/Shell/LambdaConversion.cpp @@ -129,7 +129,7 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) SList* sort = SList::singleton(TermList(0, true)); //dummy data VList* var = VList::singleton(0); - TermList form = convertLambda(formula->qarg(), map); + TermList form = TermList(Term::createFormula(formula->qarg())); vstring name = (conn == FORALL ? "vPI" : "vSIGMA"); unsigned proxy = env.signature->getPiSigmaProxy(name); @@ -139,11 +139,11 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) ALWAYS(SortHelper::tryGetVariableSort(v, formula->qarg(), s)); var->setHead(v); sort->setHead(s); - form = convertLambda(TermList(Term::createLambda(form, var, sort, AtomicSort::boolSort())), map); + auto t = TermList(Term::createLambda(form, var, sort, AtomicSort::boolSort())); constant = TermList(Term::create1(proxy, s)); - form = AH::createAppTerm(sortOf(constant), constant, form); + form = AH::createAppTerm(sortOf(constant), constant, t); } - return form; + return convertLambda(form, map); } case BOOL_TERM: return convertLambda(formula->getBooleanTerm(), map); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index e73bba7061..f2fea669be 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1871,11 +1871,16 @@ void Options::init() _lookup.insert(&_complexVarCondition); _complexVarCondition.tag(OptionTag::HIGHER_ORDER); - _prettyHolPrinting = BoolOptionValue("pretty_hol_printing","php",false); - _prettyHolPrinting.description= - "Outputs HOL terms in a 'pretty' but not TPTP compliant format."; - _lookup.insert(&_prettyHolPrinting); - _prettyHolPrinting.tag(OptionTag::HIGHER_ORDER); + _holPrinting = ChoiceOptionValue("pretty_hol_printing","php",HPrinting::TPTP, + {"raw","db","pretty","tptp"}); + _holPrinting.description= + "Various methods of printing higher-order terms: \n" + " -raw : prints the internal representation of terms \n" + " -pretty : converts internal representation to somethign resemblign textbook notation \n" + " -tptp : matches tptp standards \n" + " -db : same as tptp, except that De Bruijn indices printed instead of named variables"; + _lookup.insert(&_holPrinting); + _holPrinting.tag(OptionTag::HIGHER_ORDER); #endif diff --git a/Shell/Options.hpp b/Shell/Options.hpp index f573ba3bc3..b749a31816 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -744,6 +744,13 @@ class Options FALSE_TRUE_NOT_EQ_NOT_EQ = 3 }; + enum class HPrinting : unsigned int { + RAW = 0, + DB_INDICES = 1, + PRETTY = 2, + TPTP = 3 + }; + //========================================================== // The Internals //========================================================== @@ -2402,7 +2409,7 @@ bool _hard; bool newTautologyDel() const { return _newTautologyDel.actualValue; } bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } bool complexVarCondition() const { return _complexVarCondition.actualValue; } - bool prettyHolPrinting() const { return _prettyHolPrinting.actualValue; } + HPrinting holPrinting() const { return _holPrinting.actualValue; } #endif // For unit testing @@ -2837,7 +2844,7 @@ bool _hard; BoolOptionValue _newTautologyDel; BoolOptionValue _lambdaFreeHol; BoolOptionValue _complexVarCondition; - BoolOptionValue _prettyHolPrinting; + ChoiceOptionValue _holPrinting; #endif }; // class Options diff --git a/Shell/UIHelper.cpp b/Shell/UIHelper.cpp index 51840cc04f..e68fc2df05 100644 --- a/Shell/UIHelper.cpp +++ b/Shell/UIHelper.cpp @@ -568,6 +568,27 @@ void UIHelper::outputSymbolTypeDeclarationIfNeeded(ostream& out, bool function, sym = env.signature->getPredicate(symNumber); } +#if VHOL + auto printingMode = env.options->holPrinting(); + if(printingMode != Options::HPrinting::RAW){ + if(sym->proxy() != Signature::NOT_PROXY){ + return; + } + if(sym->dbIndex().isSome()){ + return; + } + if(function && env.signature->isAppFun(symNumber)){ + return; + } + if(function && env.signature->isLamFun(symNumber)){ + return; + } + if(typeCon && env.signature->isArrowCon(symNumber)){ + return; + } + } +#endif + if (typeCon && (env.signature->isArrayCon(symNumber) || env.signature->isTupleCon(symNumber))){ return; @@ -613,20 +634,15 @@ void UIHelper::outputSymbolTypeDeclarationIfNeeded(ostream& out, bool function, bool higherOrder = false; #if VHOL higherOrder = env.property->higherOrder(); - - //don't output type of app. It is an internal Vampire thing - if(!(function && env.signature->isAppFun(symNumber))){ #endif - out << (higherOrder ? "thf(" : "tff(") - << (function ? "func" : (typeCon ? "type" : "pred")) - << "_def_" << symNumber << ", type, " - << sym->name() << ": "; - out << type->toString(); - out << ")." << endl; -#if VHOL - } -#endif + out << (higherOrder ? "thf(" : "tff(") + << (function ? "func" : (typeCon ? "type" : "pred")) + << "_def_" << symNumber << ", type, " + << sym->name() << ": "; + out << type->toString(); + out << ")." << endl; + //out << ")." << endl; } From 84419e233b51e96b112367cc429e5542f072df24 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 20 Sep 2022 17:30:31 +0100 Subject: [PATCH 033/210] refactoring primitive instantiation to use general bindings. Attempting to redefine empty clause --- CMakeLists.txt | 4 +- Indexing/IndexManager.cpp | 5 - Indexing/TermIndex.cpp | 80 --------- Indexing/TermIndex.hpp | 15 -- Inferences/ArgCong.cpp | 8 +- Inferences/BoolEqToDiseq.cpp | 24 +-- Inferences/BoolSimp.cpp | 57 ++---- Inferences/BoolSimp.hpp | 1 - Inferences/CNFOnTheFly.cpp | 21 ++- Inferences/Choice.cpp | 23 ++- Inferences/ElimLeibniz.cpp | 6 +- Inferences/EqualityResolution.cpp | 10 +- Inferences/ImitateProject.cpp | 2 +- Inferences/Injectivity.cpp | 3 +- Inferences/NegativeExt.cpp | 11 +- Inferences/PrimitiveInstantiation.cpp | 244 ++++++++++++++++++-------- Inferences/PrimitiveInstantiation.hpp | 8 +- Kernel/ApplicativeHelper.cpp | 209 ++++++++++++---------- Kernel/ApplicativeHelper.hpp | 76 +++++--- Kernel/Clause.cpp | 18 ++ Kernel/Clause.hpp | 2 +- Kernel/Term.cpp | 72 +++++--- Kernel/Term.hpp | 3 + Saturation/SaturationAlgorithm.cpp | 8 +- Shell/InequalitySplitting.cpp | 3 +- Shell/LambdaConversion.cpp | 125 +++++-------- Shell/Naming.cpp | 3 +- Shell/Options.cpp | 12 +- Shell/Options.hpp | 9 +- Shell/Preprocess.cpp | 1 + Shell/Skolem.cpp | 3 +- Shell/Statistics.cpp | 2 +- Test/SyntaxSugar.hpp | 2 +- UnitTests/tBetaReduction.cpp | 17 ++ 34 files changed, 555 insertions(+), 532 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ab5b607af..9db24aa022 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -332,8 +332,8 @@ set(VAMPIRE_KERNEL_SOURCES # Inferences/SubVarSup.cpp Inferences/BoolEqToDiseq.hpp Inferences/BoolEqToDiseq.cpp -# Inferences/PrimitiveInstantiation.cpp -# Inferences/PrimitiveInstantiation.hpp + Inferences/PrimitiveInstantiation.cpp + Inferences/PrimitiveInstantiation.hpp # Inferences/ElimLeibniz.cpp # Inferences/ElimLeibniz.hpp Inferences/Choice.cpp diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index a11294df37..789a32b3b2 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -170,11 +170,6 @@ Index* IndexManager::create(IndexType t) isGenerating = false; break; - case PRIMITIVE_INSTANTIATION_INDEX: - tis=new TermSubstitutionTree(); - res=new PrimitiveInstantiationIndex(tis); - isGenerating = true; - break; case ACYCLICITY_INDEX: tis = new TermSubstitutionTree(); res = new AcyclicityIndex(tis); diff --git a/Indexing/TermIndex.cpp b/Indexing/TermIndex.cpp index 68c1daedaa..6f883fb349 100644 --- a/Indexing/TermIndex.cpp +++ b/Indexing/TermIndex.cpp @@ -251,86 +251,6 @@ void StructInductionTermIndex::handleClause(Clause* c, bool adding) // Indices for higher-order inferences from here on// ///////////////////////////////////////////////////// -void PrimitiveInstantiationIndex::populateIndex() -{ - CALL("PrimitiveInstantiationIndex::populateIndex"); - - /*typedef ApplicativeHelper AH; - - static Options::PISet set = env.options->piSet(); - - auto srtOf = [] (TermList t) { - ASS(t.isTerm()); - return SortHelper::getResultSort(t.term()); - }; - - static TermList boolS = AtomicSort::boolSort(); - - TermList s1 = TermList(0, false); - TermList x = TermList(1, false); - TermList y = TermList(2, false); - TermList s1_bool = AtomicSort::arrowSort(s1, boolS); - TermList args1[] = {s1, boolS, boolS}; - TermList args2[] = {s1, s1_bool, s1_bool}; - - unsigned k_comb = env.signature->getCombinator(Signature::K_COMB); - unsigned b_comb = env.signature->getCombinator(Signature::B_COMB); - unsigned v_and = env.signature->getBinaryProxy("vAND"); - unsigned v_or = env.signature->getBinaryProxy("vOR"); - unsigned v_imp = env.signature->getBinaryProxy("vIMP"); - unsigned v_not = env.signature->getNotProxy(); - unsigned v_equals = env.signature->getEqualityProxy(); - - TermList kcomb = TermList(Term::create2(k_comb, AtomicSort::boolSort(), s1)); - TermList bcomb1 = TermList(Term::create(b_comb, 3, args1)); - TermList bcomb2 = TermList(Term::create(b_comb, 3, args2)); - TermList vand = TermList(Term::createConstant(v_and)); - TermList vor = TermList(Term::createConstant(v_or)); - TermList vimp = TermList(Term::createConstant(v_imp)); - TermList vnot = TermList(Term::createConstant(v_not)); - TermList vequals = TermList(Term::create1(v_equals, s1)); - - TermList kTerm1 = AH::createAppTerm3(srtOf(kcomb), kcomb, TermList(Term::foolFalse()), x); - TermList kTerm2 = AH::createAppTerm3(srtOf(kcomb), kcomb, TermList(Term::foolTrue()), x); - TermList andTerm = AH::createAppTerm3(srtOf(vand), vand, x, y); - TermList orTerm = AH::createAppTerm3(srtOf(vor), vor, x, y); - TermList impTerm = AH::createAppTerm3(srtOf(vimp), vimp, x, y); - TermList notTerm = AH::createAppTerm(srtOf(vnot), vnot, x); - TermList equalsTerm = AH::createAppTerm3(srtOf(vequals), vequals, x, y); - TermList trm = AH::createAppTerm(srtOf(bcomb1), bcomb1, vnot); - TermList notEqualsTerm = AH::createAppTerm3(srtOf(bcomb2), bcomb2, trm, vequals); - notEqualsTerm = AH::createAppTerm3(srtOf(notEqualsTerm), notEqualsTerm, x, y); - - if(set == Options::PISet::ALL){ - _is->insert(kTerm1, 0, 0); - _is->insert(kTerm2, 0, 0); - _is->insert(andTerm, 0, 0); - _is->insert(orTerm, 0, 0); - _is->insert(impTerm, 0, 0); - _is->insert(notTerm, 0, 0); - _is->insert(equalsTerm, 0, 0); - _is->insert(notEqualsTerm, 0, 0); - } else if (set == Options::PISet::ALL_EXCEPT_NOT_EQ){ - _is->insert(kTerm1, 0, 0); - _is->insert(kTerm2, 0, 0); - _is->insert(andTerm, 0, 0); - _is->insert(orTerm, 0, 0); - _is->insert(impTerm, 0, 0); - _is->insert(notTerm, 0, 0); - _is->insert(equalsTerm, 0, 0); - } else if (set == Options::PISet::FALSE_TRUE_NOT){ - _is->insert(kTerm1, 0, 0); - _is->insert(kTerm2, 0, 0); - _is->insert(notTerm, 0, 0); - } else if (set == Options::PISet::FALSE_TRUE_NOT_EQ_NOT_EQ){ - _is->insert(kTerm1, 0, 0); - _is->insert(kTerm2, 0, 0); - _is->insert(notTerm, 0, 0); - _is->insert(equalsTerm, 0, 0); - _is->insert(notEqualsTerm, 0, 0); - }*/ -} - void SkolemisingFormulaIndex::insertFormula(TermList formula, TermList skolem) { CALL("SkolemisingFormulaIndex::insertFormula"); diff --git a/Indexing/TermIndex.hpp b/Indexing/TermIndex.hpp index 5e17ec56cb..37851ad609 100644 --- a/Indexing/TermIndex.hpp +++ b/Indexing/TermIndex.hpp @@ -152,21 +152,6 @@ class StructInductionTermIndex // Indices for higher-order inferences from here on// ///////////////////////////////////////////////////// -class PrimitiveInstantiationIndex -: public TermIndex -{ -public: - CLASS_NAME(PrimitiveInstantiationIndex); - USE_ALLOCATOR(PrimitiveInstantiationIndex); - - PrimitiveInstantiationIndex(TermIndexingStructure* is) : TermIndex(is) - { - populateIndex(); - } -protected: - void populateIndex(); -}; - class SkolemisingFormulaIndex : public TermIndex { diff --git a/Inferences/ArgCong.cpp b/Inferences/ArgCong.cpp index c75029e814..d3dbe6f6ff 100644 --- a/Inferences/ArgCong.cpp +++ b/Inferences/ArgCong.cpp @@ -84,8 +84,8 @@ struct ArgCong::ResultFn alpha2 = TermList(_freshVar+2, false); subst.bind(eqSort.var(), AtomicSort::arrowSort(alpha1, alpha2)); } else { - alpha1 = *eqSort.term()->nthArgument(0); - alpha2 = *eqSort.term()->nthArgument(1); + alpha1 = eqSort.domain(); + alpha2 = eqSort.result(); } TermList freshVar = TermList(_freshVar, false); @@ -95,8 +95,8 @@ struct ArgCong::ResultFn lhs = SubstHelper::apply(lhs, subst); rhs = SubstHelper::apply(rhs, subst); } - TermList newLhs = ApplicativeHelper::createAppTerm(alpha1, alpha2, lhs, freshVar); - TermList newRhs = ApplicativeHelper::createAppTerm(alpha1, alpha2, rhs, freshVar); + TermList newLhs = ApplicativeHelper::app(alpha1, alpha2, lhs, freshVar); + TermList newRhs = ApplicativeHelper::app(alpha1, alpha2, rhs, freshVar); Literal* newLit = Literal::createEquality(true, newLhs, newRhs, alpha2); diff --git a/Inferences/BoolEqToDiseq.cpp b/Inferences/BoolEqToDiseq.cpp index 1ad6bb6eb6..715683a1ef 100644 --- a/Inferences/BoolEqToDiseq.cpp +++ b/Inferences/BoolEqToDiseq.cpp @@ -66,26 +66,14 @@ ClauseIterator BoolEqToDiseq::generateClauses(Clause* cl) continue; } TermList head = lhs.head(); - if(!head.isVar()){ - Signature::Symbol* sym = env.signature->getFunction(head.term()->functor()); - if(sym->proxy() != Signature::NOT){ - TermList vNot = TermList(Term::createConstant(env.signature->getNotProxy())); - TermList vNotSort = SortHelper::getResultSort(vNot.term()); - TermList newLhs = AH::createAppTerm(vNotSort, vNot, lhs); - newLit = Literal::createEquality(false, newLhs, rhs, AtomicSort::boolSort()); - goto afterLoop; - } + if(!head.isVar() && !head.isNot()){ + newLit = Literal::createEquality(false, AH::app(AH::neg(), lhs), rhs, AtomicSort::boolSort()); + goto afterLoop; } head = rhs.head(); - if(!head.isVar()){ - Signature::Symbol* sym = env.signature->getFunction(head.term()->functor()); - if(sym->proxy() != Signature::NOT){ - TermList vNot = TermList(Term::createConstant(env.signature->getNotProxy())); - TermList vNotSort = SortHelper::getResultSort(vNot.term()); - TermList newRhs = AH::createAppTerm(vNotSort, vNot, rhs); - newLit = Literal::createEquality(false, lhs, newRhs, AtomicSort::boolSort()); - goto afterLoop; - } + if(!head.isVar() && !head.isNot()){ + newLit = Literal::createEquality(false, lhs, AH::app(AH::neg(), rhs), AtomicSort::boolSort()); + goto afterLoop; } } pos++; diff --git a/Inferences/BoolSimp.cpp b/Inferences/BoolSimp.cpp index 72091a8746..7820baa0a0 100644 --- a/Inferences/BoolSimp.cpp +++ b/Inferences/BoolSimp.cpp @@ -72,56 +72,33 @@ Clause* BoolSimp::simplify(Clause* premise) { bool BoolSimp::areComplements(TermList t1, TermList t2){ CALL("BoolSimp::areComplements"); - Signature::Symbol* sym; static TermStack args; TermList head; ApplicativeHelper::getHeadAndArgs(t1, head, args); - if(!head.isVar()){ - sym = env.signature->getFunction(head.term()->functor()); - if(sym->proxy() == Signature::NOT){ - ASS(args.size() == 1); - if(args[0] == t2){ return true;} - } - } + if(head.isNot() && args[0] == t2) return true; ApplicativeHelper::getHeadAndArgs(t2, head, args); - if(!head.isVar()){ - sym = env.signature->getFunction(head.term()->functor()); - if(sym->proxy() == Signature::NOT){ - ASS(args.size() == 1); - if(args[0] == t1){ return true;} - } - } + if(head.isNot() && args[0] == t1) return true; return false; } - -TermList BoolSimp::negate(TermList term){ - CALL("BoolSimp::negate"); - - TermList constant, constSort; - - constant = TermList(Term::createConstant(env.signature->getNotProxy())); - constSort = SortHelper::getResultSort(constant.term()); - return ApplicativeHelper::createAppTerm(constSort, constant, term); -} - TermList BoolSimp::boolSimplify(TermList term){ CALL("BoolSimp::boolSimplify"); + typedef ApplicativeHelper AH; + static TermList troo(Term::foolTrue()); static TermList fols(Term::foolFalse()); static TermStack args; TermList head; - ApplicativeHelper::getHeadAndArgs(term, head, args); + AH::getHeadAndArgs(term, head, args); if(head.isVar()){ return term; } - Signature::Symbol* sym = env.signature->getFunction(head.term()->functor()); - switch(sym->proxy()){ + switch(AH::getProxy(head)){ case Signature::AND:{ ASS(args.size() == 2); if(args[1] == fols || args[0] == fols){ return fols; } @@ -147,15 +124,15 @@ TermList BoolSimp::boolSimplify(TermList term){ if(areComplements(args[0], args[1])){ return args[0]; } if(args[0] == args[1]){ return troo; } if(args[0] == troo){ return troo; } - if(args[0] == fols){ return negate(args[1]); } + if(args[0] == fols){ return AH::app(AH::neg(), args[1]); } break; } case Signature::IFF:{ ASS(args.size() == 2); if(args[0] == troo){ return args[1]; } else if(args[1] == troo){ return args[0]; } - if(args[0] == fols){ return negate(args[1]); } else - if(args[1] == fols){ return negate(args[0]); } + if(args[0] == fols){ return AH::app(AH::neg(), args[1]); } else + if(args[1] == fols){ return AH::app(AH::neg(), args[0]); } if(args[0] == args[1]){ return troo; } if(areComplements(args[0], args[1])){ return fols; } break; @@ -164,24 +141,16 @@ TermList BoolSimp::boolSimplify(TermList term){ ASS(args.size() == 1); if(args[0] == troo){ return fols; } if(args[0] == fols){ return troo; } - ApplicativeHelper::getHeadAndArgs(args[0], head, args); - if(!head.isVar()){ - sym = env.signature->getFunction(head.term()->functor()); - if(sym->proxy() == Signature::NOT){ - ASS(args.size() == 1); - return args[0]; - } + AH::getHeadAndArgs(args[0], head, args); + if(head.isNot()){ + ASS(args.size() == 1); + return args[0]; } break; } case Signature::EQUALS:{ ASS(args.size() == 2); if(args[0] == args[1]){ return troo; } - /*if(args[0].isTerm() && args[0].term()->ground() && - args[1].isTerm() && args[1].term()->ground() && - args[0] != args[1]){ - return fols; - }*/ } default: return term; diff --git a/Inferences/BoolSimp.hpp b/Inferences/BoolSimp.hpp index e81bc957fc..5b5bde8180 100644 --- a/Inferences/BoolSimp.hpp +++ b/Inferences/BoolSimp.hpp @@ -32,7 +32,6 @@ class BoolSimp : public ImmediateSimplificationEngine private: TermList boolSimplify(TermList term); - TermList negate(TermList term); bool areComplements(TermList t1, TermList t2); }; diff --git a/Inferences/CNFOnTheFly.cpp b/Inferences/CNFOnTheFly.cpp index 6f03675c2c..8973c77d34 100644 --- a/Inferences/CNFOnTheFly.cpp +++ b/Inferences/CNFOnTheFly.cpp @@ -420,8 +420,8 @@ ClauseIterator produceClauses(Clause* c, bool generating, SkolemisingFormulaInde if(generating && (eager || simp)){ return ClauseIterator::getEmpty(); } if(!generating && gen){ return ClauseIterator::getEmpty(); } - TermList troo = TermList(Term::foolTrue()); - TermList fols = TermList(Term::foolFalse()); + TermList troo = AH::top(); + TermList fols = AH::bottom(); TermList boolSort = AtomicSort::boolSort(); static TermStack args; @@ -564,7 +564,7 @@ ClauseIterator produceClauses(Clause* c, bool generating, SkolemisingFormulaInde TermQueryResult tqr = results.next(); TermList skolemTerm = tqr.term; skolemTerm=tqr.substitution->applyToBoundResult(skolemTerm); - newTerm = AH::createAppTerm(srt, args[0], skolemTerm); + newTerm = AH::app(srt, args[0], skolemTerm); newTermCreated = true; } } @@ -573,7 +573,7 @@ ClauseIterator produceClauses(Clause* c, bool generating, SkolemisingFormulaInde if(index){ index->insertFormula(term, skolemTerm); } - newTerm = AH::createAppTerm(srt, args[0], skolemTerm); + newTerm = AH::app(srt, args[0], skolemTerm); } rule = convert(Signature::SIGMA); } @@ -687,9 +687,9 @@ TermList sigmaRemoval(TermList sigmaTerm, TermList expsrt){ TermList skSymSort = AtomicSort::arrowSort(termVarSorts, resultSort); unsigned fun = Skolem::addSkolemFunction(typeVars.size(), typeVars.size(), 0, skSymSort); TermList head = TermList(Term::create(fun, typeVars.size(), typeVars.begin())); - TermList skolemTerm = ApplicativeHelper::createAppTerm(SortHelper::getResultSort(head.term()), head, termVars); + TermList skolemTerm = AH::app(head, termVars); - ASS(*expsrt.term()->nthArgument(1) == AtomicSort::boolSort()); + ASS(expsrt.result().isBoolSort()); //cout << "OUT OF sigmaRemoval " + sigmaTerm.toString() << endl; return skolemTerm; @@ -701,11 +701,10 @@ TermList piRemoval(TermList piTerm, Clause* clause, TermList expsrt){ unsigned maxVar = clause->maxVar(); do{ - maxVar++; - TermList newVar = TermList(maxVar, false); - piTerm = ApplicativeHelper::createAppTerm(expsrt, piTerm, newVar); - expsrt = *expsrt.term()->nthArgument(1); - }while(expsrt != AtomicSort::boolSort()); + TermList newVar(++maxVar, false); + piTerm = AH::app(expsrt, piTerm, newVar); + expsrt = expsrt.result(); + }while(!expsrt.isBoolSort()); return piTerm; } diff --git a/Inferences/Choice.cpp b/Inferences/Choice.cpp index 0f9f490eca..ec73d6f6aa 100644 --- a/Inferences/Choice.cpp +++ b/Inferences/Choice.cpp @@ -46,12 +46,14 @@ using namespace Kernel; using namespace Indexing; using namespace Saturation; +typedef ApplicativeHelper AH; + Clause* Choice::createChoiceAxiom(TermList op, TermList set) { CALL("Choice::createChoiceAxiom"); TermList opType = SortHelper::getResultSort(op.term()); - TermList setType = ApplicativeHelper::getNthArg(opType, 1); + TermList setType = AH::getNthArg(opType, 1); unsigned max = 0; FormulaVarIterator fvi(&set); @@ -63,14 +65,14 @@ Clause* Choice::createChoiceAxiom(TermList op, TermList set) } TermList freshVar = TermList(max+1, false); - TermList t1 = ApplicativeHelper::createAppTerm(setType, set, freshVar); - TermList t2 = ApplicativeHelper::createAppTerm(opType, op, set); - t2 = ApplicativeHelper::createAppTerm(setType, set, t2); + TermList t1 = AH::app(setType, set, freshVar); + TermList t2 = AH::app(opType, op, set); + t2 = AH::app(setType, set, t2); Clause* axiom = new(2) Clause(2, NonspecificInference0(UnitInputType::AXIOM, InferenceRule::CHOICE_AXIOM)); - (*axiom)[0] = Literal::createEquality(true, t1, TermList(Term::foolFalse()), AtomicSort::boolSort());; - (*axiom)[1] = Literal::createEquality(true, t2, TermList(Term::foolTrue()), AtomicSort::boolSort());; + (*axiom)[0] = Literal::createEquality(true, t1, AH::bottom(), AtomicSort::boolSort());; + (*axiom)[1] = Literal::createEquality(true, t2, AH::top(), AtomicSort::boolSort());; return axiom; } @@ -82,9 +84,9 @@ struct Choice::AxiomsIterator CALL("Choice::AxiomsIterator"); ASS(term.isTerm()); - _set = *term.term()->nthArgument(3); + _set = term.rhs(); _headSort = AtomicSort::arrowSort(*term.term()->nthArgument(0),*term.term()->nthArgument(1)); - _resultSort = ApplicativeHelper::getResultApplieadToNArgs(_headSort, 1); + _resultSort = AH::getResultApplieadToNArgs(_headSort, 1); //cout << "the result sort is " + _resultSort.toString() << endl; @@ -212,16 +214,13 @@ ClauseIterator Choice::generateClauses(Clause* premise) //is this correct? auto it1 = premise->getSelectedLiteralIterator(); - //filter out literals that are not suitable for narrowing + auto it2 = getMapAndFlattenIterator(it1, SubtermsFn()); - //pair of literals and possible rewrites that can be applied to literals auto it3 = getFilteredIterator(it2, IsChoiceTerm()); - //apply rewrite rules to literals auto it4 = getMapAndFlattenIterator(it3, ResultFn()); - return pvi( it4 ); } diff --git a/Inferences/ElimLeibniz.cpp b/Inferences/ElimLeibniz.cpp index d4b4254c50..1446ae61f6 100644 --- a/Inferences/ElimLeibniz.cpp +++ b/Inferences/ElimLeibniz.cpp @@ -160,15 +160,15 @@ ClauseIterator ElimLeibniz::generateClauses(Clause* premise) TermList var = TermList(lerPosLit.var, false); - TermList vEquals = TermList(Term::create1(env.signature->getEqualityProxy(), argS)); - TermList t1 = AH::createAppTerm(SH::getResultSort(vEquals.term()), vEquals, lerNegLit.arg); + TermList vEquals = AH::equals(argS); + TermList t1 = AH::app(vEquals, lerNegLit.arg); if(subst.unify(var, 0, t1, 0)){ Clause* c = createConclusion(premise, newLit, posLit, negLit, subst); clauses.push(c); subst.reset(); } - TermList t2 = AH::createAppTerm(SH::getResultSort(vEquals.term()), vEquals, lerPosLit.arg); + TermList t2 = AH::app(vEquals, lerPosLit.arg); TermList typeArgs[] = {argS, AtomicSort::boolSort(), AtomicSort::boolSort()}; unsigned b_comb = env.signature->getCombinator(Signature::B_COMB); diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index d9fc2d218e..a3b823aca4 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -56,7 +56,15 @@ using namespace Saturation; struct EqualityResolution::IsNegativeEqualityFn { bool operator()(Literal* l) - { return l->isEquality() && l->isNegative(); } + { + return l->isEquality() && l->isNegative() +#if VHOL + // no point trying to resolve too terms of functional sort + // instead, let negExt grow both sides and then resolve... + && !SortHelper::getEqualityArgumentSort(l).isArrowSort(); +#endif + ; + } }; void EqualityResolution::attach(SaturationAlgorithm* salg) diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp index 8bd6003189..61f948b6ab 100644 --- a/Inferences/ImitateProject.cpp +++ b/Inferences/ImitateProject.cpp @@ -55,7 +55,7 @@ struct ImitateProject::CanImitateAndProject bool operator()(Literal* l) { ASS(l->isEquality()); - return l->isFlexRigid() && !SortHelper::getEqualityArgumentSort(l).isArrowSort(); + return l->isFlexRigid() && !l->polarity() && !SortHelper::getEqualityArgumentSort(l).isArrowSort(); } }; diff --git a/Inferences/Injectivity.cpp b/Inferences/Injectivity.cpp index 4906a9e052..f3c660ccd1 100644 --- a/Inferences/Injectivity.cpp +++ b/Inferences/Injectivity.cpp @@ -146,8 +146,7 @@ TermList Injectivity::createNewLhs(TermList oldhead, TermStack& termArgs, unsign invFunc->setType(invFuncType); TermList invFuncHead = TermList(Term::create(iFunc, func->arity(), typeArgs.begin())); - TermList invFuncHeadType = SortHelper::getResultSort(invFuncHead.term()); - return ApplicativeHelper::createAppTerm(invFuncHeadType, invFuncHead, termArgs); + return ApplicativeHelper::app(invFuncHead, termArgs); } diff --git a/Inferences/NegativeExt.cpp b/Inferences/NegativeExt.cpp index f59da72c01..bc9d85fed0 100644 --- a/Inferences/NegativeExt.cpp +++ b/Inferences/NegativeExt.cpp @@ -72,6 +72,7 @@ struct NegativeExt::ResultFn varSorts.reset(); TermList eqSort = SortHelper::getEqualityArgumentSort(lit); + // TODO why do we not perform negative extensionality when eqSort is a variable? if(eqSort.isVar() || !eqSort.isArrowSort()){ return 0; } @@ -127,8 +128,8 @@ struct NegativeExt::ResultFn } } - TermList alpha1 = *eqSort.term()->nthArgument(0); - TermList alpha2 = *eqSort.term()->nthArgument(1); + TermList alpha1 = eqSort.domain(); + TermList alpha2 = eqSort.result(); TermList resultSort = alpha1; SortHelper::normaliseArgSorts(typeVars, termVarSorts); @@ -139,10 +140,10 @@ struct NegativeExt::ResultFn TermList head = TermList(Term::create(fun, typeVars.size(), typeVars.begin())); //cout << "the head is " + head.toString() << endl; //cout << "It has sort " + skSymSort.toString() << endl; - TermList skolemTerm = ApplicativeHelper::createAppTerm(SortHelper::getResultSort(head.term()), head, termVars); + TermList skolemTerm = ApplicativeHelper::app(head, termVars); - TermList newLhs = ApplicativeHelper::createAppTerm(alpha1, alpha2, lhs, skolemTerm); - TermList newRhs = ApplicativeHelper::createAppTerm(alpha1, alpha2, rhs, skolemTerm); + TermList newLhs = ApplicativeHelper::app(alpha1, alpha2, lhs, skolemTerm); + TermList newRhs = ApplicativeHelper::app(alpha1, alpha2, rhs, skolemTerm); Literal* newLit = Literal::createEquality(false, newLhs, newRhs, alpha2); diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index 43ff05de86..f1233a5e04 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -21,6 +21,7 @@ #include "Kernel/Inference.hpp" #include "Kernel/Substitution.hpp" #include "Kernel/ApplicativeHelper.hpp" +#include "Kernel/SubstHelper.hpp" #include "Lib/Environment.hpp" #include "Lib/Metaiterators.hpp" @@ -42,93 +43,200 @@ using namespace Kernel; using namespace Indexing; using namespace Saturation; -void PrimitiveInstantiation::attach(SaturationAlgorithm* salg) -{ - CALL("PrimitiveInstantiation::attach"); - - GeneratingInferenceEngine::attach(salg); - _index=static_cast ( - _salg->getIndexManager()->request(PRIMITIVE_INSTANTIATION_INDEX) ); -} - -void PrimitiveInstantiation::detach() -{ - CALL("PrimitiveInstantiation::detach"); - - _index=0; - _salg->getIndexManager()->release(PRIMITIVE_INSTANTIATION_INDEX); - GeneratingInferenceEngine::detach(); -} - struct PrimitiveInstantiation::IsInstantiable { bool operator()(Literal* l) { - if(SortHelper::getEqualityArgumentSort(l) != AtomicSort::boolSort()){ - return false; - } - - TermList lhs = *(l->nthArgument(0)); - TermList rhs = *(l->nthArgument(1)); - - TermList head; - TermStack args; - ApplicativeHelper::getHeadAndArgs(lhs, head, args); - if(head.isVar()){ return true; } - ApplicativeHelper::getHeadAndArgs(rhs, head, args); - if(head.isVar()){ return true; } - - return false; + return l->isFlexRigid() && SortHelper::getEqualityArgumentSort(l).isBoolSort(); } }; struct PrimitiveInstantiation::ResultFn { - ResultFn(Clause* cl): _cl(cl){} - - Clause* operator() (TermQueryResult tqr){ - const int QUERY = 0; + typedef ApplicativeHelper AH; + typedef pair IndexPair; + typedef Stack IndexPairStack; - ResultSubstitutionSP subst = tqr.substitution; + ResultFn(Clause* cl): _cl(cl), _freshVar(cl->maxVar() + 1){ + TermList sortVar(_freshVar++, false); + _heads.push(AH::top()); + _heads.push(AH::bottom()); + auto piSet = env.options->piSet(); + switch(piSet){ + case Options::PISet::ALL_EXCEPT_NOT_EQ: + case Options::PISet::ALL: + _heads.push(AH::conj()); + _heads.push(AH::disj()); + _heads.push(AH::neg()); + _heads.push(AH::equality(sortVar)); + _heads.push(AH::pi(sortVar)); + _heads.push(AH::sigma(sortVar)); + break; + case Options::PISet::PRAGMATIC: + case Options::PISet::NOT: + _heads.push(AH::neg()); + break; + case Options::PISet::NOT_EQ_NOT_EQ: + _heads.push(AH::neg()); + _heads.push(AH::equality(sortVar)); + break; + case Options::PISet::AND: + _heads.push(AH::conj()); + break; + case Options::PISet::OR: + _heads.push(AH::disj()); + break; + case Options::PISet::EQUALS: + _heads.push(AH::equality(sortVar)); + break; + case Options::PISet::PI_SIGMA: + _heads.push(AH::pi(sortVar)); + _heads.push(AH::sigma(sortVar)); + break; + } + } + + Clause* createRes() + { + CALL("PrimitiveInstantiation::ResultFn::createRes"); + unsigned cLen = _cl->length(); - Clause* res = new(cLen) Clause(cLen, GeneratingInference1(InferenceRule::PRIMITIVE_INSTANTIATION, _cl)); for(unsigned i=0;iapply(curr, QUERY); + Literal* currAfter = SubstHelper::apply(curr, _subst); (*res)[i] = currAfter; } + return res; + } - env.statistics->primitiveInstantiations++; - return res; + void getSameSortIndices(TermStack& sorts, IndexPairStack& indices){ + CALL("PrimitiveInstantiation::ResultFn::getSameSortIndices"); + + for(unsigned i = 0; i < sorts.size(); i++){ + for(unsigned j = i + 1; j < sorts.size(); j++){ + if(sorts[i] == sorts[j]){ + indices.push(make_pair(i, j)); + } + } + } } - -private: - Clause* _cl; -}; -struct PrimitiveInstantiation::ApplicableRewritesFn -{ + ClauseIterator operator() (Literal* lit){ + CALL("PrimitiveInstantiation::ResultFn::operator()"); + + auto set = env.options->piSet(); + static bool pragmatic = set == Options::PISet::PRAGMATIC; + static bool include_not_eq = set == Options::PISet::ALL || + set == Options::PISet::NOT_EQ_NOT_EQ; + + static ClauseStack results; + results.reset(); + + TermList arg0 = *lit->nthArgument(0); + TermList arg1 = *lit->nthArgument(1); + + // Flex term is of form X a1 ... an + TermList flexTerm = arg0.head().isVar() ? arg0 : arg1; + + // since term is rigid, cannot be a variable + TermList headFlex; + TermStack argsFlex; + TermStack sortsFlex; //sorts of arguments of flex head + + AH::getHeadAndArgs(flexTerm, headFlex, argsFlex); + ASS(argsFlex.size()); // Flex side is not a variable + AH::getArgSorts(flexTerm, sortsFlex); + + TermStack deBruijnIndices; + for(int i = 0; i < argsFlex.size(); i++){ + deBruijnIndices.push(AH::getDeBruijnIndex(i, sortsFlex[i])); + } + + // if any amongst a1 ... an is of sort $o, project that + // argument to the top + for(unsigned i =0; i < sortsFlex.size() && pragmatic; i++){ + if(sortsFlex[i].isBoolSort()){ + _subst.reset(); + TermList gb = AH::surroundWithLambdas(deBruijnIndices[i], sortsFlex); + _subst.bind(headFlex.var(), gb); + results.push(createRes()); + } + } + + if(pragmatic){ + IndexPairStack sameSortArgs; + getSameSortIndices(sortsFlex, sameSortArgs); + for(unsigned i = 0; i < sameSortArgs.size(); i++){ + _subst.reset(); + IndexPair p = sameSortArgs[i]; - ApplicableRewritesFn(PrimitiveInstantiationIndex* index) : _index(index){} - VirtualIterator operator()(Literal* l) - { - CALL("PrimitiveInstantiation::ApplicableRewritesFn()"); - - TermList lhs = *l->nthArgument(0); - TermList rhs = *l->nthArgument(1); - + TermList dbi = deBruijnIndices[p.first]; + TermList dbj = deBruijnIndices[p.second]; + + // creating term dbi = dbj + TermList tm = AH::app2(AH::equality(sortsFlex[i]), dbi, dbj); + TermList gb = AH::surroundWithLambdas(tm, sortsFlex); + _subst.bind(headFlex.var(), gb); + results.push(createRes()); + + //creating dbi != dbj + _subst.reset(); + gb = AH::surroundWithLambdas(AH::app(AH::neg(), tm), sortsFlex); + _subst.bind(headFlex.var(), gb); + results.push(createRes()); + + if(sortsFlex[i].isBoolSort()){ + //creating dbi \/ dbj + _subst.reset(); + gb = AH::surroundWithLambdas(AH::app2(AH::disj(), dbi, dbj), sortsFlex); + _subst.bind(headFlex.var(), gb); + results.push(createRes()); + + //creating dbi /\ dbj + _subst.reset(); + gb = AH::surroundWithLambdas(AH::app2(AH::conj(), dbi, dbj), sortsFlex); + _subst.bind(headFlex.var(), gb); + results.push(createRes()); + } + } + } + TermStack args; - TermList head; + + // bind head variable to all general bindings produced using heads in _heads + for(unsigned i =0; i < _heads.size(); i++){ + _subst.reset(); + unsigned fVar = _freshVar; + + bool surround = (!_heads[i].isEquals() || !include_not_eq); + TermList gb = AH::createGeneralBinding(fVar,_heads[i],argsFlex,sortsFlex,deBruijnIndices,args,surround); + gb = surround ? gb : AH::surroundWithLambdas(gb, sortsFlex); + + _subst.bind(headFlex.var(), gb); + results.push(createRes()); + + if(!surround){ + // add not equals + _subst.reset(); + gb = AH::surroundWithLambdas(AH::app(AH::neg(), gb), sortsFlex); + + _subst.bind(headFlex.var(), gb); + results.push(createRes()); + } + } - ApplicativeHelper::getHeadAndArgs(lhs, head, args); - - return pvi(_index->getUnifications((head.isVar() ? lhs : rhs))); + env.statistics->primitiveInstantiations++; + return pvi(getUniquePersistentIterator(ClauseStack::Iterator(results))); } + private: - PrimitiveInstantiationIndex* _index; + TermStack _heads; + Clause* _cl; + unsigned _freshVar; + Substitution _subst; }; ClauseIterator PrimitiveInstantiation::generateClauses(Clause* premise) @@ -137,18 +245,12 @@ ClauseIterator PrimitiveInstantiation::generateClauses(Clause* premise) //is this correct? auto it1 = premise->getSelectedLiteralIterator(); - //filter out literals that are not suitable for narrowing + //filter out literals that are not suitable for PI auto it2 = getFilteredIterator(it1, IsInstantiable()); - - //pair of literals and possible rewrites that can be applied to literals - auto it3 = getMapAndFlattenIterator(it2, ApplicableRewritesFn(_index)); + //perform instantiations + auto it3 = getMapAndFlattenIterator(it2, ResultFn(premise)); - //apply rewrite rules to literals - auto it4 = getMappingIterator(it3, ResultFn(premise)); - - - return pvi( it4 ); - + return pvi( it3 ); } } diff --git a/Inferences/PrimitiveInstantiation.hpp b/Inferences/PrimitiveInstantiation.hpp index aec25d1cbd..407035bd3f 100644 --- a/Inferences/PrimitiveInstantiation.hpp +++ b/Inferences/PrimitiveInstantiation.hpp @@ -34,18 +34,12 @@ class PrimitiveInstantiation CLASS_NAME(PrimitiveInstantiation); USE_ALLOCATOR(PrimitiveInstantiation); - void attach(SaturationAlgorithm* salg); - void detach(); - ClauseIterator generateClauses(Clause* premise); private: - PrimitiveInstantiationIndex* _index; - struct ApplicableRewritesFn; struct ResultFn; - struct IsInstantiable; - + struct IsInstantiable; }; diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 27923681e7..54746675f0 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -35,10 +35,10 @@ TermList BetaNormaliser::transformSubterm(TermList t) { CALL("BetaNormaliser::transformSubterm"); - while(t.isRedex()){ + while(ApplicativeHelper::canHeadReduce(t)){ t = RedexReducer().reduce(t); } - + return t; } @@ -132,17 +132,22 @@ bool EtaNormaliser::exploreSubterms(TermList orig, TermList newTerm) TermList RedexReducer::reduce(TermList redex) { CALL("RedexReducer::reduce"); - ASS(redex.isRedex()); + ASS(AH::canHeadReduce(redex)); + + TermList head; + TermStack args; + AH::getHeadAndArgs(redex, head, args); _replace = 0; - TermList t1 = redex.lhs().lambdaBody(); - _t2 = redex.rhs(); + TermList t1 = head.lambdaBody(); + TermList t1Sort = *head.term()->nthArgument(1); + _t2 = args.pop(); if(t1.isTerm()) onTermEntry(t1.term()); TermList transformed = transformSubterm(t1); - if(transformed != t1) return transformed; - return transform(t1); + if(transformed != t1) return AH::app(t1Sort, transformed, args); + return AH::app(t1Sort, transform(t1), args); } TermList RedexReducer::transformSubterm(TermList t) @@ -245,37 +250,42 @@ bool TermShifter::exploreSubterms(TermList orig, TermList newTerm) return false; } -TermList ApplicativeHelper::createAppTerm(TermList sort, TermList arg1, TermList arg2, TermList arg3, TermList arg4) +TermList ApplicativeHelper::app2(TermList sort, TermList head, TermList arg1, TermList arg2) { - CALL("ApplicativeHelper::createAppTerm/3"); - - TermList t1 = createAppTerm3(sort, arg1, arg2, arg3); - return createAppTerm(SortHelper::getResultSort(t1.term()), t1, arg4); + CALL("ApplicativeHelper::app2"); + + return app(app(sort, head, arg1), arg2); } -TermList ApplicativeHelper::createAppTerm3(TermList sort, TermList arg1, TermList arg2, TermList arg3) +TermList ApplicativeHelper::app2(TermList head, TermList arg1, TermList arg2) +{ + CALL("ApplicativeHelper::app2"); + ASS(head.isTerm()); + + TermList headSort = SortHelper::getResultSort(head.term()); + return app2(headSort, head, arg1, arg2); +} + +TermList ApplicativeHelper::app(TermList sort, TermList head, TermList arg) { - CALL("ApplicativeHelper::createAppTerm3"); + CALL("ApplicativeHelper::app"); TermList s1 = getNthArg(sort, 1); TermList s2 = getResultApplieadToNArgs(sort, 1); - TermList s3 = getNthArg(s2, 1); - TermList s4 = getResultApplieadToNArgs(s2, 1); - return createAppTerm(s3, s4, createAppTerm(s1, s2, arg1, arg2), arg3); + return app(s1, s2, head, arg); } -TermList ApplicativeHelper::createAppTerm(TermList sort, TermList arg1, TermList arg2) +TermList ApplicativeHelper::app(TermList head, TermList arg) { - CALL("ApplicativeHelper::createAppTerm/2"); - - TermList s1 = getNthArg(sort, 1); - TermList s2 = getResultApplieadToNArgs(sort, 1); - return createAppTerm(s1, s2, arg1, arg2); + CALL("ApplicativeHelper::app/2"); + ASS(head.isTerm()); + + return app(SortHelper::getResultSort(head.term()), head, arg); } -TermList ApplicativeHelper::createAppTerm(TermList s1, TermList s2, TermList arg1, TermList arg2, bool shared) +TermList ApplicativeHelper::app(TermList s1, TermList s2, TermList arg1, TermList arg2, bool shared) { - CALL("ApplicativeHelper::createAppTerm/1"); + CALL("ApplicativeHelper::app/3"); static TermStack args; args.reset(); @@ -290,9 +300,9 @@ TermList ApplicativeHelper::createAppTerm(TermList s1, TermList s2, TermList arg return TermList(Term::createNonShared(app, 4, args.begin())); } -TermList ApplicativeHelper::createAppTerm(TermList sort, TermList head, TermStack& terms) +TermList ApplicativeHelper::app(TermList sort, TermList head, TermStack& terms) { - CALL("ApplicativeHelper::createAppTerm/4"); + CALL("ApplicativeHelper::app/4"); ASS(head.isVar() || SortHelper::getResultSort(head.term()) == sort); TermList res = head; @@ -301,29 +311,21 @@ TermList ApplicativeHelper::createAppTerm(TermList sort, TermList head, TermStac for(int i = terms.size() - 1; i >= 0; i--){ s1 = getNthArg(sort, 1); s2 = getResultApplieadToNArgs(sort, 1); - res = createAppTerm(s1, s2, res, terms[i]); + res = app(s1, s2, res, terms[i]); sort = s2; } return res; } -TermList ApplicativeHelper::createAppTerm(TermList sort, TermList head, TermList* args, unsigned arity, bool shared) +TermList ApplicativeHelper::app(TermList head, TermStack& terms) { - CALL("ApplicativeHelper::createAppTerm/5"); - ASS_REP(head.isVar() || SortHelper::getResultSort(head.term()) == sort, sort.toString() ); - - TermList res = head; - TermList s1, s2; + CALL("ApplicativeHelper::app/5"); + ASS(head.isTerm()); - for(unsigned i = 0; i < arity; i++){ - s1 = getNthArg(sort, 1); - s2 = getResultApplieadToNArgs(sort, 1); - res = createAppTerm(s1, s2, res, args[i], shared); - sort = s2; - } - return res; -} + TermList sort = SortHelper::getResultSort(head.term()); + return app(sort, head, terms); +} TermList ApplicativeHelper::createLambdaTerm(TermList varSort, TermList termSort, TermList term) { @@ -362,7 +364,7 @@ TermList ApplicativeHelper::getResultApplieadToNArgs(TermList arrowSort, unsigne while(argNum > 0){ ASS(arrowSort.isArrowSort()); - arrowSort = *arrowSort.term()->nthArgument(1); + arrowSort = arrowSort.result(); argNum--; } return arrowSort; @@ -377,8 +379,8 @@ TermList ApplicativeHelper::getNthArg(TermList arrowSort, unsigned argNum) TermList res; while(argNum >=1){ ASS(arrowSort.isArrowSort()); - res = *arrowSort.term()->nthArgument(0); - arrowSort = *arrowSort.term()->nthArgument(1); + res = arrowSort.domain(); + arrowSort = arrowSort.result(); argNum--; } return res; @@ -390,13 +392,13 @@ unsigned ApplicativeHelper::getArity(TermList sort) unsigned arity = 0; while(sort.isArrowSort()){ - sort = *sort.term()->nthArgument(1); + sort = sort.result(); arity++; } return arity; } -void ApplicativeHelper::getHeadAndAllArgs(TermList term, TermList& head, TermStack& args) +/*void ApplicativeHelper::getHeadAndAllArgs(TermList term, TermList& head, TermStack& args) { CALL("ApplicativeHelper::getHeadAndAllArgs"); @@ -436,15 +438,15 @@ void ApplicativeHelper::getHeadSortAndArgs(TermList term, TermList& head, } head = term; -} +}*/ void ApplicativeHelper::getArgSorts(TermList t, TermStack& sorts) { CALL("ApplicativeHelper::getArgSorts"); while(t.isArrowSort()){ - sorts.push(*t.term()->nthArgument(0)); - t = *t.term()->nthArgument(1); + sorts.push(t.domain()); + t = t.result(); } while(t.isApplication()){ @@ -461,8 +463,8 @@ void ApplicativeHelper::getHeadAndArgs(TermList term, TermList& head, TermStack& if(!args.isEmpty()){ args.reset(); } while(term.isApplication()){ - args.push(*term.term()->nthArgument(3)); - term = *term.term()->nthArgument(2); + args.push(term.rhs()); + term = term.lhs(); } head = term; @@ -473,7 +475,9 @@ void ApplicativeHelper::getHeadAndArgs(Term* term, TermList& head, TermStack& ar { CALL("ApplicativeHelper::getHeadAndArgs/2"); - if(!args.isEmpty()){ args.reset(); } + getHeadAndArgs(TermList(term), head, args); + + /*if(!args.isEmpty()){ args.reset(); } head = TermList(term); @@ -483,8 +487,7 @@ void ApplicativeHelper::getHeadAndArgs(Term* term, TermList& head, TermStack& ar if(head.isTerm()){ term = head.term(); } else { break; } - } - + }*/ } void ApplicativeHelper::getHeadAndArgs(const Term* term, TermList& head, TermStack& args) @@ -494,23 +497,6 @@ void ApplicativeHelper::getHeadAndArgs(const Term* term, TermList& head, TermSta getHeadAndArgs(const_cast(term),head,args); } -void ApplicativeHelper::getHeadAndArgs(const Term* term, TermList& head, Deque& args) -{ - CALL("ApplicativeHelper::getHeadAndArgs/3"); - - ASS(term->isApplication()); - - if(!args.isEmpty()){ args.reset(); } - - while(term->isApplication()){ - args.push_front(*term->nthArgument(3)); - head = *term->nthArgument(2); - if(head.isTerm()){ - term = head.term(); - } else { break; } - } -} - Signature::Proxy ApplicativeHelper::getProxy(const TermList t) { CALL("ApplicativeHelper::getProxy"); @@ -535,21 +521,22 @@ bool ApplicativeHelper::isFalse(TermList term){ return term.isTerm() && !term.term()->isSort() && env.signature->isFoolConstantSymbol(false, term.term()->functor()); } +bool ApplicativeHelper::canHeadReduce(TermList t){ + CALL("ApplicativeHelper::canHeadReduce"); + + TermList head; + TermStack args; + getHeadAndArgs(t, head, args); + return head.isLambdaTerm() && args.size(); +} + TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList head, - TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, TermStack& args2){ + TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, TermStack& args2, bool surround){ CALL("ApplicativeHelper::createGeneralBinding"); ASS(head.isTerm()); ASS(argsFlex.size() == sortsFlex.size()); ASS(indices.size() == argsFlex.size()); - auto surroundWithLambdas = [](TermList t, TermStack& sorts){ - ASS(t.isTerm()); - for(int i = 0; i < sorts.size(); i++){ - t = createLambdaTerm(sorts[i], SortHelper::getResultSort(t.term()), t); - } - return t; - }; - TermStack args; TermStack argSorts; TermList headSort = SortHelper::getResultSort(head.term()); @@ -558,39 +545,77 @@ TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList hea for(unsigned i = 0; i < argSorts.size(); i++){ TermList fVar(++freshVar, false); TermList varSort = AtomicSort::arrowSort(sortsFlex, argSorts[i]); - args.push(createAppTerm(varSort, fVar, indices)); - args2.push(createAppTerm(varSort, fVar, argsFlex)); + args.push(app(varSort, fVar, indices)); + args2.push(app(varSort, fVar, argsFlex)); } - TermList pb = createAppTerm(headSort, head, args); - return surroundWithLambdas(pb, sortsFlex); + TermList pb = app(headSort, head, args); + return surround ? surroundWithLambdas(pb, sortsFlex) : pb; } +TermList ApplicativeHelper::surroundWithLambdas(TermList t, TermStack& sorts) +{ + CALL("ApplicativeHelper::surroundWithLambdas"); + ASS(t.isTerm()); + for(int i = 0; i < sorts.size(); i++){ + t = createLambdaTerm(sorts[i], SortHelper::getResultSort(t.term()), t); + } + return t; +} +TermList ApplicativeHelper::top(){ + CALL("ApplicativeHelper::top"); + return TermList(Term::foolTrue()); +} +TermList ApplicativeHelper::bottom(){ + CALL("ApplicativeHelper::bottom"); + return TermList(Term::foolFalse()); +} +TermList ApplicativeHelper::conj(){ + CALL("ApplicativeHelper::conj"); + return TermList(Term::createConstant(env.signature->getBinaryProxy("vAND"))); +} +TermList ApplicativeHelper::disj(){ + CALL("ApplicativeHelper::disj"); + return TermList(Term::createConstant(env.signature->getBinaryProxy("vOR"))); +} +TermList ApplicativeHelper::imp(){ + CALL("ApplicativeHelper::imp"); + return TermList(Term::createConstant(env.signature->getBinaryProxy("vIMP"))); +} +TermList ApplicativeHelper::neg(){ + CALL("ApplicativeHelper::neg"); + return TermList(Term::createConstant(env.signature->getNotProxy())); +} +TermList ApplicativeHelper::equality(TermList sort){ + CALL("ApplicativeHelper::equality"); + return TermList(Term::create1(env.signature->getEqualityProxy(), sort)); +} +TermList ApplicativeHelper::pi(TermList sort){ + CALL("ApplicativeHelper::pi"); + return TermList(Term::create1(env.signature->getPiSigmaProxy("vPI"), sort)); +} +TermList ApplicativeHelper::sigma(TermList sort){ + CALL("ApplicativeHelper::sigma"); - - - - - - - + return TermList(Term::create1(env.signature->getPiSigmaProxy("vSIGMA"), sort)); +} #endif \ No newline at end of file diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index c3b4ddc804..429809c7b5 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -25,6 +25,53 @@ using namespace Kernel; using namespace Shell; #if VHOL + +class ApplicativeHelper { +public: + + static TermList app(TermList sort, TermList head, TermList arg); + static TermList app(TermList head, TermList arg); + static TermList app(TermList s1, TermList s2, TermList arg1, TermList arg2, bool shared = true); + static TermList app2(TermList sort, TermList head, TermList arg1, TermList arg2); + static TermList app2(TermList head, TermList arg1, TermList arg2); + static TermList app(TermList sort, TermList head, TermStack& terms); + static TermList app(TermList head, TermStack& terms); + + static TermList createLambdaTerm(TermList varSort, TermList termSort, TermList term); + static TermList getDeBruijnIndex(int index, TermList sort); + static TermList getNthArg(TermList arrowSort, unsigned argNum); + static TermList getResultApplieadToNArgs(TermList arrowSort, unsigned argNum); + static unsigned getArity(TermList sort); + + static void getHeadAndArgs(TermList term, TermList& head, TermStack& args); + static void getHeadAndArgs(Term* term, TermList& head, TermStack& args); + static void getHeadAndArgs(const Term* term, TermList& head, TermStack& args); + + // both functions below ONLY used in AppliArgsIT which is used in SKIKBO. Leaving for now in case need to + // revive +// static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); +// static void getHeadAndAllArgs(TermList term, TermList& head, TermStack& args); + + static void getArgSorts(TermList t, TermStack& sorts); + static Signature::Proxy getProxy(const TermList t); + static bool isBool(TermList t); + static bool isTrue(TermList term); + static bool isFalse(TermList term); + static bool canHeadReduce(TermList t); + static TermList createGeneralBinding(unsigned freshVar, TermList head, + TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, TermStack& args, bool surround = true); + static TermList surroundWithLambdas(TermList t, TermStack& sorts); + static TermList top(); + static TermList bottom(); + static TermList conj(); + static TermList disj(); + static TermList imp(); + static TermList neg(); + static TermList equality(TermList sort); + static TermList pi(TermList sort); + static TermList sigma(TermList sort); +}; + // reduce a term to normal form // uses a applicative order reduction strategy // Currently use a leftmost outermost stratgey @@ -64,6 +111,7 @@ class EtaNormaliser : public TermTransformer class RedexReducer : public TermTransformer { public: + typedef ApplicativeHelper AH; RedexReducer() { dontTransformSorts(); } @@ -103,34 +151,6 @@ class TermShifter : public TermTransformer int _minFreeIndex; }; -class ApplicativeHelper { -public: - - static TermList createAppTerm(TermList sort, TermList arg1, TermList arg2); - static TermList createAppTerm(TermList s1, TermList s2, TermList arg1, TermList arg2, bool shared = true); - static TermList createAppTerm3(TermList sort, TermList arg1, TermList arg2, TermList arg3); - static TermList createAppTerm(TermList sort, TermList arg1, TermList arg2, TermList arg3, TermList arg4); - static TermList createAppTerm(TermList sort, TermList head, TermStack& terms); - static TermList createAppTerm(TermList sort, TermList head, TermList* args, unsigned arity, bool shared = true); - static TermList createLambdaTerm(TermList varSort, TermList termSort, TermList term); - static TermList getDeBruijnIndex(int index, TermList sort); - static TermList getNthArg(TermList arrowSort, unsigned argNum); - static TermList getResultApplieadToNArgs(TermList arrowSort, unsigned argNum); - static unsigned getArity(TermList sort); - static void getHeadAndAllArgs(TermList term, TermList& head, TermStack& args); - static void getHeadAndArgs(TermList term, TermList& head, TermStack& args); - static void getHeadAndArgs(Term* term, TermList& head, TermStack& args); - static void getHeadAndArgs(const Term* term, TermList& head, TermStack& args); - static void getHeadAndArgs(const Term* term, TermList& head, Deque& args); - static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); - static void getArgSorts(TermList t, TermStack& sorts); - static Signature::Proxy getProxy(const TermList t); - static bool isBool(TermList t); - static bool isTrue(TermList term); - static bool isFalse(TermList term); - static TermList createGeneralBinding(unsigned freshVar, TermList head, - TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, TermStack& args); -}; #endif diff --git a/Kernel/Clause.cpp b/Kernel/Clause.cpp index c5dc0f7a43..503e4fba3f 100644 --- a/Kernel/Clause.cpp +++ b/Kernel/Clause.cpp @@ -189,6 +189,24 @@ void Clause::destroyIfUnnecessary() } } +bool Clause::isEmpty() const +{ +#if VHOL + //if(!env.property->higherOrder()){ +#endif + return _length == 0; +#if VHOL + /*} else { + // redefine the empty clause to be any claus consisting of + // only flex-flex pairs, since these are always solvable + for(unsigned i = 1; i < _length; i++) { + if(!_literals[i]->isFlexFlex()){ return false; } + } + return true; + }*/ +#endif +} + /** * Destroy the clause by deleting the clause itself and all of its * literals. diff --git a/Kernel/Clause.hpp b/Kernel/Clause.hpp index b513fc07fd..4dd07d650a 100644 --- a/Kernel/Clause.hpp +++ b/Kernel/Clause.hpp @@ -122,7 +122,7 @@ class Clause Literal** literals() { return _literals; } /** True if the clause is empty */ - bool isEmpty() const { return _length == 0; } + bool isEmpty() const; void destroy(); void destroyExceptInferenceObject(); diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 9886b17e76..629101fb2b 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -340,8 +340,15 @@ TermList AtomicSort::domain(){ return *nthArgument(0); } +TermList TermList::domain(){ + CALL("TermList::domain"); + ASS(isArrowSort()); + + return *term()->nthArgument(0); +} + TermList TermList::result(){ - CALL("AtomicSort::result"); + CALL("TermList::result"); ASS(isArrowSort()); return *term()->nthArgument(1); @@ -890,7 +897,8 @@ vstring Term::headToString() const } #if VHOL case Term::SF_LAMBDA: - ASSERTION_VIOLATION; + // we can get here if holPrinting set to RAW + return lambdaToString(sd); #endif case Term::SF_MATCH: { // we simply let the arguments be written out @@ -1021,6 +1029,31 @@ vstring Term::toString() const return s; } // Term::toString +vstring Term::lambdaToString(const SpecialTermData* sd, bool pretty) const +{ + CALL("Term::lambdaToString"); + + VList* vars = sd->getLambdaVars(); + SList* sorts = sd->getLambdaVarSorts(); + TermList lambdaExp = sd->getLambdaExp(); + + vstring varList = pretty ? "" : "["; + + VList::Iterator vs(vars); + SList::Iterator ss(sorts); + TermList sort; + bool first = true; + while(vs.hasNext()) { + varList += first ? "" : ", "; + first = false; + varList += Term::variableToString(vs.next()) + " : "; + varList += ss.next().toString(); + } + varList += pretty ? "" : "]"; + vstring lambda = pretty ? "λ" : "^"; + return "(" + lambda + varList + " : (" + lambdaExp.toString() + "))"; +} + #if VHOL vstring Term::toString(bool topLevel, IndexVarStack& st) const @@ -1051,7 +1084,6 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const ASS(!isLiteral()); - //TODO does not print polymorphic sorts correctly auto printSetting = env.options->holPrinting(); bool pretty = printSetting == Options::HPrinting::PRETTY; bool db = printSetting == Options::HPrinting::DB_INDICES; @@ -1060,30 +1092,10 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const if(isSpecial()){ const Term::SpecialTermData* sd = getSpecialData(); switch(functor()) { - case Term::SF_FORMULA: { + case Term::SF_FORMULA: return sd->getFormula()->toString(); - } - case Term:: SF_LAMBDA: { - VList* vars = sd->getLambdaVars(); - SList* sorts = sd->getLambdaVarSorts(); - TermList lambdaExp = sd->getLambdaExp(); - - vstring varList = pretty ? "" : "["; - - VList::Iterator vs(vars); - SList::Iterator ss(sorts); - TermList sort; - bool first = true; - while(vs.hasNext()) { - varList += first ? "" : ", "; - first = false; - varList += Term::variableToString(vs.next()) + " : "; - varList += ss.next().toString(); - } - varList += pretty ? "" : "]"; - vstring lambda = pretty ? "λ" : "^"; - return "(" + lambda + varList + " : (" + lambdaExp.toString() + "))"; - } + case Term:: SF_LAMBDA: + return lambdaToString(sd, pretty); default: // currently HOL doesn't support any other specials ASSERTION_VIOLATION; @@ -1126,8 +1138,10 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const vstring sep = pretty || db ? ". " : ": "; vstring lambda = pretty ? "λ" : "^"; + vstring lbrac = pretty ? "" : "("; + vstring rbrac = pretty ? "" : ")"; - res = "(" + lambda + bvar + sep + "(" + termToStr(*nthArgument(2),true,newSt) + "))"; + res = "(" + lambda + bvar + sep + lbrac + termToStr(*nthArgument(2),!pretty,newSt) + rbrac + ")"; return res; } if(deBruijnIndex().isSome() && !db){ @@ -1151,6 +1165,8 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const else if(head.isXOr()){ headStr = pretty ? "⊕" : "<~>"; } else if(head.isImp()){ headStr = pretty ? "⇒" : "=>"; } else if(head.isIff() || head.isEquals()){ headStr = pretty ? "≈" : "="; } + else if(ApplicativeHelper::isTrue(head)){ headStr = pretty ? "⊤" : "$true"; } + else if(ApplicativeHelper::isFalse(head)){ headStr = pretty ? "⊥" : "$false"; } else { headStr = head.term()->functionName(); if(head.deBruijnIndex().isSome()){ @@ -2283,7 +2299,7 @@ bool Literal::isFlexRigid() const TermList lhsHead = lhs.head(); TermList rhsHead = rhs.head(); - return !polarity() && (check(lhsHead, lhs, rhsHead) || check(rhsHead, rhs, lhsHead)); + return check(lhsHead, lhs, rhsHead) || check(rhsHead, rhs, lhsHead); } #endif diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 816a5e0f34..94836fafb0 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -207,6 +207,7 @@ class TermList { TermList rhs() const; TermList lambdaBody() const; TermList head(); + TermList domain(); TermList result(); TermList finalResult(); #endif @@ -451,6 +452,8 @@ class Term const unsigned functor() const { return _functor; } vstring toString() const; + // auxiliary function to print lambda specials + vstring lambdaToString(const SpecialTermData* sd, bool pretty = false) const; static vstring variableToString(unsigned var); static vstring variableToString(TermList var); diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 959d7fce58..3216a451ee 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -76,7 +76,7 @@ #include "Inferences/ArgCong.hpp" #include "Inferences/NegativeExt.hpp" //#include "Inferences/Narrow.hpp" -//#include "Inferences/PrimitiveInstantiation.hpp" +#include "Inferences/PrimitiveInstantiation.hpp" #include "Inferences/Choice.hpp" //#include "Inferences/ElimLeibniz.hpp" //#include "Inferences/SubVarSup.hpp" @@ -1577,11 +1577,11 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(new BoolEqToDiseq()); } - /*if(opt.complexBooleanReasoning() && prb.hasBoolVar() && + if(opt.complexBooleanReasoning() && prb.hasBoolVar() && prb.higherOrder() && !opt.lambdaFreeHol()){ gie->addFront(new PrimitiveInstantiation()); //TODO only add in some cases - gie->addFront(new ElimLeibniz()); - }*/ + // gie->addFront(new ElimLeibniz()); + } if(env.options->choiceReasoning()){ gie->addFront(new Choice()); diff --git a/Shell/InequalitySplitting.cpp b/Shell/InequalitySplitting.cpp index 502cfc5cf1..dde8ad738b 100644 --- a/Shell/InequalitySplitting.cpp +++ b/Shell/InequalitySplitting.cpp @@ -258,8 +258,7 @@ Literal* InequalitySplitting::makeNameLiteral(unsigned predNum, TermList arg, bo } else { TermList boolT = polarity ? TermList(Term::foolTrue()) : TermList(Term::foolFalse()); TermList head = TermList(Term::create(predNum, vars.size(), vars.begin())); - TermList headS = SortHelper::getResultSort(head.term()); - TermList t = ApplicativeHelper::createAppTerm(headS, head, arg); + TermList t = ApplicativeHelper::app(head, arg); return Literal::createEquality(true, t, boolT, AtomicSort::boolSort()); } #endif diff --git a/Shell/LambdaConversion.cpp b/Shell/LambdaConversion.cpp index 881dc462a5..d25aa8b2d2 100644 --- a/Shell/LambdaConversion.cpp +++ b/Shell/LambdaConversion.cpp @@ -55,8 +55,7 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) { CALL("LambdaConversion::convertLambda(Formula*)/2"); - TermList appTerm; //The resulting term to be pushed onto _toBeProcessed - TermList constant; //The HOL constant for various connectives + TermList appTerm; //The resulting term Connective conn = formula->connective(); @@ -69,16 +68,10 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) TermList rhs = convertLambda(*lit->nthArgument(1), map); TermList equalsSort = SortHelper::getEqualityArgumentSort(lit); + + appTerm = AH::app2(AH::equality(equalsSort), lhs, rhs); - unsigned eqProxy = env.signature->getEqualityProxy(); - constant = TermList(Term::create1(eqProxy, equalsSort)); - appTerm = AH::createAppTerm3(sortOf(constant), constant, lhs, rhs); - - if(!lit->polarity()){ - constant = TermList(Term::createConstant(env.signature->getNotProxy())); - appTerm = AH::createAppTerm(sortOf(constant), constant, appTerm); - } - return appTerm; + return lit->polarity() ? appTerm : AH::app(AH::neg(), appTerm); } case IFF: case IMP: @@ -87,19 +80,19 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) Formula* rhs = formula->right(); vstring name = (conn == IFF ? "vIFF" : (conn == IMP ? "vIMP" : "vXOR")); - constant = TermList(Term::createConstant(env.signature->getBinaryProxy(name))); + TermList constant = TermList(Term::createConstant(env.signature->getBinaryProxy(name))); TermList form1 = convertLambda(lhs, map); TermList form2 = convertLambda(rhs, map); - return AH::createAppTerm3(sortOf(constant), constant, form1, form2);; + return AH::app2(constant, form1, form2);; } case AND: case OR:{ FormulaList::Iterator argsIt(formula->args()); vstring name = (conn == AND ? "vAND" : "vOR"); - constant = TermList(Term::createConstant(env.signature->getBinaryProxy(name))); + TermList constant = TermList(Term::createConstant(env.signature->getBinaryProxy(name))); TermList form; unsigned count = 1; @@ -107,20 +100,19 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) Formula* arg = argsIt.next(); form = convertLambda(arg, map); if(count == 1){ - appTerm = AH::createAppTerm(sortOf(constant), constant, form); + appTerm = AH::app(constant, form); }else if(count == 2){ - appTerm = AH::createAppTerm(sortOf(appTerm), appTerm, form); + appTerm = AH::app(appTerm, form); }else{ - appTerm = AH::createAppTerm3(sortOf(constant), constant, appTerm, form); + appTerm = AH::app2(constant, appTerm, form); } count++; } return appTerm; } case NOT: { - constant = TermList(Term::createConstant(env.signature->getNotProxy())); TermList form = convertLambda(formula->uarg(), map); - return AH::createAppTerm(sortOf(constant), constant, form); + return AH::app(AH::neg(), form); } case FORALL: case EXISTS: { @@ -130,8 +122,7 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) VList* var = VList::singleton(0); TermList form = TermList(Term::createFormula(formula->qarg())); - vstring name = (conn == FORALL ? "vPI" : "vSIGMA"); - unsigned proxy = env.signature->getPiSigmaProxy(name); + bool pi = conn == FORALL; TermList s; while(vit.hasNext()){ @@ -140,8 +131,7 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) var->setHead(v); sort->setHead(s); auto t = TermList(Term::createLambda(form, var, sort, AtomicSort::boolSort())); - constant = TermList(Term::create1(proxy, s)); - form = AH::createAppTerm(sortOf(constant), constant, t); + form = AH::app((pi ? AH::pi(s) : AH::sigma(s)), t); } return convertLambda(form, map); } @@ -208,7 +198,7 @@ TermList LambdaConversion::convertLambda(TermList term, VarToIndexMap& map) TermList arg1 = *t->nthArgument(2); TermList arg2 = *t->nthArgument(3); - return AH::createAppTerm(s1, s2, convertLambda(arg1, map), convertLambda(arg2, map)); + return AH::app(s1, s2, convertLambda(arg1, map), convertLambda(arg2, map)); } @@ -257,11 +247,6 @@ TermList LambdaConversion::sortOf(TermList t) void LambdaConversion::addFunctionExtensionalityAxiom(Problem& prb) { CALL("LambdaConversion::addFunctionExtensionalityAxiom"); - - auto srtOf = [] (TermList t) { - ASS(t.isTerm()); - return SortHelper::getResultSort(t.term()); - }; TermList alpha = TermList(0, false); TermList beta = TermList(1, false); @@ -270,9 +255,9 @@ void LambdaConversion::addFunctionExtensionalityAxiom(Problem& prb) unsigned diff = env.signature->getDiff(); TermList diffT = TermList(Term::create2(diff, alpha, beta)); - TermList diffTApplied = AH::createAppTerm3(srtOf(diffT), diffT, x, y); - TermList lhs = AH::createAppTerm(alpha, beta, x, diffTApplied); - TermList rhs = AH::createAppTerm(alpha, beta, y, diffTApplied); + TermList diffTApplied = AH::app2(diffT, x, y); + TermList lhs = AH::app(alpha, beta, x, diffTApplied); + TermList rhs = AH::app(alpha, beta, y, diffTApplied); Clause* funcExtAx = new(2) Clause(2, NonspecificInference0(UnitInputType::AXIOM,InferenceRule::FUNC_EXT_AXIOM)); (*funcExtAx)[0] = Literal::createEquality(false, lhs, rhs, beta); @@ -298,9 +283,9 @@ void LambdaConversion::addChoiceAxiom(Problem& prb) unsigned choice = env.signature->getChoice(); TermList choiceT = TermList(Term::create1(choice, alpha)); - TermList choiceTApplied = AH::createAppTerm(alphaBool, alpha, choiceT, p); - TermList px = AH::createAppTerm(alpha, boolS, p, x); - TermList pchoiceT = AH::createAppTerm(alpha, boolS, p, choiceTApplied); + TermList choiceTApplied = AH::app(alphaBool, alpha, choiceT, p); + TermList px = AH::app(alpha, boolS, p, x); + TermList pchoiceT = AH::app(alpha, boolS, p, choiceTApplied); Clause* choiceAx = new(2) Clause(2, NonspecificInference0(UnitInputType::AXIOM,InferenceRule::CHOICE_AXIOM)); (*choiceAx)[0] = Literal::createEquality(true, px, TermList(Term::foolFalse()), boolS); @@ -316,12 +301,7 @@ void LambdaConversion::addChoiceAxiom(Problem& prb) void LambdaConversion::addProxyAxioms(Problem& prb) { - CALL("LambdaConversion::addProxyAxioms"); - - auto srtOf = [] (TermList t) { - ASS(t.isTerm()); - return SortHelper::getResultSort(t.term()); - }; + CALL("LambdaConversion::addProxyAxioms"); TermList s1 = TermList(0, false); TermList x = TermList(1, false); @@ -333,127 +313,106 @@ void LambdaConversion::addProxyAxioms(Problem& prb) TermList sk1 = TermList(Term::create1(skolem1, s1)); TermList sk2 = TermList(Term::create1(skolem2, s1)); - unsigned eqProxy = env.signature->getEqualityProxy(); - TermList constant = TermList(Term::create1(eqProxy, s1)); - Clause* eqAxiom1 = new(2) Clause(2, TheoryAxiom(InferenceRule::EQUALITY_PROXY_AXIOM)); - (*eqAxiom1)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), true); + (*eqAxiom1)[0] = toEquality(AH::app2(AH::equality(s1), x, y), true); (*eqAxiom1)[1] = Literal::createEquality(false,x,y,s1); eqAxiom1->inference().setProxyAxiomsDescendant(true); UnitList::push(eqAxiom1, prb.units()); Clause* eqAxiom2 = new(2) Clause(2, TheoryAxiom(InferenceRule::EQUALITY_PROXY_AXIOM)); - (*eqAxiom2)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), false); + (*eqAxiom2)[0] = toEquality(AH::app2(AH::equality(s1), x, y), false); (*eqAxiom2)[1] = Literal::createEquality(true,x,y,s1); eqAxiom2->inference().setProxyAxiomsDescendant(true); UnitList::push(eqAxiom2, prb.units()); - unsigned notProxy = env.signature->getNotProxy(); - constant = TermList(Term::createConstant(notProxy)); - Clause* notAxiom1 = new(2) Clause(2, TheoryAxiom(InferenceRule::NOT_PROXY_AXIOM)); - (*notAxiom1)[0] = toEquality(AH::createAppTerm(srtOf(constant), constant, x), true); + (*notAxiom1)[0] = toEquality(AH::app(AH::neg(), x), true); (*notAxiom1)[1] = toEquality(x, true); notAxiom1->inference().setProxyAxiomsDescendant(true); UnitList::push(notAxiom1, prb.units()); Clause* notAxiom2 = new(2) Clause(2, TheoryAxiom(InferenceRule::NOT_PROXY_AXIOM)); - (*notAxiom2)[0] = toEquality(AH::createAppTerm(srtOf(constant), constant, x), false); + (*notAxiom2)[0] = toEquality(AH::app(AH::neg(), x), false); (*notAxiom2)[1] = toEquality(x, false); notAxiom2->inference().setProxyAxiomsDescendant(true); UnitList::push(notAxiom2, prb.units()); - unsigned piProxy = env.signature->getPiSigmaProxy("vPI"); - constant = TermList(Term::create1(piProxy, s1)); - Clause* piAxiom1 = new(2) Clause(2, TheoryAxiom(InferenceRule::PI_PROXY_AXIOM)); - (*piAxiom1)[0] = toEquality(AH::createAppTerm(srtOf(constant), constant, x), true); - (*piAxiom1)[1] = toEquality(AH::createAppTerm(s1, AtomicSort::boolSort(), x, AH::createAppTerm(srtOf(sk1), sk1, x)), false); + (*piAxiom1)[0] = toEquality(AH::app(AH::pi(s1), x), true); + (*piAxiom1)[1] = toEquality(AH::app(s1, AtomicSort::boolSort(), x, AH::app(sk1, x)), false); piAxiom1->inference().setProxyAxiomsDescendant(true); UnitList::push(piAxiom1, prb.units()); Clause* piAxiom2 = new(2) Clause(2, TheoryAxiom(InferenceRule::PI_PROXY_AXIOM)); - (*piAxiom2)[0] = toEquality(AH::createAppTerm(srtOf(constant), constant, x), false); - (*piAxiom2)[1] = toEquality(AH::createAppTerm(s1, AtomicSort::boolSort(), x, y), true); + (*piAxiom2)[0] = toEquality(AH::app(AH::pi(s1), x), false); + (*piAxiom2)[1] = toEquality(AH::app(s1, AtomicSort::boolSort(), x, y), true); piAxiom2->inference().setProxyAxiomsDescendant(true); UnitList::push(piAxiom2, prb.units()); - unsigned sigmaProxy = env.signature->getPiSigmaProxy("vSIGMA"); - constant = TermList(Term::create1(sigmaProxy, s1)); - Clause* sigmaAxiom1 = new(2) Clause(2, TheoryAxiom(InferenceRule::SIGMA_PROXY_AXIOM)); - (*sigmaAxiom1)[0] = toEquality(AH::createAppTerm(srtOf(constant), constant, x), true); - (*sigmaAxiom1)[1] = toEquality(AH::createAppTerm(s1, AtomicSort::boolSort(), x, y), false); + (*sigmaAxiom1)[0] = toEquality(AH::app(AH::sigma(s1), x), true); + (*sigmaAxiom1)[1] = toEquality(AH::app(s1, AtomicSort::boolSort(), x, y), false); sigmaAxiom1->inference().setProxyAxiomsDescendant(true); UnitList::push(sigmaAxiom1, prb.units()); Clause* sigmaAxiom2 = new(2) Clause(2, TheoryAxiom(InferenceRule::SIGMA_PROXY_AXIOM)); - (*sigmaAxiom2)[0] = toEquality(AH::createAppTerm(srtOf(constant), constant, x), false); - (*sigmaAxiom2)[1] = toEquality(AH::createAppTerm(s1, AtomicSort::boolSort(), x, AH::createAppTerm(srtOf(sk2), sk2, x)), true); + (*sigmaAxiom2)[0] = toEquality(AH::app(AH::sigma(s1), x), false); + (*sigmaAxiom2)[1] = toEquality(AH::app(s1, AtomicSort::boolSort(), x, AH::app(sk2, x)), true); sigmaAxiom2->inference().setProxyAxiomsDescendant(true); UnitList::push(sigmaAxiom2, prb.units()); - unsigned impProxy = env.signature->getBinaryProxy("vIMP"); - constant = TermList(Term::createConstant(impProxy)); - Clause* impAxiom1 = new(2) Clause(2, TheoryAxiom(InferenceRule::IMPLIES_PROXY_AXIOM)); - (*impAxiom1)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), true); + (*impAxiom1)[0] = toEquality(AH::app2(AH::imp(), x, y), true); (*impAxiom1)[1] = toEquality(x, true); impAxiom1->inference().setProxyAxiomsDescendant(true); UnitList::push(impAxiom1, prb.units()); Clause* impAxiom2 = new(2) Clause(2, TheoryAxiom(InferenceRule::IMPLIES_PROXY_AXIOM)); - (*impAxiom2)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), true); + (*impAxiom2)[0] = toEquality(AH::app2(AH::imp(), x, y), true); (*impAxiom2)[1] = toEquality(y, false); impAxiom2->inference().setProxyAxiomsDescendant(true); UnitList::push(impAxiom2, prb.units()); Clause* impAxiom3 = new(3) Clause(3, TheoryAxiom(InferenceRule::IMPLIES_PROXY_AXIOM)); - (*impAxiom3)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), false); + (*impAxiom3)[0] = toEquality(AH::app2(AH::imp(), x, y), false); (*impAxiom3)[1] = toEquality(x, false); (*impAxiom3)[2] = toEquality(y, true); impAxiom3->inference().setProxyAxiomsDescendant(true); UnitList::push(impAxiom3, prb.units()); - unsigned andProxy = env.signature->getBinaryProxy("vAND"); - constant = TermList(Term::createConstant(andProxy)); - Clause* andAxiom1 = new(2) Clause(2, TheoryAxiom(InferenceRule::AND_PROXY_AXIOM)); - (*andAxiom1)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), false); + (*andAxiom1)[0] = toEquality(AH::app2(AH::conj(), x, y), false); (*andAxiom1)[1] = toEquality(x, true); andAxiom1->inference().setProxyAxiomsDescendant(true); UnitList::push(andAxiom1, prb.units()); Clause* andAxiom2 = new(2) Clause(2, TheoryAxiom(InferenceRule::AND_PROXY_AXIOM)); - (*andAxiom2)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), false); + (*andAxiom2)[0] = toEquality(AH::app2(AH::conj(), x, y), false); (*andAxiom2)[1] = toEquality(y, true); andAxiom2->inference().setProxyAxiomsDescendant(true); UnitList::push(andAxiom2, prb.units()); Clause* andAxiom3 = new(3) Clause(3, TheoryAxiom(InferenceRule::AND_PROXY_AXIOM)); - (*andAxiom3)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), true); + (*andAxiom3)[0] = toEquality(AH::app2(AH::conj(), x, y), true); (*andAxiom3)[1] = toEquality(x, false); (*andAxiom3)[2] = toEquality(y, false); andAxiom3->inference().setProxyAxiomsDescendant(true); UnitList::push(andAxiom3, prb.units()); - unsigned orProxy = env.signature->getBinaryProxy("vOR"); - constant = TermList(Term::createConstant(orProxy)); - Clause* orAxiom1 = new(2) Clause(2, TheoryAxiom(InferenceRule::OR_PROXY_AXIOM)); - (*orAxiom1)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), true); + (*orAxiom1)[0] = toEquality(AH::app2(AH::disj(), x, y), true); (*orAxiom1)[1] = toEquality(x, false); orAxiom1->inference().setProxyAxiomsDescendant(true); UnitList::push(orAxiom1, prb.units()); Clause* orAxiom2 = new(2) Clause(2, TheoryAxiom(InferenceRule::OR_PROXY_AXIOM)); - (*orAxiom2)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), true); + (*orAxiom2)[0] = toEquality(AH::app2(AH::disj(), x, y), true); (*orAxiom2)[1] = toEquality(y, false); orAxiom2->inference().setProxyAxiomsDescendant(true); UnitList::push(orAxiom2, prb.units()); Clause* orAxiom3 = new(3) Clause(3, TheoryAxiom(InferenceRule::OR_PROXY_AXIOM)); - (*orAxiom3)[0] = toEquality(AH::createAppTerm3(srtOf(constant), constant, x, y), false); + (*orAxiom3)[0] = toEquality(AH::app2(AH::disj(), x, y), false); (*orAxiom3)[1] = toEquality(x, true); (*orAxiom3)[2] = toEquality(y, true); orAxiom3->inference().setProxyAxiomsDescendant(true); diff --git a/Shell/Naming.cpp b/Shell/Naming.cpp index 12458991d5..677f8598d1 100644 --- a/Shell/Naming.cpp +++ b/Shell/Naming.cpp @@ -1209,8 +1209,7 @@ Literal* Naming::getDefinitionLiteral(Formula* f, VList* freeVars) { name_reuse->put(reuse_key, fun); } TermList head = TermList(Term::create(fun, typeVars.size(), typeVars.begin())); - TermList t = ApplicativeHelper::createAppTerm( - SortHelper::getResultSort(head.term()), head, termVars); + TermList t = ApplicativeHelper::app(head, termVars); return Literal::createEquality(true, TermList(t), TermList(Term::foolTrue()), AtomicSort::boolSort()); } #endif diff --git a/Shell/Options.cpp b/Shell/Options.cpp index f2fea669be..53dafef4f3 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1795,12 +1795,16 @@ void Options::init() _clausificationOnTheFly.addProblemConstraint(hasHigherOrder()); _clausificationOnTheFly.tag(OptionTag::HIGHER_ORDER); - - _piSet = ChoiceOptionValue("prim_inst_set","piset",PISet::ALL_EXCEPT_NOT_EQ, + _piSet = ChoiceOptionValue("prim_inst_set","piset",PISet::PRAGMATIC, {"all", "all_but_not_eq", - "false_true_not", - "small_set"}); + "not", + "small_set", + "pragmatic", + "and", + "or", + "equals", + "pi_sigma" }); _piSet.description="Controls the set of equations to use in primitive instantiation"; _lookup.insert(&_piSet); _piSet.addProblemConstraint(hasHigherOrder()); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index b749a31816..a33e9bbdae 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -740,8 +740,13 @@ class Options enum class PISet : unsigned int { ALL = 0, ALL_EXCEPT_NOT_EQ = 1, - FALSE_TRUE_NOT = 2, - FALSE_TRUE_NOT_EQ_NOT_EQ = 3 + NOT = 2, + NOT_EQ_NOT_EQ = 3, + PRAGMATIC = 4, + AND = 5, + OR = 6, + EQUALS = 7, + PI_SIGMA = 8 }; enum class HPrinting : unsigned int { diff --git a/Shell/Preprocess.cpp b/Shell/Preprocess.cpp index e685e06938..fb48297209 100644 --- a/Shell/Preprocess.cpp +++ b/Shell/Preprocess.cpp @@ -739,6 +739,7 @@ void Preprocess::preprocess3 (Problem& prb) UnitList::DelIterator us(prb.units()); while (us.hasNext()) { Unit* u = us.next(); + cout << "U " << u->toString() << endl; Unit* v = preprocess3(u #if VHOL ,prb.higherOrder() diff --git a/Shell/Skolem.cpp b/Shell/Skolem.cpp index d23b4efbd4..aab4a42ed0 100644 --- a/Shell/Skolem.cpp +++ b/Shell/Skolem.cpp @@ -547,8 +547,7 @@ Formula* Skolem::skolemise (Formula* f) if(!successfully_reused) sym = addSkolemFunction(typeVars.size(), 0, skSymSort, v, typeVars.size()); TermList head = TermList(Term::create(sym, typeVars.size(), typeVars.begin())); - skolemTerm = ApplicativeHelper::createAppTerm( - SortHelper::getResultSort(head.term()), head, termVars).term(); + skolemTerm = ApplicativeHelper::app(head, termVars).term(); } #endif _introducedSkolemSyms.push(make_pair(skolemisingTypeVar, sym)); diff --git a/Shell/Statistics.cpp b/Shell/Statistics.cpp index 6cee7dcab6..514e991c77 100644 --- a/Shell/Statistics.cpp +++ b/Shell/Statistics.cpp @@ -198,7 +198,7 @@ void Statistics::explainRefutationNotFound(ostream& out) out << "Refutation not found, SMT solver inside AVATAR failed to evaluate a literal\n"; } else { - out << "Refutation not found, incomplete strategy"; + out << "Refutation not found, incomplete strategy\n"; } } diff --git a/Test/SyntaxSugar.hpp b/Test/SyntaxSugar.hpp index f912a1860a..46685b63e1 100644 --- a/Test/SyntaxSugar.hpp +++ b/Test/SyntaxSugar.hpp @@ -254,7 +254,7 @@ class SyntaxSugarGlobals void setApply() { apply = [](TermList sort, TermList t1, TermList t2) { - TermList app = ApplicativeHelper::createAppTerm(sort, t1, t2); + TermList app = ApplicativeHelper::app(sort, t1, t2); return app; }; } diff --git a/UnitTests/tBetaReduction.cpp b/UnitTests/tBetaReduction.cpp index f80dbb0468..913bba7ee5 100644 --- a/UnitTests/tBetaReduction.cpp +++ b/UnitTests/tBetaReduction.cpp @@ -97,6 +97,23 @@ TEST_FUN(beta_reduction05) { ASS_EQ(reduced, toDeBruijnIndices(res)); } +TEST_FUN(beta_reduction06) { + DECL_SORT(srt) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(y, 1, srt) + DECL_CONST(a, srt) + DECL_CONST(b, srt) + DECL_ARROW_SORT(fSrt, {srt, srt, srt}) + DECL_CONST(f, fSrt) + + BetaNormaliser bn; + auto t = ap( ap( lam(x, lam(y, ap(ap(f, x), y))), a), b) ; + auto res = ap(ap(f, a), b); + auto reduced = bn.normalise( toDeBruijnIndices(t) ); + + ASS_EQ(reduced, res.sugaredExpr()); +} + TEST_FUN(eta_reduction01) { DECL_SORT(srt) DECL_HOL_VAR(x, 0, srt) From 841239d7c50c7b6608b564932ad6f8a8f529c3ad Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 22 Sep 2022 14:50:56 +0100 Subject: [PATCH 034/210] various extensions and bug fixes. Can currently solve many problems not provable by other solvers --- CMakeLists.txt | 10 +- Indexing/IndexManager.cpp | 6 +- Inferences/Choice.cpp | 44 +-- Inferences/ElimLeibniz.cpp | 24 +- Inferences/FlexFlexSimplify.cpp | 45 +++ Inferences/FlexFlexSimplify.hpp | 42 +++ Inferences/ImitateProject.cpp | 38 +-- Inferences/InferenceEngine.cpp | 17 +- Inferences/InferenceEngine.hpp | 4 +- Inferences/Narrow.cpp | 287 ----------------- Inferences/Narrow.hpp | 58 ---- Inferences/PrimitiveInstantiation.cpp | 4 +- Inferences/SubVarSup.cpp | 356 ---------------------- Inferences/SubVarSup.hpp | 63 ---- Kernel/ApplicativeHelper.cpp | 58 ++-- Kernel/ApplicativeHelper.hpp | 10 +- Kernel/Clause.cpp | 20 +- Kernel/Inference.cpp | 2 + Kernel/Inference.hpp | 2 + Kernel/LiteralSelector.cpp | 6 +- Kernel/MismatchHandler.cpp | 90 +++++- Kernel/MismatchHandler.hpp | 40 ++- Kernel/RobSubstitution.cpp | 14 +- Kernel/Signature.hpp | 4 + Kernel/SortHelper.cpp | 4 +- Kernel/Term.cpp | 33 +- Kernel/Term.hpp | 5 +- Kernel/TermIterators.cpp | 4 +- Kernel/TermTransformer.cpp | 2 + Saturation/SaturationAlgorithm.cpp | 17 +- Shell/FunctionDefinition.cpp | 6 +- Shell/LambdaConversion.cpp | 2 +- Shell/Options.hpp | 1 + Shell/Preprocess.cpp | 1 - Shell/Property.cpp | 1 + Shell/Property.hpp | 5 +- Test/TestUtils.cpp | 17 +- UnitTests/tUnificationWithAbstraction.cpp | 143 ++++++++- 38 files changed, 512 insertions(+), 973 deletions(-) create mode 100644 Inferences/FlexFlexSimplify.cpp create mode 100644 Inferences/FlexFlexSimplify.hpp delete mode 100644 Inferences/Narrow.cpp delete mode 100644 Inferences/Narrow.hpp delete mode 100644 Inferences/SubVarSup.cpp delete mode 100644 Inferences/SubVarSup.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 9db24aa022..dc3d884fc4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -320,22 +320,20 @@ set(VAMPIRE_KERNEL_SOURCES Inferences/CNFOnTheFly.hpp Inferences/BetaEtaISE.cpp Inferences/BetaEtaISE.hpp + Inferences/FlexFlexSimplify.cpp + Inferences/FlexFlexSimplify.hpp Inferences/ImitateProject.hpp Inferences/ImitateProject.cpp Inferences/ArgCong.hpp Inferences/ArgCong.cpp Inferences/NegativeExt.cpp Inferences/NegativeExt.hpp -# Inferences/Narrow.hpp -# Inferences/Narrow.cpp -# Inferences/SubVarSup.hpp -# Inferences/SubVarSup.cpp Inferences/BoolEqToDiseq.hpp Inferences/BoolEqToDiseq.cpp Inferences/PrimitiveInstantiation.cpp Inferences/PrimitiveInstantiation.hpp -# Inferences/ElimLeibniz.cpp -# Inferences/ElimLeibniz.hpp + Inferences/ElimLeibniz.cpp + Inferences/ElimLeibniz.hpp Inferences/Choice.cpp Inferences/Choice.hpp # Inferences/Injectivity.hpp diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 789a32b3b2..3c60f46271 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -44,9 +44,9 @@ IndexManager::IndexManager(SaturationAlgorithm* alg) : _alg(alg), _handler() _handler.addHandler(make_unique(env.options->unificationWithAbstraction())); } #if VHOL - if((env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) - && env.property->higherOrder()){ - _handler.addHandler(make_unique()); + if(env.property->higherOrder()){ + _handler.addHandler(make_unique()); + _handler.addHandler(make_unique()); } #endif } diff --git a/Inferences/Choice.cpp b/Inferences/Choice.cpp index ec73d6f6aa..01eebb72ae 100644 --- a/Inferences/Choice.cpp +++ b/Inferences/Choice.cpp @@ -52,8 +52,7 @@ Clause* Choice::createChoiceAxiom(TermList op, TermList set) { CALL("Choice::createChoiceAxiom"); - TermList opType = SortHelper::getResultSort(op.term()); - TermList setType = AH::getNthArg(opType, 1); + TermList setSort = SortHelper::getResultSort(op.term()).result(); unsigned max = 0; FormulaVarIterator fvi(&set); @@ -65,9 +64,9 @@ Clause* Choice::createChoiceAxiom(TermList op, TermList set) } TermList freshVar = TermList(max+1, false); - TermList t1 = AH::app(setType, set, freshVar); - TermList t2 = AH::app(opType, op, set); - t2 = AH::app(setType, set, t2); + TermList t1 = AH::app(setSort, set, freshVar); + TermList t2 = AH::app(op, set); + t2 = AH::app(setSort, set, t2); Clause* axiom = new(2) Clause(2, NonspecificInference0(UnitInputType::AXIOM, InferenceRule::CHOICE_AXIOM)); @@ -82,11 +81,11 @@ struct Choice::AxiomsIterator AxiomsIterator(TermList term) { CALL("Choice::AxiomsIterator"); + ASS(term.isApplication()); - ASS(term.isTerm()); _set = term.rhs(); - _headSort = AtomicSort::arrowSort(*term.term()->nthArgument(0),*term.term()->nthArgument(1)); - _resultSort = AH::getResultApplieadToNArgs(_headSort, 1); + _headSort = AH::lhsSort(term); + _resultSort = SortHelper::getResultSort(term.term()); //cout << "the result sort is " + _resultSort.toString() << endl; @@ -156,11 +155,11 @@ struct Choice::ResultFn ResultFn(){} VirtualIterator operator() (TermList term){ - TermList op = *term.term()->nthArgument(2); + TermList op = term.lhs(); if(op.isVar()){ return pvi(AxiomsIterator(term)); } else { - Clause* axiom = createChoiceAxiom(op, *term.term()->nthArgument(3)); + Clause* axiom = createChoiceAxiom(op, term.rhs()); env.statistics->choiceInstances++; return pvi(getSingletonIterator(axiom)); } @@ -174,21 +173,22 @@ struct Choice::IsChoiceTerm TermStack args; TermList head; ApplicativeHelper::getHeadAndArgs(t, head, args); - if(args.size() != 1){ return false; } + if(args.size() == 1){ - TermList headSort = AtomicSort::arrowSort(*t.term()->nthArgument(0), *t.term()->nthArgument(1)); + TermList headSort = AH::lhsSort(t); - TermList tv = TermList(0, false); - TermList o = AtomicSort::boolSort(); - TermList sort = AtomicSort::arrowSort(AtomicSort::arrowSort(tv, o), tv); - - static RobSubstitution subst; - subst.reset(); - - subst.reset(); - return ((head.isVar() || env.signature->isChoiceOperator(head.term()->functor())) && - subst.match(sort,0,headSort,1)); + TermList tv = TermList(0, false); + TermList o = AtomicSort::boolSort(); + TermList sort = AtomicSort::arrowSort(AtomicSort::arrowSort(tv, o), tv); + + static RobSubstitution subst; + subst.reset(); + subst.reset(); + return ((head.isVar() || env.signature->isChoiceOperator(head.term()->functor())) && + subst.match(sort,0,headSort,1)); + } + return false; } }; diff --git a/Inferences/ElimLeibniz.cpp b/Inferences/ElimLeibniz.cpp index 1446ae61f6..884dfbbfcf 100644 --- a/Inferences/ElimLeibniz.cpp +++ b/Inferences/ElimLeibniz.cpp @@ -108,13 +108,11 @@ ClauseIterator ElimLeibniz::generateClauses(Clause* premise) { CALL("ElimLeibniz::generateClauses"); - typedef SortHelper SH; - static TermStack args; TermList head; - Stack positiveLits; - Stack negativeLits; + LiteralStack positiveLits; + LiteralStack negativeLits; Literal* posLit; Literal* negLit; @@ -140,8 +138,8 @@ ClauseIterator ElimLeibniz::generateClauses(Clause* premise) goto afterLoop; } } - if(pol){ positiveLits.push(lit); } else - { negativeLits.push(lit); } + if(pol){ positiveLits.push(lit); } + else { negativeLits.push(lit); } } return ClauseIterator::getEmpty(); @@ -160,7 +158,8 @@ ClauseIterator ElimLeibniz::generateClauses(Clause* premise) TermList var = TermList(lerPosLit.var, false); - TermList vEquals = AH::equals(argS); + TermList vEquals = AH::equality(argS); + // creating the term = arg (which is eta-equivalent to ^x. arg = x) TermList t1 = AH::app(vEquals, lerNegLit.arg); if(subst.unify(var, 0, t1, 0)){ Clause* c = createConclusion(premise, newLit, posLit, negLit, subst); @@ -168,14 +167,9 @@ ClauseIterator ElimLeibniz::generateClauses(Clause* premise) subst.reset(); } - TermList t2 = AH::app(vEquals, lerPosLit.arg); - - TermList typeArgs[] = {argS, AtomicSort::boolSort(), AtomicSort::boolSort()}; - unsigned b_comb = env.signature->getCombinator(Signature::B_COMB); - - TermList bComb = TermList(Term::create(b_comb, 3, typeArgs)); - TermList vNot = TermList(Term::createConstant(env.signature->getNotProxy())); - t2 = AH::createAppTerm3(SH::getResultSort(bComb.term()), bComb,vNot,t2); + TermList db = AH::getDeBruijnIndex(0, argS); + // creating the term ^x. arg != x + TermList t2 = AH::lambda(argS, AH::app(AH::neg(), AH::app(AH::app(vEquals, lerPosLit.arg),db))); if(subst.unify(var, 0, t2, 0)){ Clause* c = createConclusion(premise, newLit, posLit, negLit, subst); diff --git a/Inferences/FlexFlexSimplify.cpp b/Inferences/FlexFlexSimplify.cpp new file mode 100644 index 0000000000..65eb207623 --- /dev/null +++ b/Inferences/FlexFlexSimplify.cpp @@ -0,0 +1,45 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file CombinatorDemodISE.cpp + * Implements class CombinatorDemodISE. + */ + +#if VHOL + +#include "Kernel/Term.hpp" +#include "Kernel/Clause.hpp" +#include "Kernel/Inference.hpp" +#include "Kernel/SortHelper.hpp" +#include "FlexFlexSimplify.hpp" + +using namespace Lib; +using namespace Kernel; +using namespace Inferences; + + +Clause* FlexFlexSimplify::simplify(Clause* c) +{ + CALL("FlexFlexSimplify::simplify"); + + if(c->isEmpty()) return c; + + for(unsigned i = 0; i < c->length(); i++){ + Literal* lit = (*c)[i]; + if(!lit->isFlexFlex()){ + return c; + } + } + // all flex flex, return the empty clause + return new(0) Clause(0, SimplifyingInference1(InferenceRule::FLEX_FLEX_SIMPLIFY, c)); +} + +#endif + diff --git a/Inferences/FlexFlexSimplify.hpp b/Inferences/FlexFlexSimplify.hpp new file mode 100644 index 0000000000..66031c0129 --- /dev/null +++ b/Inferences/FlexFlexSimplify.hpp @@ -0,0 +1,42 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file CombinatorDemodISE.hpp + * Defines class CombinatorDemodISE. + */ + + +#ifndef __FlexFlexSimplify__ +#define __FlexFlexSimplify__ + +#if VHOL + +#include "Forwards.hpp" +#include "InferenceEngine.hpp" +#include "Kernel/TermTransformer.hpp" + +namespace Inferences { + + +class FlexFlexSimplify +: public ImmediateSimplificationEngine +{ +public: + CLASS_NAME(FlexFlexSimplify); + USE_ALLOCATOR(FlexFlexSimplify); + + Clause* simplify(Clause* cl); +}; + +}; + +#endif + +#endif /* __BetaEtaSimplify__ */ diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp index 61f948b6ab..ce26afd914 100644 --- a/Inferences/ImitateProject.cpp +++ b/Inferences/ImitateProject.cpp @@ -75,23 +75,16 @@ struct ImitateProject::ResultFn } } - Clause* createRes(InferenceRule rule, LiteralStack& constraints, Literal* lit, bool sameHeads) + Clause* createRes(InferenceRule rule) { CALL("ImitateProject::ResultFn::createRes"); - unsigned newLen = sameHeads ? _cLen - 1 + constraints.length() : _cLen; - Clause* res = new(newLen) Clause(newLen, GeneratingInference1(rule, _cl)); + Clause* res = new(_cLen) Clause(_cLen, GeneratingInference1(rule, _cl)); - unsigned next = 0; for(unsigned i=0;i<_cLen;i++) { Literal* curr=(*_cl)[i]; - if(curr!=lit || !sameHeads) { - Literal* currAfter = SubstHelper::apply(curr, _subst); - (*res)[next++] = currAfter; - } - } - while(!constraints.isEmpty()){ - (*res)[next++] = constraints.pop(); + Literal* currAfter = SubstHelper::apply(curr, _subst); + (*res)[i] = currAfter; } return res; } @@ -132,9 +125,6 @@ struct ImitateProject::ResultFn TermStack argsRigid; TermStack sortsFlex; //sorts of arguments of flex head TermStack sortsRigid; - // after an imitation, or the projection of an argument with a rigid head, - // we create a new set of constrainst literals - LiteralStack newConstraints; AH::getHeadAndArgs(flexTerm, headFlex, argsFlex); AH::getHeadAndArgs(rigidTerm, headRigid, argsRigid); @@ -150,40 +140,32 @@ struct ImitateProject::ResultFn deBruijnIndices.push(AH::getDeBruijnIndex(i, sortsFlex[i])); } - TermStack args; - { // imitation unsigned fVar = _maxVar; - TermList pb = AH::createGeneralBinding(fVar,headRigid,argsFlex,sortsFlex,deBruijnIndices,args); + TermList pb = AH::createGeneralBinding(fVar,headRigid,argsFlex,sortsFlex,deBruijnIndices); _subst.bind(headFlex.var(), pb); - getConstraints(args, argsRigid, sortsRigid, newConstraints); - results.push(createRes(InferenceRule::IMITATE, newConstraints, lit, true)); + results.push(createRes(InferenceRule::IMITATE)); } - + // projections for(unsigned i = 0; i < argsFlex.size(); i++){ // try and project each of the arguments of the flex head in turn _subst.reset(); - args.reset(); TermList arg = argsFlex[i]; TermList argSort = sortsFlex[i]; // sort wrong, cannot project this arg if(argSort.finalResult() != sort) continue; - TermList head; - AH::getHeadAndArgs(arg, head, args); + TermList head = arg.head(); // argument has a rigid head different to that of rhs. no point projecting if(!head.isVar() && head != headRigid) continue; unsigned fVar = _maxVar; - TermList pb = AH::createGeneralBinding(fVar,deBruijnIndices[i],argsFlex,sortsFlex,deBruijnIndices,args); + TermList pb = AH::createGeneralBinding(fVar,deBruijnIndices[i],argsFlex,sortsFlex,deBruijnIndices); _subst.bind(headFlex.var(), pb); - if(!head.isVar()){ - getConstraints(args, argsRigid, sortsRigid, newConstraints); - } - results.push(createRes(InferenceRule::PROJECT, newConstraints, lit, !head.isVar())); + results.push(createRes(InferenceRule::PROJECT)); } diff --git a/Inferences/InferenceEngine.cpp b/Inferences/InferenceEngine.cpp index 01057d8b91..b45b1be604 100644 --- a/Inferences/InferenceEngine.cpp +++ b/Inferences/InferenceEngine.cpp @@ -282,13 +282,14 @@ Clause* ChoiceDefinitionISE::simplify(Clause* c) TermList x, f; - if(!isPositive(lit1) && is_of_form_xy(lit1, x) && - isPositive(lit2) && is_of_form_xfx(lit2, x, f)){ + if(!isPositive(lit1) && isOfFormXY(lit1, x) && + isPositive(lit2) && isOfFormXfX(lit2, x, f)){ unsigned fun = f.term()->functor(); env.signature->addChoiceOperator(fun); return 0; - } else if(!isPositive(lit2) && is_of_form_xy(lit2, x) && - isPositive(lit1) && is_of_form_xfx(lit1, x, f)) { + } else + if(!isPositive(lit2) && isOfFormXY(lit2, x) && + isPositive(lit1) && isOfFormXfX(lit1, x, f)) { unsigned fun = f.term()->functor(); env.signature->addChoiceOperator(fun); return 0; @@ -312,8 +313,8 @@ bool ChoiceDefinitionISE::isPositive(Literal* lit) { return false; }; -bool ChoiceDefinitionISE::is_of_form_xy(Literal* lit, TermList& x){ - CALL("ChoiceDefinitionISE::is_of_form_xy"); +bool ChoiceDefinitionISE::isOfFormXY(Literal* lit, TermList& x){ + CALL("ChoiceDefinitionISE::isOfFormXY"); TermList term = AH::isBool(*lit->nthArgument(0)) ? *lit->nthArgument(1) : *lit->nthArgument(0); @@ -322,8 +323,8 @@ bool ChoiceDefinitionISE::is_of_form_xy(Literal* lit, TermList& x){ return (x.isVar() && args.size() == 1 && args[0].isVar()); } -bool ChoiceDefinitionISE::is_of_form_xfx(Literal* lit, TermList x, TermList& f){ - CALL("ChoiceDefinitionISE::is_of_form_xfx"); +bool ChoiceDefinitionISE::isOfFormXfX(Literal* lit, TermList x, TermList& f){ + CALL("ChoiceDefinitionISE::isOfFormXfX"); TermList term = AH::isBool(*lit->nthArgument(0)) ? *lit->nthArgument(1) : *lit->nthArgument(0); diff --git a/Inferences/InferenceEngine.hpp b/Inferences/InferenceEngine.hpp index d101b432f6..be325d66bb 100644 --- a/Inferences/InferenceEngine.hpp +++ b/Inferences/InferenceEngine.hpp @@ -439,8 +439,8 @@ class ChoiceDefinitionISE bool isPositive(Literal* lit); - bool is_of_form_xy(Literal* lit, TermList& x); - bool is_of_form_xfx(Literal* lit, TermList x, TermList& f); + bool isOfFormXY(Literal* lit, TermList& x); + bool isOfFormXfX(Literal* lit, TermList x, TermList& f); }; class TautologyDeletionISE2 diff --git a/Inferences/Narrow.cpp b/Inferences/Narrow.cpp deleted file mode 100644 index 06d76465eb..0000000000 --- a/Inferences/Narrow.cpp +++ /dev/null @@ -1,287 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file Narrow.cpp - * Implements class Narrow. - */ - -#include "Debug/RuntimeStatistics.hpp" - -#include "Lib/Environment.hpp" -#include "Lib/Int.hpp" -#include "Lib/Metaiterators.hpp" -#include "Lib/PairUtils.hpp" -#include "Lib/VirtualIterator.hpp" - -#include "Kernel/Clause.hpp" -#include "Kernel/ColorHelper.hpp" -#include "Kernel/EqHelper.hpp" -#include "Kernel/Inference.hpp" -#include "Kernel/Ordering.hpp" -#include "Kernel/SortHelper.hpp" -#include "Kernel/Term.hpp" -#include "Kernel/TermIterators.hpp" -#include "Kernel/Unit.hpp" -#include "Kernel/LiteralSelector.hpp" -#include "Kernel/RobSubstitution.hpp" -#include "Kernel/ApplicativeHelper.hpp" -#include "Kernel/Signature.hpp" - -#include "Indexing/Index.hpp" -#include "Indexing/IndexManager.hpp" -#include "Indexing/TermSharing.hpp" - -#include "Saturation/SaturationAlgorithm.hpp" - -#include "Shell/Options.hpp" -#include "Shell/Statistics.hpp" - -#include "Narrow.hpp" - -#if VDEBUG -#include -using namespace std; -#endif - -using namespace Inferences; -using namespace Lib; -using namespace Kernel; -using namespace Indexing; -using namespace Saturation; - -void Narrow::attach(SaturationAlgorithm* salg) -{ - CALL("Narrow::attach"); - - GeneratingInferenceEngine::attach(salg); - _index=static_cast ( - _salg->getIndexManager()->request(NARROWING_INDEX) ); -} - -void Narrow::detach() -{ - CALL("Narrow::detach"); - - _index=0; - _salg->getIndexManager()->release(NARROWING_INDEX); - GeneratingInferenceEngine::detach(); -} - -struct Narrow::ApplicableNarrowsFn -{ - ApplicableNarrowsFn(NarrowingIndex* index) : _index(index) {} - VirtualIterator, TermQueryResult> > operator()(pair arg) - { - CALL("Narrow::ApplicableRewritesFn()"); - - return pvi( pushPairIntoRightIterator(arg, _index->getUnifications(arg.second, true)) ); - } -private: - NarrowingIndex* _index; -}; - -struct Narrow::RewriteableSubtermsFn -{ - RewriteableSubtermsFn(Ordering& ord) : _ord(ord) {} - - VirtualIterator > operator()(Literal* lit) - { - CALL("Narrow::RewriteableSubtermsFn()"); - - return pvi( pushPairIntoRightIterator(lit, - EqHelper::getNarrowableSubtermIterator(lit, _ord)) ); - } - -private: - Ordering& _ord; -}; - - -struct Narrow::ResultFn -{ - ResultFn(Clause* cl, Narrow& parent) : _cl(cl), _parent(parent) {} - Clause* operator()(pair, TermQueryResult> arg) - { - CALL("Narrow::ResultFn::operator()"); - - TermQueryResult& qr = arg.second; - return _parent.performNarrow(_cl, arg.first.first, arg.first.second, qr.term, - qr.literal, qr.substitution); - } -private: - Clause* _cl; - Narrow& _parent; -}; - -ClauseIterator Narrow::generateClauses(Clause* premise) -{ - CALL("Narrow::generateClauses"); - - //cout << "Narrow with " << premise->toString() << endl; - - auto it1 = premise->getSelectedLiteralIterator(); - - auto it2 = getMapAndFlattenIterator(it1,RewriteableSubtermsFn(_salg->getOrdering())); - auto it3 = getMapAndFlattenIterator(it2,ApplicableNarrowsFn(_index)); - - //Perform Narrow - auto it4 = getMappingIterator(it3,ResultFn(premise, *this)); - - auto it5 = getFilteredIterator(it4,NonzeroFn()); - - return pvi( it5 ); -} - - - -/** - * If Narrow should be performed, return result of the Narrow, - * otherwise return 0. - */ -Clause* Narrow::performNarrow( - Clause* nClause, Literal* nLiteral, TermList nTerm, - TermList combAxLhs, Literal* combAx, ResultSubstitutionSP subst) -{ - CALL("Narrow::performNarrow"); - // we want the rwClause and eqClause to be active - ASS(nClause->store()==Clause::ACTIVE); - ASS(nTerm.isTerm()); - //if(nClause->number() == 276){ - //cout << "performNarrow with " << nClause->toString() /*<< "\n and " << nLiteral->toString() << "\n and " << nTerm.toString()*/ << endl; - //cout << "the term being narrowed " << nTerm.toString() << endl; - //cout << "combAxLhs " << combAxLhs.toString() << endl; - //} - - static TermStack args; - TermList head; - ApplicativeHelper::getHeadAndArgs(nTerm, head, args); - ASS(head.isVar()); - - TermList headLHS = ApplicativeHelper::getHead(combAxLhs); - ASS(ApplicativeHelper::isComb(headLHS)); - Signature::Combinator comb = ApplicativeHelper::getComb(headLHS); - unsigned argNum = args.size(); - - //0 means unlimited - bool incr = false; - unsigned lim = env.options->maxXXNarrows(); - if(lim != 0){ - if(comb < Signature::I_COMB && argNum == 1){ - if(nClause->inference().xxNarrows() == lim){ - env.statistics->discardedNonRedundantClauses++; - return 0; - } else { - incr = true; - } - } - } - - unsigned cLen = nClause->length(); - TermList combAxRhs = EqHelper::getOtherEqualitySide(combAx, combAxLhs); - - Ordering& ordering = _salg->getOrdering(); - - TermList combAxRhsS = subst->apply(combAxRhs, 1); - Literal* nLiteralS = subst->apply(nLiteral, 0); //0 is query bank - TermList nTermS = subst->apply(nTerm, 0); - - //cout << "Check ordering on " << tgtTermS.toString() << " and " << rwTermS.toString() << endl; - - TermList arg0=*nLiteralS->nthArgument(0); - TermList arg1=*nLiteralS->nthArgument(1); - - if(!arg0.containsSubterm(nTermS)) { - if(Ordering::isGorGEorE(ordering.getEqualityArgumentOrder(nLiteralS))) { - return 0; - } - } else if(!arg1.containsSubterm(nTermS)) { - if(Ordering::isGorGEorE(Ordering::reverse(ordering.getEqualityArgumentOrder(nLiteralS)))) { - return 0; - } - } - - Literal* tgtLitS = EqHelper::replace(nLiteralS,nTermS,combAxRhsS); - - //TODO required? - if(EqHelper::isEqTautology(tgtLitS)) { - return 0; - } - - InferenceRule rule; - if(comb == Signature::S_COMB && argNum == 1){ - rule = InferenceRule::SXX_NARROW; - } else if(comb == Signature::S_COMB && argNum == 2){ - rule = InferenceRule::SX_NARROW; - } else if(comb == Signature::S_COMB && argNum == 3){ - rule = InferenceRule::S_NARROW; - } else if(comb == Signature::C_COMB && argNum == 1){ - rule = InferenceRule::CXX_NARROW; - } else if(comb == Signature::C_COMB && argNum == 2){ - rule = InferenceRule::CX_NARROW; - } else if(comb == Signature::C_COMB && argNum == 3){ - rule = InferenceRule::C_NARROW; - } else if(comb == Signature::B_COMB && argNum == 1){ - rule = InferenceRule::BXX_NARROW; - } else if(comb == Signature::B_COMB && argNum == 2){ - rule = InferenceRule::BX_NARROW; - } else if(comb == Signature::B_COMB && argNum == 3){ - rule = InferenceRule::B_NARROW; - } else if(comb == Signature::K_COMB && argNum == 1){ - rule = InferenceRule::KX_NARROW; - } else if(comb == Signature::K_COMB && argNum == 2){ - rule = InferenceRule::K_NARROW; - } else { - rule = InferenceRule::I_NARROW; - } - - Inference inf(GeneratingInference1(rule, nClause)); - if(incr){ inf.incXXNarrows(); } - - // If proof extra is on let's compute the positions we have performed - // Narrow on - /*if(env.options->proofExtra()==Options::ProofExtra::FULL){ - - inf->setExtra(extra); - }*/ //TODO update proof extra - - bool afterCheck = getOptions().literalMaximalityAftercheck() && _salg->getLiteralSelector().isBGComplete(); - - Clause* res = new(cLen) Clause(cLen, inf); - - (*res)[0] = tgtLitS; - int next = 1; - for(unsigned i=0;iapply(curr, 0); - - if(EqHelper::isEqTautology(currAfter)) { - goto construction_fail; - } - - if (afterCheck) { - TimeCounter tc(TC_LITERAL_ORDER_AFTERCHECK); - if (i < nClause->numSelected() && ordering.compare(currAfter,nLiteralS) == Ordering::GREATER) { - env.statistics->inferencesBlockedForOrderingAftercheck++; - goto construction_fail; - } - } - (*res)[next++] = currAfter; - } - } - - env.statistics->narrow++; - return res; - -construction_fail: - //cout << "failed" << endl; - res->destroy(); - return 0; -} diff --git a/Inferences/Narrow.hpp b/Inferences/Narrow.hpp deleted file mode 100644 index ec0500ae6f..0000000000 --- a/Inferences/Narrow.hpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file Superposition.hpp - * Defines class Superposition. - */ - - -#ifndef __Narrow__ -#define __Narrow__ - -#include "Forwards.hpp" -#include "Indexing/TermIndex.hpp" - -#include "InferenceEngine.hpp" - -namespace Inferences { - -using namespace Kernel; -using namespace Indexing; -using namespace Saturation; - -class Narrow -: public GeneratingInferenceEngine -{ -public: - CLASS_NAME(Narrow); - USE_ALLOCATOR(Narrow); - - ClauseIterator generateClauses(Clause* premise); - - void attach(SaturationAlgorithm* salg); - void detach(); - -private: - NarrowingIndex* _index; - - Clause* performNarrow( - Clause* nClause, Literal* nLiteral, TermList nTerm, - TermList combAxLhs, Literal* combAx, ResultSubstitutionSP subst); - - struct ApplicableNarrowsFn; - struct RewriteableSubtermsFn; - struct ResultFn; - -}; - - -}; - -#endif /* __Narrow__ */ diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index f1233a5e04..ef90819db8 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -203,8 +203,6 @@ struct PrimitiveInstantiation::ResultFn } } } - - TermStack args; // bind head variable to all general bindings produced using heads in _heads for(unsigned i =0; i < _heads.size(); i++){ @@ -212,7 +210,7 @@ struct PrimitiveInstantiation::ResultFn unsigned fVar = _freshVar; bool surround = (!_heads[i].isEquals() || !include_not_eq); - TermList gb = AH::createGeneralBinding(fVar,_heads[i],argsFlex,sortsFlex,deBruijnIndices,args,surround); + TermList gb = AH::createGeneralBinding(fVar,_heads[i],argsFlex,sortsFlex,deBruijnIndices,surround); gb = surround ? gb : AH::surroundWithLambdas(gb, sortsFlex); _subst.bind(headFlex.var(), gb); diff --git a/Inferences/SubVarSup.cpp b/Inferences/SubVarSup.cpp deleted file mode 100644 index 6aa8ef258e..0000000000 --- a/Inferences/SubVarSup.cpp +++ /dev/null @@ -1,356 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file SubVarSup.cpp - * Implements class SubVarSup. - */ - -#include "Debug/RuntimeStatistics.hpp" - -#include "Lib/Environment.hpp" -#include "Lib/Int.hpp" -#include "Lib/Metaiterators.hpp" -#include "Lib/PairUtils.hpp" -#include "Lib/VirtualIterator.hpp" -#include "Lib/DHSet.hpp" - -#include "Kernel/Clause.hpp" -#include "Kernel/ColorHelper.hpp" -#include "Kernel/EqHelper.hpp" -#include "Kernel/Inference.hpp" -#include "Kernel/Ordering.hpp" -#include "Kernel/SortHelper.hpp" -#include "Kernel/Term.hpp" -#include "Kernel/TermIterators.hpp" -#include "Kernel/Unit.hpp" -#include "Kernel/LiteralSelector.hpp" -#include "Kernel/RobSubstitution.hpp" -#include "Kernel/ApplicativeHelper.hpp" - -#include "Indexing/Index.hpp" -#include "Indexing/IndexManager.hpp" -#include "Indexing/TermSharing.hpp" - -#include "Saturation/SaturationAlgorithm.hpp" - -#include "Shell/Options.hpp" -#include "Shell/Statistics.hpp" - -#include "SubVarSup.hpp" - -#if VDEBUG -#include -using namespace std; -#endif - -using namespace Inferences; -using namespace Lib; -using namespace Kernel; -using namespace Indexing; -using namespace Saturation; - -void SubVarSup::attach(SaturationAlgorithm* salg) -{ - CALL("SubVarSup::attach"); - - GeneratingInferenceEngine::attach(salg); - _subtermIndex=static_cast ( - _salg->getIndexManager()->request(SUB_VAR_SUP_SUBTERM_SUBST_TREE) ); - _lhsIndex=static_cast ( - _salg->getIndexManager()->request(SUB_VAR_SUP_LHS_SUBST_TREE) ); -} - -void SubVarSup::detach() -{ - CALL("SubVarSup::detach"); - - _subtermIndex=0; - _lhsIndex=0; - _salg->getIndexManager()->release(SUB_VAR_SUP_SUBTERM_SUBST_TREE); - _salg->getIndexManager()->release(SUB_VAR_SUP_LHS_SUBST_TREE); - GeneratingInferenceEngine::detach(); -} - - - -struct SubVarSup::RewritableResultsFn -{ - RewritableResultsFn(SubVarSupSubtermIndex* index) : _index(index) {} - VirtualIterator, TermQueryResult> > operator()(pair arg) - { - CALL("SubVarSup::RewritableResultsFn()"); - - return pvi( pushPairIntoRightIterator(arg, _index->getUnifications(arg.second, true)) ); - } -private: - SubVarSupSubtermIndex* _index; -}; - -struct SubVarSup::RewriteableSubtermsFn -{ - RewriteableSubtermsFn(Ordering& ord, Clause* prem) : _ord(ord) { - prem->collectUnstableVars(_unstableVars); - } - - VirtualIterator > operator()(Literal* lit) - { - CALL("SubVarSup::RewriteableSubtermsFn()"); - TermIterator it = EqHelper::getRewritableVarsIterator(&_unstableVars, lit, _ord); - return pvi( pushPairIntoRightIterator(lit, it) ); - } - -private: - DHSet _unstableVars; - Ordering& _ord; -}; - -struct SubVarSup::ApplicableRewritesFn -{ - ApplicableRewritesFn(SubVarSupLHSIndex* index) : _index(index) {} - VirtualIterator, TermQueryResult> > operator()(pair arg) - { - CALL("SubVarSup::ApplicableRewritesFn()"); - - //get everything in the tree - //false means dont use substitution - return pvi( pushPairIntoRightIterator(arg, _index->getUnifications(arg.second, false)) ); - } -private: - SubVarSupLHSIndex* _index; -}; - - -struct SubVarSup::ForwardResultFn -{ - ForwardResultFn(Clause* cl, SubVarSup& parent) : _cl(cl), _parent(parent) {} - Clause* operator()(pair, TermQueryResult> arg) - { - CALL("SubVarSup::ForwardResultFn::operator()"); - - TermQueryResult& qr = arg.second; - return _parent.performSubVarSup(_cl, arg.first.first, arg.first.second, - qr.clause, qr.literal, qr.term, true); - } -private: - Clause* _cl; - SubVarSup& _parent; -}; - - -struct SubVarSup::BackwardResultFn -{ - BackwardResultFn(Clause* cl, SubVarSup& parent) : _cl(cl), _parent(parent) {} - Clause* operator()(pair, TermQueryResult> arg) - { - CALL("SubVarSup::BackwardResultFn::operator()"); - - if(_cl==arg.second.clause) { - return 0; - } - - TermQueryResult& qr = arg.second; - return _parent.performSubVarSup(qr.clause, qr.literal, qr.term, - _cl, arg.first.first, arg.first.second, false); - } -private: - Clause* _cl; - SubVarSup& _parent; -}; - - -ClauseIterator SubVarSup::generateClauses(Clause* premise) -{ - CALL("SubVarSup::generateClauses"); - - //cout << "SubVarSup with " << premise->toString() << endl; - - auto itf1 = premise->getSelectedLiteralIterator(); - - // Get an iterator of pairs of selected literals and rewritable subterms of those literals - // A subterm is rewritable (see EqHelper) if - // a) The literal is a positive equality t1=t2 and the subterm is max(t1,t2) wrt ordering - // b) The subterm is not a variable - auto itf2 = getMapAndFlattenIterator(itf1,RewriteableSubtermsFn(_salg->getOrdering(), premise)); - - // Get clauses with a literal whose complement unifies with the rewritable subterm, - // returns a pair with the original pair and the unification result (includes substitution) - auto itf3 = getMapAndFlattenIterator(itf2,ApplicableRewritesFn(_lhsIndex)); - - //Perform forward SubVarSup - auto itf4 = getMappingIterator(itf3,ForwardResultFn(premise, *this)); - - auto itb1 = premise->getSelectedLiteralIterator(); - auto itb2 = getMapAndFlattenIterator(itb1,EqHelper::SubVarSupLHSIteratorFn(_salg->getOrdering())); - auto itb3 = getMapAndFlattenIterator(itb2,RewritableResultsFn(_subtermIndex)); - - //Perform backward SubVarSup - auto itb4 = getMappingIterator(itb3,BackwardResultFn(premise, *this)); - - // Add the results of forward and backward together - auto it5 = getConcatenatedIterator(itf4,itb4); - - // Remove null elements - these can come from performSubVarSup - auto it6 = getFilteredIterator(it5,NonzeroFn()); - - //cout << "out" << endl; - - return pvi( it6 ); -} - - -/** - * If SubVarSup should be performed, return result of the SubVarSup, - * otherwise return 0. - */ -Clause* SubVarSup::performSubVarSup( - Clause* rwClause, Literal* rwLit, TermList rwTerm, - Clause* eqClause, Literal* eqLit, TermList eqLHS, bool eqIsResult) -{ - CALL("SubVarSup::performSubVarSup"); - // we want the rwClause and eqClause to be active - ASS(rwClause->store()==Clause::ACTIVE); - ASS(eqClause->store()==Clause::ACTIVE); - ASS(rwTerm.isVar()); - - //cout << "performSubVarSup with " << rwClause->toString() << " and " << eqClause->toString() << endl; - //cout << "rwTerm " << rwTerm.toString() << " eqLHSS " << eqLHS.toString() << endl; - - static RobSubstitution subst; - subst.reset(); - - TermList freshVar = TermList(Int::max(rwClause->maxVar(), eqClause->maxVar()) + 1, false); - - unsigned rwLength = rwClause->length(); - unsigned eqLength = eqClause->length(); - - int newAge=Int::max(rwClause->age(),eqClause->age())+1; - - Literal* rwLitS = subst.apply(rwLit, 0); - TermList rwTermS = subst.apply(rwTerm, 0); - Literal* eqLitS = subst.apply(eqLit, 1); - TermList eqLHSS = subst.apply(eqLHS, 1); - TermList freshVarS = subst.apply(freshVar, 0); - - TermList tgtTerm = EqHelper::getOtherEqualitySide(eqLitS, eqLHSS); - - TermList varSort = SortHelper::getTermSort(rwTermS, rwLitS); - TermList eqSort = SortHelper::getEqualityArgumentSort(eqLitS); - - TermList newEqLHS = ApplicativeHelper::createAppTerm(eqSort, varSort, freshVarS, eqLHSS); - TermList newTgtTm = ApplicativeHelper::createAppTerm(eqSort, varSort, freshVarS, tgtTerm); - - //ALWAYS(subst.unify(varSort, 0, varSort, 1)); - //ALWAYS(subst.unify(rwTerm, 0, newEqLHS, 1)); - - Ordering& ordering = _salg->getOrdering(); - - //Literal* rwLitS = subst.apply(rwLit, 0); - //TermList rwTermS = subst.apply(rwTerm, 0); - //newEqLHS = subst.apply(newEqLHS, 1); - ///newTgtTm = subst.apply(newTgtTm, 1); - -#if VDEBUG - //ASS_EQ(rwTermS,newEqLHS); -#endif - - //cout << "Check ordering on " << tgtTermS.toString() << " and " << rwTermS.toString() << endl; - - /*if(rwLitS->isEquality()) { - //check that we're not rewriting only the smaller side of an equality - TermList arg0=*rwLitS->nthArgument(0); - TermList arg1=*rwLitS->nthArgument(1); - - if(!arg0.containsSubterm(rwTermS)) { - if(Ordering::isGorGEorE(ordering.getEqualityArgumentOrder(rwLitS))) { - return 0; - } - } else if(!arg1.containsSubterm(rwTermS)) { - if(Ordering::isGorGEorE(Ordering::reverse(ordering.getEqualityArgumentOrder(rwLitS)))) { - return 0; - } - } - }*/ - - Literal* tgtLitS = EqHelper::replace(rwLitS,rwTermS,newTgtTm); - - //check we don't create an equational tautology (this happens during self-SubVarSup) - if(EqHelper::isEqTautology(tgtLitS)) { - return 0; - } - - // If proof extra is on let's compute the positions we have performed - // SubVarSup on - if(env.options->proofExtra()==Options::ProofExtra::FULL){ - //TODO update for proof extra - } - - bool afterCheck = getOptions().literalMaximalityAftercheck() && _salg->getLiteralSelector().isBGComplete(); - - unsigned newLength = rwLength+eqLength-1; - Inference inf(GeneratingInference2(InferenceRule::SUB_VAR_SUP, rwClause, eqClause)); - Clause* res = new(newLength) Clause(newLength, inf); - - (*res)[0] = tgtLitS; - int next = 1; - for(unsigned i=0;inumSelected() && ordering.compare(currAfter,rwLitS) == Ordering::GREATER) { - env.statistics->inferencesBlockedForOrderingAftercheck++; - goto construction_fail; - } - } - - (*res)[next++] = currAfter; - } - } - - - for(unsigned i=0;isetAge(newAge); - - if(rwClause==eqClause) { - env.statistics->selfSubVarSup++; - } else if(eqIsResult) { - env.statistics->forwardSubVarSup++; - } else { - env.statistics->backwardSubVarSup++; - } - - //cout << "SUBVARSUP " + res->toString() << endl; - return res; - -construction_fail: - res->destroy(); - return 0; -} diff --git a/Inferences/SubVarSup.hpp b/Inferences/SubVarSup.hpp deleted file mode 100644 index e9f251633a..0000000000 --- a/Inferences/SubVarSup.hpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file SubVarSup.hpp - * Defines class SubVarSup. - */ - - -#ifndef __SubVarSup__ -#define __SubVarSup__ - -#include "Forwards.hpp" -#include "Indexing/TermIndex.hpp" - -#include "InferenceEngine.hpp" - -namespace Inferences { - -using namespace Kernel; -using namespace Indexing; -using namespace Saturation; - -class SubVarSup -: public GeneratingInferenceEngine -{ -public: - CLASS_NAME(SubVarSup); - USE_ALLOCATOR(SubVarSup); - - void attach(SaturationAlgorithm* salg); - void detach(); - - ClauseIterator generateClauses(Clause* premise); - - -private: - Clause* performSubVarSup( - Clause* rwClause, Literal* rwLiteral, TermList rwTerm, - Clause* eqClause, Literal* eqLiteral, TermList eqLHS, bool eqIsResult); - - struct ForwardResultFn; - struct RewriteableSubtermsFn; - struct ApplicableRewritesFn; - - struct LHSsFn; - struct RewritableResultsFn; - struct BackwardResultFn; - - SubVarSupSubtermIndex* _subtermIndex; - SubVarSupLHSIndex* _lhsIndex; -}; - - -}; - -#endif /* __SubVarSup__ */ diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 54746675f0..132c6c32b0 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -143,7 +143,6 @@ TermList RedexReducer::reduce(TermList redex) TermList t1Sort = *head.term()->nthArgument(1); _t2 = args.pop(); - if(t1.isTerm()) onTermEntry(t1.term()); TermList transformed = transformSubterm(t1); if(transformed != t1) return AH::app(t1Sort, transformed, args); @@ -200,7 +199,6 @@ TermList TermShifter::shift(TermList term, int shiftBy) _cutOff = 0; _shiftBy = shiftBy; - if(term.isTerm()) onTermEntry(term.term()); TermList transformed = transformSubterm(term); if(transformed != term) return transformed; return transform(term); @@ -327,9 +325,9 @@ TermList ApplicativeHelper::app(TermList head, TermStack& terms) return app(sort, head, terms); } -TermList ApplicativeHelper::createLambdaTerm(TermList varSort, TermList termSort, TermList term) +TermList ApplicativeHelper::lambda(TermList varSort, TermList termSort, TermList term) { - CALL("ApplicativeHelper::createLambdaTerm"); + CALL("ApplicativeHelper::lambda"); ASS(varSort.isVar() || varSort.term()->isSort()); ASS(termSort.isVar() || termSort.term()->isSort()); @@ -343,6 +341,15 @@ TermList ApplicativeHelper::createLambdaTerm(TermList varSort, TermList termSort return TermList(Term::create(lam, 3, args.begin())); } +TermList ApplicativeHelper::lambda(TermList varSort, TermList term) +{ + CALL("ApplicativeHelper::lambda/2"); + ASS(term.isTerm()); + + TermList termSort = SortHelper::getResultSort(term.term()); + return lambda(varSort, termSort, term); +} + TermList ApplicativeHelper::getDeBruijnIndex(int index, TermList sort) { @@ -467,27 +474,13 @@ void ApplicativeHelper::getHeadAndArgs(TermList term, TermList& head, TermStack& term = term.lhs(); } head = term; - } - void ApplicativeHelper::getHeadAndArgs(Term* term, TermList& head, TermStack& args) { CALL("ApplicativeHelper::getHeadAndArgs/2"); getHeadAndArgs(TermList(term), head, args); - - /*if(!args.isEmpty()){ args.reset(); } - - head = TermList(term); - - while(term->isApplication()){ - args.push(*term->nthArgument(3)); - head = *term->nthArgument(2); - if(head.isTerm()){ - term = head.term(); - } else { break; } - }*/ } void ApplicativeHelper::getHeadAndArgs(const Term* term, TermList& head, TermStack& args) @@ -497,6 +490,24 @@ void ApplicativeHelper::getHeadAndArgs(const Term* term, TermList& head, TermSta getHeadAndArgs(const_cast(term),head,args); } +TermList ApplicativeHelper::lhsSort(TermList t) +{ + CALL("ApplicativeHelper::lhsSort"); + ASS(t.isApplication()); + + TermList s1 = *t.term()->nthArgument(0); + TermList s2 = *t.term()->nthArgument(1); + return AtomicSort::arrowSort(s1,s2); +} + +TermList ApplicativeHelper::rhsSort(TermList t) +{ + CALL("ApplicativeHelper::rhsSort") + ASS(t.isApplication()); + + return *t.term()->nthArgument(0); +} + Signature::Proxy ApplicativeHelper::getProxy(const TermList t) { CALL("ApplicativeHelper::getProxy"); @@ -531,7 +542,7 @@ bool ApplicativeHelper::canHeadReduce(TermList t){ } TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList head, - TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, TermStack& args2, bool surround){ + TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, bool surround){ CALL("ApplicativeHelper::createGeneralBinding"); ASS(head.isTerm()); ASS(argsFlex.size() == sortsFlex.size()); @@ -542,14 +553,13 @@ TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList hea TermList headSort = SortHelper::getResultSort(head.term()); getArgSorts(headSort, argSorts); - for(unsigned i = 0; i < argSorts.size(); i++){ + while(!argSorts.isEmpty()){ TermList fVar(++freshVar, false); - TermList varSort = AtomicSort::arrowSort(sortsFlex, argSorts[i]); + TermList varSort = AtomicSort::arrowSort(sortsFlex, argSorts.pop()); args.push(app(varSort, fVar, indices)); - args2.push(app(varSort, fVar, argsFlex)); } - TermList pb = app(headSort, head, args); + TermList pb = app(head, args); return surround ? surroundWithLambdas(pb, sortsFlex) : pb; } @@ -559,7 +569,7 @@ TermList ApplicativeHelper::surroundWithLambdas(TermList t, TermStack& sorts) ASS(t.isTerm()); for(int i = 0; i < sorts.size(); i++){ - t = createLambdaTerm(sorts[i], SortHelper::getResultSort(t.term()), t); + t = lambda(sorts[i], t); } return t; } diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 429809c7b5..b51d269b72 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -37,8 +37,11 @@ class ApplicativeHelper { static TermList app(TermList sort, TermList head, TermStack& terms); static TermList app(TermList head, TermStack& terms); - static TermList createLambdaTerm(TermList varSort, TermList termSort, TermList term); + static TermList lambda(TermList varSort, TermList termSort, TermList term); + static TermList lambda(TermList varSort, TermList term); + static TermList getDeBruijnIndex(int index, TermList sort); + static TermList getNthArg(TermList arrowSort, unsigned argNum); static TermList getResultApplieadToNArgs(TermList arrowSort, unsigned argNum); static unsigned getArity(TermList sort); @@ -52,6 +55,9 @@ class ApplicativeHelper { // static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); // static void getHeadAndAllArgs(TermList term, TermList& head, TermStack& args); + static TermList lhsSort(TermList t); + static TermList rhsSort(TermList t); + static void getArgSorts(TermList t, TermStack& sorts); static Signature::Proxy getProxy(const TermList t); static bool isBool(TermList t); @@ -59,7 +65,7 @@ class ApplicativeHelper { static bool isFalse(TermList term); static bool canHeadReduce(TermList t); static TermList createGeneralBinding(unsigned freshVar, TermList head, - TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, TermStack& args, bool surround = true); + TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, bool surround = true); static TermList surroundWithLambdas(TermList t, TermStack& sorts); static TermList top(); static TermList bottom(); diff --git a/Kernel/Clause.cpp b/Kernel/Clause.cpp index 503e4fba3f..08d0f79541 100644 --- a/Kernel/Clause.cpp +++ b/Kernel/Clause.cpp @@ -191,20 +191,7 @@ void Clause::destroyIfUnnecessary() bool Clause::isEmpty() const { -#if VHOL - //if(!env.property->higherOrder()){ -#endif - return _length == 0; -#if VHOL - /*} else { - // redefine the empty clause to be any claus consisting of - // only flex-flex pairs, since these are always solvable - for(unsigned i = 1; i < _length; i++) { - if(!_literals[i]->isFlexFlex()){ return false; } - } - return true; - }*/ -#endif + return _length == 0; } /** @@ -352,6 +339,11 @@ vstring Clause::literalsOnlyToString() const CALL("Clause::literalsOnlyToString"); if (_length == 0) { +#if VHOL + if(env.options->holPrinting() == Options::HPrinting::PRETTY){ + return "⊥"; + } +#endif return "$false"; } else { vstring result; diff --git a/Kernel/Inference.cpp b/Kernel/Inference.cpp index feac031b9a..614733857f 100644 --- a/Kernel/Inference.cpp +++ b/Kernel/Inference.cpp @@ -951,6 +951,8 @@ vstring Kernel::ruleName(InferenceRule rule) return "cases simplifying"; case InferenceRule::BETA_NORMALISE: return "beta normalization"; + case InferenceRule::FLEX_FLEX_SIMPLIFY: + return "flex-flex simplify"; case InferenceRule::IMITATE: return "imitate"; case InferenceRule::PROJECT: diff --git a/Kernel/Inference.hpp b/Kernel/Inference.hpp index eb0be867b8..87cd6281c9 100644 --- a/Kernel/Inference.hpp +++ b/Kernel/Inference.hpp @@ -260,6 +260,8 @@ enum class InferenceRule : unsigned char { BETA_NORMALISE, + FLEX_FLEX_SIMPLIFY, + INTERNAL_SIMPLIFYING_INFERNCE_LAST, diff --git a/Kernel/LiteralSelector.cpp b/Kernel/LiteralSelector.cpp index a288d53607..4f7fd11ca7 100644 --- a/Kernel/LiteralSelector.cpp +++ b/Kernel/LiteralSelector.cpp @@ -64,7 +64,11 @@ int LiteralSelector::getSelectionPriority(Literal* l) const CALL("LiteralSelector::getSelectionPriority"); Signature::Symbol* psym=env.signature->getPredicate(l->functor()); - if(psym->label() || psym->answerPredicate()) { + if(psym->label() || psym->answerPredicate() +#if VHOL + || l->isFlexFlex() // don't select flex-flex literals +#endif + ) { return -2; } return 0; diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index 45dc6de85a..cdfbca8e60 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -29,6 +29,8 @@ namespace Kernel { +VSpecVarToTermMap MismatchHandler::_termMap; + bool UWAMismatchHandler::isConstraintPair(TermList t1, TermList t2) { CALL("UWAMismatchHandler::isConstraintPair"); @@ -52,7 +54,7 @@ TermList UWAMismatchHandler::transformSubterm(TermList trm) if(isConstraintTerm(trm).isTrue()){ ASS(trm.term()->shared()); - return TermList::getVSpecVar(trm.term(), &_termMap); + return MismatchHandler::getVSpecVar(trm.term()); } return trm; } @@ -146,6 +148,15 @@ MaybeBool MismatchHandler::isConstraintTerm(TermList t){ TermList MismatchHandler::transformSubterm(TermList trm){ CALL("MismatchHandler::transformSubterm"); + if(_appTerms.size()){ + TermList t = _appTerms.pop(); + if(t.isApplication() && trm == t.lhs()){ + _appTerms.push(t.lhs()); + return trm; + } + _appTerms.push(t); + } + for (auto& h : _inners) { TermList t = h->transformSubterm(trm); if(t != trm){ @@ -155,23 +166,35 @@ TermList MismatchHandler::transformSubterm(TermList trm){ return trm; } +void MismatchHandler::onTermEntry(Term* t) { + CALL("MismatchHandler::onTermEntry"); + + if(t->isApplication()){ + _appTerms.push(TermList(t)); + } +} + +void MismatchHandler::onTermExit(Term* t){ + CALL("MismatchHandler::onTermExit"); + + if(t->isApplication()){ + _appTerms.pop(); + } +} + Term* MismatchHandler::get(unsigned var) { CALL("MismatchHandler::get"); - for (auto& h : _inners) { - auto res = h->getTermMap()->tryGet(var); - if(res.isSome()){ - return res.unwrap(); - } - } - ASSERTION_VIOLATION; + auto res = _termMap.tryGet(var); + ASS(res.isSome()); + return res.unwrap(); } #if VHOL -bool HOMismatchHandler::isConstraintPair(TermList t1, TermList t2) +bool ExtensionalityMismatchHandler::isConstraintPair(TermList t1, TermList t2) { - CALL("HOMismatchHandler::isConstraintPair"); + CALL("ExtensionalityMismatchHandler::isConstraintPair"); auto isBooleanOrConstraintTerm = [&](TermList t){ TermList sort = SortHelper::getResultSort(t.term()); @@ -181,8 +204,8 @@ bool HOMismatchHandler::isConstraintPair(TermList t1, TermList t2) return isBooleanOrConstraintTerm(t1) && isBooleanOrConstraintTerm(t2); } -MaybeBool HOMismatchHandler::isConstraintTerm(TermList t){ - CALL("MismatcHandler::isConstraintTerm"); +MaybeBool ExtensionalityMismatchHandler::isConstraintTerm(TermList t){ + CALL("ExtensionalityMismatchHandler::isConstraintTerm"); if(t.isVar()){ return false; } @@ -199,9 +222,9 @@ MaybeBool HOMismatchHandler::isConstraintTerm(TermList t){ return false; } -TermList HOMismatchHandler::transformSubterm(TermList trm) +TermList ExtensionalityMismatchHandler::transformSubterm(TermList trm) { - CALL("HOMismatchHandler::transformSubterm"); + CALL("ExtensionalityMismatchHandler::transformSubterm"); if(trm.isVar()) return trm; @@ -209,14 +232,49 @@ TermList HOMismatchHandler::transformSubterm(TermList trm) TermList sort = SortHelper::getResultSort(trm.term()); if(sort.isBoolSort()){ - return TermList::getVSpecVar(trm.term(), &_termMap); + return MismatchHandler::getVSpecVar(trm.term()); } if(!isConstraintTerm(trm).isFalse()){ - return TermList::getVSpecVar(trm.term(), &_termMap); + return MismatchHandler::getVSpecVar(trm.term()); } return trm; } + +bool HOMismatchHandler::isConstraintPair(TermList t1, TermList t2) +{ + CALL("HOMismatchHandler::isConstraintPair"); + + return isConstraintTerm(t1).isTrue() || isConstraintTerm(t2).isTrue(); +} + +MaybeBool HOMismatchHandler::isConstraintTerm(TermList t){ + CALL("HOMismatchHandler::isConstraintTerm"); + + if(t.isVar()){ return false; } + + if(!t.isLambdaTerm() && t.head().isVar()){ + return true; + } + + return MaybeBool::UNKNOWN; +} + +TermList HOMismatchHandler::transformSubterm(TermList trm) +{ + CALL("HOMismatchHandler::transformSubterm"); + + if(trm.isVar()) return trm; + + ASS(trm.term()->shared()); + + if(isConstraintTerm(trm).isTrue()){ + return MismatchHandler::getVSpecVar(trm.term()); + } + return trm; +} + + #endif } diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 3232adc42a..538eb233bb 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -59,9 +59,6 @@ class AtomicMismatchHandler // - It may be convenient to use this function in the implementation of transformSubterm // View UWAMismatchHandler::transformSubterm() for an example of this virtual MaybeBool isConstraintTerm(TermList t) = 0; - VSpecVarToTermMap* getTermMap() { return &_termMap; } -protected: - VSpecVarToTermMap _termMap; }; /** @@ -88,8 +85,11 @@ class MismatchHandler : UnificationConstraintStack& ucs, BacktrackData& bd, bool recording); TermList transformSubterm(TermList trm) override; + void onTermEntry(Term* t) override; + void onTermExit(Term* t) override; MaybeBool isConstraintTerm(TermList t); - Term* get(unsigned var); + + static Term* get(unsigned var); void addHandler(unique_ptr hndlr); bool isEmpty() const { return _inners.isEmpty(); } @@ -97,12 +97,29 @@ class MismatchHandler : CLASS_NAME(MismatchHandler); USE_ALLOCATOR(MismatchHandler); + static TermList getVSpecVar(Term* trm) + { + CALL("MismatchHandler::getVSpecVar"); + + unsigned vNum; + if(_termMap.find(trm, vNum)){ + ASS(vNum > TermList::SPEC_UPPER_BOUND); + return TermList(vNum, true); + } else { + unsigned vNum = TermList::SPEC_UPPER_BOUND + _termMap.size() + 1; + _termMap.insert(vNum, trm); + return TermList(vNum, true); + } + } + private: void introduceConstraint( TermList t1, unsigned index1, TermList t2, unsigned index2, UnificationConstraintStack& ucs, BacktrackData& bd, bool recording); + TermStack _appTerms; + static VSpecVarToTermMap _termMap; Stack> _inners; }; @@ -124,6 +141,20 @@ class UWAMismatchHandler : public AtomicMismatchHandler }; #if VHOL +class ExtensionalityMismatchHandler : public AtomicMismatchHandler +{ +public: + ExtensionalityMismatchHandler() {} + ~ExtensionalityMismatchHandler() override {} + + bool isConstraintPair(TermList t1, TermList t2) override; + TermList transformSubterm(TermList trm) override; + MaybeBool isConstraintTerm(TermList t) override; + + CLASS_NAME(ExtensionalityMismatchHandler); + USE_ALLOCATOR(ExtensionalityMismatchHandler); +}; + class HOMismatchHandler : public AtomicMismatchHandler { public: @@ -137,6 +168,7 @@ class HOMismatchHandler : public AtomicMismatchHandler CLASS_NAME(HOMismatchHandler); USE_ALLOCATOR(HOMismatchHandler); }; + #endif } diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 2509eaa091..31b9a3bc21 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -246,7 +246,7 @@ bool RobSubstitution::occurs(VarSpec vs, TermSpec ts) Stack toDo(8); if(ts.isVSpecialVar()){ ASS(_handler) - Term* t = _handler->get(ts.term.var()); + Term* t = MismatchHandler::get(ts.term.var()); ts = TermSpec(TermList(t), ts.index); }else if(ts.isVar()) { ts=derefBound(ts); @@ -275,13 +275,13 @@ bool RobSubstitution::occurs(VarSpec vs, TermSpec ts) dtvar=derefBound(TermSpec(tvar)); } else { ASS(_handler) - Term* t = _handler->get(var.var()); + Term* t = MismatchHandler::get(var.var()); dtvar = TermSpec(TermList(t), ts.index); } if(!dtvar.isVar() || dtvar.isVSpecialVar()) { if(dtvar.isVSpecialVar()){ ASS(_handler); - Term* t = _handler->get(dtvar.term.var()); + Term* t = MismatchHandler::get(dtvar.term.var()); dtvar = TermSpec(TermList(t), dtvar.index); } encountered.insert(tvar); @@ -362,13 +362,13 @@ bool RobSubstitution::unify(TermSpec t1, TermSpec t2) // If they do not, handler will return false and we continue with // standard unification. if(!_handler->handle(dt1.term, dt1.index, dt2.term, dt2.index, _constraints, localBD, recording)){ - Term* t = _handler->get(dt1.term.var()); + Term* t = MismatchHandler::get(dt1.term.var()); t1 = TermSpec(TermList(t), dt1.index); toDo.push(TTPair(t1, dt2)); } } else if(dt2.isVSpecialVar()){ if(!_handler->handle(dt1.term, dt1.index, dt2.term, dt2.index, _constraints, localBD, recording)){ - Term* t = _handler->get(dt2.term.var()); + Term* t = MismatchHandler::get(dt2.term.var()); t2 = TermSpec(TermList(t), dt2.index); toDo.push(TTPair(dt1, t2)); } @@ -667,7 +667,7 @@ TermList RobSubstitution::apply(TermList trm, int index) const Term* t; if(ts.term.isVSpecialVar()){ ASS(_handler); - t = _handler->get(ts.term.var()); + t = MismatchHandler::get(ts.term.var()); } else { t = ts.term.term(); } @@ -763,7 +763,7 @@ size_t RobSubstitution::getApplicationResultWeight(TermList trm, int index) cons Term* t; if(ts.term.isVSpecialVar()){ ASS(_handler); - t = _handler->get(ts.term.var()); + t = MismatchHandler::get(ts.term.var()); }else{ t=ts.term.term(); } diff --git a/Kernel/Signature.hpp b/Kernel/Signature.hpp index b6df47734b..1138594aea 100644 --- a/Kernel/Signature.hpp +++ b/Kernel/Signature.hpp @@ -533,6 +533,7 @@ class Signature return _predNames.find(symbolKey,tmp); } +#if VHOL void addChoiceOperator(unsigned fun){ _choiceSymbols.insert(fun); } @@ -544,6 +545,7 @@ class Signature DHSet* getChoiceOperators(){ return &_choiceSymbols; } +#endif /** return the number of functions */ unsigned functions() const { return _funs.length(); } @@ -870,7 +872,9 @@ class Signature /** Stack of type constructor symbols */ Stack _typeCons; +#if VHOL DHSet _choiceSymbols; +#endif /** * Map from vstring "name_arity" to their numbers * diff --git a/Kernel/SortHelper.cpp b/Kernel/SortHelper.cpp index 91cd21be2b..572649fedd 100644 --- a/Kernel/SortHelper.cpp +++ b/Kernel/SortHelper.cpp @@ -934,7 +934,7 @@ bool SortHelper::areImmediateSortsValidPoly(Term* t) TermList argSort = getResultSort(ta); TermList instantiatedTypeSort = SubstHelper::apply(type->arg(i), subst); if (instantiatedTypeSort != argSort) { -/* + #if VDEBUG cout << "the term is " + t->toString() << endl; cout << "the type of function " + env.signature->getFunction(t->functor())->name() + " is: " + type->toString() << endl; @@ -943,7 +943,7 @@ bool SortHelper::areImmediateSortsValidPoly(Term* t) cout << "error with expected " << instantiatedTypeSort.toString() << " and actual " << argSort.toString() << " when functor is " << t->functor() << " and arg is " << arg << endl; ASSERTION_VIOLATION; #endif -*/ + return false; } } diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 629101fb2b..5162160dcc 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -256,21 +256,6 @@ bool TermList::allShared(TermList* args) return true; } -TermList TermList::getVSpecVar(Term* trm, VSpecVarToTermMap* map) -{ - CALL("TermList::getVSpecVar"); - - unsigned vNum; - if(map->find(trm, vNum)){ - ASS(vNum > TermList::SPEC_UPPER_BOUND); - return TermList(vNum, true); - } else { - unsigned vNum = TermList::SPEC_UPPER_BOUND + map->size() + 1; - map->insert(vNum, trm); - return TermList(vNum, true); - } -} - unsigned TermList::weight() const { return isVar() ? 1 : term()->weight(); @@ -454,7 +439,7 @@ TermList TermList::lambdaBody() const { TermList TermList::head() { CALL("TermList::head"); - if(!isApplication()){ + if(!isApplication() && !isLambdaTerm()){ return *this; } return term()->head(); @@ -464,6 +449,9 @@ TermList Term::head() { CALL("Term::head"); TermList trm = TermList(this); + while(trm.isLambdaTerm()){ + trm = trm.lambdaBody(); + } while(trm.isApplication()){ trm = trm.lhs(); } @@ -625,7 +613,7 @@ unsigned Term::numTypeArguments() const { : env.signature->getFunction(_functor)->numTypeArguments(); } -TermList* Term::termArgs() +const TermList* Term::termArgs() const { CALL("Term::termArgs"); ASS(!isSort()); @@ -1152,6 +1140,7 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const TermList head; TermStack args; ApplicativeHelper::getHeadAndArgs(this, head, args); + bool hasArgs = args.size(); vstring headStr; if(head.isVar() || (head.deBruijnIndex().isSome() && !db) || head.isLambdaTerm()){ @@ -1185,19 +1174,19 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const if(pretty) headStr += "⟩"; } - res += (!topLevel && args.size()) ? "(" : ""; + res += (!topLevel && hasArgs) ? "(" : ""; if((head.isAnd() || head.isOr() || head.isIff() || head.isEquals() || head.isImp() || head.isXOr()) && args.size() == 2){ - res += termToStr(args[0],false,st) + " " + headStr + " " + termToStr(args[1],false,st); + res += termToStr(args[1],false,st) + " " + headStr + " " + termToStr(args[0],false,st); } else { vstring app = pretty || head.isNot() ? " " : " @ "; res += headStr; - for(unsigned i = 0; i < args.size(); i++){ - res += app + termToStr(args[i],false,st); + while(!args.isEmpty()){ + res += app + termToStr(args.pop(),false,st); } } - res += (!topLevel && args.size()) ? ")" : ""; + res += (!topLevel && hasArgs) ? ")" : ""; return res; } diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 94836fafb0..46b482f401 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -175,7 +175,6 @@ class TermList { static bool equals(TermList t1, TermList t2); static bool allShared(TermList* args); static TermList var(unsigned var, bool special = false) { return TermList(var, special); } - static TermList getVSpecVar(Term* trm, VSpecVarToTermMap* map); /** if not var, the inner term must be shared */ unsigned weight() const; /** returns true if this termList is wrapping a higher-order "arrow" sort */ @@ -513,7 +512,9 @@ class Term * non-emptiness * In the monomorphic case, the same as args() */ - TermList* termArgs(); + const TermList* termArgs() const; + + TermList* termArgs(){ return _args + (_arity - numTypeArguments()); } /** Return the 1st type argument for a polymorphic term. * returns a nullpointer if the term not polymorphic diff --git a/Kernel/TermIterators.cpp b/Kernel/TermIterators.cpp index acbbef4016..a440977223 100644 --- a/Kernel/TermIterators.cpp +++ b/Kernel/TermIterators.cpp @@ -533,7 +533,7 @@ TermFunIterator::TermFunIterator (const Term* t) _hasNext = true; _next = t->functor(); - _stack.push(t->args()); + _stack.push(t->termArgs()); } // TermFunIterator::TermFunIterator @@ -561,7 +561,7 @@ bool TermFunIterator::hasNext () _hasNext = true; const Term* t = ts->term(); _next = t->functor(); - _stack.push(t->args()); + _stack.push(t->termArgs()); return true; } return false; diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index b693f99f55..793fced2e9 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -29,6 +29,8 @@ Term* TermTransformer::transform(Term* term) { CALL("TermTransformer::transform(Term* term)"); + onTermEntry(term); + if (term->isSpecial()) { return transformSpecial(term); } diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 3216a451ee..20b658da09 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -56,10 +56,8 @@ #include "Inferences/BinaryResolution.hpp" #include "Inferences/EqualityFactoring.hpp" #include "Inferences/EqualityResolution.hpp" -#include "Inferences/BoolEqToDiseq.hpp" #include "Inferences/ExtensionalityResolution.hpp" #include "Inferences/FOOLParamodulation.hpp" -//#include "Inferences/Injectivity.hpp" #include "Inferences/Factoring.hpp" #include "Inferences/ForwardDemodulation.hpp" #include "Inferences/ForwardLiteralRewriting.hpp" @@ -75,17 +73,19 @@ #if VHOL #include "Inferences/ArgCong.hpp" #include "Inferences/NegativeExt.hpp" -//#include "Inferences/Narrow.hpp" #include "Inferences/PrimitiveInstantiation.hpp" #include "Inferences/Choice.hpp" -//#include "Inferences/ElimLeibniz.hpp" -//#include "Inferences/SubVarSup.hpp" +#include "Inferences/ElimLeibniz.hpp" #include "Inferences/CNFOnTheFly.hpp" //#include "Inferences/RenamingOnTheFly.hpp" #include "Inferences/BoolSimp.hpp" #include "Inferences/CasesSimp.hpp" #include "Inferences/Cases.hpp" #include "Inferences/ImitateProject.hpp" +#include "Inferences/BoolEqToDiseq.hpp" +//#include "Inferences/Injectivity.hpp" +#include "Inferences/BetaEtaISE.hpp" +#include "Inferences/FlexFlexSimplify.hpp" #endif #include "Inferences/URResolution.hpp" @@ -94,7 +94,6 @@ #include "Inferences/Induction.hpp" #include "Inferences/ArithmeticSubtermGeneralization.hpp" #include "Inferences/TautologyDeletionISE.hpp" -#include "Inferences/BetaEtaISE.hpp" #include "Saturation/ExtensionalityClauseContainer.hpp" @@ -1567,9 +1566,6 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(new ArgCong()); gie->addFront(new NegativeExt());//TODO add option gie->addFront(new ImitateProject()); - /*if(opt.narrow() != Options::Narrow::OFF){ - gie->addFront(new Narrow()); - }*/ } if(prb.hasFOOL() && @@ -1580,7 +1576,7 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if(opt.complexBooleanReasoning() && prb.hasBoolVar() && prb.higherOrder() && !opt.lambdaFreeHol()){ gie->addFront(new PrimitiveInstantiation()); //TODO only add in some cases - // gie->addFront(new ElimLeibniz()); + gie->addFront(new ElimLeibniz()); } if(env.options->choiceReasoning()){ @@ -1827,6 +1823,7 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons } res->addFront(new BetaEtaSimplify()); + res->addFront(new FlexFlexSimplify()); #endif // Only add if there are distinct groups diff --git a/Shell/FunctionDefinition.cpp b/Shell/FunctionDefinition.cpp index 9eeccbb776..a64d8599ff 100644 --- a/Shell/FunctionDefinition.cpp +++ b/Shell/FunctionDefinition.cpp @@ -31,6 +31,7 @@ #include "Kernel/SubstHelper.hpp" #include "Kernel/Term.hpp" #include "Kernel/TermIterators.hpp" +#include "Kernel/ApplicativeHelper.hpp" #include "Shell/Options.hpp" @@ -886,10 +887,11 @@ FunctionDefinition::defines (Term* lhs, Term* rhs) return 0; } if (!lhs->arity()) { - if(env.signature->isFoolConstantSymbol(true , f) || - env.signature->isFoolConstantSymbol(false, f)){ +#if VHOL + if(ApplicativeHelper::isBool(TermList(lhs))){ return 0; } +#endif //Higher-order often contains definitions of the form //f = ^x^y... if (rhs->arity() diff --git a/Shell/LambdaConversion.cpp b/Shell/LambdaConversion.cpp index d25aa8b2d2..cbb43ab83a 100644 --- a/Shell/LambdaConversion.cpp +++ b/Shell/LambdaConversion.cpp @@ -225,7 +225,7 @@ TermList LambdaConversion::convertLambda(VList* vars, SList* sorts, } bodySort = converted.isVar() ? bodySort : sortOf(converted); - return AH::createLambdaTerm(s, bodySort, converted); + return AH::lambda(s, bodySort, converted); } TermList LambdaConversion::convertLambda(Term* lambdaTerm) diff --git a/Shell/Options.hpp b/Shell/Options.hpp index a33e9bbdae..1360a0db7a 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2415,6 +2415,7 @@ bool _hard; bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } bool complexVarCondition() const { return _complexVarCondition.actualValue; } HPrinting holPrinting() const { return _holPrinting.actualValue; } + void setHolPrinting(HPrinting setting) { _holPrinting.actualValue = setting; } #endif // For unit testing diff --git a/Shell/Preprocess.cpp b/Shell/Preprocess.cpp index fb48297209..e685e06938 100644 --- a/Shell/Preprocess.cpp +++ b/Shell/Preprocess.cpp @@ -739,7 +739,6 @@ void Preprocess::preprocess3 (Problem& prb) UnitList::DelIterator us(prb.units()); while (us.hasNext()) { Unit* u = us.next(); - cout << "U " << u->toString() << endl; Unit* v = preprocess3(u #if VHOL ,prb.higherOrder() diff --git a/Shell/Property.cpp b/Shell/Property.cpp index 4e4f43089d..da49137da3 100644 --- a/Shell/Property.cpp +++ b/Shell/Property.cpp @@ -82,6 +82,7 @@ Property::Property() _hasApp(false), _hasLogicalProxy(false), _hasLambda(false), + _higherOrder(false), #endif _hasPolymorphicSym(false), _quantifiesOverPolymorphicVar(false), diff --git a/Shell/Property.hpp b/Shell/Property.hpp index 2d5193950c..1fe0d8d84d 100644 --- a/Shell/Property.hpp +++ b/Shell/Property.hpp @@ -233,7 +233,9 @@ class Property bool hasApp() const { return _hasApp; } bool hasLogicalProxy() const { return _hasLogicalProxy; } bool higherOrder() const { return hasApp() || hasLogicalProxy() || - hasArrowSort() || _hasLambda; } + hasArrowSort() || _hasLambda || _higherOrder; } + // for use in unit tests + void forceHigherOrder() { _higherOrder = true; } #endif bool hasPolymorphicSym() const { return _hasPolymorphicSym; } @@ -338,6 +340,7 @@ class Property bool _hasApp; bool _hasLogicalProxy; bool _hasLambda; + bool _higherOrder; #endif bool _hasPolymorphicSym; bool _quantifiesOverPolymorphicVar; diff --git a/Test/TestUtils.cpp b/Test/TestUtils.cpp index 9497e91fc8..95862292d9 100644 --- a/Test/TestUtils.cpp +++ b/Test/TestUtils.cpp @@ -67,8 +67,17 @@ std::ostream& Pretty::prettyPrint(std::ostream& out) const return out << "X" << t.var(); } else { auto term = t.term(); +#if VHOL + if(env.property->higherOrder()){ + // higher order has its own pretty printing + // procedure + out << term->toString(); + return out; + } +#endif + auto func = term->functor(); - if (theory->isInterpretedFunction(func)) { + if (!term->isSort() && theory->isInterpretedFunction(func)) { switch(theory->interpretFunction(func)) { #define NUM_CASE(oper) \ case Kernel::Theory::INT_ ## oper: \ @@ -86,7 +95,9 @@ std::ostream& Pretty::prettyPrint(std::ostream& out) const } } - Signature::Symbol* sym = env.signature->getFunction(func); + Signature::Symbol* sym = term->isSort() ? + env.signature->getTypeCon(func) : + env.signature->getFunction(func); out << sym->name(); if (sym->arity() > 0) { out << "(" << pretty(*term->nthArgument(0)); @@ -172,6 +183,8 @@ bool TestUtils::isAC(Term* t) auto f = t->functor(); if (t->isLiteral()) { return theory->isInterpretedPredicate(f) && isAC(theory->interpretPredicate(f)); + } else if(t->isSort()){ + return false; } else { return theory->isInterpretedFunction(f) && isAC(theory->interpretFunction(f)); } diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 41cfa22c9c..a8238aeaec 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -49,6 +49,16 @@ TermIndexingStructure* getTermIndex(unique_ptr handler) return new TermSubstitutionTree(cmh); } +TermIndexingStructure* getTermIndex( + unique_ptr handler1, + unique_ptr handler2) +{ + auto cmh = new MismatchHandler(); + cmh->addHandler(std::move(handler1)); + cmh->addHandler(std::move(handler2)); + return new TermSubstitutionTree(cmh); +} + TermIndexingStructure* getTermIndex(Shell::Options::UnificationWithAbstraction uwa) { return getTermIndex(make_unique(uwa)); } @@ -120,6 +130,7 @@ void checkLiteralMatches(LiteralIndexingStructure* index, Literal* lit, Stack
  • expected) { Stack is; + for (auto qr : iterTraits(index->getUnificationsUsingSorts(term,sort,true)) ) { qr.substitution->numberOfConstraints(); @@ -402,9 +413,13 @@ TEST_FUN(literal_indexing) } +#if VHOL + TEST_FUN(higher_order) { - TermIndexingStructure* index = getTermIndex(make_unique()); + TermIndexingStructure* index = getTermIndex(make_unique()); + env.options->setHolPrinting(Options::HPrinting::PRETTY); + env.property->forceHigherOrder(); DECL_DEFAULT_VARS DECL_DEFAULT_SORT_VARS @@ -435,19 +450,58 @@ TEST_FUN(higher_order) index->insert(ap(g,c), 0, 0); index->insert(g, 0, 0); - // TODO - // reportTermMatches(index,x0,xSrt); + checkTermMatches(index,x0,xSrt, Stack{ + + TermUnificationResultSpec + { .querySigma = ap(g,c), + .resultSigma = ap(g,c), + .constraints = Stack{} }, + + { .querySigma = ap(f,a), + .resultSigma = ap(f,a), + .constraints = Stack{} }, + }); index->insert(h(alpha), 0, 0); - // TODO - // reportTermMatches(index,h(beta),beta); - // reportTermMatches(index,h(srt),srt); + checkTermMatches(index,h(beta),beta, Stack{ + + TermUnificationResultSpec + + { .querySigma = h(xSrt), + .resultSigma = ap(g,c), + .constraints = Stack{ h(xSrt) != ap(g,c)} }, + + { .querySigma = h(gSrt), + .resultSigma = g, + .constraints = Stack{ h(gSrt) != g} }, + + // suboptimal that we have to use x here due to normalisation of variables + // during unification... + { .querySigma = h(x), + .resultSigma = h(x), + .constraints = Stack{} }, + + { .querySigma = h(x), + .resultSigma = h(x), + .constraints = Stack{} }, + }); + + checkTermMatches(index,h(srt),srt, Stack{ + + TermUnificationResultSpec + + { .querySigma = h(srt), + .resultSigma = h(srt), + .constraints = Stack{} }, + }); } TEST_FUN(higher_order2) { - TermIndexingStructure* index = getTermIndex(make_unique()); + TermIndexingStructure* index = getTermIndex(make_unique()); + env.options->setHolPrinting(Options::HPrinting::PRETTY); + env.property->forceHigherOrder(); DECL_DEFAULT_VARS DECL_DEFAULT_SORT_VARS @@ -461,10 +515,81 @@ TEST_FUN(higher_order2) index->insert(ap(ap(f,a),b), 0, 0); - // TODO - // reportTermMatches(index,ap(ap(f,b),a),srt); + checkTermMatches(index,ap(ap(f,b),a),srt, Stack{ + + TermUnificationResultSpec + + { .querySigma = ap(ap(f,b),a), + .resultSigma = ap(ap(f,a),b), + .constraints = Stack{ a != b, } }, + }); + +} + +TEST_FUN(higher_order3) +{ + TermIndexingStructure* index = getTermIndex(make_unique()); + env.options->setHolPrinting(Options::HPrinting::PRETTY); + env.property->forceHigherOrder(); + + DECL_DEFAULT_VARS + DECL_DEFAULT_SORT_VARS + NUMBER_SUGAR(Int) + DECL_SORT(srt) + DECL_ARROW_SORT(xSrt, {srt, srt}) + DECL_HOL_VAR(x0, 0, xSrt) + DECL_CONST(a, srt) + DECL_CONST(b, srt) + DECL_CONST(f, xSrt) + + index->insert(ap(f,ap(x0, a)), 0, 0); + + checkTermMatches(index,ap(f,b),srt, Stack{ + + TermUnificationResultSpec + + { .querySigma = ap(f,b), + .resultSigma = ap(f,ap(x0, a)), + .constraints = Stack{ ap(x0, a) != b, } }, + }); + +} + +TEST_FUN(higher_order4) +{ + TermIndexingStructure* index = getTermIndex( + make_unique(), + make_unique()); + env.options->setHolPrinting(Options::HPrinting::PRETTY); + env.property->forceHigherOrder(); + + DECL_DEFAULT_VARS + DECL_DEFAULT_SORT_VARS + NUMBER_SUGAR(Int) + DECL_SORT(srt) + DECL_ARROW_SORT(xSrt, {srt, srt}) + DECL_ARROW_SORT(fSrt, {srt, xSrt, srt}) + DECL_HOL_VAR(x0, 0, xSrt) + DECL_CONST(a, srt) + DECL_CONST(b, xSrt) + DECL_CONST(c, xSrt) + DECL_CONST(f, fSrt) + + index->insert(ap(ap(f,ap(x0, a)), b), 0, 0); + + checkTermMatches(index,ap(ap(f,a),c),srt, Stack{ + + TermUnificationResultSpec + + { .querySigma = ap(ap(f,a),c), + .resultSigma = ap(ap(f,ap(x0, a)), b), + .constraints = Stack{ ap(x0, a) != a, b != c, } }, + }); + } +#endif + static const int NORM_QUERY_BANK=2; static const int NORM_RESULT_BANK=3; From c54fe379cf703b30838734739433314a0e0b3aea Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 23 Sep 2022 12:28:42 +0100 Subject: [PATCH 035/210] now project terms with De Bruijn indices at their head --- Inferences/ImitateProject.cpp | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp index ce26afd914..710077618b 100644 --- a/Inferences/ImitateProject.cpp +++ b/Inferences/ImitateProject.cpp @@ -62,19 +62,6 @@ struct ImitateProject::CanImitateAndProject struct ImitateProject::ResultFn { - void getConstraints(TermStack& lhss, TermStack& rhss, TermStack& sorts, LiteralStack& constraints) - { - CALL("ImitateProject::ResultFn::getConstraints"); - ASS(!constraints.size()); - ASS(lhss.size() == rhss.size()); - - for(unsigned i = 0; i < lhss.length(); i++){ - TermList lhs = SubstHelper::apply(lhss[i], _subst); - TermList rhs = SubstHelper::apply(rhss[i], _subst); - constraints.push(Literal::createEquality(false, lhs, rhs, sorts[i])); - } - } - Clause* createRes(InferenceRule rule) { CALL("ImitateProject::ResultFn::createRes"); @@ -159,7 +146,7 @@ struct ImitateProject::ResultFn if(argSort.finalResult() != sort) continue; TermList head = arg.head(); // argument has a rigid head different to that of rhs. no point projecting - if(!head.isVar() && head != headRigid) continue; + if(head.isTerm() && head.deBruijnIndex().isNone() && head != headRigid) continue; unsigned fVar = _maxVar; TermList pb = AH::createGeneralBinding(fVar,deBruijnIndices[i],argsFlex,sortsFlex,deBruijnIndices); From e084e878a82244954f17548dfc689b4d7fe82396 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 25 Sep 2022 13:11:52 +0100 Subject: [PATCH 036/210] fixing bugs. about to start first round of testing --- Inferences/BetaEtaISE.cpp | 2 +- Inferences/CNFOnTheFly.cpp | 2 +- Inferences/FOOLParamodulation.cpp | 2 +- Kernel/ApplicativeHelper.cpp | 2 +- Kernel/Inference.cpp | 4 ++-- Kernel/Inference.hpp | 2 +- SAT/Z3Interfacing.cpp | 2 +- Saturation/Splitter.cpp | 30 +++++++++++++++++++++++------- Shell/LambdaConversion.cpp | 6 ++---- Shell/Options.hpp | 2 ++ 10 files changed, 35 insertions(+), 19 deletions(-) diff --git a/Inferences/BetaEtaISE.cpp b/Inferences/BetaEtaISE.cpp index 495c9ef91a..f45e288656 100644 --- a/Inferences/BetaEtaISE.cpp +++ b/Inferences/BetaEtaISE.cpp @@ -59,7 +59,7 @@ Clause* BetaEtaSimplify::simplify(Clause* c) return c; } - Inference inf = SimplifyingInference1(InferenceRule::BETA_NORMALISE, c); + Inference inf = SimplifyingInference1(InferenceRule::BETA_ETA_NORMALISE, c); Clause* newC = Clause::fromStack(litStack, inf); return newC; diff --git a/Inferences/CNFOnTheFly.cpp b/Inferences/CNFOnTheFly.cpp index 8973c77d34..7cc2e14efe 100644 --- a/Inferences/CNFOnTheFly.cpp +++ b/Inferences/CNFOnTheFly.cpp @@ -679,7 +679,7 @@ TermList sigmaRemoval(TermList sigmaTerm, TermList expsrt){ } } - TermList resultSort = *expsrt.term()->nthArgument(0); + TermList resultSort = expsrt.domain(); SortHelper::normaliseArgSorts(typeVars, termVarSorts); SortHelper::normaliseSort(typeVars, resultSort); diff --git a/Inferences/FOOLParamodulation.cpp b/Inferences/FOOLParamodulation.cpp index 74c7568012..5919345904 100644 --- a/Inferences/FOOLParamodulation.cpp +++ b/Inferences/FOOLParamodulation.cpp @@ -85,7 +85,7 @@ ClauseIterator FOOLParamodulation::generateClauses(Clause* premise) { } // we shouldn't replace variables, hence NonVariableIterator - NonVariableIterator nvi(literal); + NonVariableNonTypeIterator nvi(literal); while (nvi.hasNext()) { TermList subterm = nvi.next(); unsigned functor = subterm.term()->functor(); diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 132c6c32b0..e39597f639 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -217,7 +217,7 @@ TermList TermShifter::transformSubterm(TermList t) ASS(_shiftBy >= 0 || index >= std::abs(_shiftBy)); return ApplicativeHelper::getDeBruijnIndex(index + _shiftBy, sort); } else { - _minFreeIndex = (int)index; + _minFreeIndex = (int)(index - _cutOff); } } } diff --git a/Kernel/Inference.cpp b/Kernel/Inference.cpp index 614733857f..b6d8e13f8c 100644 --- a/Kernel/Inference.cpp +++ b/Kernel/Inference.cpp @@ -949,8 +949,8 @@ vstring Kernel::ruleName(InferenceRule rule) return "leibniz equality elimination"; case InferenceRule::CASES_SIMP: return "cases simplifying"; - case InferenceRule::BETA_NORMALISE: - return "beta normalization"; + case InferenceRule::BETA_ETA_NORMALISE: + return "beta eta normalization"; case InferenceRule::FLEX_FLEX_SIMPLIFY: return "flex-flex simplify"; case InferenceRule::IMITATE: diff --git a/Kernel/Inference.hpp b/Kernel/Inference.hpp index 87cd6281c9..513725fa4f 100644 --- a/Kernel/Inference.hpp +++ b/Kernel/Inference.hpp @@ -258,7 +258,7 @@ enum class InferenceRule : unsigned char { BOOL_SIMP, - BETA_NORMALISE, + BETA_ETA_NORMALISE, FLEX_FLEX_SIMPLIFY, diff --git a/SAT/Z3Interfacing.cpp b/SAT/Z3Interfacing.cpp index 24577ec2d8..5db492a97e 100644 --- a/SAT/Z3Interfacing.cpp +++ b/SAT/Z3Interfacing.cpp @@ -1096,7 +1096,7 @@ z3::func_decl Z3Interfacing::z3Function(FuncOrPredId functor) SortHelper::getTypeSub(functor.forSorts, typeSubst); namebuf += '$'; for(unsigned i = 0; i < functor.forSorts->numTypeArguments(); i++) - namebuf += functor.forSorts->termArg(i).toString(); + namebuf += functor.forSorts->typeArg(i).toString(); } z3::sort_vector domain_sorts = z3::sort_vector(self._context); diff --git a/Saturation/Splitter.cpp b/Saturation/Splitter.cpp index 4c56a747c1..2bcebe3ba2 100644 --- a/Saturation/Splitter.cpp +++ b/Saturation/Splitter.cpp @@ -48,6 +48,8 @@ #include "SaturationAlgorithm.hpp" +#include "Shell/UIHelper.hpp" + namespace Saturation { @@ -73,13 +75,27 @@ void SplittingBranchSelector::init() #if VZ3 case Options::SatSolver::Z3: { BYPASSING_ALLOCATOR - _solverIsSMT = true; - _solver = new Z3Interfacing(_parent.getOptions(),_parent.satNaming(), /* unsat core */ false, _parent.getOptions().exportAvatarProblem()); - if(_parent.getOptions().satFallbackForSMT()){ - // TODO make fallback minimizing? - SATSolver* fallback = new MinisatInterfacing(_parent.getOptions(),true); - _solver = new FallbackSolverWrapper(_solver.release(),fallback); - } + #if VHOL + if(env.property->higherOrder()){ + if (outputAllowed()) { + env.beginOutput(); + addCommentSignForSZS(env.out()); + env.out() << "WARNING: Z3 as SAT solver not compatible with higher-order. Using Minisat instead" << endl; + env.endOutput(); + } + _solver = new MinisatInterfacing(_parent.getOptions(),true); + } else { + #endif + _solverIsSMT = true; + _solver = new Z3Interfacing(_parent.getOptions(),_parent.satNaming(), /* unsat core */ false, _parent.getOptions().exportAvatarProblem()); + if(_parent.getOptions().satFallbackForSMT()){ + // TODO make fallback minimizing? + SATSolver* fallback = new MinisatInterfacing(_parent.getOptions(),true); + _solver = new FallbackSolverWrapper(_solver.release(),fallback); + } + #if VHOL + } + #endif } break; #endif diff --git a/Shell/LambdaConversion.cpp b/Shell/LambdaConversion.cpp index cbb43ab83a..8a885eeb59 100644 --- a/Shell/LambdaConversion.cpp +++ b/Shell/LambdaConversion.cpp @@ -118,8 +118,6 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) case EXISTS: { VList* vars = formula->vars(); VList::Iterator vit(vars); - SList* sort = SList::singleton(TermList(0, true)); //dummy data - VList* var = VList::singleton(0); TermList form = TermList(Term::createFormula(formula->qarg())); bool pi = conn == FORALL; @@ -128,8 +126,8 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) while(vit.hasNext()){ int v = vit.next(); ALWAYS(SortHelper::tryGetVariableSort(v, formula->qarg(), s)); - var->setHead(v); - sort->setHead(s); + VList* var = VList::singleton(v); + SList* sort = SList::singleton(s); auto t = TermList(Term::createLambda(form, var, sort, AtomicSort::boolSort())); form = AH::app((pi ? AH::pi(s) : AH::sigma(s)), t); } diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 1360a0db7a..baf4d82e09 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -721,6 +721,7 @@ class Options WARNING = 1, }; +#if VHOL enum class FunctionExtensionality : unsigned int { OFF = 0, AXIOM = 1, @@ -755,6 +756,7 @@ class Options PRETTY = 2, TPTP = 3 }; +#endif //========================================================== // The Internals From b95b89911cf9bf547b5bdba5fb737e63beae25df Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 25 Sep 2022 17:18:22 +0100 Subject: [PATCH 037/210] bug fixes --- Inferences/PrimitiveInstantiation.cpp | 4 ++-- Kernel/ApplicativeHelper.cpp | 5 ++++- Saturation/ManCSPassiveClauseContainer.cpp | 1 + Shell/Options.hpp | 2 +- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index ef90819db8..1d4845d3c9 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -177,7 +177,7 @@ struct PrimitiveInstantiation::ResultFn TermList dbj = deBruijnIndices[p.second]; // creating term dbi = dbj - TermList tm = AH::app2(AH::equality(sortsFlex[i]), dbi, dbj); + TermList tm = AH::app2(AH::equality(sortsFlex[p.first]), dbi, dbj); TermList gb = AH::surroundWithLambdas(tm, sortsFlex); _subst.bind(headFlex.var(), gb); results.push(createRes()); @@ -188,7 +188,7 @@ struct PrimitiveInstantiation::ResultFn _subst.bind(headFlex.var(), gb); results.push(createRes()); - if(sortsFlex[i].isBoolSort()){ + if(sortsFlex[p.first].isBoolSort()){ //creating dbi \/ dbj _subst.reset(); gb = AH::surroundWithLambdas(AH::app2(AH::disj(), dbi, dbj), sortsFlex); diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index e39597f639..32ba18d46e 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -217,7 +217,10 @@ TermList TermShifter::transformSubterm(TermList t) ASS(_shiftBy >= 0 || index >= std::abs(_shiftBy)); return ApplicativeHelper::getDeBruijnIndex(index + _shiftBy, sort); } else { - _minFreeIndex = (int)(index - _cutOff); + int j = (int)(index - _cutOff); + if(j < _minFreeIndex || _minFreeIndex == -1){ + _minFreeIndex = j; + } } } } diff --git a/Saturation/ManCSPassiveClauseContainer.cpp b/Saturation/ManCSPassiveClauseContainer.cpp index bc57ea9e4e..786aa54951 100644 --- a/Saturation/ManCSPassiveClauseContainer.cpp +++ b/Saturation/ManCSPassiveClauseContainer.cpp @@ -41,6 +41,7 @@ class VectorIteratorWrapper : public IteratorCore void ManCSPassiveClauseContainer::add(Clause* cl) { + BYPASSING_ALLOCATOR; CALL("ManCSPassiveClauseContainer::add"); clauses.push_back(cl); addedEvent.fire(cl); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index baf4d82e09..7ba07d3430 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2198,7 +2198,6 @@ bool _hard; unsigned forwardSubsumptionDemodulationMaxMatches() const { return _forwardSubsumptionDemodulationMaxMatches.actualValue; } Demodulation forwardDemodulation() const { return _forwardDemodulation.actualValue; } bool binaryResolution() const { return _binaryResolution.actualValue; } - bool superposition() const {return _superposition.actualValue; } URResolution unitResultingResolution() const { return _unitResultingResolution.actualValue; } bool hyperSuperposition() const { return _hyperSuperposition.actualValue; } bool simulatenousSuperposition() const { return _simultaneousSuperposition.actualValue; } @@ -2418,6 +2417,7 @@ bool _hard; bool complexVarCondition() const { return _complexVarCondition.actualValue; } HPrinting holPrinting() const { return _holPrinting.actualValue; } void setHolPrinting(HPrinting setting) { _holPrinting.actualValue = setting; } + bool superposition() const {return _superposition.actualValue; } #endif // For unit testing From 0f8b7d174f2ff0660cf1fc5b8fc853e81e718b16 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Mon, 26 Sep 2022 00:11:09 +0100 Subject: [PATCH 038/210] bug fixing and making sure that HOL is properly encapsulated behind compiler directives --- CMakeLists.txt | 4 +++- Indexing/TermSharing.cpp | 5 ++++- Inferences/Cases.cpp | 11 +---------- Inferences/ElimLeibniz.cpp | 4 ++++ Inferences/ElimLeibniz.hpp | 4 ++++ Inferences/PrimitiveInstantiation.cpp | 4 ++++ Inferences/PrimitiveInstantiation.hpp | 4 ++++ Kernel/MismatchHandler.cpp | 4 ++++ Kernel/MismatchHandler.hpp | 4 ++++ Kernel/Ordering.cpp | 3 +++ Kernel/Term.cpp | 4 ++-- Kernel/Term.hpp | 2 ++ Saturation/SaturationAlgorithm.cpp | 10 ++++++++-- Shell/Options.cpp | 10 ++++++---- 14 files changed, 53 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dc3d884fc4..55c4b1847c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -808,8 +808,10 @@ elseif(CMAKE_BUILD_TYPE STREQUAL Release) endif() if(CMAKE_BUILD_HOL STREQUAL On) + message(STATUS "Building with HOL support") add_compile_definitions(VHOL=1) -elseif(CMAKE_BUILD_HOL STREQUAL Off) +else() + message(STATUS "Building without HOL support") add_compile_definitions(VHOL=0) endif() diff --git a/Indexing/TermSharing.cpp b/Indexing/TermSharing.cpp index ef78718cfe..1557b9a371 100644 --- a/Indexing/TermSharing.cpp +++ b/Indexing/TermSharing.cpp @@ -173,8 +173,11 @@ Term* TermSharing::insert(Term* t) t->setColor(color); } +#if VHOL t->setHasRedex(hasRedex); - t->setHasDBIndex(hasDBIndex); + t->setHasDBIndex(hasDBIndex); + t->setHasLambda(hasLambda); +#endif t->setInterpretedConstantsPresence(hasInterpretedConstants); _totalTerms++; diff --git a/Inferences/Cases.cpp b/Inferences/Cases.cpp index 0a24740dff..ce694e2cb7 100644 --- a/Inferences/Cases.cpp +++ b/Inferences/Cases.cpp @@ -29,7 +29,6 @@ #include "Kernel/TermIterators.hpp" #include "Kernel/Signature.hpp" #include "Kernel/OperatorType.hpp" -#include "Kernel/SortHelper.hpp" #include "Saturation/SaturationAlgorithm.hpp" @@ -39,20 +38,12 @@ namespace Inferences { Clause* Cases::performParamodulation(Clause* premise, Literal* lit, TermList t) { CALL("Cases::performParamodulation"); - + ASS(t.isTerm()); - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - - if((t == lhs) || (t == rhs)){ - return 0; - } - static TermList troo(Term::foolTrue()); static TermList fols(Term::foolFalse()); - // Create the C[true] \/ s = false clause unsigned conclusionLength = premise->length() + 1; diff --git a/Inferences/ElimLeibniz.cpp b/Inferences/ElimLeibniz.cpp index 884dfbbfcf..cfbd053d72 100644 --- a/Inferences/ElimLeibniz.cpp +++ b/Inferences/ElimLeibniz.cpp @@ -12,6 +12,8 @@ * Implements class PrimitiveInstantiation. */ +#if VHOL + #include "Debug/RuntimeStatistics.hpp" #include "Saturation/SaturationAlgorithm.hpp" @@ -182,3 +184,5 @@ ClauseIterator ElimLeibniz::generateClauses(Clause* premise) } } + +#endif diff --git a/Inferences/ElimLeibniz.hpp b/Inferences/ElimLeibniz.hpp index e5cbb59ba1..6520c4c5ff 100644 --- a/Inferences/ElimLeibniz.hpp +++ b/Inferences/ElimLeibniz.hpp @@ -15,6 +15,8 @@ #ifndef __ElimLeibniz__ #define __ElimLeibniz__ +#if VHOL + #include "Forwards.hpp" #include "InferenceEngine.hpp" @@ -52,3 +54,5 @@ class ElimLeibniz : public GeneratingInferenceEngine } #endif + +#endif diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index 1d4845d3c9..c2d2557697 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -12,6 +12,8 @@ * Implements class PrimitiveInstantiation. */ +#if VHOL + #include "Debug/RuntimeStatistics.hpp" #include "Saturation/SaturationAlgorithm.hpp" @@ -252,3 +254,5 @@ ClauseIterator PrimitiveInstantiation::generateClauses(Clause* premise) } } + +#endif \ No newline at end of file diff --git a/Inferences/PrimitiveInstantiation.hpp b/Inferences/PrimitiveInstantiation.hpp index 407035bd3f..888c8eb6e3 100644 --- a/Inferences/PrimitiveInstantiation.hpp +++ b/Inferences/PrimitiveInstantiation.hpp @@ -16,6 +16,8 @@ #ifndef __PrimitiveInstantiation__ #define __PrimitiveInstantiation__ +#if VHOL + #include "Forwards.hpp" #include "Indexing/TermIndex.hpp" @@ -45,4 +47,6 @@ class PrimitiveInstantiation }; +#endif + #endif /* __PrimitiveInstantiation__ */ diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index cdfbca8e60..d433bd9000 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -148,6 +148,7 @@ MaybeBool MismatchHandler::isConstraintTerm(TermList t){ TermList MismatchHandler::transformSubterm(TermList trm){ CALL("MismatchHandler::transformSubterm"); +#if VHOL if(_appTerms.size()){ TermList t = _appTerms.pop(); if(t.isApplication() && trm == t.lhs()){ @@ -156,6 +157,7 @@ TermList MismatchHandler::transformSubterm(TermList trm){ } _appTerms.push(t); } +#endif for (auto& h : _inners) { TermList t = h->transformSubterm(trm); @@ -166,6 +168,7 @@ TermList MismatchHandler::transformSubterm(TermList trm){ return trm; } +#if VHOL void MismatchHandler::onTermEntry(Term* t) { CALL("MismatchHandler::onTermEntry"); @@ -181,6 +184,7 @@ void MismatchHandler::onTermExit(Term* t){ _appTerms.pop(); } } +#endif Term* MismatchHandler::get(unsigned var) { diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 538eb233bb..fceb9dde91 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -85,8 +85,10 @@ class MismatchHandler : UnificationConstraintStack& ucs, BacktrackData& bd, bool recording); TermList transformSubterm(TermList trm) override; +#if VHOL void onTermEntry(Term* t) override; void onTermExit(Term* t) override; +#endif MaybeBool isConstraintTerm(TermList t); static Term* get(unsigned var); @@ -118,7 +120,9 @@ class MismatchHandler : TermList t2, unsigned index2, UnificationConstraintStack& ucs, BacktrackData& bd, bool recording); +#if VHOL TermStack _appTerms; +#endif static VSpecVarToTermMap _termMap; Stack> _inners; }; diff --git a/Kernel/Ordering.cpp b/Kernel/Ordering.cpp index 9fe56740ef..3219fb1acd 100644 --- a/Kernel/Ordering.cpp +++ b/Kernel/Ordering.cpp @@ -138,6 +138,9 @@ Ordering* Ordering::create(Problem& prb, const Options& opt) && env.options->kboWeightGenerationScheme() == Options::KboWeightGenerationScheme::CONST && !env.options->kboMaxZero() && !prb.hasInterpretedOperations() +#if VHOL + && !env.property->higherOrder() +#endif ) { out = new KBOForEPR(prb, opt); } else { diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 5162160dcc..e1ef0f961a 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -1017,6 +1017,8 @@ vstring Term::toString() const return s; } // Term::toString +#if VHOL + vstring Term::lambdaToString(const SpecialTermData* sd, bool pretty) const { CALL("Term::lambdaToString"); @@ -1042,8 +1044,6 @@ vstring Term::lambdaToString(const SpecialTermData* sd, bool pretty) const return "(" + lambda + varList + " : (" + lambdaExp.toString() + "))"; } -#if VHOL - vstring Term::toString(bool topLevel, IndexVarStack& st) const { CALL("Term::toString(bool, ...)"); diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 46b482f401..3aed6aaade 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -451,8 +451,10 @@ class Term const unsigned functor() const { return _functor; } vstring toString() const; +#if VHOL // auxiliary function to print lambda specials vstring lambdaToString(const SpecialTermData* sd, bool pretty = false) const; +#endif static vstring variableToString(unsigned var); static vstring variableToString(TermList var); diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 20b658da09..c97f95894b 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1554,9 +1554,13 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if (prb.hasEquality()) { gie->addFront(new EqualityFactoring()); gie->addFront(new EqualityResolution()); +#if VHOL if(env.options->superposition()){ +#endif gie->addFront(new Superposition()); +#if VHOL } +#endif } else if(opt.unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF){ gie->addFront(new EqualityResolution()); } @@ -1822,8 +1826,10 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons res->addFront(new TautologyDeletionISE2()); } - res->addFront(new BetaEtaSimplify()); - res->addFront(new FlexFlexSimplify()); + if(prb.higherOrder()){ + res->addFront(new BetaEtaSimplify()); + res->addFront(new FlexFlexSimplify()); + } #endif // Only add if there are distinct groups diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 53dafef4f3..639ee0ec71 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1523,10 +1523,6 @@ void Options::init() _binaryResolution.setRandomChoices(And(isRandSat(),saNotInstGen(),Or(hasEquality(),hasCat(Property::HNE))),{"on"}); _binaryResolution.setRandomChoices({"on","off"}); - _superposition = BoolOptionValue("superposition","sup",true); - _superposition.description= "Control superposition. Turning off this core inference leads to an incomplete calculus on equational problems."; - _lookup.insert(&_superposition); - _condensation = ChoiceOptionValue("condensation","cond",Condensation::OFF,{"fast","off","on"}); _condensation.description= "Perform condensation. If 'fast' is specified, we only perform condensations that are easy to check for."; @@ -1738,6 +1734,10 @@ void Options::init() //*********************** Higher-order *********************** #if VHOL + _superposition = BoolOptionValue("superposition","sup",true); + _superposition.description= "Control superposition. Turning off this core inference leads to an incomplete calculus on equational problems."; + _lookup.insert(&_superposition); + _addProxyAxioms = BoolOptionValue("add_proxy_axioms","apa",false); _addProxyAxioms.description="Add logical proxy axioms"; _lookup.insert(&_addProxyAxioms); @@ -3463,7 +3463,9 @@ bool Options::complete(const Problem& prb) const bool unitEquality = prop.category() == Property::UEQ; bool hasEquality = (prop.equalityAtoms() != 0); +#if VHOL if (hasEquality && !_superposition.actualValue) return false; +#endif if (!unitEquality) { if (_selection.actualValue <= -1000 || _selection.actualValue >= 1000) return false; From 42c766e929e34a0c5379b8fdffeb26c577dac211 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Mon, 26 Sep 2022 11:02:17 +0100 Subject: [PATCH 039/210] minor bug fix and adding comments --- Inferences/PrimitiveInstantiation.cpp | 8 ++++++++ Kernel/ApplicativeHelper.cpp | 3 +++ Kernel/LiteralSelector.cpp | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index c2d2557697..04f56759df 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -61,6 +61,14 @@ struct PrimitiveInstantiation::ResultFn ResultFn(Clause* cl): _cl(cl), _freshVar(cl->maxVar() + 1){ TermList sortVar(_freshVar++, false); + + // rather than constantly recreating this stack + // and pushing on the terms every time we run a prim inst inference + // another option is to use RobSubstitution and allow it to + // rename terms apart. That way, we don't need to worry about freshness + // of variables. The potential downside is that the whole RobSubstitution + // mechanism is complicated a may add its own overhead. Worth investigating + // though _heads.push(AH::top()); _heads.push(AH::bottom()); auto piSet = env.options->piSet(); diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 32ba18d46e..20d67dd00e 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -59,6 +59,9 @@ TermList EtaNormaliser::normalise(TermList t) return transform(t); } +// uses algorithm for eta-reduction that can be found here: +// https://matryoshka-project.github.io/pubs/lambdae.pdf + TermList EtaNormaliser::transformSubterm(TermList t) { CALL("EtaNormaliser::transformSubterm"); diff --git a/Kernel/LiteralSelector.cpp b/Kernel/LiteralSelector.cpp index 4f7fd11ca7..719e7ac6a8 100644 --- a/Kernel/LiteralSelector.cpp +++ b/Kernel/LiteralSelector.cpp @@ -66,7 +66,7 @@ int LiteralSelector::getSelectionPriority(Literal* l) const Signature::Symbol* psym=env.signature->getPredicate(l->functor()); if(psym->label() || psym->answerPredicate() #if VHOL - || l->isFlexFlex() // don't select flex-flex literals + || (env.property->higerOrder() && l->isFlexFlex()) // don't select flex-flex literals #endif ) { return -2; From 7d363af26f92363d766215f342a52a8d85decaf9 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 27 Sep 2022 10:11:46 +0100 Subject: [PATCH 040/210] updating injectivity reasoning WIP --- Inferences/Injectivity.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Inferences/Injectivity.cpp b/Inferences/Injectivity.cpp index f3c660ccd1..b371248ef9 100644 --- a/Inferences/Injectivity.cpp +++ b/Inferences/Injectivity.cpp @@ -64,8 +64,7 @@ ClauseIterator Injectivity::generateClauses(Clause* premise) { ApplicativeHelper::getHeadAndArgs(lhsM, headLhs, argsLhs); ApplicativeHelper::getHeadAndArgs(rhsM, headRhs, argsRhs); - if(headLhs != headRhs || headLhs.isVar() || - ApplicativeHelper::isComb(headLhs)){ + if(headLhs != headRhs || headLhs.isVar()){ return ClauseIterator::getEmpty(); } ASS(argsLhs.size() == argsRhs.size()); @@ -119,12 +118,10 @@ TermList Injectivity::createNewLhs(TermList oldhead, TermStack& termArgs, unsign typeArg = typeArg->next(); } - Signature::Symbol* func = env.signature->getFunction(oldhead.term()->functor()); vstring pref = "inv_" + func->name() + "_"; - unsigned iFunc = env.signature->addFreshFunction(func->arity(), pref.c_str() ); + unsigned iFunc = env.signature->addFreshFunction(oldhead.term()->arity(), pref.c_str() ); - OperatorType* funcType = func->fnType(); - TermList type = funcType->result(); + TermList type = SortHelper::getResultSort(oldhead.term()); TermList oldResult = ApplicativeHelper::getResultApplieadToNArgs(type, termArgs.size()); TermStack sorts; From d3e2a988cef92f881b0b4fb43b271157be66094d Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 30 Sep 2022 07:16:46 +0100 Subject: [PATCH 041/210] streamlining code --- Inferences/ArgCong.cpp | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/Inferences/ArgCong.cpp b/Inferences/ArgCong.cpp index d3dbe6f6ff..818f66bdb6 100644 --- a/Inferences/ArgCong.cpp +++ b/Inferences/ArgCong.cpp @@ -58,10 +58,8 @@ struct ArgCong::IsPositiveEqualityFn struct ArgCong::ResultFn { - ResultFn(Clause* cl, bool afterCheck = false, Ordering* ord = nullptr) - : /*_afterCheck(afterCheck), _ord(ord),*/ _cl(cl), _cLen(cl->length()) { - _freshVar = cl->maxVar() + 1; - } + ResultFn(Clause* cl) + : _cl(cl), _cLen(cl->length()), _freshVar(cl->maxVar() + 1) {} Clause* operator() (Literal* lit) { CALL("ArgCong::ResultFn::operator()"); @@ -78,7 +76,7 @@ struct ArgCong::ResultFn } TermList alpha1, alpha2; - if(eqSort.isVar()){ + if(sortIsVar){ subst.reset(); alpha1 = TermList(_freshVar+1, false); alpha2 = TermList(_freshVar+2, false); @@ -107,15 +105,8 @@ struct ArgCong::ResultFn if(curr!=lit) { Literal* currAfter; - if (sortIsVar /*&& _afterCheck && _cl->numSelected() > 1*/) { + if (sortIsVar) { currAfter = SubstHelper::apply(curr, subst); - /*TimeCounter tc(TC_LITERAL_ORDER_AFTERCHECK); - - if (i < _cl->numSelected() && _ord->compare(currAfter,newLit) == Ordering::GREATER) { - env.statistics->inferencesBlockedForOrderingAftercheck++; - res->destroy(); - return 0; - }*/ //TODO reintroduce check } else { currAfter = curr; } @@ -131,9 +122,6 @@ struct ArgCong::ResultFn return res; } private: - // currently unused - // bool _afterCheck; - // Ordering* _ord; Clause* _cl; unsigned _cLen; unsigned _freshVar; @@ -153,9 +141,7 @@ ClauseIterator ArgCong::generateClauses(Clause* premise) auto it2 = getFilteredIterator(it1,IsPositiveEqualityFn()); - auto it3 = getMappingIterator(it2,ResultFn(premise, - getOptions().literalMaximalityAftercheck() && _salg->getLiteralSelector().isBGComplete(), - &_salg->getOrdering())); + auto it3 = getMappingIterator(it2,ResultFn(premise)); auto it4 = getFilteredIterator(it3,NonzeroFn()); From 465c598e13904f4878c7612a8015c7cd0de9a5ae Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 30 Sep 2022 10:59:28 +0100 Subject: [PATCH 042/210] adding missing VHOL tags --- CASC/PortfolioMode.cpp | 2 ++ CASC/Schedules.cpp | 4 ++++ CASC/Schedules.hpp | 3 +++ Shell/Options.cpp | 4 ++++ Shell/Options.hpp | 4 ++++ vampire.cpp | 3 +++ 6 files changed, 20 insertions(+) diff --git a/CASC/PortfolioMode.cpp b/CASC/PortfolioMode.cpp index f3e511885d..cb98c3fa70 100644 --- a/CASC/PortfolioMode.cpp +++ b/CASC/PortfolioMode.cpp @@ -382,9 +382,11 @@ void PortfolioMode::getSchedules(const Property& prop, Schedule& quick, Schedule Schedules::getCascSat2019Schedule(prop,quick,fallback); break; +#if VHOL case Options::Schedule::CASC_HOL_2020: Schedules::getHigherOrderSchedule2020(quick,fallback); break; +#endif case Options::Schedule::SMTCOMP: case Options::Schedule::SMTCOMP_2018: diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 2aaa9466a6..10b94696e4 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -2871,6 +2871,8 @@ void Schedules::getLtb2017DefaultSchedule(const Property& property, Schedule& sc sched.push("lrs+1003_4_bsr=unit_only:cond=fast:fsr=off:gsp=on:gs=on:gsaa=from_current:nm=0:nwc=1:stl=300:sos=on:sac=on:add=large:afp=10000:afq=1.1:anc=none:urr=ec_only:uhcvi=on_60"); // HLL 50 (1) } +#if VHOL + void Schedules::getHigherOrderSchedule2020(Schedule& quick, Schedule& fallback) { //no fallback at present @@ -3014,6 +3016,8 @@ void Schedules::getHigherOrderSchedule2020(Schedule& quick, Schedule& fallback) quick.push("ott+2_1:1_csup=on:fe=axiom:ntd=on:narr=off:prag=on:cs=on_600"); } +#endif + // ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- // ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- // ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- diff --git a/CASC/Schedules.hpp b/CASC/Schedules.hpp index 3daacb7a57..df7e50fc96 100644 --- a/CASC/Schedules.hpp +++ b/CASC/Schedules.hpp @@ -27,7 +27,10 @@ class Schedules public: static void getScheduleFromFile(const vstring& filename, Schedule& quick); +#if VHOL + //TODO update schedule with new options static void getHigherOrderSchedule2020(Schedule& quick, Schedule& fallback); +#endif static void getCasc2019Schedule(const Shell::Property& property, Schedule& quick, Schedule& fallback); static void getCascSat2019Schedule(const Shell::Property& property, Schedule& quick, Schedule& fallback); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index fc27cb78ca..53f4c742d2 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -102,7 +102,9 @@ void Options::init() _mode = ChoiceOptionValue("mode","",Mode::VAMPIRE, {"axiom_selection", "casc", +#if VHOL "casc_hol", +#endif "casc_sat", "casc_ltb", "clausify", @@ -148,7 +150,9 @@ void Options::init() "casc_2019", "casc_sat", "casc_sat_2019", +#if VHOL "casc_hol_2020", +#endif "file", "induction", "integer_induction", diff --git a/Shell/Options.hpp b/Shell/Options.hpp index ad4019bcfd..dbb6f8c6ab 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -379,7 +379,9 @@ class Options enum class Mode : unsigned int { AXIOM_SELECTION, CASC, +if VHOL CASC_HOL, +#endif CASC_SAT, CASC_LTB, CLAUSIFY, @@ -404,7 +406,9 @@ class Options CASC_2019, CASC_SAT, CASC_SAT_2019, +if VHOL CASC_HOL_2020, +#endif FILE, INDUCTION, INTEGER_INDUCTION, diff --git a/vampire.cpp b/vampire.cpp index 5fab76c366..848a6b9111 100644 --- a/vampire.cpp +++ b/vampire.cpp @@ -717,6 +717,7 @@ int main(int argc, char* argv[]) } break; +#if VHOL case Options::Mode::CASC_HOL: { env.options->setIgnoreMissing(Options::IgnoreMissing::WARN); env.options->setSchedule(Options::Schedule::CASC_HOL_2020); @@ -733,6 +734,8 @@ int main(int argc, char* argv[]) } break; } +#endif + case Options::Mode::CASC_SAT: env.options->setIgnoreMissing(Options::IgnoreMissing::WARN); env.options->setSchedule(Options::Schedule::CASC_SAT); From 7951d7292c0d0a0c4d1e30b19ac816f5e42f19d9 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 30 Sep 2022 11:17:41 +0100 Subject: [PATCH 043/210] minor bug fix --- Shell/Options.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Shell/Options.hpp b/Shell/Options.hpp index dbb6f8c6ab..57ac81add8 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -379,7 +379,7 @@ class Options enum class Mode : unsigned int { AXIOM_SELECTION, CASC, -if VHOL +#if VHOL CASC_HOL, #endif CASC_SAT, @@ -406,7 +406,7 @@ if VHOL CASC_2019, CASC_SAT, CASC_SAT_2019, -if VHOL +#if VHOL CASC_HOL_2020, #endif FILE, From b5eee432bfa2907dfab10cc10840211382972f1a Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 30 Sep 2022 12:18:11 +0100 Subject: [PATCH 044/210] adding proof extra for imitations and projections. also bug fixing --- Inferences/ImitateProject.cpp | 38 +++++++++++++++++++++++++++++++++-- Kernel/LiteralSelector.cpp | 2 +- Kernel/Term.hpp | 1 + 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp index 710077618b..ce5749c73e 100644 --- a/Inferences/ImitateProject.cpp +++ b/Inferences/ImitateProject.cpp @@ -76,6 +76,28 @@ struct ImitateProject::ResultFn return res; } + void addProofExtraString(Clause* c, Literal* lit, TermList headFlex, TermList pb, int pos = -1) + { + CALL("ImitateProject::ResultFn::addProofExtraString"); + + bool projecting = pos > -1; + + vstring litPosition = Lib::Int::toString(_cl->getLiteralPosition(lit)); + + vstring suffix = pos == 1 ? "st" : (pos == 2 ? "nd" : (pos == 3 ? "nd" : "th")); + vstring projArgString = projecting ? ", projecting the " + Int::toString(pos) + suffix + " argument" : ""; + + vstring extra = "at literal " + litPosition + projArgString + ", binding: [" + + headFlex.toString() + " -> " + pb.toString() + "]"; + + if (!env.proofExtra) { + env.proofExtra = new DHMap(); + } + env.proofExtra->insert(c,extra); + + } + + ResultFn(Clause* cl) : _cl(cl), _cLen(cl->length()), _maxVar(cl->maxVar()) {} ClauseIterator operator() (Literal* lit) @@ -133,7 +155,13 @@ struct ImitateProject::ResultFn TermList pb = AH::createGeneralBinding(fVar,headRigid,argsFlex,sortsFlex,deBruijnIndices); _subst.bind(headFlex.var(), pb); - results.push(createRes(InferenceRule::IMITATE)); + Clause* res = createRes(InferenceRule::IMITATE); + + if(env.options->proofExtra()==Options::ProofExtra::FULL){ + addProofExtraString(res, lit, headFlex, pb); + } + + results.push(res); } // projections @@ -152,7 +180,13 @@ struct ImitateProject::ResultFn TermList pb = AH::createGeneralBinding(fVar,deBruijnIndices[i],argsFlex,sortsFlex,deBruijnIndices); _subst.bind(headFlex.var(), pb); - results.push(createRes(InferenceRule::PROJECT)); + Clause* res = createRes(InferenceRule::PROJECT); + + if(env.options->proofExtra()==Options::ProofExtra::FULL){ + addProofExtraString(res, lit, headFlex, pb, (int)(argsFlex.size() - i)); + } + + results.push(res); } diff --git a/Kernel/LiteralSelector.cpp b/Kernel/LiteralSelector.cpp index 719e7ac6a8..2325c98b67 100644 --- a/Kernel/LiteralSelector.cpp +++ b/Kernel/LiteralSelector.cpp @@ -66,7 +66,7 @@ int LiteralSelector::getSelectionPriority(Literal* l) const Signature::Symbol* psym=env.signature->getPredicate(l->functor()); if(psym->label() || psym->answerPredicate() #if VHOL - || (env.property->higerOrder() && l->isFlexFlex()) // don't select flex-flex literals + || (env.property->higherOrder() && l->isFlexFlex()) // don't select flex-flex literals #endif ) { return -2; diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 908d683bf5..b48f49f874 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -38,6 +38,7 @@ #include "Lib/Comparison.hpp" #include "Lib/Stack.hpp" #include "Lib/Hash.hpp" +#include "Lib/Option.hpp" // the number of bits used for "TermList::_info::distinctVars" #if VHOL From d88a10d230a2d1ef00a02604359576856d9e99ac Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 30 Sep 2022 14:23:52 +0100 Subject: [PATCH 045/210] bug fix in eta reduction --- Kernel/ApplicativeHelper.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 20d67dd00e..d5396597df 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -95,8 +95,12 @@ TermList EtaNormaliser::transformSubterm(TermList t) unsigned k = std::min(l, std::min(n, j)); if(!k){ - _ignoring = true; - _awaiting = newBody; + // only start awaiting if we are going to explore the + // subterm ... + if(!newBody.isVar() && newBody.term()->hasLambda()){ + _ignoring = true; + _awaiting = newBody; + } return t; } @@ -115,8 +119,10 @@ TermList EtaNormaliser::transformSubterm(TermList t) return newBody; } - _ignoring = true; - _awaiting = newBody; + if(!newBody.isVar() && newBody.term()->hasLambda()){ + _ignoring = true; + _awaiting = newBody; + } return SubtermReplacer(body, newBody).transform(t); } From 54002e6b00388ebab9053d83efa4b5523096ee04 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 13 Oct 2022 15:43:11 +0100 Subject: [PATCH 046/210] removing stray print --- Shell/Skolem.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Shell/Skolem.cpp b/Shell/Skolem.cpp index aab4a42ed0..8a9c639a7c 100644 --- a/Shell/Skolem.cpp +++ b/Shell/Skolem.cpp @@ -501,7 +501,6 @@ Formula* Skolem::skolemise (Formula* f) reuse_key = name_reuse->key(before); successfully_reused = name_reuse->get(reuse_key, sym); if (successfully_reused) { // only counts one per the whole quantifier block - cout << "SYM " << sym << endl; env.statistics->reusedSkolemFunctions++; } } From 1e83855c9de36b566d31d26ff9379e67b9ad0828 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 17 Feb 2023 09:45:57 +0000 Subject: [PATCH 047/210] adding missing compiler directive and improving pretty printing --- Kernel/Term.cpp | 5 +++++ Shell/Options.cpp | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index a1b4e1fb81..e9fe38b60b 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -1227,6 +1227,11 @@ vstring Literal::toString() const Stack stack(64); vstring s = polarity() ? "" : "~"; +#if VHOL + if(env.options->holPrinting() == Options::HPrinting::PRETTY){ + s = polarity() ? "" : "¬"; + } +#endif unsigned proj; if (Theory::tuples()->findProjection(functor(), true, proj)) { return s + "$proj(" + Int::toString(proj) + ", " + args()->asArgsToString(); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 53f4c742d2..52f6ac0a44 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -138,7 +138,10 @@ void Options::init() auto UsingPortfolioTechnology = [this] { // Consider extending this list when adding a new Casc-like mode - return Or(_mode.is(equal(Mode::CASC_HOL)), + return Or( +#if VHOL + _mode.is(equal(Mode::CASC_HOL)), +#endif _mode.is(equal(Mode::CASC)), _mode.is(equal(Mode::CASC_SAT)), _mode.is(equal(Mode::SMTCOMP)), From 73831a06a82fefdc4894c5ce25487f3eb35004d9 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 31 Mar 2023 11:08:17 +0100 Subject: [PATCH 048/210] setting up the necessary for implementing higher-order unification. everything in place and seems to be working. can now add HOU into HOLUnification --- CMakeLists.txt | 2 + Forwards.hpp | 7 + Indexing/CodeTreeInterfaces.hpp | 2 +- Indexing/LiteralIndex.hpp | 4 +- Indexing/LiteralIndexingStructure.hpp | 4 +- Indexing/LiteralSubstitutionTree.cpp | 4 - Indexing/LiteralSubstitutionTree.hpp | 27 +- Indexing/ResultSubstitution.cpp | 3 + Indexing/ResultSubstitution.hpp | 6 +- Indexing/SubstitutionTree.hpp | 326 +++-------- Indexing/SubstitutionTree_FastGen.cpp | 115 ++-- Indexing/SubstitutionTree_FastInst.cpp | 124 ++--- Indexing/TermIndex.hpp | 8 +- Indexing/TermIndexingStructure.hpp | 8 +- Indexing/TermSubstitutionTree.hpp | 39 +- Inferences/BinaryResolution.cpp | 33 +- Inferences/BinaryResolution.hpp | 2 +- Inferences/EqualityFactoring.cpp | 124 +++-- Inferences/EqualityFactoring.hpp | 6 +- Inferences/EqualityResolution.cpp | 138 +++-- Inferences/EqualityResolution.hpp | 6 + Inferences/HyperSuperposition.cpp | 3 +- Inferences/Superposition.cpp | 49 +- Inferences/Superposition.hpp | 2 +- Kernel/HOLUnification.cpp | 127 +++++ Kernel/HOLUnification.hpp | 105 ++++ Kernel/MismatchHandler.cpp | 171 +++--- Kernel/MismatchHandler.hpp | 124 ++--- Kernel/RobSubstitution.cpp | 42 ++ Kernel/RobSubstitution.hpp | 71 ++- Kernel/Term.cpp | 20 +- Kernel/Term.hpp | 20 +- Shell/Options.cpp | 2 +- Test/SyntaxSugar.hpp | 3 + UnitTests/tUnificationWithAbstraction.cpp | 640 +++++----------------- 35 files changed, 1103 insertions(+), 1264 deletions(-) create mode 100644 Kernel/HOLUnification.cpp create mode 100644 Kernel/HOLUnification.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index c096fa6785..4e28726a71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -233,6 +233,7 @@ set(VAMPIRE_KERNEL_SOURCES Kernel/Problem.cpp Kernel/Renaming.cpp Kernel/RobSubstitution.cpp + Kernel/HOLUnification.cpp Kernel/MismatchHandler.cpp Kernel/Signature.cpp Kernel/SortHelper.cpp @@ -283,6 +284,7 @@ set(VAMPIRE_KERNEL_SOURCES Kernel/RCClauseStack.hpp Kernel/Renaming.hpp Kernel/RobSubstitution.hpp + Kernel/HOLUnification.hpp Kernel/MismatchHandler.hpp Kernel/Signature.hpp Kernel/SortHelper.hpp diff --git a/Forwards.hpp b/Forwards.hpp index f56f2ced09..0f3e4393b4 100644 --- a/Forwards.hpp +++ b/Forwards.hpp @@ -135,6 +135,12 @@ enum SymbolType{FUNC, PRED, TYPE_CON}; namespace Indexing { + +// TODO where should these go? +static constexpr int QUERY_BANK=0; +static constexpr int RESULT_BANK=1; +static constexpr int NORM_RESULT_BANK=3; + class Index; class IndexManager; class LiteralIndex; @@ -146,6 +152,7 @@ class TermSharing; class ResultSubstitution; typedef Lib::SmartPtr ResultSubstitutionSP; +//typedef Lib::VirtualIterator SubstSPIterator; }; diff --git a/Indexing/CodeTreeInterfaces.hpp b/Indexing/CodeTreeInterfaces.hpp index 3eaa568d8c..e0b8635dde 100644 --- a/Indexing/CodeTreeInterfaces.hpp +++ b/Indexing/CodeTreeInterfaces.hpp @@ -49,7 +49,7 @@ class CodeTreeTIS : public TermIndexingStructure TermQueryResultIterator getGeneralizations(TypedTermList t, bool retrieveSubstitutions = true); bool generalizationExists(TermList t); // TODO: get rid of NOT_IMPLEMENTED - VirtualIterator> getUwa(TypedTermList t, Options::UnificationWithAbstraction, bool fixedPointIteration) { NOT_IMPLEMENTED; } + TermQueryResultIterator getUwa(TypedTermList t) { NOT_IMPLEMENTED; } #if VDEBUG virtual void markTagged(){ NOT_IMPLEMENTED; } diff --git a/Indexing/LiteralIndex.hpp b/Indexing/LiteralIndex.hpp index 8b23805d20..9be6595019 100644 --- a/Indexing/LiteralIndex.hpp +++ b/Indexing/LiteralIndex.hpp @@ -38,8 +38,8 @@ class LiteralIndex SLQueryResultIterator getUnifications(Literal* lit, bool complementary, bool retrieveSubstitutions = true) { return _is->getUnifications(lit, complementary, retrieveSubstitutions); } - VirtualIterator> getUwa(Literal* lit, bool complementary, Options::UnificationWithAbstraction uwa, bool fixedPointIteration) - { return _is->getUwa(lit, complementary, uwa, fixedPointIteration); } + SLQueryResultIterator getUwa(Literal* lit, bool complementary) + { return _is->getUwa(lit, complementary); } SLQueryResultIterator getGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions = true); diff --git a/Indexing/LiteralIndexingStructure.hpp b/Indexing/LiteralIndexingStructure.hpp index df80d4a8c6..42cf5e9252 100644 --- a/Indexing/LiteralIndexingStructure.hpp +++ b/Indexing/LiteralIndexingStructure.hpp @@ -35,8 +35,8 @@ class LiteralIndexingStructure { virtual SLQueryResultIterator getUnifications(Literal* lit, bool complementary, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } - virtual VirtualIterator> getUwa(Literal* lit, - bool complementary, Options::UnificationWithAbstraction uwa, bool fixedPointIteration) = 0; + virtual SLQueryResultIterator getUwa(Literal* lit, + bool complementary) = 0; virtual SLQueryResultIterator getGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } virtual SLQueryResultIterator getInstances(Literal* lit, bool complementary, diff --git a/Indexing/LiteralSubstitutionTree.cpp b/Indexing/LiteralSubstitutionTree.cpp index 37a3c79cd6..d0e4e0d972 100644 --- a/Indexing/LiteralSubstitutionTree.cpp +++ b/Indexing/LiteralSubstitutionTree.cpp @@ -35,10 +35,6 @@ LiteralSubstitutionTree::LiteralSubstitutionTree() : _trees(env.signature->predicates() * 2) { } -// TODO move -using UwaAlgo = UnificationAlgorithms::UnificationWithAbstraction; -using RobAlgo = UnificationAlgorithms::RobUnification; - SLQueryResultIterator LiteralSubstitutionTree::getUnifications(Literal* lit, bool complementary, bool retrieveSubstitutions) { return getResultIterator>(lit, complementary, retrieveSubstitutions); } diff --git a/Indexing/LiteralSubstitutionTree.hpp b/Indexing/LiteralSubstitutionTree.hpp index bde67528e4..7e8ffc1934 100644 --- a/Indexing/LiteralSubstitutionTree.hpp +++ b/Indexing/LiteralSubstitutionTree.hpp @@ -21,6 +21,7 @@ #include "Lib/VirtualIterator.hpp" #include "LiteralIndexingStructure.hpp" #include "SubstitutionTree.hpp" +#include "Kernel/HOLUnification.hpp" namespace Indexing { @@ -35,6 +36,9 @@ class LiteralSubstitutionTree using LeafData = SubstitutionTree::LeafData; using LeafIterator = SubstitutionTree::LeafIterator; using Leaf = SubstitutionTree::Leaf; + using AbstractingAlgo = UnificationAlgorithms::AbstractingUnification; + using RobAlgo = UnificationAlgorithms::RobUnification; + using HOLAlgo = UnificationAlgorithms::HOLUnification; public: CLASS_NAME(LiteralSubstitutionTree); @@ -50,6 +54,7 @@ class LiteralSubstitutionTree { getTree(lit, /* complementary */ false).handle(lit, SubstitutionTree::LeafData(cls, lit), insert); } SLQueryResultIterator getUnifications(Literal* lit, bool complementary, bool retrieveSubstitutions) final override; + //TODO add getHOL required for subsumption SLQueryResultIterator getGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions) final override; SLQueryResultIterator getInstances(Literal* lit, bool complementary, bool retrieveSubstitutions) final override; @@ -86,22 +91,22 @@ class LiteralSubstitutionTree )); } - - auto nopostproUwa(Literal* lit, bool complementary, Options::UnificationWithAbstraction uwa) - { return getResultIterator>(lit, complementary, /* retrieveSubstitutions */ true, MismatchHandler(uwa)); } - - auto postproUwa(Literal* lit, bool complementary, Options::UnificationWithAbstraction uwa) - { return pvi(iterTraits(getResultIterator>(lit, complementary, /* retrieveSubstitutions */ true, MismatchHandler(uwa))) - .filterMap([](LQueryRes r) - { return r.unifier.fixedPointIteration().map([&](AbstractingUnifier* unif) { return lQueryRes(r.literal, r.clause, unif); }); })); } + //auto postproUwa(Literal* lit, bool complementary, Options::UnificationWithAbstraction uwa) + //{ return pvi(iterTraits(getResultIterator>(lit, complementary, /* retrieveSubstitutions */ true, MismatchHandler(uwa))) + // .filterMap([](LQueryRes r) + // { return r.unifier.fixedPointIteration().map([&](AbstractingUnifier* unif) { return lQueryRes(r.literal, r.clause, unif); }); })); } public: - VirtualIterator> getUwa(Literal* lit, bool complementary, Options::UnificationWithAbstraction uwa, bool fixedPointIteration) final override - { return fixedPointIteration ? pvi( postproUwa(lit, complementary, uwa)) - : pvi(nopostproUwa(lit, complementary, uwa)); } + SLQueryResultIterator getUwa(Literal* lit, bool complementary) final override + { + static auto uwa = env.options->unificationWithAbstraction(); + static bool fixedPointIteration = env.options->unificationWithAbstractionFixedPointIteration(); + + return getResultIterator>(lit, complementary, /* retrieveSubstitutions */ true, MismatchHandler(uwa), fixedPointIteration); + } friend std::ostream& operator<<(std::ostream& out, LiteralSubstitutionTree const& self) { diff --git a/Indexing/ResultSubstitution.cpp b/Indexing/ResultSubstitution.cpp index 1f310577d8..3560de6370 100644 --- a/Indexing/ResultSubstitution.cpp +++ b/Indexing/ResultSubstitution.cpp @@ -54,6 +54,9 @@ class RSProxy virtual void output(std::ostream& out) const final override { out << *_subst; } + /** return iterator over constraints */ + virtual Recycled getConstraints() override { return _subst->constraints(); } + private: RobSubstitution* _subst; int _queryBank; diff --git a/Indexing/ResultSubstitution.hpp b/Indexing/ResultSubstitution.hpp index 02b89ec4f2..1bbe57ba5e 100644 --- a/Indexing/ResultSubstitution.hpp +++ b/Indexing/ResultSubstitution.hpp @@ -57,10 +57,8 @@ class ResultSubstitution virtual size_t getResultApplicationWeight(TermList t) { return 0; } /** if implementation cannot easily give result for this, zero is returned */ virtual size_t getResultApplicationWeight(Literal* l) { return 0; } - /** number of constraints created during unification */ - virtual unsigned numberOfConstraints() { return 0; } - /** return iterator over constraints */ - virtual LiteralIterator getConstraints() { return LiteralIterator::getEmpty(); } + /** return stack of constraints */ + virtual Recycled getConstraints() { NOT_IMPLEMENTED; } template T apply(T t, bool result) diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 959324cf22..29e6f16b94 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -39,6 +39,7 @@ #include "Kernel/BottomUpEvaluation/TypedTermList.hpp" #include "Kernel/RobSubstitution.hpp" +#include "Kernel/HOLUnification.hpp" #include "Kernel/Renaming.hpp" #include "Kernel/Clause.hpp" #include "Kernel/SortHelper.hpp" @@ -57,11 +58,6 @@ #include #endif - -// TODO where should these go? -static constexpr int QUERY_BANK=0; -static constexpr int RESULT_BANK=1; -static constexpr int NORM_RESULT_BANK=3; using namespace std; using namespace Lib; using namespace Kernel; @@ -72,174 +68,6 @@ using namespace Kernel; namespace Indexing { - namespace UnificationAlgorithms { - class RobUnification { - Recycled _subs; - public: - RobUnification() : _subs() {} - using Unifier = ResultSubstitutionSP; - - bool associate(unsigned specialVar, TermList node, BacktrackData& bd) - { - CALL("SubstitutionTree::UnificationsIterator::associate"); - TermList query(specialVar, /* special */ true); - return _subs->unify(query, QUERY_BANK, node, NORM_RESULT_BANK); - } - - Unifier unifier() { return ResultSubstitution::fromSubstitution(&*_subs, QUERY_BANK, RESULT_BANK); } - - void bindQuerySpecialVar(unsigned var, TermList term, unsigned varBank) - { _subs->bindSpecialVar(var, term, varBank); } - - void bdRecord(BacktrackData& bd) { _subs->bdRecord(bd); } - void bdDone() { _subs->bdDone(); } - - void denormalize(Renaming& norm, unsigned NORM_RESULT_BANK,unsigned RESULT_BANK) - { _subs->denormalize(norm, NORM_RESULT_BANK,RESULT_BANK); } - - TermList::Top getSpecialVarTop(unsigned svar) - { return _subs->getSpecialVarTop(svar); } - - bool usesUwa() const { return false; } - }; - - class UnificationsWithPlaceholders { - HOLUnifier _unif; - public: - UnificationsWithPlaceholders() : _unif() {} - using Unifier = HOLUnifier*; - - bool associate(unsigned specialVar, TermList node, BacktrackData& bd) - { - // CALL("SubstitutionTree::UnificationsIterator::associate"); - TermList query(specialVar, /* special */ true); - return _unif.unifyWithPlaceholders(query, QUERY_BANK, node, NORM_RESULT_BANK); - } - - Unifier unifier() - { return &_unif; } - - void bindQuerySpecialVar(unsigned var, TermList term, unsigned varBank) - { _unif.subs().bindSpecialVar(var, term, varBank); } - - void bdRecord(BacktrackData& bd) - { _unif.subs().bdRecord(bd); } - - void bdDone() - { _unif.subs().bdDone(); } - - void denormalize(Renaming& norm, unsigned NORM_RESULT_BANK,unsigned RESULT_BANK) - { _unif.subs().denormalize(norm, NORM_RESULT_BANK,RESULT_BANK); } - - TermList::Top getSpecialVarTop(unsigned svar) - { return _unif.subs().getSpecialVarTop(svar); } - - bool usesUwa() const - { return false; } - }; - - class UnificationWithAbstraction { - AbstractingUnifier _unif; - public: - UnificationWithAbstraction(MismatchHandler handler) : _unif(AbstractingUnifier::empty(handler)) {} - using Unifier = AbstractingUnifier*; - - bool associate(unsigned specialVar, TermList node, BacktrackData& bd) - { - // CALL("SubstitutionTree::UnificationsIterator::associate"); - TermList query(specialVar, /* special */ true); - return _unif.unify(query, QUERY_BANK, node, NORM_RESULT_BANK); - } - - Unifier unifier() - { return &_unif; } - - void bindQuerySpecialVar(unsigned var, TermList term, unsigned varBank) - { _unif.subs().bindSpecialVar(var, term, varBank); } - - void bdRecord(BacktrackData& bd) - { _unif.subs().bdRecord(bd); } - - void bdDone() - { _unif.subs().bdDone(); } - - void denormalize(Renaming& norm, unsigned NORM_RESULT_BANK,unsigned RESULT_BANK) - { _unif.subs().denormalize(norm, NORM_RESULT_BANK,RESULT_BANK); } - - TermList::Top getSpecialVarTop(unsigned svar) - { return _unif.subs().getSpecialVarTop(svar); } - - bool usesUwa() const - { return _unif.usesUwa(); } - }; - - class UnificationWithAbstractionWithPostprocessing - { - AbstractingUnifier _unif; - Option _fpRes; - public: - class NotFinalized { - AbstractingUnifier* _unif; - Option* _result; - public: - explicit NotFinalized(AbstractingUnifier* unif, Option* result) - : _unif(unif) - , _result(result) - { } - - Option fixedPointIteration() - { - if (_result->isNone()) { - *_result = some(bool(_unif->fixedPointIteration())); - if (_unif->isRecording()) { - _unif->bdGet().addClosure([res = _result]() { *res = {}; }); - } - } - return someIf(**_result, [&](){ return _unif; }); - } - - friend std::ostream& operator<<(std::ostream& out, NotFinalized const& self) - { return out << *self._unif << " (fixedPointIteration: " << *self._result << " )"; } - }; - - using Unifier = NotFinalized; - - UnificationWithAbstractionWithPostprocessing(MismatchHandler handler) - : _unif(AbstractingUnifier::empty(handler)) - , _fpRes() - {} - - bool associate(unsigned specialVar, TermList node, BacktrackData& bd) - { - // CALL("SubstitutionTree::UnificationsIterator::associate"); - TermList query(specialVar, /* special */ true); - return _unif.unify(query, QUERY_BANK, node, NORM_RESULT_BANK); - } - - Unifier unifier() - { return NotFinalized(&_unif, &_fpRes); } - - void bindQuerySpecialVar(unsigned var, TermList term, unsigned varBank) - { _unif.subs().bindSpecialVar(var, term, varBank); } - - void bdRecord(BacktrackData& bd) - { _unif.subs().bdRecord(bd); } - - void bdDone() - { _unif.subs().bdDone(); } - - void denormalize(Renaming& norm, unsigned NORM_RESULT_BANK,unsigned RESULT_BANK) - { _unif.subs().denormalize(norm, NORM_RESULT_BANK,RESULT_BANK); } - - TermList::Top getSpecialVarTop(unsigned svar) - { return _unif.subs().getSpecialVarTop(svar); } - - bool usesUwa() const - { return _unif.usesUwa(); } - }; - }; - - class SubstitutionTree; std::ostream& operator<<(std::ostream& out, SubstitutionTree const& self); std::ostream& operator<<(std::ostream& out, OutputMultiline const& self); @@ -350,32 +178,30 @@ class SubstitutionTree }; typedef VirtualIterator LDIterator; - template struct QueryResult { LeafData const* data; - Unifier unif; + ResultSubstitutionSP unif; - QueryResult(LeafData const* ld, Unifier unif) : data(ld), unif(std::move(unif)) {} + QueryResult(LeafData const* ld, ResultSubstitutionSP unifier) : data(ld), unif(unifier) {} }; - template - static QueryResult queryResult(LeafData const* ld, Unifier unif) - { return QueryResult(ld, std::move(unif)); } - - template using QueryResultIter = VirtualIterator>; - // TODO get rid of me - using RSQueryResult = QueryResult; - // TODO get rid of me - using RSQueryResultIter = VirtualIterator>; + + using QueryResultIter = VirtualIterator; + // TODO make const function template auto iterator(TermOrLit query, bool retrieveSubstitutions, bool reversed, Args... args) { CALL("SubstitutionTree::iterator"); - return iterTraits( + if(_root == nullptr) + return QueryResultIter::getEmpty(); + + return pvi(getFlattenedIterator(vi(new I(this, _root, query, retrieveSubstitutions, reversed, std::move(args)...)))); + + /*return iterTraits( someIf(_root != nullptr, [&]() { return I(this, _root, query, retrieveSubstitutions, reversed, std::move(args)...) ; }) .intoIter()) - .flatten(); + .flatten().flatten();*/ } class LDComparator @@ -571,7 +397,11 @@ class SubstitutionTree { bool operator()(Node** n) { - return (*n)->term.isVar(); + return (*n)->term.isVar() +#if VHOL + || (*n)->term.isPlaceholder() // treat placeholders exactly like variables +#endif + ; } }; @@ -715,11 +545,23 @@ class SubstitutionTree if(t2.var()) { return GREATER; } +#if VHOL + if(env.property->higherOrder()){ + // always put placeholder directly after variables in SkipList + // so that IsPtrToVarNodeFn return true for placehodlers as well + bool t1IsPlaceholder = env.signature->isPlaceholder(t1.functor()); + bool t2IsPlaceholder = env.signature->isPlaceholder(t2.functor()); + if(t1IsPlaceholder && !t2IsPlaceholder) return LESS; + if(t2IsPlaceholder && !t1IsPlaceholder) return GREATER; + } +#endif return Int::compare(*t1.functor(), *t2.functor()); } static Comparison compare(Node* n1, Node* n2) - { return compare(n1->term.top(), n2->term.top()); } + { return compare(n1->term.top(), n2->term.top()); + + } static Comparison compare(TermList::Top t1, Node* n2) { return compare(t1, n2->term.top()); } }; @@ -773,7 +615,9 @@ class SubstitutionTree void setSort(TypedTermList const& term, LeafData& ld) { - ASS_EQ(ld.term, term) + // in higher-order case we replace certain subterms with so-called + // placeholders, so assertion below doesn't hold in general + ASS(ld.term == term || env.property->higherOrder()); ld.sort = term.sort(); } @@ -861,7 +705,7 @@ class SubstitutionTree } template - RSQueryResultIter getVariants(Query query, bool retrieveSubstitutions) + QueryResultIter getVariants(Query query, bool retrieveSubstitutions) { CALL("LiteralSubstitutionTree::getVariants"); @@ -885,7 +729,7 @@ class SubstitutionTree } }); Leaf* leaf = findLeaf(*svBindings); if(leaf==0) { - return RSQueryResultIter::getEmpty(); + return QueryResultIter::getEmpty(); } else { return pvi(iterTraits(leaf->allChildren()) .map([retrieveSubstitutions, renaming = std::move(renaming), resultSubst](LeafData* ld) @@ -896,7 +740,7 @@ class SubstitutionTree renaming->_result->normalizeVariables(SubtitutionTreeConfig::getKey(*ld)); subs = resultSubst; } - return queryResult(ld, subs); + return QueryResult(ld, subs); })); } } @@ -1054,11 +898,12 @@ class SubstitutionTree * Iterator, that yields generalizations of given term/literal. */ class FastGeneralizationsIterator + : public IteratorCore { public: - FastGeneralizationsIterator(FastGeneralizationsIterator&&) = default; - FastGeneralizationsIterator& operator=(FastGeneralizationsIterator&&) = default; - DECL_ELEMENT_TYPE(RSQueryResult); +// FastGeneralizationsIterator(FastGeneralizationsIterator&&) = default; +// FastGeneralizationsIterator& operator=(FastGeneralizationsIterator&&) = default; + DECL_ELEMENT_TYPE(QueryResultIter); using Unifier = ResultSubstitutionSP; /** * If @b reversed If true, parameters of supplied binary literal are @@ -1085,7 +930,7 @@ class SubstitutionTree [&](unsigned var, TermList t) { _subst.bindSpecialVar(var, t); }); } - RSQueryResult next(); + QueryResultIter next(); bool hasNext(); protected: @@ -1301,11 +1146,12 @@ class SubstitutionTree * Iterator, that yields generalizations of given term/literal. */ class FastInstancesIterator + : public IteratorCore { public: - FastInstancesIterator(FastInstancesIterator&&) = default; - FastInstancesIterator& operator=(FastInstancesIterator&&) = default; - DECL_ELEMENT_TYPE(RSQueryResult); +// FastInstancesIterator(FastInstancesIterator&&) = default; +// FastInstancesIterator& operator=(FastInstancesIterator&&) = default; + DECL_ELEMENT_TYPE(QueryResultIter); using Unifier = ResultSubstitutionSP; /** @@ -1336,7 +1182,7 @@ class SubstitutionTree } bool hasNext(); - RSQueryResult next(); + QueryResultIter next(); protected: bool findNextLeaf(); @@ -1362,16 +1208,17 @@ class SubstitutionTree template class UnificationsIterator final + : public IteratorCore { public: - UnificationsIterator(UnificationsIterator&&) = default; - UnificationsIterator& operator=(UnificationsIterator&&) = default; - using Unifier = typename UnificationAlgorithm::Unifier; - DECL_ELEMENT_TYPE(QueryResult); +// UnificationsIterator(UnificationsIterator&&) = default; +// UnificationsIterator& operator=(UnificationsIterator&&) = default; + DECL_ELEMENT_TYPE(QueryResultIter); template UnificationsIterator(SubstitutionTree* parent, Node* root, TermOrLit query, bool retrieveSubstitution, bool reversed, AlgoArgs... args) - : _algo(std::move(args)...) + : _subst() + , _algo(std::move(args)...) , _svStack() , _literalRetrieval(std::is_same::value) , _retrieveSubstitution(retrieveSubstitution) @@ -1385,7 +1232,7 @@ class SubstitutionTree , _tag(parent->_tag) #endif { -#define DEBUG_QUERY(...) // DBG(__VA_ARGS__) +#define DEBUG_QUERY(...) //DBG(__VA_ARGS__) CALL("SubstitutionTree::UnificationsIterator::UnificationsIterator"); if(!root) { @@ -1393,9 +1240,8 @@ class SubstitutionTree } parent->createBindings(query, reversed, - [&](unsigned var, TermList t) { _algo.bindQuerySpecialVar(var, t, QUERY_BANK); }); - DEBUG_QUERY("query: ", _abstractingUnifier.subs()) - + [&](unsigned var, TermList t) { _subst->bindSpecialVar(var, t, QUERY_BANK); }); + DEBUG_QUERY("query: ", *_subst); BacktrackData bd; enter(root, bd); @@ -1405,8 +1251,10 @@ class SubstitutionTree ~UnificationsIterator() { + CALL("SubstitutionTree::UnificationsIterator::~UnificationsIterator"); + if(_clientBDRecording) { - _algo.bdDone(); + _subst->bdDone(); _clientBDRecording=false; _clientBacktrackData.backtrack(); } @@ -1421,7 +1269,7 @@ class SubstitutionTree CALL("SubstitutionTree::UnificationsIterator::hasNext"); if(_clientBDRecording) { - _algo.bdDone(); + _subst->bdDone(); _clientBDRecording=false; _clientBacktrackData.backtrack(); } @@ -1430,7 +1278,7 @@ class SubstitutionTree return _ldIterator.hasNext(); } - QueryResult next() + QueryResultIter next() { CALL("SubstitutionTree::UnificationsIterator::next"); @@ -1442,33 +1290,36 @@ class SubstitutionTree auto ld = _ldIterator.next(); // TODO resolve this kinda messy bit if (_retrieveSubstitution) { - Renaming normalizer; - if(_literalRetrieval) { - normalizer.normalizeVariables(ld->literal); - } else { - normalizer.normalizeVariables(ld->term); - if (ld->sort.isNonEmpty()) { - normalizer.normalizeVariables(ld->sort); - } + Renaming normalizer; + if(_literalRetrieval) { + normalizer.normalizeVariables(ld->literal); + } else { + normalizer.normalizeVariables(ld->term); + if (ld->sort.isNonEmpty()) { + normalizer.normalizeVariables(ld->sort); } + } - ASS(_clientBacktrackData.isEmpty()); - _algo.bdRecord(_clientBacktrackData); - _clientBDRecording=true; + ASS(_clientBacktrackData.isEmpty()); + _subst->bdRecord(_clientBacktrackData); + _clientBDRecording=true; - _algo.denormalize(normalizer,NORM_RESULT_BANK,RESULT_BANK); + _subst->denormalize(normalizer,NORM_RESULT_BANK,RESULT_BANK); } - return queryResult(ld, _algo.unifier()); + // postprocess in the leaf + // For syntactic first-order unification postprocessing just wraps + // the single unifier into an iterator + // For UWA, if fixed point iteration has been chosen, this is carried out + // For HOL, a set of HOL unifiers are returned + SubstIterator substs = _algo.postprocess(&*_subst, ld->term); + return pvi(iterTraits(substs).map([ld](RobSubstitution* subst){ + return QueryResult(ld, + ResultSubstitution::fromSubstitution(subst, QUERY_BANK, RESULT_BANK)); + })); } private: - // bool associate(unsigned specialVar, TermList node, BacktrackData& bd) - // { - // CALL("SubstitutionTree::UnificationsIterator::associate"); - // TermList query(specialVar, /* special */ true); - // return _abstractingUnifier.unify(query, QUERY_BANK, node, NORM_RESULT_BANK); - // } NodeIterator getNodeIterator(IntermediateNode* n) { @@ -1482,7 +1333,7 @@ class SubstitutionTree unsigned specVar=n->childVar; // TermList qt = _abstractingUnifier.subs().getSpecialVarTop(specVar); // TODO should this function really be part of algo? - auto top = _algo.getSpecialVarTop(specVar); + auto top = _subst->getSpecialVarTop(specVar); if(top.var()) { return n->allChildren(); } else { @@ -1555,10 +1406,9 @@ class SubstitutionTree bool recording=false; if(!n->term.isEmpty()) { //n is proper node, not a root - recording=true; - _algo.bdRecord(bd); - success = _algo.associate(_svStack->top(),n->term,bd); + _subst->bdRecord(bd); + success = _algo.associate(_svStack->top(),n->term,bd,&*_subst); } if(success) { if(n->isLeaf()) { @@ -1571,11 +1421,13 @@ class SubstitutionTree } } if(recording) { - _algo.bdDone(); + _subst->bdDone(); } + return success; } + Recycled _subst; UnificationAlgorithm _algo; Recycled _svStack; diff --git a/Indexing/SubstitutionTree_FastGen.cpp b/Indexing/SubstitutionTree_FastGen.cpp index 0b4d8b8f79..62534898b9 100644 --- a/Indexing/SubstitutionTree_FastGen.cpp +++ b/Indexing/SubstitutionTree_FastGen.cpp @@ -173,6 +173,7 @@ bool SubstitutionTree::GenMatcher::matchNextAux(TermList queryTerm, TermList nod CALL("SubstitutionTree::GenMatcher::matchNextAux"); bool success; + if(nodeTerm.isTerm()) { Term* nt=nodeTerm.term(); if(nt->shared() && nt->ground()) { @@ -183,7 +184,7 @@ bool SubstitutionTree::GenMatcher::matchNextAux(TermList queryTerm, TermList nod ASS(nt->arity()>0); success = queryTerm.isTerm() && queryTerm.term()->functor()==nt->functor() && - MatchingUtils::matchArgs(nt, queryTerm.term(), binder); + MatchingUtils::matchArgs(nt, queryTerm.term(), binder); } } else { ASS_METHOD(nodeTerm,isOrdinaryVar()); @@ -199,11 +200,11 @@ bool SubstitutionTree::GenMatcher::matchNextAux(TermList queryTerm, TermList nod if(separate) { //we have to unbind ordinary variables, that were bound. for(;;) { - unsigned boundVar = _boundVars->pop(); - if(boundVar==BACKTRACK_SEPARATOR) { - break; - } - _bindings->remove(boundVar); + unsigned boundVar = _boundVars->pop(); + if(boundVar==BACKTRACK_SEPARATOR) { + break; + } + _bindings->remove(boundVar); } } } @@ -266,7 +267,7 @@ bool SubstitutionTree::FastGeneralizationsIterator::hasNext() return _ldIterator.hasNext(); } -SubstitutionTree::RSQueryResult SubstitutionTree::FastGeneralizationsIterator::next() +SubstitutionTree::QueryResultIter SubstitutionTree::FastGeneralizationsIterator::next() { CALL("SubstitutionTree::FastGeneralizationsIterator::next"); @@ -282,9 +283,11 @@ SubstitutionTree::RSQueryResult SubstitutionTree::FastGeneralizationsIterator::n _resultNormalizer->normalizeVariables(ld->term); } - return queryResult(ld,_subst.getSubstitution(&*_resultNormalizer)); + // TODO update this once we make matching iterators templated on matching algorithm + // or remove altogether if we go with Joe's refactor + return pvi(getSingletonIterator(QueryResult(ld,_subst.getSubstitution(&*_resultNormalizer)))); } else { - return queryResult(ld, ResultSubstitutionSP()); + return pvi(getSingletonIterator(QueryResult(ld, ResultSubstitutionSP()))); } } @@ -321,23 +324,23 @@ bool SubstitutionTree::FastGeneralizationsIterator::findNextLeaf() if(curr) { if(sibilingsRemain) { - ASS(_nodeTypes->top()!=UNSORTED_LIST || *static_cast(_alternatives->top())); - currSpecVar=_specVarNumbers->top(); + ASS(_nodeTypes->top()!=UNSORTED_LIST || *static_cast(_alternatives->top())); + currSpecVar=_specVarNumbers->top(); } else { - currSpecVar=_specVarNumbers->pop(); + currSpecVar=_specVarNumbers->pop(); } } //let's find a node we haven't been to... while(curr==0 && _alternatives->isNonEmpty()) { void* currAlt=_alternatives->pop(); if(!currAlt) { - //there's no alternative at this level, we have to backtrack - _nodeTypes->pop(); - _specVarNumbers->pop(); - if(_alternatives->isNonEmpty()) { - _subst.backtrack(); - } - continue; + //there's no alternative at this level, we have to backtrack + _nodeTypes->pop(); + _specVarNumbers->pop(); + if(_alternatives->isNonEmpty()) { + _subst.backtrack(); + } + continue; } NodeAlgorithm parentType=_nodeTypes->top(); @@ -345,42 +348,42 @@ bool SubstitutionTree::FastGeneralizationsIterator::findNextLeaf() //proper term nodes that we want to enter don't appear //on _alternatives stack (as we always enter them first) if(parentType==UNSORTED_LIST) { - Node** alts=static_cast(currAlt); - while(*alts && !(*alts)->term.isVar()) { - alts++; - } - curr=*(alts++); - while(*alts && !(*alts)->term.isVar()) { - alts++; - } - if(*alts) { - _alternatives->push(alts); - sibilingsRemain=true; - } else { - sibilingsRemain=false; - } + Node** alts=static_cast(currAlt); + while(*alts && !(*alts)->term.isVar()) { + alts++; + } + curr=*(alts++); + while(*alts && !(*alts)->term.isVar()) { + alts++; + } + if(*alts) { + _alternatives->push(alts); + sibilingsRemain=true; + } else { + sibilingsRemain=false; + } } else { - ASS_EQ(parentType,SKIP_LIST) - auto alts = static_cast(currAlt); - if(alts->head()->term.isVar()) { - curr=alts->head(); - if(alts->tail() && alts->tail()->head()->term.isVar()) { - _alternatives->push(alts->tail()); - sibilingsRemain=true; - } else { - sibilingsRemain=false; - } - } + ASS_EQ(parentType,SKIP_LIST) + auto alts = static_cast(currAlt); + if(alts->head()->term.isVar()) { + curr=alts->head(); + if(alts->tail() && alts->tail()->head()->term.isVar()) { + _alternatives->push(alts->tail()); + sibilingsRemain=true; + } else { + sibilingsRemain=false; + } + } } if(sibilingsRemain) { - currSpecVar=_specVarNumbers->top(); + currSpecVar=_specVarNumbers->top(); } else { - _nodeTypes->pop(); - currSpecVar=_specVarNumbers->pop(); + _nodeTypes->pop(); + currSpecVar=_specVarNumbers->pop(); } if(curr) { - break; + break; } } if(!curr) { @@ -402,14 +405,14 @@ bool SubstitutionTree::FastGeneralizationsIterator::findNextLeaf() ASS(curr); ASSERT_VALID(*curr); if(!_subst.matchNext(specVar, curr->term, false)) { - //matching failed, let's go back to the node, that had multiple children - //_subst->backtrack(); - if(sibilingsRemain || _alternatives->isNonEmpty()) { - //this backtrack can happen for two different reasons and have two different meanings: - //either matching at [1] was separated from the previous one and we're backtracking it, - //or it was not, which means it had no sibilings and we're backtracking from its parent. - _subst.backtrack(); - } + //matching failed, let's go back to the node, that had multiple children + //_subst->backtrack(); + if(sibilingsRemain || _alternatives->isNonEmpty()) { + //this backtrack can happen for two different reasons and have two different meanings: + //either matching at [1] was separated from the previous one and we're backtracking it, + //or it was not, which means it had no sibilings and we're backtracking from its parent. + _subst.backtrack(); + } curr=0; goto main_loop_start; } diff --git a/Indexing/SubstitutionTree_FastInst.cpp b/Indexing/SubstitutionTree_FastInst.cpp index 7589a2817b..e1d0c37d2f 100644 --- a/Indexing/SubstitutionTree_FastInst.cpp +++ b/Indexing/SubstitutionTree_FastInst.cpp @@ -119,7 +119,7 @@ TermList SubstitutionTree::InstMatcher::derefQueryBinding(unsigned var) TermList derefBoundTerm; if(_derefBindings->find(bvar, derefBoundTerm)) { - ALWAYS(_derefBindings->insert(tvar, derefBoundTerm)); + ALWAYS(_derefBindings->insert(tvar, derefBoundTerm)); } ALWAYS(_bindings->find(bvar,varBinding)); @@ -133,13 +133,13 @@ TermList SubstitutionTree::InstMatcher::derefQueryBinding(unsigned var) toDo.push(DerefTask(tvar, varBinding)); VariableIterator vit(varBinding.t); while(vit.hasNext()) { - TermList btv=vit.next(); //bound term variable - if(varBinding.q || btv.isSpecialVar()) { - ASS(_bindings->find(btv)); - if(!_derefBindings->find(btv)) { - toDo.push(DerefTask(btv)); - } - } + TermList btv=vit.next(); //bound term variable + if(varBinding.q || btv.isSpecialVar()) { + ASS(_bindings->find(btv)); + if(!_derefBindings->find(btv)) { + toDo.push(DerefTask(btv)); + } + } } } next_loop: @@ -308,8 +308,8 @@ bool SubstitutionTree::InstMatcher::matchNextAux(TermList queryTerm, TermList no bool dt2Bindable= !dt2.isTerm() && (ts2.q || !dt2.isOrdinaryVar()); if(!dt1Bindable && !dt2Bindable) { - success=false; - goto finish; + success=false; + goto finish; } //we try to bind ordinary variables first, as binding a special @@ -318,34 +318,34 @@ bool SubstitutionTree::InstMatcher::matchNextAux(TermList queryTerm, TermList no //may come later, so we want to keep it unbound) if(ts1.q && dt1.isOrdinaryVar() && !isBound(dt1)) { - bind(dt1, TermSpec(ts2.q,dt2)); - continue; + bind(dt1, TermSpec(ts2.q,dt2)); + continue; } if(ts2.q && dt2.isOrdinaryVar() && !isBound(dt2)) { - bind(dt2, TermSpec(ts1.q,dt1)); - continue; + bind(dt2, TermSpec(ts1.q,dt1)); + continue; } if(dt2.isSpecialVar() && !isBound(dt2)) { - ASS(!ts2.q); - bind(dt2, TermSpec(ts1.q,dt1)); - continue; + ASS(!ts2.q); + bind(dt2, TermSpec(ts1.q,dt1)); + continue; } if(dt1.isSpecialVar() && !isBound(dt1)) { - ASS(!ts1.q); - bind(dt1, TermSpec(ts2.q,dt2)); - continue; + ASS(!ts1.q); + bind(dt1, TermSpec(ts2.q,dt2)); + continue; } TermSpec deref1=TermSpec(ts1.q, dt1); TermSpec deref2=TermSpec(ts2.q, dt2); if(dt1Bindable) { - ASS(isBound(dt1)); //if unbound, we would have assigned it earlier - deref1=deref(dt1); + ASS(isBound(dt1)); //if unbound, we would have assigned it earlier + deref1=deref(dt1); } if(dt2Bindable) { - ASS(isBound(dt2)); - deref2=deref(dt2); + ASS(isBound(dt2)); + deref2=deref(dt2); } toDo.push(make_pair(deref1, deref2)); @@ -377,7 +377,7 @@ bool SubstitutionTree::FastInstancesIterator::hasNext() #undef LOGGING #define LOGGING 0 -SubstitutionTree::RSQueryResult SubstitutionTree::FastInstancesIterator::next() +SubstitutionTree::QueryResultIter SubstitutionTree::FastInstancesIterator::next() { CALL("SubstitutionTree::FastInstancesIterator::next"); @@ -399,9 +399,11 @@ SubstitutionTree::RSQueryResult SubstitutionTree::FastInstancesIterator::next() } _resultDenormalizer.makeInverse(normalizer); } - return queryResult(ld, _subst.getSubstitution(&_resultDenormalizer)); + // TODO update this once we make matching iterators templated on matching algorithm + // or remove altogether if we go with Joe's refactor + return pvi(getSingletonIterator(QueryResult(ld, _subst.getSubstitution(&_resultDenormalizer)))); } else { - return queryResult(ld, ResultSubstitutionSP()); + return pvi(getSingletonIterator(QueryResult(ld, ResultSubstitutionSP()))); } } #undef LOGGING @@ -454,9 +456,9 @@ bool SubstitutionTree::FastInstancesIterator::findNextLeaf() _nodeTypes->pop(); _specVarNumbers->pop(); if(_alternatives->isNonEmpty()) { - _subst.backtrack(); - } - continue; + _subst.backtrack(); + } + continue; } NodeAlgorithm parentType = _nodeTypes->top(); @@ -465,26 +467,26 @@ bool SubstitutionTree::FastInstancesIterator::findNextLeaf() //matching by a variable (as there is always at most one child //for matching by term) if(parentType==UNSORTED_LIST) { - Node** alts=static_cast(currAlt); - curr=*(alts++); - if(*alts) { - _alternatives->push(alts); - sibilingsRemain=true; - } else { - sibilingsRemain=false; - } + Node** alts=static_cast(currAlt); + curr=*(alts++); + if(*alts) { + _alternatives->push(alts); + sibilingsRemain=true; + } else { + sibilingsRemain=false; + } } else { - ASS_EQ(parentType,SKIP_LIST) - auto alts = static_cast(currAlt); - ASS(alts); - - curr=alts->head(); - if(alts->tail()) { - _alternatives->push(alts->tail()); - sibilingsRemain=true; - } else { - sibilingsRemain=false; - } + ASS_EQ(parentType,SKIP_LIST) + auto alts = static_cast(currAlt); + ASS(alts); + + curr=alts->head(); + if(alts->tail()) { + _alternatives->push(alts->tail()); + sibilingsRemain=true; + } else { + sibilingsRemain=false; + } } if(sibilingsRemain) { @@ -504,7 +506,7 @@ bool SubstitutionTree::FastInstancesIterator::findNextLeaf() //match unsuccessful, try next alternative curr=0; if(!sibilingsRemain && _alternatives->isNonEmpty()) { - _subst.backtrack(); + _subst.backtrack(); } continue; } @@ -515,14 +517,14 @@ bool SubstitutionTree::FastInstancesIterator::findNextLeaf() ASS(curr); ASSERT_VALID(*curr); if(!_subst.matchNext(specVar, curr->term, false)) { - //matching failed, let's go back to the node, that had multiple children - //_subst.backtrack(); - if(sibilingsRemain || _alternatives->isNonEmpty()) { - //this backtrack can happen for two different reasons and have two different meanings: - //either matching at [1] was separated from the previous one and we're backtracking it, - //or it was not, which means it had no sibilings and we're backtracking from its parent. - _subst.backtrack(); - } + //matching failed, let's go back to the node, that had multiple children + //_subst.backtrack(); + if(sibilingsRemain || _alternatives->isNonEmpty()) { + //this backtrack can happen for two different reasons and have two different meanings: + //either matching at [1] was separated from the previous one and we're backtracking it, + //or it was not, which means it had no sibilings and we're backtracking from its parent. + _subst.backtrack(); + } curr=0; goto main_loop_start; } @@ -590,8 +592,8 @@ bool SubstitutionTree::FastInstancesIterator::enterNode(Node*& curr) } if(*nl) { - //we've found the term with the same top functor - ASS_EQ((*nl)->term.term()->functor(),bindingFunctor); + //we've found the term with the same top functor + ASS_EQ((*nl)->term.term()->functor(),bindingFunctor); curr=*nl; noAlternatives=true; //there is at most one term with each top functor } @@ -618,7 +620,7 @@ bool SubstitutionTree::FastInstancesIterator::enterNode(Node*& curr) //only term with the same top functor will be matched by a term Node** byTop=inode->childByTop(query.top(), false); if(byTop) { - curr=*byTop; + curr=*byTop; } nl=0; } diff --git a/Indexing/TermIndex.hpp b/Indexing/TermIndex.hpp index 21c20f04a4..d08d51a2da 100644 --- a/Indexing/TermIndex.hpp +++ b/Indexing/TermIndex.hpp @@ -34,12 +34,12 @@ class TermIndex TermQueryResultIterator getUnifications(TypedTermList t, bool retrieveSubstitutions = true) { return _is->getUnifications(t, retrieveSubstitutions); } - VirtualIterator> getUwa(TypedTermList t, Options::UnificationWithAbstraction uwa, bool fixedPointIteration) - { return _is->getUwa(t, uwa, fixedPointIteration); } + TermQueryResultIterator getUwa(TypedTermList t) + { return _is->getUwa(t); } #if VHOL - VirtualIterator> getHOLUnifs(TypedTermList t) - { return _is->getHOLUnifs(t); } + TermQueryResultIterator getPotentialHOLUnifiers(TypedTermList t) + { return _is->getPotentialHOLUnifiers(t); } #endif TermQueryResultIterator getGeneralizations(TypedTermList t, bool retrieveSubstitutions = true) diff --git a/Indexing/TermIndexingStructure.hpp b/Indexing/TermIndexingStructure.hpp index 631f55501c..ee5a44b200 100644 --- a/Indexing/TermIndexingStructure.hpp +++ b/Indexing/TermIndexingStructure.hpp @@ -17,7 +17,8 @@ #define __TermIndexingStructure__ #include "Index.hpp" -#include "Kernel/BottomUpEvaluation/TypedTermList.hpp" +#include "Kernel/TypedTermList.hpp" +#include "Kernel/HOLUnification.hpp" namespace Indexing { @@ -32,11 +33,10 @@ class TermIndexingStructure { virtual TermQueryResultIterator getUnifications(TypedTermList t, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } - virtual VirtualIterator> getUwa(TypedTermList t, - Options::UnificationWithAbstraction uwa, bool fixedPointIteration) = 0; + virtual TermQueryResultIterator getUwa(TypedTermList t) = 0; #if VHOL - virtual VirtualIterator> getHOLUnifs(TypedTermList t) + virtual TermQueryResultIterator getPotentialHOLUnifiers(TypedTermList t) { NOT_IMPLEMENTED; } #endif diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index 8199c34f10..fb672dcc57 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -27,6 +27,7 @@ #include "Index.hpp" #include "TermIndexingStructure.hpp" #include "SubstitutionTree.hpp" +#include "Kernel/HOLUnification.hpp" namespace Indexing { @@ -41,6 +42,10 @@ namespace Indexing { class TermSubstitutionTree : public TermIndexingStructure, SubstitutionTree { + using AbstractingAlgo = UnificationAlgorithms::AbstractingUnification; + using RobAlgo = UnificationAlgorithms::RobUnification; + using HOLAlgo = UnificationAlgorithms::HOLUnification; + public: CLASS_NAME(TermSubstitutionTree); USE_ALLOCATOR(TermSubstitutionTree); @@ -81,7 +86,7 @@ class TermSubstitutionTree #endif private: - + void handleTerm(TypedTermList tt, LeafData ld, bool insert) { #if VHOL @@ -110,13 +115,10 @@ class TermSubstitutionTree friend std::ostream& operator<<(std::ostream& out, OutputMultiline const& self) { return out << multiline((SubstitutionTree const&) self.self, self.indent); } - auto nopostproUwa(TypedTermList t, Options::UnificationWithAbstraction uwa) - { return getResultIterator>(t, /* retrieveSubstitutions */ true, MismatchHandler(uwa)); } - - auto postproUwa(TypedTermList t, Options::UnificationWithAbstraction uwa) - { return iterTraits(getResultIterator>(t, /* retrieveSubstitutions */ true, MismatchHandler(uwa))) - .filterMap([](TQueryRes r) - { return r.unifier.fixedPointIteration().map([&](AbstractingUnifier* unif) { return tQueryRes(r.term, r.literal, r.clause, unif); }); }); } + //auto postproUwa(TypedTermList t, Options::UnificationWithAbstraction uwa) + //{ return iterTraits(getResultIterator>(t, /* retrieveSubstitutions */ true, MismatchHandler(uwa))) + // .filterMap([](TQueryRes r) + // { return r.unifier.fixedPointIteration().map([&](AbstractingUnifier* unif) { return tQueryRes(r.term, r.literal, r.clause, unif); }); }); } public: TermQueryResultIterator getInstances(TypedTermList t, bool retrieveSubstitutions) override @@ -125,23 +127,24 @@ class TermSubstitutionTree TermQueryResultIterator getGeneralizations(TypedTermList t, bool retrieveSubstitutions) override { return pvi(getResultIterator(t, retrieveSubstitutions)); } - VirtualIterator> getUwa(TypedTermList t, Options::UnificationWithAbstraction uwa, bool fixedPointIteration) final override - { return fixedPointIteration ? pvi( postproUwa(t, uwa)) - : pvi(nopostproUwa(t, uwa)); } + TermQueryResultIterator getUwa(TypedTermList t) final override + { + static auto uwa = env.options->unificationWithAbstraction(); + static bool fixedPointIteration = env.options->unificationWithAbstractionFixedPointIteration(); + + return pvi(getResultIterator>(t, true, MismatchHandler(uwa), fixedPointIteration)); + } #if VHOL - VirtualIterator> getHOLUnifs(TypedTermList t) final override + TermQueryResultIterator getPotentialHOLUnifiers(TypedTermList t) final override { - t = TypedTermList(ToPlaceholders().replace(t), t.sort()); - // we don't do post-processign here, as various inferences may wish to process in different ways. - // For example, for generating inferences we may wish to use a complex high-order unification alogithm - // whilst for simplification inferences we may wish to simply use pattern unification - return pvi(getResultIterator>(t, true)); + TypedTermList tp = TypedTermList(ToPlaceholders().replace(t), t.sort()); + return pvi(getResultIterator>(tp, false, t)); } #endif TermQueryResultIterator getUnifications(TypedTermList t, bool retrieveSubstitutions) override - { return pvi(getResultIterator>(t, retrieveSubstitutions)); } + { return pvi(getResultIterator>(t, retrieveSubstitutions)); } }; }; diff --git a/Inferences/BinaryResolution.cpp b/Inferences/BinaryResolution.cpp index c63199255f..a7ed8505ab 100644 --- a/Inferences/BinaryResolution.cpp +++ b/Inferences/BinaryResolution.cpp @@ -50,9 +50,6 @@ using namespace Kernel; using namespace Indexing; using namespace Saturation; -// TODO remove after refactor -using BRQueryRes = LQueryRes; - void BinaryResolution::attach(SaturationAlgorithm* salg) { CALL("BinaryResolution::attach"); @@ -79,13 +76,16 @@ struct BinaryResolution::UnificationsFn UnificationsFn(BinaryResolutionIndex* index) : _index(index) {} - VirtualIterator > operator()(Literal* lit) + VirtualIterator > operator()(Literal* lit) { + static bool usingUwa = env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF; + if(lit->isEquality()) { //Binary resolution is not performed with equality literals - return VirtualIterator >::getEmpty(); + return VirtualIterator >::getEmpty(); } - return pvi( pushPairIntoRightIterator(lit, _index->getUwa(lit, /* complementary */ true, env.options->unificationWithAbstraction(), env.options->unificationWithAbstractionFixedPointIteration()))); + return pvi( pushPairIntoRightIterator(lit, usingUwa ? _index->getUwa(lit, /* complementary */ true) : + _index->getUnifications(lit, true, true))); } private: BinaryResolutionIndex* _index; @@ -95,16 +95,15 @@ struct BinaryResolution::ResultFn { ResultFn(Clause* cl, PassiveClauseContainer* passiveClauseContainer, bool afterCheck, Ordering* ord, LiteralSelector& selector, BinaryResolution& parent) : _cl(cl), _passiveClauseContainer(passiveClauseContainer), _afterCheck(afterCheck), _ord(ord), _selector(selector), _parent(parent) {} - Clause* operator()(pair arg) + Clause* operator()(pair arg) { CALL("BinaryResolution::ResultFn::operator()"); - BRQueryRes& qr = arg.second; + SLQueryResult& qr = arg.second; Literal* resLit = arg.first; - auto subs = ResultSubstitution::fromSubstitution(&qr.unifier->subs(), QUERY_BANK, RESULT_BANK); - auto constraints = qr.unifier->constraintLiterals(); - return BinaryResolution::generateClause(_cl, resLit, qr.clause, qr.literal, subs, *constraints, _parent.getOptions(), _passiveClauseContainer, _afterCheck ? _ord : 0, &_selector); + auto subs = qr.unifier; + return BinaryResolution::generateClause(_cl, resLit, qr.clause, qr.literal, subs, _parent.getOptions(), _passiveClauseContainer, _afterCheck ? _ord : 0, &_selector); } private: Clause* _cl; @@ -120,11 +119,13 @@ struct BinaryResolution::ResultFn * in which case also ls is assumed to be not 0. */ Clause* BinaryResolution::generateClause(Clause* queryCl, Literal* queryLit, Clause* resultCl, Literal* resultLit, - ResultSubstitutionSP subs, Stack const& constraints, const Options& opts, PassiveClauseContainer* passiveClauseContainer, Ordering* ord, LiteralSelector* ls) + ResultSubstitutionSP subs, const Options& opts, PassiveClauseContainer* passiveClauseContainer, Ordering* ord, LiteralSelector* ls) { CALL("BinaryResolution::generateClause"); ASS(resultCl->store()==Clause::ACTIVE);//Added to check that generation only uses active clauses + auto constraints = subs->getConstraints(); + if(!ColorHelper::compatible(queryCl->color(),resultCl->color()) ) { env.statistics->inferencesSkippedDueToColors++; if(opts.showBlocked()) { @@ -154,7 +155,7 @@ Clause* BinaryResolution::generateClause(Clause* queryCl, Literal* queryLit, Cla Int::max(queryLit->isPositive() ? queryCl->numPositiveLiterals()-1 : queryCl->numPositiveLiterals(), resultLit->isPositive() ? resultCl->numPositiveLiterals()-1 : resultCl->numPositiveLiterals()); - Inference inf(GeneratingInference2(constraints.isNonEmpty() ? + Inference inf(GeneratingInference2(constraints->isNonEmpty() ? InferenceRule::CONSTRAINED_RESOLUTION:InferenceRule::RESOLUTION,queryCl, resultCl)); Inference::Destroyer inf_destroyer(inf); // will call destroy on inf when coming out of scope unless disabled @@ -180,7 +181,7 @@ Clause* BinaryResolution::generateClause(Clause* queryCl, Literal* queryLit, Cla } } - unsigned newLength = clength+dlength-2+constraints.size(); + unsigned newLength = clength+dlength-2+constraints->size(); inf_destroyer.disable(); // ownership passed to the the clause below Clause* res = new(newLength) Clause(newLength, inf); // the inference object owned by res from now on @@ -192,7 +193,7 @@ Clause* BinaryResolution::generateClause(Clause* queryCl, Literal* queryLit, Cla } unsigned next = 0; - for(Literal* c : constraints){ + for(Literal* c : *constraints){ (*res)[next++] = c; } @@ -266,7 +267,7 @@ Clause* BinaryResolution::generateClause(Clause* queryCl, Literal* queryLit, Cla } } - if(constraints.isNonEmpty()){ + if(constraints->isNonEmpty()){ env.statistics->cResolution++; } else{ diff --git a/Inferences/BinaryResolution.hpp b/Inferences/BinaryResolution.hpp index 4a2cc81b79..10c04379ce 100644 --- a/Inferences/BinaryResolution.hpp +++ b/Inferences/BinaryResolution.hpp @@ -45,7 +45,7 @@ class BinaryResolution static Clause* generateClause(Clause* queryCl, Literal* queryLit, Clause* resultCl, Literal* resultLit, - ResultSubstitutionSP subs, Stack const& constraints, const Options& opts, PassiveClauseContainer* passive=0, Ordering* ord=0, LiteralSelector* ls = 0); + ResultSubstitutionSP subs, const Options& opts, PassiveClauseContainer* passive=0, Ordering* ord=0, LiteralSelector* ls = 0); ClauseIterator generateClauses(Clause* premise); private: diff --git a/Inferences/EqualityFactoring.cpp b/Inferences/EqualityFactoring.cpp index 57623ed767..3c5ea86f43 100644 --- a/Inferences/EqualityFactoring.cpp +++ b/Inferences/EqualityFactoring.cpp @@ -90,17 +90,17 @@ void EqualityFactoring::attach(SaturationAlgorithm* salg) GeneratingInferenceEngine::attach(salg); } +template struct EqualityFactoring::ResultFn { ResultFn(Clause* cl, bool afterCheck, Ordering& ordering) - : _cl(cl), _cLen(cl->length()), _afterCheck(afterCheck), _ordering(ordering) {} + : _cl(cl), _cLen(cl->length()), _afterCheck(afterCheck), _ordering(ordering), + _algo() {} - Clause* operator() (pair,pair > arg) + ClauseIterator operator() (pair,pair > arg) { CALL("EqualityFactoring::ResultFn::operator()"); - static RobSubstitution subst; - subst.reset(); Literal* sLit=arg.first.first; // selected literal ( = factored-out literal ) Literal* fLit=arg.second.first; // fairly boring side literal @@ -110,10 +110,15 @@ struct EqualityFactoring::ResultFn TermList srt = SortHelper::getEqualityArgumentSort(sLit); + static RobSubstitution subst; + subst.reset(); + if (!subst.unify(srt, 0, SortHelper::getEqualityArgumentSort(fLit), 0)) { - return 0; + return ClauseIterator::getEmpty(); } + Recycled results; + TermList srtS = subst.apply(srt,0); TermList sLHS=arg.first.second; @@ -121,72 +126,85 @@ struct EqualityFactoring::ResultFn TermList fLHS=arg.second.second; TermList fRHS=EqHelper::getOtherEqualitySide(fLit, fLHS); ASS_NEQ(sLit, fLit); + + auto unifiers = _algo.unifiers(sLHS,0,fLHS,0); - if(!subst.unify(sLHS,0,fLHS,0)) { - return 0; - } + while(unifiers.hasNext()){ + RobSubstitution* subst = unifiers.next(); - TermList sLHSS = subst.apply(sLHS,0); - TermList sRHSS = subst.apply(sRHS,0); - if(Ordering::isGorGEorE(_ordering.compare(sRHSS,sLHSS))) { - return 0; - } - TermList fRHSS = subst.apply(fRHS,0); - if(Ordering::isGorGEorE(_ordering.compare(fRHSS,sLHSS))) { - return 0; - } - //auto constraints = absUnif.constr().literals(absUnif.subs()); - unsigned newLen=_cLen /*+constraints->length()*/; + TermList sLHSS = subst->apply(sLHS,0); + TermList sRHSS = subst->apply(sRHS,0); + if(Ordering::isGorGEorE(_ordering.compare(sRHSS,sLHSS))) { + // try next unifier (of course there isn't one in the syntactic first-order case) + continue; + } + TermList fRHSS = subst->apply(fRHS,0); + if(Ordering::isGorGEorE(_ordering.compare(fRHSS,sLHSS))) { + continue; + } + auto constraints = subst->constraints(); + unsigned newLen=_cLen - 1 + constraints->length(); - Clause* res = new(newLen) Clause(newLen, GeneratingInference1(InferenceRule::EQUALITY_FACTORING, _cl)); + Clause* res = new(newLen) Clause(newLen, GeneratingInference1(InferenceRule::EQUALITY_FACTORING, _cl)); - (*res)[0]=Literal::createEquality(false, sRHSS, fRHSS, srtS); + (*res)[0]=Literal::createEquality(false, sRHSS, fRHSS, srtS); - Literal* sLitAfter = 0; - if (_afterCheck && _cl->numSelected() > 1) { - TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); - sLitAfter = subst.apply(sLit, 0); - } + Literal* sLitAfter = 0; + if (_afterCheck && _cl->numSelected() > 1) { + TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); + sLitAfter = subst->apply(sLit, 0); + } - unsigned next = 1; - for(unsigned i=0;i<_cLen;i++) { - Literal* curr=(*_cl)[i]; - if(curr!=sLit) { - Literal* currAfter = subst.apply(curr, 0); - - if (sLitAfter) { - TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); - if (i < _cl->numSelected() && _ordering.compare(currAfter,sLitAfter) == Ordering::GREATER) { - env.statistics->inferencesBlockedForOrderingAftercheck++; - res->destroy(); - return 0; + unsigned next = 1; + bool afterCheckFailed = false; + for(unsigned i=0;i<_cLen;i++) { + Literal* curr=(*_cl)[i]; + if(curr!=sLit) { + Literal* currAfter = subst->apply(curr, 0); + + if (sLitAfter) { + TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); + if (i < _cl->numSelected() && _ordering.compare(currAfter,sLitAfter) == Ordering::GREATER) { + env.statistics->inferencesBlockedForOrderingAftercheck++; + res->destroy(); + afterCheckFailed = true; + break; + } } - } - (*res)[next++] = currAfter; + (*res)[next++] = currAfter; + } } - } - /*for(Literal* c : *constraints){ - (*res)[next++] = c; - }*/ - ASS_EQ(next,newLen); + // try next unifier (of course there isn't one in the syntactic first-order case) + if(afterCheckFailed) continue; - env.statistics->equalityFactoring++; + for(Literal* c : *constraints){ + (*res)[next++] = c; + } + ASS_EQ(next,newLen); - return res; + env.statistics->equalityFactoring++; + results->push(res); + } + return pvi(getUniquePersistentIterator(ClauseStack::Iterator(*results))); } private: Clause* _cl; unsigned _cLen; bool _afterCheck; Ordering& _ordering; + UnifAlgo _algo; }; ClauseIterator EqualityFactoring::generateClauses(Clause* premise) { CALL("EqualityFactoring::generateClauses"); +#if VHOL + static bool usingHOL = env.property->higherOrder(); +#endif + if(premise->length()<=1) { return ClauseIterator::getEmpty(); } @@ -200,12 +218,16 @@ ClauseIterator EqualityFactoring::generateClauses(Clause* premise) auto it4 = getMapAndFlattenIterator(it3,FactorablePairsFn(premise)); - auto it5 = getMappingIterator(it4,ResultFn(premise, - getOptions().literalMaximalityAftercheck() && _salg->getLiteralSelector().isBGComplete(), _salg->getOrdering())); + bool afterCheck = getOptions().literalMaximalityAftercheck() && _salg->getLiteralSelector().isBGComplete(); + Ordering& ord = _salg->getOrdering(); - auto it6 = getFilteredIterator(it5,NonzeroFn()); +#if VHOL + if(usingHOL){ + return pvi(getMapAndFlattenIterator(it4, ResultFn(premise, afterCheck, ord))); + } +#endif - return pvi( it6 ); + return pvi(getMapAndFlattenIterator(it4, ResultFn(premise, afterCheck, ord))); } } diff --git a/Inferences/EqualityFactoring.hpp b/Inferences/EqualityFactoring.hpp index 896018bceb..cc8ea9a1df 100644 --- a/Inferences/EqualityFactoring.hpp +++ b/Inferences/EqualityFactoring.hpp @@ -30,6 +30,9 @@ using namespace Saturation; class EqualityFactoring : public GeneratingInferenceEngine { + using RobAlgo = UnificationAlgorithms::RobUnification; + using HOLAlgo = UnificationAlgorithms::HOLUnification; + public: CLASS_NAME(EqualityFactoring); USE_ALLOCATOR(EqualityFactoring); @@ -42,8 +45,9 @@ class EqualityFactoring struct IsPositiveEqualityFn; struct IsDifferentPositiveEqualityFn; struct FactorablePairsFn; + + template struct ResultFn; - friend struct ResultFn; }; diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index 19ae323d2e..e68d0f5db6 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -22,7 +22,6 @@ #include "Lib/Environment.hpp" #include "Shell/Statistics.hpp" #include "Shell/Options.hpp" -#include "Indexing/SubstitutionTree.hpp" #include "Kernel/Clause.hpp" #include "Kernel/Unit.hpp" @@ -33,6 +32,8 @@ #include "Kernel/LiteralSelector.hpp" #include "Kernel/SortHelper.hpp" #include "Kernel/ApplicativeHelper.hpp" +#include "Kernel/MismatchHandler.hpp" +#include "Kernel/HOLUnification.hpp" #include "Saturation/SaturationAlgorithm.hpp" @@ -58,7 +59,7 @@ struct EqualityResolution::IsNegativeEqualityFn { return l->isEquality() && l->isNegative() #if VHOL - // no point trying to resolve too terms of functional sort + // no point trying to resolve two terms of functional sort // instead, let negExt grow both sides and then resolve... && !SortHelper::getEqualityArgumentSort(l).isArrowSort(); #endif @@ -73,91 +74,102 @@ void EqualityResolution::attach(SaturationAlgorithm* salg) GeneratingInferenceEngine::attach(salg); } +template struct EqualityResolution::ResultFn { - ResultFn(Clause* cl, bool afterCheck = false, Ordering* ord = nullptr) - : _afterCheck(afterCheck), _ord(ord), _cl(cl), _cLen(cl->length()) {} - Clause* operator() (Literal* lit) + template + ResultFn(Clause* cl, bool afterCheck, Ordering* ord, AlgoArgs... args) + : _afterCheck(afterCheck), _ord(ord), _cl(cl), _cLen(cl->length()), + _algo(std::move(args)...) {} + + ClauseIterator operator() (Literal* lit) { CALL("EqualityResolution::ResultFn::operator()"); ASS(lit->isEquality()); ASS(lit->isNegative()); - static MismatchHandler _mismatchHandler = MismatchHandler::create(); - auto handler = _mismatchHandler; + // static MismatchHandler _mismatchHandler = MismatchHandler::create(); + // auto handler = _mismatchHandler; + + Recycled results; TermList arg0 = *lit->nthArgument(0); TermList arg1 = *lit->nthArgument(1); - // We only care about non-trivial constraints where the top-sybmol of the two literals are the same - // and therefore a constraint can be created between arguments - if(arg0.isTerm() && arg1.isTerm() && - arg0.term()->functor() != arg1.term()->functor()){ - handler = MismatchHandler(Shell::Options::UnificationWithAbstraction::OFF); - } - - auto absUnif = AbstractingUnifier::unify(arg0, 0, arg1, 0, handler, - env.options->unificationWithAbstractionFixedPointIteration()); - - if(absUnif.isNone()){ - return 0; - } - - // TODO create absUnif.constrLiterals or so - auto constraints = absUnif->constraintLiterals(); - unsigned newLen=_cLen - 1 + constraints->length(); + auto substs = _algo.unifiers(arg0, 0, arg1, 0, /* no top level constraints */ true); - Clause* res = new(newLen) Clause(newLen, GeneratingInference1(InferenceRule::EQUALITY_RESOLUTION, _cl)); + while(substs.hasNext()){ + RobSubstitution* sub = substs.next(); - Literal* litAfter = 0; + auto constraints = sub->constraints(); + unsigned newLen=_cLen - 1 + constraints->length(); - if (_afterCheck && _cl->numSelected() > 1) { - TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); - litAfter = absUnif->subs().apply(lit, 0); - } + Clause* res = new(newLen) Clause(newLen, GeneratingInference1(InferenceRule::EQUALITY_RESOLUTION, _cl)); - unsigned next = 0; - for(unsigned i=0;i<_cLen;i++) { - Literal* curr=(*_cl)[i]; - if(curr!=lit) { - Literal* currAfter = absUnif->subs().apply(curr, 0); + Literal* litAfter = 0; - if (litAfter) { - TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); + if (_afterCheck && _cl->numSelected() > 1) { + TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); + litAfter = sub->apply(lit, 0); + } - if (i < _cl->numSelected() && _ord->compare(currAfter,litAfter) == Ordering::GREATER) { - env.statistics->inferencesBlockedForOrderingAftercheck++; - res->destroy(); - return 0; + unsigned next = 0; + bool afterCheckFailed = false; + for(unsigned i=0;i<_cLen;i++) { + Literal* curr=(*_cl)[i]; + if(curr!=lit) { + Literal* currAfter = sub->apply(curr, 0); + + if (litAfter) { + TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); + + if (i < _cl->numSelected() && _ord->compare(currAfter,litAfter) == Ordering::GREATER) { + env.statistics->inferencesBlockedForOrderingAftercheck++; + res->destroy(); + afterCheckFailed = true; + break; + } } - } - (*res)[next++] = currAfter; + (*res)[next++] = currAfter; + } } - } - for (auto l : *constraints) { - (*res)[next++] = l; - } - ASS_EQ(next,newLen); + // try next unifier (of course there isn't one in the syntactic first-order case) + if(afterCheckFailed) continue; - env.statistics->equalityResolution++; + for (auto l : *constraints) { + (*res)[next++] = l; + } + ASS_EQ(next,newLen); - return res; + env.statistics->equalityResolution++; + results->push(res); + } + return pvi(getUniquePersistentIterator(ClauseStack::Iterator(*results))); } private: bool _afterCheck; Ordering* _ord; Clause* _cl; unsigned _cLen; + UnifAlgo _algo; }; ClauseIterator EqualityResolution::generateClauses(Clause* premise) { CALL("EqualityResolution::generateClauses"); + static auto uwa = env.options->unificationWithAbstraction(); + static bool fixedPointIteration = env.options->unificationWithAbstractionFixedPointIteration(); + static bool usingUwa = uwa !=Options::UnificationWithAbstraction::OFF; + +#if VHOL + static bool usingHOL = env.property->higherOrder(); +#endif + if(premise->isEmpty()) { return ClauseIterator::getEmpty(); } @@ -167,13 +179,23 @@ ClauseIterator EqualityResolution::generateClauses(Clause* premise) auto it2 = getFilteredIterator(it1,IsNegativeEqualityFn()); - auto it3 = getMappingIterator(it2,ResultFn(premise, - getOptions().literalMaximalityAftercheck() && _salg->getLiteralSelector().isBGComplete(), - &_salg->getOrdering())); + bool afterCheck = getOptions().literalMaximalityAftercheck() && _salg->getLiteralSelector().isBGComplete(); + Ordering* ord = &_salg->getOrdering(); + + if(usingUwa){ + return pvi(getMapAndFlattenIterator(it2, + ResultFn(premise, afterCheck, ord, MismatchHandler(uwa), fixedPointIteration))); + } - auto it4 = getFilteredIterator(it3,NonzeroFn()); +#if VHOL + if(usingHOL){ + return pvi(getMapAndFlattenIterator(it2, + ResultFn (premise, afterCheck, ord))); + } +#endif - return pvi( it4 ); + return pvi(getMapAndFlattenIterator(it2, + ResultFn (premise, afterCheck, ord))); } /** @@ -184,8 +206,12 @@ ClauseIterator EqualityResolution::generateClauses(Clause* premise) Clause* EqualityResolution::tryResolveEquality(Clause* cl, Literal* toResolve) { CALL("EqualityResolution::tryResolveEquality"); + + // AYB should template tryResolveEquality function really... + auto it = ResultFn(cl, /* no aftercheck */ false, /* no ordering */ nullptr)(toResolve); - return ResultFn(cl)(toResolve); + if(it.hasNext()) return it.next(); + else return 0; } } diff --git a/Inferences/EqualityResolution.hpp b/Inferences/EqualityResolution.hpp index 089c5306dc..0d11774e76 100644 --- a/Inferences/EqualityResolution.hpp +++ b/Inferences/EqualityResolution.hpp @@ -30,6 +30,10 @@ using namespace Saturation; class EqualityResolution : public GeneratingInferenceEngine { + using AbstractingAlgo = UnificationAlgorithms::AbstractingUnification; + using RobAlgo = UnificationAlgorithms::RobUnification; + using HOLAlgo = UnificationAlgorithms::HOLUnification; + public: CLASS_NAME(EqualityResolution); USE_ALLOCATOR(EqualityResolution); @@ -39,6 +43,8 @@ class EqualityResolution ClauseIterator generateClauses(Clause* premise); static Clause* tryResolveEquality(Clause* cl, Literal* toResolve); private: + + template struct ResultFn; struct IsNegativeEqualityFn; }; diff --git a/Inferences/HyperSuperposition.cpp b/Inferences/HyperSuperposition.cpp index 47be117326..cb983cd619 100644 --- a/Inferences/HyperSuperposition.cpp +++ b/Inferences/HyperSuperposition.cpp @@ -364,8 +364,7 @@ void HyperSuperposition::resolveFixedLiteral(Clause* cl, unsigned litIndex, Clau SLQueryResultIterator unifs = _index->getUnifications(lit, /* complementary = */ true, /* retrieveSubstitutions */ true); while(unifs.hasNext()) { SLQueryResult qr = unifs.next(); - Stack constraints; - Clause* genCl = BinaryResolution::generateClause(cl, lit, qr.clause, qr.literal, qr.unifier, constraints, getOptions()); + Clause* genCl = BinaryResolution::generateClause(cl, lit, qr.clause, qr.literal, qr.unifier, getOptions()); acc.push(ClausePair(cl, genCl)); } } diff --git a/Inferences/Superposition.cpp b/Inferences/Superposition.cpp index e66dece531..41d6af5ba1 100644 --- a/Inferences/Superposition.cpp +++ b/Inferences/Superposition.cpp @@ -82,7 +82,7 @@ void Superposition::detach() struct Superposition::ForwardResultFn { ForwardResultFn(Clause* cl, PassiveClauseContainer* passiveClauseContainer, Superposition& parent) : _cl(cl), _passiveClauseContainer(passiveClauseContainer), _parent(parent) {} - Clause* operator()(pair, TQueryRes> arg) + Clause* operator()(pair, TermQueryResult> arg) { CALL("Superposition::ForwardResultFn::operator()"); @@ -100,7 +100,7 @@ struct Superposition::ForwardResultFn struct Superposition::BackwardResultFn { BackwardResultFn(Clause* cl, PassiveClauseContainer* passiveClauseContainer, Superposition& parent) : _cl(cl), _passiveClauseContainer(passiveClauseContainer), _parent(parent) {} - Clause* operator()(pair, TQueryRes> arg) + Clause* operator()(pair, TermQueryResult> arg) { CALL("Superposition::BackwardResultFn::operator()"); @@ -124,11 +124,11 @@ ClauseIterator Superposition::generateClauses(Clause* premise) CALL("Superposition::generateClauses"); PassiveClauseContainer* passiveClauseContainer = _salg->getPassiveClauseContainer(); - //cout << "SUPERPOSITION with " << premise->toString() << endl; + static bool usingUwa = env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF; +#if VHOL + static bool usingHOL = env.property->higherOrder(); +#endif - //TODO probably shouldn't go here! - //static bool withConstraints = env.options->unificationWithAbstraction()!=Options::UnificationWithAbstraction::OFF; - auto itf1 = premise->getSelectedLiteralIterator(); // Get an iterator of pairs of selected literals and rewritable subterms of those literals @@ -147,10 +147,15 @@ ClauseIterator Superposition::generateClauses(Clause* premise) // returns a pair with the original pair and the unification result (includes substitution) auto itf3 = getMapAndFlattenIterator(itf2, [this](pair arg) - { return pushPairIntoRightIterator(arg, - _lhsIndex->getUwa(arg.second, - env.options->unificationWithAbstraction(), - env.options->unificationWithAbstractionFixedPointIteration())); }); + { auto unifs = usingUwa ? _lhsIndex->getUwa(arg.second) : +#if VHOL + (usingHOL ? _lhsIndex->getPotentialHOLUnifiers(arg.second) : +#endif + _lhsIndex->getUnifications(arg.second) +#if VHOL + ); +#endif + return pushPairIntoRightIterator(arg, unifs ); }); //Perform forward superposition auto itf4 = getMappingIterator(itf3,ForwardResultFn(premise, passiveClauseContainer, *this)); @@ -160,12 +165,16 @@ ClauseIterator Superposition::generateClauses(Clause* premise) auto itb3 = getMapAndFlattenIterator(itb2, [this] (pair arg) - { return pushPairIntoRightIterator( - arg, - _subtermIndex->getUwa(TypedTermList(arg.second, - SortHelper::getEqualityArgumentSort(arg.first)), - env.options->unificationWithAbstraction(), - env.options->unificationWithAbstractionFixedPointIteration())); }); + { TypedTermList tt(arg.second, SortHelper::getEqualityArgumentSort(arg.first)); + auto unifs = usingUwa ? _subtermIndex->getUwa(tt) : +#if VHOL + (usingHOL ? _subtermIndex->getPotentialHOLUnifiers(tt) : +#endif + _subtermIndex->getUnifications(tt) +#if VHOL + ); +#endif + return pushPairIntoRightIterator(arg, unifs); }); //Perform backward superposition auto itb4 = getMappingIterator(itb3,BackwardResultFn(premise, passiveClauseContainer, *this)); @@ -334,7 +343,7 @@ bool Superposition::earlyWeightLimitCheck(Clause* eqClause, Literal* eqLit, Clause* Superposition::performSuperposition( Clause* rwClause, Literal* rwLit, TermList rwTerm, Clause* eqClause, Literal* eqLit, TermList eqLHS, - AbstractingUnifier* unifier, bool eqIsResult, PassiveClauseContainer* passiveClauseContainer) + ResultSubstitutionSP subst, bool eqIsResult, PassiveClauseContainer* passiveClauseContainer) { CALL("Superposition::performSuperposition"); TIME_TRACE("perform superposition"); @@ -342,10 +351,8 @@ Clause* Superposition::performSuperposition( ASS(rwClause->store()==Clause::ACTIVE); ASS(eqClause->store()==Clause::ACTIVE); - auto constraints = unifier->constraintLiterals(); - auto subst = ResultSubstitution::fromSubstitution(&unifier->subs(), QUERY_BANK, RESULT_BANK); - // auto constraints = rawConstraints ? rawConstraints->literals(*subst->tryGetRobSubstitution()) : Recycled>(); - bool hasConstraints = !constraints->isEmpty(); + auto constraints = subst->getConstraints(); + bool hasConstraints = constraints->size() > 0; TermList eqLHSsort = SortHelper::getEqualityArgumentSort(eqLit); diff --git a/Inferences/Superposition.hpp b/Inferences/Superposition.hpp index b6bf682297..65ccf960f2 100644 --- a/Inferences/Superposition.hpp +++ b/Inferences/Superposition.hpp @@ -45,7 +45,7 @@ class Superposition Clause* performSuperposition( Clause* rwClause, Literal* rwLiteral, TermList rwTerm, Clause* eqClause, Literal* eqLiteral, TermList eqLHS, - AbstractingUnifier* unifier, bool eqIsResult, PassiveClauseContainer* passiveClauseContainer); + ResultSubstitutionSP subst, bool eqIsResult, PassiveClauseContainer* passiveClauseContainer); bool checkClauseColorCompatibility(Clause* eqClause, Clause* rwClause); static bool earlyWeightLimitCheck(Clause* eqClause, Literal* eqLit, diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp new file mode 100644 index 0000000000..7feb222704 --- /dev/null +++ b/Kernel/HOLUnification.cpp @@ -0,0 +1,127 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file RobSubstitution.hpp + * Defines class RobSubstitution. + * + */ + +#if VHOL + +#include "Kernel/HOLUnification.hpp" + +namespace Kernel +{ + +namespace UnificationAlgorithms { + +SubstIterator HOLUnification::unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck) +{ + CALL("HOLUnification::unifiers"); + + // TODO dummy implementation + return SubstIterator::getEmpty(); +} + +SubstIterator HOLUnification::postprocess(RobSubstitution* sub, TermList t) +{ + CALL("HOLUnification::postprocess"); + ASS(!_origQuery.isEmpty()); + + // TODO dummy implementation + return pvi(getSingletonIterator(sub)); +} + +bool HOLUnification::associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub) +{ + CALL("HOLUnification::associate"); + TermList query(specialVar, /* special */ true); + return unifyWithPlaceholders(query, QUERY_BANK, node, NORM_RESULT_BANK, sub); +} + +bool HOLUnification::unifyWithPlaceholders(TermList t1, unsigned bank1, TermList t2, unsigned bank2, RobSubstitution* sub){ + CALL("HOLUnification::unifyWithPlaceholders"); + + return unify(TermSpec(t1,bank1), TermSpec(t2,bank2), sub); +} + +#define DEBUG_UNIFY(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) +bool HOLUnification::unify(TermSpec t1, TermSpec t2, RobSubstitution* sub) +{ + CALL("HOLUnification::unify"); + + DEBUG_UNIFY(1, ".unify(", t1, ",", t2, ")") + if(t1 == t2) { + return true; + } + + auto impl = [&]() -> bool { + + Recycled> toDo; + toDo->push(UnificationConstraint(t1.clone(), t2.clone())); + + // Save encountered unification pairs to avoid + // recomputing their unification + Recycled> encountered; + + auto pushTodo = [&](auto pair) { + if (!encountered->find(pair)) { + encountered->insert(pair.clone()); + toDo->push(std::move(pair)); + } + }; + + while (toDo->isNonEmpty()) { + auto x = toDo->pop(); + auto& dt1 = x.lhs().deref(sub); + auto& dt2 = x.rhs().deref(sub); + + if (dt1 == dt2 || dt1.isPlaceholder() || dt2.isPlaceholder()) { + // do nothing + // we want unification to pass in these cases + } else if(dt1.isVar() && !sub->occurs(dt1.varSpec(), dt2)) { + sub->bind(dt1.varSpec(), dt2.clone()); + } else if(dt2.isVar() && !sub->occurs(dt2.varSpec(), dt1)) { + sub->bind(dt2.varSpec(), dt1.clone()); + } else if(dt1.isTerm() && dt2.isTerm() && dt1.functor() == dt2.functor()) { + + for (auto c : dt1.allArgs().zip(dt2.allArgs())) { + pushTodo(UnificationConstraint(std::move(c.first), std::move(c.second))); + } + + } else { + return false; + } + } + return true; + }; + + BacktrackData localBD; + sub->bdRecord(localBD); + bool success = impl(); + sub->bdDone(); + + if(!success) { + localBD.backtrack(); + } else { + if(sub->bdIsRecording()) { + sub->bdCommit(localBD); + } + localBD.drop(); + } + + return success; +} + +} + +} + +#endif \ No newline at end of file diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp new file mode 100644 index 0000000000..dcb8aace05 --- /dev/null +++ b/Kernel/HOLUnification.hpp @@ -0,0 +1,105 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file RobSubstitution.hpp + * Defines class RobSubstitution. + * + */ + +#ifndef __HOLUnification__ +#define __HOLUnification__ + +#if VHOL + +#include "Forwards.hpp" +#include "Lib/Backtrackable.hpp" +#include "Lib/Recycled.hpp" +#include "Term.hpp" +#include "Lib/Hash.hpp" +#include "Lib/DHMap.hpp" +#include "Lib/Metaiterators.hpp" +#include "Kernel/RobSubstitution.hpp" +#include "Lib/Environment.hpp" +#include "Kernel/Signature.hpp" + +namespace Kernel +{ + +using namespace Indexing; + +namespace UnificationAlgorithms { + +// TODO moce somewhere more suitable +class RobUnification { +public: + + // to be used for tree calls + bool associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub) + { + CALL("RobUnification::associate"); + TermList query(specialVar, /* special */ true); + return sub->unify(query, QUERY_BANK, node, NORM_RESULT_BANK); + } + + // To be used for non-tree calls. Return an iterator instead of bool + // to fit HOL interface + SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck = false){ + CALL("RobUnification::unifiers"); + + static RobSubstitution subst; + subst.reset(); + + if(subst.unify(t1, index1, t2, index2)){ + return pvi(getSingletonIterator(&subst)); + } + return SubstIterator::getEmpty(); + } + + // function is called when in the leaf of a substitution tree + // during unification. t is the term stored in the leaf + SubstIterator postprocess(RobSubstitution* sub, TermList t){ + CALL("RobUnification::postprocess"); + + // sub is a unifier of query and leaf term t, return it + return pvi(getSingletonIterator(sub)); + } + + bool usesUwa() const { return false; } +}; + + +class HOLUnification { + // when this class is used for tree unification the field + // below holds the original query before higher-order subterms have + // been replaced by placeholders + TermList _origQuery; + bool unify(TermSpec t1, TermSpec t2, RobSubstitution* sub); + +public: + HOLUnification() { _origQuery.makeEmpty(); } + HOLUnification(TermList query) : _origQuery(query) {} + + bool unifyWithPlaceholders(TermList t1, unsigned bank1, TermList t2, unsigned bank2, RobSubstitution* sub); + bool associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub); + SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck = false); + SubstIterator postprocess(RobSubstitution*, TermList t); + + // method used to decide whether to return all children of a node during tree + // traversal or only the children with same top + bool usesUwa() const { return false; } +}; + +} + +} + +#endif + +#endif diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index ec07daad35..9a8f260612 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -96,7 +96,7 @@ class AcIter { // auto acIter(unsigned f, TermSpec t) // { return iterTraits(AcIter(f, t)); } -bool MismatchHandler::canAbstract(AbstractingUnifier* au, TermSpec const& t1, TermSpec const& t2) const +bool MismatchHandler::canAbstract(TermSpec const& t1, TermSpec const& t2) const { if(!(t1.isTerm() && t2.isTerm())) return false; @@ -128,7 +128,7 @@ bool MismatchHandler::canAbstract(AbstractingUnifier* au, TermSpec const& t1, Te ASSERTION_VIOLATION; } -Option MismatchHandler::tryAbstract(AbstractingUnifier* au, TermSpec const& t1, TermSpec const& t2) const +Option MismatchHandler::tryAbstract(RobSubstitution* sub, TermSpec const& t1, TermSpec const& t2) const { CALL("MismatchHandler::checkUWA"); using Uwa = Shell::Options::UnificationWithAbstraction; @@ -141,9 +141,9 @@ Option MismatchHandler::tryAbstract(Abstract || !(t2.isTerm() && theory->isInterpretedFunction(t2.functor(), IntTraits::addI))) { return Option(); } - auto a1 = iterTraits(AcIter(IntTraits::addF(), t1.clone(), &au->subs())).template collect(); - auto a2 = iterTraits(AcIter(IntTraits::addF(), t2.clone(), &au->subs())).template collect(); - auto cmp = [&](TermSpec const& lhs, TermSpec const& rhs) { return TermSpec::compare(lhs, rhs, [&](auto& t) -> TermSpec const& { return t.deref(&au->subs()); }); }; + auto a1 = iterTraits(AcIter(IntTraits::addF(), t1.clone(), sub)).template collect(); + auto a2 = iterTraits(AcIter(IntTraits::addF(), t2.clone(), sub)).template collect(); + auto cmp = [&](TermSpec const& lhs, TermSpec const& rhs) { return TermSpec::compare(lhs, rhs, [&](auto& t) -> TermSpec const& { return t.deref(sub); }); }; auto less = [&](TermSpec const& lhs, TermSpec const& rhs) { return cmp(lhs, rhs) < 0; }; a1.sort(less); a2.sort(less); @@ -192,7 +192,7 @@ Option MismatchHandler::tryAbstract(Abstract return some(AbstractionResult(EqualIf().constr(diffConstr()))); } } else { - auto abs = canAbstract(au, t1, t2); + auto abs = canAbstract(t1, t2); DEBUG("canAbstract(", t1, ",", t2, ") = ", abs); return someIf(abs, [&](){ return AbstractionResult(EqualIf().constr(UnificationConstraint(t1.clone(), t2.clone()))); @@ -200,53 +200,15 @@ Option MismatchHandler::tryAbstract(Abstract } } -void UnificationConstraintStack::add(UnificationConstraint c, Option bd) -{ - DEBUG("introduced constraint: ", c) - if (bd) { - backtrackablePush(_cont, std::move(c), *bd); - } else { - _cont.push(std::move(c)); - } -} - - -UnificationConstraint UnificationConstraintStack::pop(Option bd) -{ - auto old = _cont.pop(); - if (bd) { - bd->addClosure([this, old = old.clone()]() mutable { _cont.push(std::move(old)); }); - } - return old; -} - -Recycled> UnificationConstraintStack::literals(RobSubstitution& s) -{ - Recycled> out; - out->reserve(_cont.size()); - out->loadFromIterator(literalIter(s)); - return out; -} - - -Option UnificationConstraint::toLiteral(RobSubstitution& s) -{ - auto t1 = _t1.toTerm(s); - auto t2 = _t2.toTerm(s); - return t1 == t2 - ? Option() - : Option(Literal::createEquality(false, t1, t2, t1.isTerm() ? SortHelper::getResultSort(t1.term()) : SortHelper::getResultSort(t2.term()))); -} - +namespace UnificationAlgorithms { -} -bool AbstractingUnifier::fixedPointIteration() +bool AbstractingUnification::fixedPointIteration(RobSubstitution* sub) { - CALL("AbstractionResult::fixedPointIteration"); + CALL("AbstractingUnification::fixedPointIteration"); Recycled> todo; - while (!constr().isEmpty()) { - todo->push(constr().pop(bd())); + while (!sub->emptyConstraints()) { + todo->push(sub->popConstraint()); } DEBUG_FINALIZE(1, "finalizing: ", todo) @@ -254,37 +216,77 @@ bool AbstractingUnifier::fixedPointIteration() auto c = todo->pop(); DEBUG_FINALIZE(2, "popped: ", c); bool progress; - auto res = unify(c.lhs().clone(), c.rhs().clone(), progress); + auto res = unify(c.lhs().clone(), c.rhs().clone(), progress, sub); if (!res) { DEBUG_FINALIZE(1, "finalizing failed"); return false; } else if (progress) { - while (!constr().isEmpty()) { - todo->push(constr().pop(bd())); + while (!sub->emptyConstraints()) { + todo->push(sub->popConstraint()); } } else { // no progress. we keep the constraints } } - DEBUG_FINALIZE(1, "finalizing successful: ", *this); + DEBUG_FINALIZE(1, "finalizing successful: ", *sub); return true; } -bool AbstractingUnifier::unify(TermList term1, unsigned bank1, TermList term2, unsigned bank2) +bool AbstractingUnification::unify(TermList term1, unsigned bank1, TermList term2, unsigned bank2, RobSubstitution* sub) { - if (_uwa._mode == Shell::Options::UnificationWithAbstraction::OFF) - return _subs->unify(term1, bank1, term2, bank2); + ASS(_uwa._mode != Shell::Options::UnificationWithAbstraction::OFF); bool progress; - return unify(TermSpec(term1, bank1), TermSpec(term2, bank2), progress); + return unify(TermSpec(term1, bank1), TermSpec(term2, bank2), progress, sub); +} + +SubstIterator AbstractingUnification::unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck) +{ + CALL("AbstractingUnification::unifiers"); + + static RobSubstitution subst; + subst.reset(); + + // We only care about non-trivial constraints where the top-sybmol of the two literals are the same + // and therefore a constraint can be created between arguments + if(topLevelCheck && t1.isTerm() && t2.isTerm() && + t1.term()->functor() != t2.term()->functor()){ + return SubstIterator::getEmpty(); + } + + bool unifies = unify(t1, index1, t2, index2, &subst); + + if(!unifies){ + return SubstIterator::getEmpty(); + } + + if(!_fpi){ + return pvi(getSingletonIterator(&subst)); + } + + bool success = fixedPointIteration(&subst); + return success ? pvi(getSingletonIterator(&subst)) : SubstIterator::getEmpty(); } +SubstIterator AbstractingUnification::postprocess(RobSubstitution* sub, TermList t) +{ + CALL("AbstractingUnification::postprocess"); + + if(!_fpi){ + return pvi(getSingletonIterator(sub)); + } + + bool success = fixedPointIteration(sub); + return success ? pvi(getSingletonIterator(sub)) : SubstIterator::getEmpty(); +} + + #define DEBUG_UNIFY(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) -bool AbstractingUnifier::unify(TermSpec t1, TermSpec t2, bool& progress) +bool AbstractingUnification::unify(TermSpec t1, TermSpec t2, bool& progress, RobSubstitution* sub) { - CALL("AbstractionResult::unify"); + CALL("AbstractingUnification::unify"); ASS_NEQ(_uwa._mode, Shell::Options::UnificationWithAbstraction::OFF) - DEBUG_UNIFY(1, *this, ".unify(", t1, ",", t2, ")") + DEBUG_UNIFY(1, ".unify(", t1, ",", t2, ")") progress = false; if(t1 == t2) { @@ -296,7 +298,7 @@ bool AbstractingUnifier::unify(TermSpec t1, TermSpec t2, bool& progress) Recycled> toDo; toDo->push(UnificationConstraint(t1.clone(), t2.clone())); - + // Save encountered unification pairs to avoid // recomputing their unification Recycled> encountered; @@ -304,7 +306,7 @@ bool AbstractingUnifier::unify(TermSpec t1, TermSpec t2, bool& progress) Option absRes; auto doAbstract = [&](auto& l, auto& r) -> bool { - absRes = _uwa.tryAbstract(this, l, r); + absRes = _uwa.tryAbstract(sub, l, r); if (absRes) { DEBUG_UNIFY(2, "abstraction result: ", absRes) } @@ -328,39 +330,22 @@ bool AbstractingUnifier::unify(TermSpec t1, TermSpec t2, bool& progress) } }; - auto occurs = [this](auto& var, auto& term) { - Recycled> todo; - todo->push(term.clone()); - while (todo->isNonEmpty()) { - auto t = todo->pop(); - auto& dt = t.deref(&subs()); - if (dt.isVar()) { - if (dt == var) { - return true; - } - } else { - todo->loadFromIterator(dt.allArgs()); - } - } - return false; - }; - while (toDo->isNonEmpty()) { auto x = toDo->pop(); - auto& dt1 = x.lhs().deref(&subs()); - auto& dt2 = x.rhs().deref(&subs()); + auto& dt1 = x.lhs().deref(sub); + auto& dt2 = x.rhs().deref(sub); DEBUG_UNIFY(2, "popped: ", dt1, " = ", dt2) if (dt1 == dt2) { progress = true; - } else if(dt1.isVar() && !occurs(dt1, dt2)) { + } else if(dt1.isVar() && !sub->occurs(dt1.varSpec(), dt2)) { progress = true; - subs().bind(dt1.varSpec(), dt2.clone()); + sub->bind(dt1.varSpec(), dt2.clone()); - } else if(dt2.isVar() && !occurs(dt2, dt1)) { + } else if(dt2.isVar() && !sub->occurs(dt2.varSpec(), dt1)) { progress = true; - subs().bind(dt2.varSpec(), dt1.clone()); + sub->bind(dt2.varSpec(), dt1.clone()); } else if(doAbstract(dt1, dt2)) { @@ -386,7 +371,7 @@ bool AbstractingUnifier::unify(TermSpec t1, TermSpec t2, bool& progress) pushTodo(std::move(x)); } for (auto& x: conditions.constr()) { - _constr->add(std::move(x), bd()); + sub->pushConstraint(std::move(x)); } } @@ -405,19 +390,23 @@ bool AbstractingUnifier::unify(TermSpec t1, TermSpec t2, bool& progress) }; BacktrackData localBD; - bdRecord(localBD); + sub->bdRecord(localBD); bool success = impl(); - bdDone(); + sub->bdDone(); if(!success) { localBD.backtrack(); } else { - if(subs().bdIsRecording()) { - subs().bdCommit(localBD); + if(sub->bdIsRecording()) { + sub->bdCommit(localBD); } localBD.drop(); } - DEBUG_UNIFY(1, *this) + DEBUG_UNIFY(1, *sub) return success; } + +} + +} diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index c542b0fbbc..3e821183e3 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -30,47 +30,12 @@ namespace Kernel { - -class UnificationConstraintStack -{ - Stack _cont; -public: - CLASS_NAME(UnificationConstraintStack) - USE_ALLOCATOR(UnificationConstraintStack) - UnificationConstraintStack() : _cont() {} - UnificationConstraintStack(UnificationConstraintStack&&) = default; - UnificationConstraintStack& operator=(UnificationConstraintStack&&) = default; - - auto iter() const - { return iterTraits(_cont.iter()); } - - Recycled> literals(RobSubstitution& s); - - auto literalIter(RobSubstitution& s) - { return iterTraits(_cont.iter()) - .filterMap([&](auto& c) { return c.toLiteral(s); }); } - - friend std::ostream& operator<<(std::ostream& out, UnificationConstraintStack const& self) - { return out << self._cont; } - - void reset() { _cont.reset(); } - bool keepRecycled() const { return _cont.keepRecycled() > 0; } - - bool isEmpty() const - { return _cont.isEmpty(); } - - void add(UnificationConstraint c, Option bd); - UnificationConstraint pop(Option bd); -}; - -using Action = std::function; -using SpecialVar = unsigned; -using WaitingMap = DHMap; - class MismatchHandler final { Shell::Options::UnificationWithAbstraction _mode; - friend class AbstractingUnifier; + friend class UnificationAlgorithms::AbstractingUnification; + + using AbstractingAlgo = UnificationAlgorithms::AbstractingUnification; public: MismatchHandler(Shell::Options::UnificationWithAbstraction mode) : _mode(mode) {} @@ -81,7 +46,6 @@ class MismatchHandler final EqualIf() : _unify(), _constr() {} - auto unify() -> decltype(auto) { return *_unify; } auto constr() -> decltype(auto) { return *_constr; } @@ -130,10 +94,12 @@ class MismatchHandler final /** TODO document */ Option tryAbstract( - AbstractingUnifier* au, + RobSubstitution* rob, TermSpec const& t1, TermSpec const& t2) const; + auto mode() const { return _mode; } + // /** TODO document */ // virtual bool recheck(TermSpec l, TermSpec r) const = 0; @@ -143,70 +109,52 @@ class MismatchHandler final // for old non-alasca uwa modes bool isInterpreted(unsigned f) const; bool canAbstract( - AbstractingUnifier* au, TermSpec const& t1, TermSpec const& t2) const; }; -class AbstractingUnifier { - Recycled _subs; - Recycled _constr; - Option _bd; +namespace UnificationAlgorithms { + +class AbstractingUnification { MismatchHandler _uwa; - friend class RobSubstitution; - AbstractingUnifier(MismatchHandler uwa) : _subs(), _constr(), _bd(), _uwa(uwa) { } + bool _fpi; + public: // DEFAULT_CONSTRUCTORS(AbstractingUnifier) - static AbstractingUnifier empty(MismatchHandler uwa) - { return AbstractingUnifier(uwa); } - - bool isRecording() { return _subs->bdIsRecording(); } + AbstractingUnification(MismatchHandler uwa, bool fixedPointIter) : + _uwa(uwa), _fpi(fixedPointIter) { } - bool unify(TermList t1, unsigned bank1, TermList t2, unsigned bank2); - bool unify(TermSpec l, TermSpec r, bool& progress); - bool fixedPointIteration(); + bool unify(TermList t1, unsigned bank1, TermList t2, unsigned bank2, RobSubstitution* sub); + bool unify(TermSpec l, TermSpec r, bool& progress, RobSubstitution* sub); + bool fixedPointIteration(RobSubstitution* sub); + SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck = false); + SubstIterator postprocess(RobSubstitution* sub, TermList t); - - static Option unify(TermList t1, unsigned bank1, TermList t2, unsigned bank2, MismatchHandler uwa, bool fixedPointIteration) + bool associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub) { - auto au = AbstractingUnifier::empty(uwa); - if (!au.unify(t1, bank1, t2, bank2)) return {}; - if (!fixedPointIteration || au.fixedPointIteration()) return some(std::move(au)); - else return {}; + CALL("AbstractingUnification::associate"); + + TermList query(specialVar, /* special */ true); + return unify(query, Indexing::QUERY_BANK, node, Indexing::NORM_RESULT_BANK, sub); } + //RobSubstitution& subs(){ return *_subs; } - UnificationConstraintStack& constr() { return *_constr; } - Recycled> constraintLiterals() { return _constr->literals(*_subs); } - - RobSubstitution & subs() { return *_subs; } - RobSubstitution const& subs() const { return *_subs; } - Option bd() { return someIf(_subs->bdIsRecording(), [&]() -> decltype(auto) { return _subs->bdGet(); }); } - BacktrackData& bdGet() { return _subs->bdGet(); } - void bdRecord(BacktrackData& bd) { _subs->bdRecord(bd); } - void bdDone() { _subs->bdDone(); } - bool usesUwa() const { return _uwa._mode != Options::UnificationWithAbstraction::OFF; } + /*Option fixedPointIteration() + { + if (_result->isNone()) { + *_result = some(bool(fixedPointIteration())); + if (_unif->isRecording()) { + _unif->bdGet().addClosure([res = _result]() { *res = {}; }); + } + } + return someIf(**_result, [&](){ return _unif; }); + }*/ - friend std::ostream& operator<<(std::ostream& out, AbstractingUnifier const& self) - { return out << "(" << self._subs << ", " << self._constr << ")"; } + bool usesUwa() const { return _uwa.mode() != Options::UnificationWithAbstraction::OFF; } }; -#if VHOL -//TODO move from Mismatch handler to somewhere more suitable -class HOLUnifier { - Recycled _subs; - -public: - - HOLUnifier() : _subs() {} - - bool unifyWithPlaceholders(TermList t1, unsigned bank1, TermList t2, unsigned bank2); - - RobSubstitution & subs() { return *_subs; } - RobSubstitution const& subs() const { return *_subs; } - -}; -#endif +} } // namespace Kernel #endif /*__MismatchHandler__*/ diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index d5c533546e..37aecdac19 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -119,6 +119,11 @@ unsigned TermSpec::functor() const { return _self.match([](Appl const& a) { return a.functor; }, [](OldTermSpec const& self) { return self.term.term()->functor(); }); } +#if VHOL + bool TermSpec::isPlaceholder() const + { return _self.match([](Appl const& a) { return false; }, + [](OldTermSpec const& self) { return self.term.isPlaceholder(); }); } +#endif unsigned TermSpec::nTypeArgs() const { return _self.match([](Appl const& a) { return env.signature->getFunction(a.functor)->numTypeArguments(); }, @@ -159,6 +164,42 @@ TermSpec TermSpec::sort() const [&](OldTermSpec const& self) -> TermSpec { return TermSpec(SortHelper::getResultSort(self.term.term()), self.index); }); } +void UnificationConstraintStack::add(UnificationConstraint c, Option bd) +{ + if (bd) { + backtrackablePush(_cont, std::move(c), *bd); + } else { + _cont.push(std::move(c)); + } +} + +UnificationConstraint UnificationConstraintStack::pop(Option bd) +{ + auto old = _cont.pop(); + if (bd) { + bd->addClosure([this, old = old.clone()]() mutable { _cont.push(std::move(old)); }); + } + return old; +} + +Recycled> UnificationConstraintStack::literals(RobSubstitution& s) +{ + Recycled> out; + out->reserve(_cont.size()); + out->loadFromIterator(literalIter(s)); + return out; +} + + +Option UnificationConstraint::toLiteral(RobSubstitution& s) +{ + auto t1 = _t1.toTerm(s); + auto t2 = _t2.toTerm(s); + return t1 == t2 + ? Option() + : Option(Literal::createEquality(false, t1, t2, t1.isTerm() ? SortHelper::getResultSort(t1.term()) : SortHelper::getResultSort(t2.term()))); +} + /** * Unify @b t1 and @b t2, and return true iff it was successful. */ @@ -272,6 +313,7 @@ TermList::Top RobSubstitution::getSpecialVarTop(unsigned specialVar) const TermSpec const& RobSubstitution::derefBound(TermSpec const& t_) const { CALL("RobSubstitution::derefBound"); + TermSpec const* t = &t_; for(;;) { if (t->isTerm() || t->isOutputVar()) { diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 9cfdcfd250..c752bad03f 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -228,6 +228,10 @@ class TermSpec VarSpec varSpec() const; unsigned functor() const; +#if VHOL + bool isPlaceholder() const; +#endif + unsigned nTypeArgs() const;//{ return derefTerm().term()->numTypeArguments(); } unsigned nTermArgs() const;//{ return derefTerm().term()->numTermArguments(); } unsigned nAllArgs() const;//{ return derefTerm().term()->numTermArguments(); } @@ -289,19 +293,54 @@ class UnificationConstraint }; +class UnificationConstraintStack +{ + Stack _cont; +public: + CLASS_NAME(UnificationConstraintStack) + USE_ALLOCATOR(UnificationConstraintStack) + UnificationConstraintStack() : _cont() {} + UnificationConstraintStack(UnificationConstraintStack&&) = default; + UnificationConstraintStack& operator=(UnificationConstraintStack&&) = default; + + auto iter() const + { return iterTraits(_cont.iter()); } + + Recycled> literals(RobSubstitution& s); + auto literalIter(RobSubstitution& s) + { return iterTraits(_cont.iter()) + .filterMap([&](auto& c) { return c.toLiteral(s); }); } + friend std::ostream& operator<<(std::ostream& out, UnificationConstraintStack const& self) + { return out << self._cont; } + + void reset() { _cont.reset(); } + bool keepRecycled() const { return _cont.keepRecycled() > 0; } + + bool isEmpty() const + { return _cont.isEmpty(); } + + void add(UnificationConstraint c, Option bd); + UnificationConstraint pop(Option bd); +}; using namespace Lib; -class AbstractingUnifier; +namespace UnificationAlgorithms { + class AbstractingUnification; + class HOLUnification; + class RobUnification; +} class UnificationConstraint; class RobSubstitution :public Backtrackable { - friend class AbstractingUnifier; + friend class UnificationAlgorithms::AbstractingUnification; + friend class UnificationAlgorithms::HOLUnification; friend class UnificationConstraint; + public: CLASS_NAME(RobSubstitution); USE_ALLOCATOR(RobSubstitution); @@ -327,8 +366,11 @@ class RobSubstitution void reset() { _bank.reset(); + _constr->reset(); _nextUnboundAvailable=0; } + + Recycled constraints(){ return _constr->literals(*this); } bool keepRecycled() const { return _bank.keepRecycled(); } @@ -364,8 +406,6 @@ class RobSubstitution #endif friend std::ostream& operator<<(std::ostream& out, RobSubstitution const& self); std::ostream& output(std::ostream& out, bool deref) const; - - typedef pair TTPair; friend std::ostream& operator<<(std::ostream& out, VarSpec const& self) { @@ -376,7 +416,6 @@ class RobSubstitution } } - RobSubstitution(RobSubstitution&& obj) = default; RobSubstitution& operator=(RobSubstitution&& obj) = default; private: @@ -393,8 +432,16 @@ class RobSubstitution TermSpec const& deref(VarSpec v) const; TermSpec const& derefBound(TermSpec const& v) const; + void pushConstraint(UnificationConstraint c){ + _constr->add(std::move(c), bd()); + } + UnificationConstraint popConstraint(){ + return _constr->pop(bd()); + } + bool emptyConstraints(){ + return _constr->isEmpty(); + } - void addToConstraints(const VarSpec& v1, const VarSpec& v2); void bind(const VarSpec& v, TermSpec b); void bindVar(const VarSpec& var, const VarSpec& to); @@ -404,6 +451,15 @@ class RobSubstitution bool occurs(VarSpec const& vs, TermSpec const& ts); + + Option bd(){ + if(bdIsRecording()){ + return Option(bdGet()); + } else { + return Option(); + } + } + // VarSpec getVarSpec(TermList tl, int index) const // { // CALL("RobSubstitution::getVarSpec"); @@ -415,10 +471,11 @@ class RobSubstitution typedef DHMap BankType; BankType _bank; + Recycled _constr; mutable unsigned _nextUnboundAvailable; friend std::ostream& operator<<(std::ostream& out, RobSubstitution const& self) - { return out << self._bank; } + { return out << "bindings: " << self._bank << "\n" << "constraints: " << self._constr; } class BindingBacktrackObject : public BacktrackObject diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index d19d7abc0c..34c9961f09 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -490,7 +490,7 @@ bool Term::isRedex() { return TermList(this).isRedex(); } -bool TermList::isNot() { +bool TermList::isNot() const { CALL("TermList::isNot"); return !isVar() && term()->isNot(); @@ -502,7 +502,7 @@ bool Term::isNot() const { return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::NOT; } -bool TermList::isSigma() { +bool TermList::isSigma() const { CALL("TermList::isSigma"); return !isVar() && term()->isSigma(); @@ -514,7 +514,7 @@ bool Term::isSigma() const { return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::SIGMA; } -bool TermList::isPi() { +bool TermList::isPi() const { CALL("TermList::isPi"); return !isVar() && term()->isPi(); @@ -526,7 +526,7 @@ bool Term::isPi() const { return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::PI; } -bool TermList::isIff() { +bool TermList::isIff() const { CALL("TermList::isIff"); return !isVar() && term()->isIff(); @@ -538,7 +538,7 @@ bool Term::isIff() const { return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::IFF; } -bool TermList::isAnd() { +bool TermList::isAnd() const { CALL("TermList::isAnd"); return !isVar() && term()->isAnd(); @@ -550,7 +550,7 @@ bool Term::isAnd() const { return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::AND; } -bool TermList::isOr() { +bool TermList::isOr() const { CALL("TermList::isOr"); return !isVar() && term()->isOr(); @@ -562,7 +562,7 @@ bool Term::isOr() const { return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::OR; } -bool TermList::isXOr() { +bool TermList::isXOr() const { CALL("TermList::isXOr"); return !isVar() && term()->isXOr(); @@ -574,7 +574,7 @@ bool Term::isXOr() const { return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::XOR; } -bool TermList::isImp() { +bool TermList::isImp() const { CALL("TermList::isImp"); return !isVar() && term()->isImp(); @@ -586,7 +586,7 @@ bool Term::isImp() const { return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::IMP; } -bool TermList::isEquals() { +bool TermList::isEquals() const { CALL("TermList::isEquals"); return !isVar() && term()->isEquals(); @@ -598,7 +598,7 @@ bool Term::isEquals() const { return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::EQUALS; } -bool TermList::isPlaceholder() { +bool TermList::isPlaceholder() const { CALL("TermList::isPlaceholder"); return !isVar() && term()->isPlaceholder(); diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index a99f9fe02d..bcd82354c8 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -209,16 +209,16 @@ class TermList { bool isApplication() const; bool isLambdaTerm() const; bool isRedex(); - bool isNot(); - bool isSigma(); - bool isPi(); - bool isIff(); - bool isAnd(); - bool isOr(); - bool isXOr(); - bool isImp(); - bool isEquals(); - bool isPlaceholder(); + bool isNot() const; + bool isSigma() const; + bool isPi() const; + bool isIff() const; + bool isAnd() const; + bool isOr() const; + bool isXOr() const; + bool isImp() const; + bool isEquals() const; + bool isPlaceholder() const; Option deBruijnIndex() const; TermList lhs() const; TermList rhs() const; diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 45db942c60..0e6bfb5220 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1199,7 +1199,7 @@ void Options::init() _unificationWithAbstraction = ChoiceOptionValue("unification_with_abstraction","uwa", UnificationWithAbstraction::OFF, - {"off","interpreted_only","one_side_interpreted"}); + {"off","interpreted_only","one_side_interpreted","constant","all","ground","ac1","ac2"}); _unificationWithAbstraction.description= "During unification, if two terms s and t fail to unify we will introduce a constraint s!=t and carry on. For example, " "resolving p(1) \\/ C with ~p(a+2) would produce C \\/ 1 !=a+2. This is controlled by a check on the terms. The expected " diff --git a/Test/SyntaxSugar.hpp b/Test/SyntaxSugar.hpp index 5e39c5c643..a896940644 100644 --- a/Test/SyntaxSugar.hpp +++ b/Test/SyntaxSugar.hpp @@ -29,6 +29,7 @@ #include "Kernel/SortHelper.hpp" #include "Kernel/NumTraits.hpp" #include "Kernel/ApplicativeHelper.hpp" +#include "Kernel/TypedTermList.hpp" #include "Indexing/TermSharing.hpp" #include "Kernel/Signature.hpp" @@ -409,6 +410,8 @@ class TermSugar : public ExpressionSugar _srt = sort.sugaredExpr(); } + operator TypedTermList() const {return TypedTermList(_sugaredExpr, _srt);} + /** explicit conversion */ SortId sort() const { return _srt; } diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index d046501190..97bcaf3d9b 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -31,30 +31,30 @@ #include "Indexing/TermSubstitutionTree.hpp" #include "Indexing/TermIndex.hpp" +#include "Shell/LambdaConversion.hpp" + #include "Test/UnitTesting.hpp" #include "Test/SyntaxSugar.hpp" #include "z3++.h" #include -// TODO make this test use assertions, instead of printing output using namespace Kernel; using namespace Indexing; #define TODO ASSERTION_VIOLATION_REP("TODO") + +TermList toDBs(TermList t){ + return LambdaConversion().convertLambda(t); +} + Clause* unit(Literal* lit) { return clause({ lit }); } - -unique_ptr getTermIndexHOL() -{ - return std::make_unique(/* extra */ false); -} - unique_ptr getTermIndex() { return std::make_unique(/* extra */ false); @@ -90,16 +90,16 @@ struct UnificationResultSpec { using TermUnificationResultSpec = UnificationResultSpec; using LiteralUnificationResultSpec = UnificationResultSpec; -void checkLiteralMatches(LiteralSubstitutionTree& index, Options::UnificationWithAbstraction uwa, bool fixedPointIteration, Literal* lit, Stack expected) +void checkLiteralMatches(LiteralSubstitutionTree& index, Literal* lit, Stack expected) { Stack is; - for (auto qr : iterTraits(index.getUwa(lit, /* complementary */ false, uwa, fixedPointIteration)) ) { + for (auto qr : iterTraits(index.getUwa(lit, /* complementary */ false)) ) { // qr.substitution->numberOfConstraints(); is.push(LiteralUnificationResultSpec { - .querySigma = qr.unifier->subs().apply(lit, /* result */ QUERY_BANK), - .resultSigma = qr.unifier->subs().apply(qr.literal, /* result */ RESULT_BANK), - .constraints = *qr.unifier->constr().literals(qr.unifier->subs()), + .querySigma = qr.unifier->apply(lit, /* result */ QUERY_BANK), + .resultSigma = qr.unifier->apply(qr.literal, /* result */ RESULT_BANK), + .constraints = *qr.unifier->getConstraints(), }); } if (Test::TestUtils::permEq(is, expected, [](auto& l, auto& r) { return l == r; })) { @@ -123,15 +123,15 @@ void checkLiteralMatches(LiteralSubstitutionTree& index, Options::UnificationWit } template -void checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Stack expected, F unifFun) +void checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Stack expected, bool applySub, F unifFun) { CALL("checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Stack expected, F unifFun)") Stack is; for (auto qr : iterTraits(unifFun(index, term))) { is.push(TermUnificationResultSpec { - .querySigma = qr.unifier->subs().apply(term, /* result */ QUERY_BANK), - .resultSigma = qr.unifier->subs().apply(qr.term, /* result */ RESULT_BANK), - .constraints = *qr.unifier->constr().literals(qr.unifier->subs()), + .querySigma = applySub ? qr.unifier->apply(term, /* result */ QUERY_BANK) : term, + .resultSigma = applySub ? qr.unifier->apply(qr.term, /* result */ RESULT_BANK) : qr.term, + .constraints = *qr.unifier->getConstraints(), }); } if (Test::TestUtils::permEq(is, expected, [](auto& l, auto& r) { return l == r; })) { @@ -155,248 +155,38 @@ void checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Sta // cout << endl; } - - -/*TEST_FUN(term_indexing_poly) -{ - TermIndexingStructure* index = getTermIndex(Options::UnificationWithAbstraction::ONE_INTERP); - - DECL_DEFAULT_VARS - DECL_DEFAULT_SORT_VARS - NUMBER_SUGAR(Int) - DECL_PRED(p, {Int}) - DECL_CONST(a, Int) - DECL_POLY_CONST(h, 1, alpha) - DECL_SORT(A) - - index->insert(1 + a, p(1 + a), unit(p(a + a))); - index->insert(h(Int), p(h(Int)), unit(p(h(Int)))); - - checkTermMatches(index, h(alpha), alpha, Stack{ - - TermUnificationResultSpec - { .querySigma = h(Int), - .resultSigma = h(Int), - .constraints = Stack{ } }, - - TermUnificationResultSpec - { .querySigma = h(Int), - .resultSigma = 1 + a, - .constraints = { 1 + a != h(Int), } }, - - }); - - checkTermMatches(index, h(A), A, Stack{ }); -}*/ - - -#if VHOL - -/*TEST_FUN(higher_order) +void checkTermMatches(TermSubstitutionTree& index, TypedTermList term, Stack expected) { - TermIndexingStructure* index = getTermIndex(make_unique()); - env.options->setHolPrinting(Options::HPrinting::PRETTY); - env.property->forceHigherOrder(); - - DECL_DEFAULT_VARS - DECL_DEFAULT_SORT_VARS - NUMBER_SUGAR(Int) - DECL_SORT(srt) - DECL_ARROW_SORT(xSrt, {srt, srt}) - DECL_ARROW_SORT(fSrt, {xSrt, srt}) - DECL_ARROW_SORT(gSrt, {srt, xSrt}) - DECL_HOL_VAR(x0, 0, xSrt) - DECL_CONST(a, xSrt) - DECL_CONST(b, xSrt) - DECL_CONST(c, srt) - DECL_CONST(f, fSrt) - DECL_CONST(g, gSrt) - DECL_POLY_CONST(h, 1, alpha) - - index->insert(ap(f,a), 0, 0); - - checkTermMatches(index,ap(f,b),srt, Stack{ - - TermUnificationResultSpec - { .querySigma = ap(f,b), - .resultSigma = ap(f,a), - .constraints = { a != b, } }, - - }); - - index->insert(ap(g,c), 0, 0); - index->insert(g, 0, 0); - - checkTermMatches(index,x0,xSrt, Stack{ - - TermUnificationResultSpec - { .querySigma = ap(g,c), - .resultSigma = ap(g,c), - .constraints = Stack{} }, - - { .querySigma = ap(f,a), - .resultSigma = ap(f,a), - .constraints = Stack{} }, - }); - - index->insert(h(alpha), 0, 0); - - checkTermMatches(index,h(beta),beta, Stack{ - - TermUnificationResultSpec - - { .querySigma = h(xSrt), - .resultSigma = ap(g,c), - .constraints = Stack{ h(xSrt) != ap(g,c)} }, - - { .querySigma = h(gSrt), - .resultSigma = g, - .constraints = Stack{ h(gSrt) != g} }, - - // suboptimal that we have to use x here due to normalisation of variables - // during unification... - { .querySigma = h(x), - .resultSigma = h(x), - .constraints = Stack{} }, - - { .querySigma = h(x), - .resultSigma = h(x), - .constraints = Stack{} }, - }); - - checkTermMatches(index,h(srt),srt, Stack{ - - TermUnificationResultSpec - - { .querySigma = h(srt), - .resultSigma = h(srt), - .constraints = Stack{} }, - }); + return checkTermMatchesWithUnifFun(index, term, expected, true, + [&](auto& idx, auto t) { return idx.getUwa(term); }); } -TEST_FUN(higher_order2) +void checkHigherOrderTermMatches(TermSubstitutionTree& index, TypedTermList term, Stack expected) { - TermIndexingStructure* index = getTermIndex(make_unique()); - env.options->setHolPrinting(Options::HPrinting::PRETTY); - env.property->forceHigherOrder(); - - DECL_DEFAULT_VARS - DECL_DEFAULT_SORT_VARS - NUMBER_SUGAR(Int) - DECL_SORT(srt) - DECL_ARROW_SORT(xSrt, {srt, srt}) - DECL_ARROW_SORT(fSrt, {xSrt, xSrt, srt}) - DECL_CONST(a, xSrt) - DECL_CONST(b, xSrt) - DECL_CONST(f, fSrt) - - index->insert(ap(ap(f,a),b), 0, 0); - - checkTermMatches(index,ap(ap(f,b),a),srt, Stack{ - - TermUnificationResultSpec - - { .querySigma = ap(ap(f,b),a), - .resultSigma = ap(ap(f,a),b), - .constraints = Stack{ a != b, } }, - }); - -} - -TEST_FUN(higher_order3) -{ - TermIndexingStructure* index = getTermIndex(make_unique()); - env.options->setHolPrinting(Options::HPrinting::PRETTY); - env.property->forceHigherOrder(); - - DECL_DEFAULT_VARS - DECL_DEFAULT_SORT_VARS - NUMBER_SUGAR(Int) - DECL_SORT(srt) - DECL_ARROW_SORT(xSrt, {srt, srt}) - DECL_HOL_VAR(x0, 0, xSrt) - DECL_CONST(a, srt) - DECL_CONST(b, srt) - DECL_CONST(f, xSrt) - - index->insert(ap(f,ap(x0, a)), 0, 0); - - checkTermMatches(index,ap(f,b),srt, Stack{ - - TermUnificationResultSpec - - { .querySigma = ap(f,b), - .resultSigma = ap(f,ap(x0, a)), - .constraints = Stack{ ap(x0, a) != b, } }, - }); - -} - -TEST_FUN(higher_order4) -{ - TermIndexingStructure* index = getTermIndex( - make_unique(), - make_unique()); - env.options->setHolPrinting(Options::HPrinting::PRETTY); - env.property->forceHigherOrder(); - - DECL_DEFAULT_VARS - DECL_DEFAULT_SORT_VARS - NUMBER_SUGAR(Int) - DECL_SORT(srt) - DECL_ARROW_SORT(xSrt, {srt, srt}) - DECL_ARROW_SORT(fSrt, {srt, xSrt, srt}) - DECL_HOL_VAR(x0, 0, xSrt) - DECL_CONST(a, srt) - DECL_CONST(b, xSrt) - DECL_CONST(c, xSrt) - DECL_CONST(f, fSrt) - - index->insert(ap(ap(f,ap(x0, a)), b), 0, 0); - - checkTermMatches(index,ap(ap(f,a),c),srt, Stack{ - - TermUnificationResultSpec - - { .querySigma = ap(ap(f,a),c), - .resultSigma = ap(ap(f,ap(x0, a)), b), - .constraints = Stack{ ap(x0, a) != a, b != c, } }, - }); - -}*/ - -#endif - -void checkTermMatches(TermSubstitutionTree& index, Options::UnificationWithAbstraction uwa, bool fixedPointIteration, TermList term, Stack expected) -{ - ASS(term.isTerm()) - return checkTermMatchesWithUnifFun(index, term, expected, - [&](auto& idx, auto t) { return idx.getUwa(term.term(), uwa, fixedPointIteration); }); -} - -void checkTermMatches(TermSubstitutionTree& index, Options::UnificationWithAbstraction uwa, bool fixedPointIteration, TypedTermList term, Stack expected) -{ - return checkTermMatchesWithUnifFun(index, term, expected, - [&](auto& idx, auto t) { return idx.getUwa(term, uwa, fixedPointIteration); }); + return checkTermMatchesWithUnifFun(index, term, expected, false, + [&](auto& idx, auto t) { return idx.getPotentialHOLUnifiers(term); }); } struct IndexTest { unique_ptr index; - Stack insert; + Stack insert; TermSugar query; Stack expected; - Options::UnificationWithAbstraction uwa; - bool fixedPointIteration = false; + vstring uwa; + vstring fixedPointIteration = "off"; void run() { CALL("IndexTest::run") + env.options->set("unification_with_abstraction", uwa); + env.options->set("unification_with_abstraction_postpro", fixedPointIteration); + DECL_PRED(dummy, Stack()) for (auto x : this->insert) { index->insert(x, dummy(), unit(dummy())); } - checkTermMatches(*this->index, uwa, fixedPointIteration, TypedTermList(this->query, this->query.sort()),this->expected); + checkTermMatches(*this->index, TypedTermList(this->query, this->query.sort()),this->expected); } }; @@ -431,8 +221,7 @@ RUN_TEST(term_indexing_one_side_interp_01, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { f(1 + num(1)), f(1 + a), @@ -458,8 +247,7 @@ RUN_TEST(term_indexing_one_side_interp_02, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { f(1 + num(1)), f(1 + a), @@ -472,8 +260,7 @@ RUN_TEST(term_indexing_one_side_interp_03, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { 1 + num(1), 1 + a, @@ -499,8 +286,7 @@ RUN_TEST(term_indexing_one_side_interp_04, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { 1 + num(1), 1 + a, @@ -527,8 +313,7 @@ RUN_TEST(term_indexing_one_side_interp_04_b, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { 1 + a, }, @@ -549,8 +334,7 @@ RUN_TEST(term_indexing_one_side_interp_04_c, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { f(1 + num(1)), f(1 + a), @@ -575,8 +359,7 @@ RUN_TEST(term_indexing_one_side_interp_04_d, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { g(f(1 + num(1))), g(f(1 + a)), @@ -601,8 +384,7 @@ RUN_TEST(term_indexing_one_side_interp_05, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { 1 + num(1), 1 + a, @@ -633,8 +415,7 @@ RUN_TEST(term_indexing_one_side_interp_06, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { 1 + num(1), 1 + a, @@ -665,8 +446,7 @@ RUN_TEST(term_indexing_one_side_interp_07, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { 1 + num(1), 1 + a, @@ -698,8 +478,7 @@ RUN_TEST(term_indexing_one_side_interp_08, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, - .fixedPointIteration = false, + .uwa = "one_side_interpreted", .insert = { 1 + num(1), 1 + a, @@ -733,8 +512,9 @@ RUN_TEST(term_indexing_one_side_interp_08, TEST_FUN(term_indexing_poly_01) { - auto uwa = Options::UnificationWithAbstraction::ONE_INTERP; - auto fixedPointIteration = false; + env.options->set("unification_with_abstraction", "one_side_interpreted"); + env.options->set("unification_with_abstraction_postpro", "off"); + auto index = getTermIndex(); DECL_DEFAULT_VARS @@ -748,7 +528,7 @@ TEST_FUN(term_indexing_poly_01) index->insert(1 + a, p(1 + a), unit(p(a + a))); index->insert(h(Int), p(h(Int)), unit(p(h(Int)))); - checkTermMatches(*index, uwa, fixedPointIteration, h(alpha), Stack{ + checkTermMatches(*index, h(alpha), Stack{ TermUnificationResultSpec { .querySigma = h(Int), @@ -762,7 +542,7 @@ TEST_FUN(term_indexing_poly_01) }); - checkTermMatches(*index, uwa, fixedPointIteration, h(A), Stack{ }); + checkTermMatches(*index, h(A), Stack{ }); } @@ -785,193 +565,11 @@ TEST_FUN(term_indexing_poly_01) __VA_ARGS__ - - -RUN_TEST(hol_0101, - HOL_SUGAR( - DECL_FUNC(f3, {srt, srt, srt}, srt) - DECL_CONST(f1, arrow(srt, srt)) - DECL_CONST(f2, arrow(srt, srt)) - DECL_CONST(h, arrow(arrow(srt, srt), srt)) - ), - IndexTest { - .index = getTermIndexHOL(), - .uwa = Options::UnificationWithAbstraction::FUNC_EXT, - .insert = { - f3(x , x, ap(h, f1)), - }, - .query = f3(ap(h, f2), y, y ), - .expected = { - - TermUnificationResultSpec - { .querySigma = f3(ap(h, f2), ap(h, f1), ap(h, f1)), - .resultSigma = f3(ap(h, f1), ap(h, f1), ap(h, f1)), - .constraints = { f1 != f2 } }, - - } - }) - - -RUN_TEST(hol_0102, - HOL_SUGAR( - DECL_FUNC(f3, {srt, srt, srt}, srt) - DECL_CONST(f1, arrow(srt, srt)) - DECL_CONST(f2, arrow(srt, srt)) - DECL_CONST(h, arrow(arrow(srt, srt), srt)) - ), - IndexTest { - .index = getTermIndexHOL(), - .uwa = Options::UnificationWithAbstraction::FUNC_EXT, - .insert = { - f3(ap(h, f2), y, y ), - }, - .query = f3(x , x, ap(h, f1)), - .expected = { - - TermUnificationResultSpec - { .querySigma = f3(ap(h, f1), ap(h, f1), ap(h, f1)), - .resultSigma = f3(ap(h, f2), ap(h, f1), ap(h, f1)), - .constraints = { f1 != f2 } }, - - } - }) - - -RUN_TEST(hol_02, - HOL_SUGAR( - DECL_FUNC(f3, {srt, srt, srt}, srt) - DECL_CONST(f1, arrow(srt, srt)) - DECL_CONST(f2, arrow(srt, srt)) - DECL_CONST(a, srt) - DECL_CONST(h, arrow(arrow(srt, srt), srt)) - ), - IndexTest { - .index = getTermIndexHOL(), - .uwa = Options::UnificationWithAbstraction::FUNC_EXT, - .insert = { - f3(a , x, ap(h, f1)), - f3(x , x, ap(h, f1)), - }, - .query = f3(ap(h, f2), y, y ), - .expected = { - - TermUnificationResultSpec - { .querySigma = f3(ap(h, f2), ap(h, f1), ap(h, f1)), - .resultSigma = f3(ap(h, f1), ap(h, f1), ap(h, f1)), - .constraints = { f1 != f2 } }, - - } - }) - - -RUN_TEST(hol_03, - HOL_SUGAR( - DECL_FUNC(f3, {srt, srt, srt}, srt) - DECL_CONST(f1, arrow(srt, srt)) - DECL_CONST(f2, arrow(srt, srt)) - DECL_CONST(h1, arrow(arrow(srt, srt), srt)) - DECL_CONST(h2, arrow(arrow(srt, srt), srt)) - ), - IndexTest { - .index = getTermIndexHOL(), - .uwa = Options::UnificationWithAbstraction::FUNC_EXT, - .insert = { - ap(h1, f1), - ap(h2, f1), - }, - .query = ap(h1, f2), - .expected = { - TermUnificationResultSpec - { .querySigma = ap(h1, f2), - .resultSigma = ap(h1, f1), - .constraints = { f1 != f2 } }, - } - }) - -#define RUN_TEST_hol_04(idx, ...) \ - RUN_TEST(hol_04_ ## idx, \ - HOL_SUGAR( \ - DECL_FUNC(f3, {srt, srt, srt}, srt) \ - DECL_POLY_CONST(c1, 1, alpha) \ - DECL_POLY_CONST(c2, 1, alpha) \ - DECL_POLY_CONST(h, 2, arrow(alpha, beta)) \ - ), \ - IndexTest { \ - .index = getTermIndexHOL(), \ - .uwa = Options::UnificationWithAbstraction::FUNC_EXT, \ - .insert = { \ - ap(h(arrow(srt, srt), srt), c1(arrow(srt, srt))), \ - ap(h(srt , srt), c1(srt)), \ - }, \ - __VA_ARGS__ \ - }) - - -RUN_TEST_hol_04(01, - .query = ap(h(arrow(srt,srt), srt), c1(arrow(srt, srt))), - .expected = { - TermUnificationResultSpec - { .querySigma = ap(h(arrow(srt,srt), srt), c1(arrow(srt, srt))), - .resultSigma = ap(h(arrow(srt,srt), srt), c1(arrow(srt, srt))), - .constraints = Stack{} }, - } - ) - -RUN_TEST_hol_04(02, - .query = ap(h(arrow(srt,srt), srt), c2(arrow(srt, srt))), - .expected = { - TermUnificationResultSpec - { .querySigma = ap(h(arrow(srt,srt), srt), c2(arrow(srt, srt))), - .resultSigma = ap(h(arrow(srt,srt), srt), c1(arrow(srt, srt))), - .constraints = Stack{ c1(arrow(srt,srt)) != c2(arrow(srt,srt)) } }, - } - ) - - -#define RUN_TEST_hol_05(idx, ...) \ - RUN_TEST(hol_05_ ## idx, \ - HOL_SUGAR( \ - DECL_FUNC(f3, {srt, srt, srt}, srt) \ - DECL_POLY_CONST(c1, 1, alpha) \ - DECL_POLY_CONST(c2, 1, alpha) \ - DECL_POLY_CONST(h, 2, arrow(alpha, beta)) \ - ), \ - IndexTest { \ - .index = getTermIndexHOL(), \ - .uwa = Options::UnificationWithAbstraction::FUNC_EXT, \ - .insert = { \ - ap(h(arrow(srt, srt), srt), c1(arrow(srt, srt))), \ - ap(h(srt , srt), c2(srt)), \ - }, \ - __VA_ARGS__ \ - }) - - -RUN_TEST_hol_05(01, - .query = ap(h(arrow(srt,srt), srt), c1(arrow(srt, srt))), - .expected = { - TermUnificationResultSpec - { .querySigma = ap(h(arrow(srt,srt), srt), c1(arrow(srt, srt))), - .resultSigma = ap(h(arrow(srt,srt), srt), c1(arrow(srt, srt))), - .constraints = Stack{} }, - } - ) - -RUN_TEST_hol_05(02, - .query = ap(h(arrow(srt,srt), srt), c2(arrow(srt, srt))), - .expected = { - TermUnificationResultSpec - { .querySigma = ap(h(arrow(srt,srt), srt), c2(arrow(srt, srt))), - .resultSigma = ap(h(arrow(srt,srt), srt), c1(arrow(srt, srt))), - .constraints = Stack{ c1(arrow(srt,srt)) != c2(arrow(srt,srt)) } }, - } - ) - RUN_TEST(term_indexing_poly_uwa_01, POLY_INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::ONE_INTERP, + .uwa = "one_side_interpreted", .insert = { f(alpha, a(alpha)), f(alpha, b(alpha)), @@ -997,8 +595,9 @@ RUN_TEST(term_indexing_poly_uwa_01, TEST_FUN(term_indexing_interp_only) { - auto uwa = Options::UnificationWithAbstraction::INTERP_ONLY; - auto fixedPointIteration = false; + env.options->set("unification_with_abstraction", "interpreted_only"); + env.options->set("unification_with_abstraction_postpro", "off"); + auto index = getTermIndex(); DECL_DEFAULT_VARS @@ -1011,7 +610,7 @@ TEST_FUN(term_indexing_interp_only) index->insert(num(1) + num(1), p(num(1) + num(1)), unit(p(num(1) + num(1)))); index->insert(1 + a, p(1 + a), unit(p(a + a))); - checkTermMatches(*index, uwa, fixedPointIteration, b + 2, { + checkTermMatches(*index, b + 2, { TermUnificationResultSpec { .querySigma = b + 2, @@ -1027,7 +626,7 @@ TEST_FUN(term_indexing_interp_only) index->insert(a,p(a),unit(p(a))); - checkTermMatches(*index, uwa, fixedPointIteration, b + 2 , { + checkTermMatches(*index, b + 2 , { TermUnificationResultSpec { .querySigma = b + 2, @@ -1045,8 +644,9 @@ TEST_FUN(term_indexing_interp_only) TEST_FUN(literal_indexing) { - auto uwa = Options::UnificationWithAbstraction::ONE_INTERP; - auto fixedPointIteration = false; + env.options->set("unification_with_abstraction", "one_side_interpreted"); + env.options->set("unification_with_abstraction_postpro", "off"); + auto index = getLiteralIndex(); DECL_DEFAULT_VARS @@ -1059,7 +659,7 @@ TEST_FUN(literal_indexing) index->insert(p(num(1) + num(1)), unit(p(num(1) + num(1)))); index->insert(p(1 + a), unit(p(1 + a))); - checkLiteralMatches(*index, uwa, fixedPointIteration, p(b + 2), { + checkLiteralMatches(*index, p(b + 2), { LiteralUnificationResultSpec { .querySigma = p(b + 2), @@ -1076,7 +676,7 @@ TEST_FUN(literal_indexing) index->insert(p(b + 2),unit(p(b + 2))); index->insert(p(2 + b),unit(p(2 + b))); - checkLiteralMatches(*index, uwa, fixedPointIteration, p(b + 2), { + checkLiteralMatches(*index, p(b + 2), { LiteralUnificationResultSpec { .querySigma = p(b + 2), @@ -1103,109 +703,142 @@ TEST_FUN(literal_indexing) } +#if VHOL + TEST_FUN(higher_order) { DECL_DEFAULT_VARS DECL_DEFAULT_SORT_VARS - NUMBER_SUGAR(Int) DECL_SORT(srt) DECL_CONST(a, arrow(srt, srt)) DECL_CONST(b, arrow(srt, srt)) - DECL_CONST(c, srt) + DECL_CONST(c, srt) + DECL_CONST(d, srt) DECL_CONST(f, arrow(arrow(srt, srt), srt)) DECL_CONST(g, arrow(srt, arrow(srt, srt))) - auto uwa = Options::UnificationWithAbstraction::FUNC_EXT; - auto fixedPointIteration = false; - auto index = getTermIndexHOL(); + + env.property->forceHigherOrder(); + + env.options->set("pretty_hol_printing","pretty"); + env.options->set("func_ext", "abstraction"); + auto index = getTermIndex(); index->insert(ap(f,a), 0, 0); - checkTermMatches(*index, uwa, fixedPointIteration, ap(f,b), Stack{ + checkHigherOrderTermMatches(*index, ap(f,b), Stack{ TermUnificationResultSpec { .querySigma = ap(f,b), .resultSigma = ap(f,a), - .constraints = { a != b, } }, + .constraints = Stack{ } }, }); index->insert(ap(g,c), 0, 0); index->insert(g, 0, 0); - checkTermMatches(*index, uwa, fixedPointIteration, TypedTermList(x, arrow(srt, srt)), Stack{ + checkHigherOrderTermMatches(*index, TypedTermList(x, arrow(srt, srt)), Stack{ TermUnificationResultSpec - { .querySigma = ap(g,c), + { .querySigma = x, .resultSigma = ap(g,c), .constraints = Stack{} }, }); - checkTermMatches(*index, uwa, fixedPointIteration, ap(f,b), Stack{ + checkHigherOrderTermMatches(*index, ap(f,b), Stack{ TermUnificationResultSpec { .querySigma = ap(f,b), .resultSigma = ap(f,a), - .constraints = { a != b, } }, + .constraints = Stack{ } }, }); + checkHigherOrderTermMatches(*index, ap(g,d), Stack{ + TermUnificationResultSpec + { .querySigma = ap(g,d), + .resultSigma = ap(g,c), + .constraints = Stack{ } }, - // index->insert(h(alpha), 0, 0); - // - // checkTermMatches(*index,x,arrow(srt, srt), Stack{ - // - // TermUnificationResultSpec - // { .querySigma = ap(f,a), - // .resultSigma = ap(f,a), - // .constraints = Stack{} }, - // - // }); + }); +} +TEST_FUN(higher_order2) +{ + env.property->forceHigherOrder(); - // TODO - // reportTermMatches(index,h(beta),beta); - // reportTermMatches(index,h(srt),srt); + env.options->set("pretty_hol_printing","pretty"); + env.options->set("func_ext", "abstraction"); + auto index = getTermIndex(); + + DECL_DEFAULT_SORT_VARS + DECL_SORT(srt) + + DECL_CONST(a, srt) + DECL_HOL_VAR(x, 0, arrow(srt, srt)) + + index->insert(ap(x, a), 0, 0); + + checkHigherOrderTermMatches(*index, a, Stack{ + + TermUnificationResultSpec + { .querySigma = a, + .resultSigma = ap(x,a), + .constraints = Stack{ } }, + + }); } -TEST_FUN(higher_order2) +TEST_FUN(higher_order3) { - // auto uwa = Options::UnificationWithAbstraction::FUNC_EXT; - // auto fixedPointIteration = false; - auto index = getTermIndexHOL(); + env.property->forceHigherOrder(); + + env.options->set("pretty_hol_printing","pretty"); + env.options->set("func_ext", "abstraction"); + auto index = getTermIndex(); - DECL_DEFAULT_VARS DECL_DEFAULT_SORT_VARS - NUMBER_SUGAR(Int) DECL_SORT(srt) - DECL_CONST(a, arrow(srt, srt)) - DECL_CONST(b, arrow(srt, srt)) - DECL_CONST(f, arrow({arrow(srt, srt), arrow(srt, srt)}, srt)) + DECL_CONST(a, arrow(srt,srt)) + DECL_CONST(f, arrow(arrow(srt,srt), srt)) + DECL_HOL_VAR(x, 0, srt) + + auto t = ap(f, lam(x, ap(a, x))); + t = toDBs(t); + + index->insert(t, 0, 0); + + checkHigherOrderTermMatches(*index, ap(f,a), Stack{ - index->insert(ap(ap(f,a),b), 0, 0); + TermUnificationResultSpec + { .querySigma = ap(f,a), + .resultSigma = toDBs(ap(f, lam(x, ap(a, x)))), + .constraints = Stack{ } }, - // TODO - // reportTermMatches(index,ap(ap(f,b),a),srt); + }); } -//#endif +#endif static const int NORM_QUERY_BANK=2; // static const int NORM_RESULT_BANK=3; Option runRobUnify(TermList a, TermList b, Options::UnificationWithAbstraction opt, bool fixedPointIteration) { - // TODO parameter instead of opts - auto au = AbstractingUnifier::unify(a, 0, b, 0, MismatchHandler(opt), fixedPointIteration); - if (au) { + Kernel::UnificationAlgorithms::AbstractingUnification au(MismatchHandler(opt), fixedPointIteration); + + auto unifs = au.unifiers(a, 0, b, 0); + + if (unifs.hasNext()) { + Kernel::RobSubstitution* sub = unifs.next(); return some(TermUnificationResultSpec { - .querySigma = au->subs().apply(a, 0), - .resultSigma = au->subs().apply(b, 0), - .constraints = *au->constraintLiterals(), + .querySigma = sub->apply(a, 0), + .resultSigma = sub->apply(b, 0), + .constraints = *sub->constraints(), }); - } else { return {}; } @@ -1502,8 +1135,8 @@ RUN_TEST(top_level_constraints_2_with_fixedPointIteration, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::AC2, - .fixedPointIteration = true, + .uwa = "ac2", + .fixedPointIteration = "on", .insert = { a + b + c, b, @@ -1532,8 +1165,7 @@ RUN_TEST(top_level_constraints_2, INT_SUGAR, IndexTest { .index = getTermIndex(), - .uwa = Options::UnificationWithAbstraction::AC2, - .fixedPointIteration = false, + .uwa = "ac2", .insert = { a + b + c, b, From d3f30fbf08604ac052077164edb5e04bfd38eb21 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 31 Mar 2023 11:46:47 +0100 Subject: [PATCH 049/210] adding missing VHOL compiler directives --- Indexing/SubstitutionTree.hpp | 6 +++- Indexing/TermIndex.hpp | 4 +-- Indexing/TermIndexingStructure.hpp | 2 +- Indexing/TermSubstitutionTree.hpp | 2 +- Inferences/Superposition.cpp | 10 +++--- Kernel/HOLUnification.hpp | 38 ----------------------- Kernel/Inference.cpp | 17 +++++++--- Kernel/Inference.hpp | 15 ++++----- Kernel/MismatchHandler.hpp | 38 +++++++++++++++++++++++ Kernel/Unit.hpp | 2 ++ Shell/FunctionDefinition.cpp | 4 +++ Shell/Statistics.cpp | 13 ++++++-- Test/GenerationTester.hpp | 14 +++++++-- Test/SyntaxSugar.hpp | 18 +++++++++-- UnitTests/tBetaReduction.cpp | 4 ++- UnitTests/tImitateProject.cpp | 5 ++- UnitTests/tUnificationWithAbstraction.cpp | 9 ++++-- 17 files changed, 132 insertions(+), 69 deletions(-) diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 29e6f16b94..96821c9321 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -617,7 +617,11 @@ class SubstitutionTree { // in higher-order case we replace certain subterms with so-called // placeholders, so assertion below doesn't hold in general - ASS(ld.term == term || env.property->higherOrder()); + ASS(ld.term == term +#if VHOL + || env.property->higherOrder() +#endif + ); ld.sort = term.sort(); } diff --git a/Indexing/TermIndex.hpp b/Indexing/TermIndex.hpp index d08d51a2da..3119a67a61 100644 --- a/Indexing/TermIndex.hpp +++ b/Indexing/TermIndex.hpp @@ -38,8 +38,8 @@ class TermIndex { return _is->getUwa(t); } #if VHOL - TermQueryResultIterator getPotentialHOLUnifiers(TypedTermList t) - { return _is->getPotentialHOLUnifiers(t); } + TermQueryResultIterator getHOLUnifiers(TypedTermList t) + { return _is->getHOLUnifiers(t); } #endif TermQueryResultIterator getGeneralizations(TypedTermList t, bool retrieveSubstitutions = true) diff --git a/Indexing/TermIndexingStructure.hpp b/Indexing/TermIndexingStructure.hpp index ee5a44b200..ce605ac28d 100644 --- a/Indexing/TermIndexingStructure.hpp +++ b/Indexing/TermIndexingStructure.hpp @@ -36,7 +36,7 @@ class TermIndexingStructure { virtual TermQueryResultIterator getUwa(TypedTermList t) = 0; #if VHOL - virtual TermQueryResultIterator getPotentialHOLUnifiers(TypedTermList t) + virtual TermQueryResultIterator getHOLUnifiers(TypedTermList t) { NOT_IMPLEMENTED; } #endif diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index fb672dcc57..2ab5e56551 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -136,7 +136,7 @@ class TermSubstitutionTree } #if VHOL - TermQueryResultIterator getPotentialHOLUnifiers(TypedTermList t) final override + TermQueryResultIterator getHOLUnifiers(TypedTermList t) final override { TypedTermList tp = TypedTermList(ToPlaceholders().replace(t), t.sort()); return pvi(getResultIterator>(tp, false, t)); diff --git a/Inferences/Superposition.cpp b/Inferences/Superposition.cpp index 41d6af5ba1..d0bf8c84f9 100644 --- a/Inferences/Superposition.cpp +++ b/Inferences/Superposition.cpp @@ -149,12 +149,13 @@ ClauseIterator Superposition::generateClauses(Clause* premise) [this](pair arg) { auto unifs = usingUwa ? _lhsIndex->getUwa(arg.second) : #if VHOL - (usingHOL ? _lhsIndex->getPotentialHOLUnifiers(arg.second) : + (usingHOL ? _lhsIndex->getHOLUnifiers(arg.second) : #endif _lhsIndex->getUnifications(arg.second) #if VHOL - ); + ) #endif + ; return pushPairIntoRightIterator(arg, unifs ); }); //Perform forward superposition @@ -168,12 +169,13 @@ ClauseIterator Superposition::generateClauses(Clause* premise) { TypedTermList tt(arg.second, SortHelper::getEqualityArgumentSort(arg.first)); auto unifs = usingUwa ? _subtermIndex->getUwa(tt) : #if VHOL - (usingHOL ? _subtermIndex->getPotentialHOLUnifiers(tt) : + (usingHOL ? _subtermIndex->getHOLUnifiers(tt) : #endif _subtermIndex->getUnifications(tt) #if VHOL - ); + ) #endif + ; return pushPairIntoRightIterator(arg, unifs); }); //Perform backward superposition diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index dcb8aace05..b8020174bc 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -36,44 +36,6 @@ using namespace Indexing; namespace UnificationAlgorithms { -// TODO moce somewhere more suitable -class RobUnification { -public: - - // to be used for tree calls - bool associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub) - { - CALL("RobUnification::associate"); - TermList query(specialVar, /* special */ true); - return sub->unify(query, QUERY_BANK, node, NORM_RESULT_BANK); - } - - // To be used for non-tree calls. Return an iterator instead of bool - // to fit HOL interface - SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck = false){ - CALL("RobUnification::unifiers"); - - static RobSubstitution subst; - subst.reset(); - - if(subst.unify(t1, index1, t2, index2)){ - return pvi(getSingletonIterator(&subst)); - } - return SubstIterator::getEmpty(); - } - - // function is called when in the leaf of a substitution tree - // during unification. t is the term stored in the leaf - SubstIterator postprocess(RobSubstitution* sub, TermList t){ - CALL("RobUnification::postprocess"); - - // sub is a unifier of query and leaf term t, return it - return pvi(getSingletonIterator(sub)); - } - - bool usesUwa() const { return false; } -}; - class HOLUnification { // when this class is used for tree unification the field diff --git a/Kernel/Inference.cpp b/Kernel/Inference.cpp index 6b9bf8b5d0..c9df4b1972 100644 --- a/Kernel/Inference.cpp +++ b/Kernel/Inference.cpp @@ -307,8 +307,9 @@ void Inference::init0(UnitInputType inputType, InferenceRule r) computeTheoryRunningSums(); _isPureTheoryDescendant = isTheoryAxiom(); +#if VHOL _proxyAxiomsDescendant = isProxyAxiom(); - +#endif //_inductionDepth = 0 from initDefault (or set externally) //_sineLevel = MAX from initDefault (or set externally) } @@ -327,7 +328,9 @@ void Inference::init1(InferenceRule r, Unit* premise) computeTheoryRunningSums(); _isPureTheoryDescendant = premise->isPureTheoryDescendant(); +#if VHOL _proxyAxiomsDescendant = premise->isProxyAxiomsDescendant(); +#endif _sineLevel = premise->getSineLevel(); updateStatistics(); @@ -348,7 +351,9 @@ void Inference::init2(InferenceRule r, Unit* premise1, Unit* premise2) computeTheoryRunningSums(); _isPureTheoryDescendant = premise1->isPureTheoryDescendant() && premise2->isPureTheoryDescendant(); - _proxyAxiomsDescendant = premise1->isProxyAxiomsDescendant() && premise2->isProxyAxiomsDescendant(); +#if VHOL + _proxyAxiomsDescendant = premise1->isProxyAxiomsDescendant() && premise2->isProxyAxiomsDescendant(); +#endif _sineLevel = min(premise1->getSineLevel(),premise2->getSineLevel()); updateStatistics(); @@ -380,13 +385,17 @@ void Inference::initMany(InferenceRule r, UnitList* premises) const Inference& inf = it->head()->inference(); _inputType = getInputType(_inputType,inf.inputType()); _isPureTheoryDescendant &= inf.isPureTheoryDescendant(); +#if VHOL _proxyAxiomsDescendant &= inf.isProxyAxiomsDescendant(); +#endif _sineLevel = min(_sineLevel,inf.getSineLevel()); it=it->tail(); } } else { _isPureTheoryDescendant = isTheoryAxiom(); +#if VHOL _proxyAxiomsDescendant = isProxyAxiom(); +#endif } updateStatistics(); @@ -961,9 +970,9 @@ vstring Kernel::ruleName(InferenceRule rule) return "imitate"; case InferenceRule::PROJECT: return "project"; -#endif - /* this cases are no actual inference rules but only markeres to separatea groups of rules */ + /* these cases are no actual inference rules but only markeres to separatea groups of rules */ case InferenceRule::PROXY_AXIOM: +#endif case InferenceRule::GENERIC_FORMULA_TRANSFORMATION: case InferenceRule::INTERNAL_FORMULA_TRANSFORMATION_LAST: case InferenceRule::GENERIC_SIMPLIFYING_INFERNCE: diff --git a/Kernel/Inference.hpp b/Kernel/Inference.hpp index b8f013e9b2..e47f9e186f 100644 --- a/Kernel/Inference.hpp +++ b/Kernel/Inference.hpp @@ -92,12 +92,6 @@ UnitInputType getInputType(UnitInputType t1, UnitInputType t2); * of the form f(type_args, term_args). In most cases, inferences should NOT * be working on type arguments. Please view TermIterators.hpp for a list of * iterators available. - * - TermSubstitutionTrees, do NOT carry out any type checking. Thus, in the case - * where either the search or query term is a variable, a type check needs to - * be carried out by the inference code. This check may be a unification check or - * a matching check depending on whether the inference is using unification or - * matching. Please view Superposition.cpp for an example of a unification check - * and ForwardDemodulation for an example of a matching check. */ /** @@ -254,6 +248,7 @@ enum class InferenceRule : unsigned char { inferences between GENERIC_SIMPLIFYING_INFERNCE and INTERNAL_SIMPLIFYING_INFERNCE_LAST will be automatically understood simplifying (see also isSimplifyingInferenceRule) */ /* FOOL paramodulation-like simplifying rule */ +#if VHOL CASES_SIMP, BOOL_SIMP, @@ -261,7 +256,7 @@ enum class InferenceRule : unsigned char { BETA_ETA_NORMALISE, FLEX_FLEX_SIMPLIFY, - +#endif INTERNAL_SIMPLIFYING_INFERNCE_LAST, @@ -574,10 +569,12 @@ inline bool isInternalTheoryAxiomRule(InferenceRule r) { toNumber(r) < toNumber(InferenceRule::INTERNAL_THEORY_AXIOM_LAST)); } +#if VHOL inline bool isProxyAxiomRule(InferenceRule r) { return (toNumber(r) >= toNumber(InferenceRule::PROXY_AXIOM) && toNumber(r) < toNumber(InferenceRule::INTERNAL_THEORY_AXIOM_LAST)); } +#endif inline bool isExternalTheoryAxiomRule(InferenceRule r) { return r == InferenceRule::EXTERNAL_THEORY_AXIOM; @@ -874,9 +871,13 @@ class Inference return isInternalTheoryAxiomRule(_rule) || isExternalTheoryAxiomRule(_rule); } +#if VHOL + // Proxy axioms performed really badly, so perhaps just get + // rid of this stuff? bool isProxyAxiom() const { return isProxyAxiomRule(_rule); } +#endif /* * returns true if clause is an external theory axiom diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 3e821183e3..c0e49a230d 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -115,6 +115,44 @@ class MismatchHandler final namespace UnificationAlgorithms { +// TODO moce somewhere more suitable +class RobUnification { +public: + + // to be used for tree calls + bool associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub) + { + CALL("RobUnification::associate"); + TermList query(specialVar, /* special */ true); + return sub->unify(query, Indexing::QUERY_BANK, node, Indexing::NORM_RESULT_BANK); + } + + // To be used for non-tree calls. Return an iterator instead of bool + // to fit HOL interface + SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck = false){ + CALL("RobUnification::unifiers"); + + static RobSubstitution subst; + subst.reset(); + + if(subst.unify(t1, index1, t2, index2)){ + return pvi(getSingletonIterator(&subst)); + } + return SubstIterator::getEmpty(); + } + + // function is called when in the leaf of a substitution tree + // during unification. t is the term stored in the leaf + SubstIterator postprocess(RobSubstitution* sub, TermList t){ + CALL("RobUnification::postprocess"); + + // sub is a unifier of query and leaf term t, return it + return pvi(getSingletonIterator(sub)); + } + + bool usesUwa() const { return false; } +}; + class AbstractingUnification { MismatchHandler _uwa; bool _fpi; diff --git a/Kernel/Unit.hpp b/Kernel/Unit.hpp index af605e0919..68d348cc35 100644 --- a/Kernel/Unit.hpp +++ b/Kernel/Unit.hpp @@ -76,8 +76,10 @@ class Unit bool derivedFromGoal() const { return _inference.derivedFromGoal(); } /** see isPureTheoryDescendant in Inference.cpp */ bool isPureTheoryDescendant() const { return _inference.isPureTheoryDescendant(); } +#if VHOL /** see isProxyAxiomsDescendant in Inference.cpp */ bool isProxyAxiomsDescendant() const { return _inference.isProxyAxiomsDescendant(); } +#endif /** see isTheoryAxiom in Inference.cpp */ bool isTheoryAxiom() const { return _inference.isTheoryAxiom(); } diff --git a/Shell/FunctionDefinition.cpp b/Shell/FunctionDefinition.cpp index f790b43485..bc6c9262d4 100644 --- a/Shell/FunctionDefinition.cpp +++ b/Shell/FunctionDefinition.cpp @@ -377,7 +377,11 @@ bool FunctionDefinition::removeAllDefinitions(UnitList*& units) while(unfoldIterator.hasNext()) { Clause* cl=static_cast(unfoldIterator.next()); ASS(cl->isClause()); +#if VHOL + // AYB TODO not sure what is the point of the below + // proxy axioms are probably going to be removed anyway if(cl->isProxyAxiomsDescendant()){ continue; } +#endif Clause* newCl=applyDefinitions(cl); if(cl!=newCl) { // cout<<"D- "<<(*cl)< _expected; Stack _context; bool _premiseRedundant; +#if VHOL bool _higherOrder; +#endif Stack _indices; OptionMap _options; Stack _preConditions; @@ -105,7 +107,11 @@ class TestCase public: - TestCase() : _rule(), _input(NULL), _expected(), _premiseRedundant(false), _higherOrder(false), _options() {} + TestCase() : _rule(), _input(NULL), _expected(), _premiseRedundant(false), +#if VHOL + _higherOrder(false), +#endif + _options() {} #define BUILDER_METHOD(type, field) \ TestCase field(type field) \ @@ -118,7 +124,9 @@ class TestCase BUILDER_METHOD(Stack, context) BUILDER_METHOD(Stack, expected) BUILDER_METHOD(bool, premiseRedundant) - BUILDER_METHOD(bool, higherOrder) +#if VHOL + BUILDER_METHOD(bool, higherOrder) +#endif BUILDER_METHOD(SimplifyingGeneratingInference*, rule) BUILDER_METHOD(Stack, indices) BUILDER_METHOD(OptionMap, options) @@ -145,9 +153,11 @@ class TestCase i->attachContainer(&container); } +#if VHOL if(_higherOrder){ env.property->forceHigherOrder(); } +#endif // add the clauses to the index for (auto c : _context) { diff --git a/Test/SyntaxSugar.hpp b/Test/SyntaxSugar.hpp index a896940644..f596edbd32 100644 --- a/Test/SyntaxSugar.hpp +++ b/Test/SyntaxSugar.hpp @@ -28,7 +28,9 @@ #include "Kernel/Clause.hpp" #include "Kernel/SortHelper.hpp" #include "Kernel/NumTraits.hpp" +#if VHOL #include "Kernel/ApplicativeHelper.hpp" +#endif #include "Kernel/TypedTermList.hpp" #include "Indexing/TermSharing.hpp" @@ -247,11 +249,14 @@ class SyntaxSugarGlobals public: static SyntaxSugarGlobals& instance() { +#if VHOL _instance.setApply(); _instance.setLambda(); +#endif return _instance; } +#if VHOL void setApply() { apply = [](TermList sort, TermList t1, TermList t2) { @@ -260,7 +265,6 @@ class SyntaxSugarGlobals }; } - void setLambda() { lambda = [](TermList varSort, TermList var, TermList termSort, TermList term) { @@ -270,6 +274,7 @@ class SyntaxSugarGlobals return TermList(lambdaTerm); }; } +#endif void setNumTraits(IntTraits) { @@ -356,9 +361,13 @@ struct SortSugar : public ExpressionSugar SortSugar(const char* name, Stack as_) { +#if VHOL if(as_.isEmpty()){ +#endif _sugaredExpr = TermList(AtomicSort::createConstant(name)); +#if VHOL } else { + //AYB TODO, we don't need this now that we have the arrow sort creation functions Stack as; for (auto a : as_){ as.push(a.sugaredExpr()); } auto res = as.pop(); @@ -367,6 +376,7 @@ struct SortSugar : public ExpressionSugar while(!as.isEmpty()){ as2.push(as.pop()); } _sugaredExpr = AtomicSort::arrowSort(as2, res); } +#endif } SortSugar(const char* name) @@ -459,6 +469,7 @@ inline TermSugar fool(bool b) ////////////////////////// operators to create terms ////////////////////////// +#if VHOL inline TermSugar ap(SortSugar sort, TermSugar lhs, TermSugar rhs) { return ApplicativeHelper::app(sort, lhs, rhs); } @@ -468,6 +479,7 @@ inline TermSugar ap(TermSugar lhs, TermSugar rhs) inline TermSugar lam(TermSugar var, TermSugar term) { return syntaxSugarGlobals().lambda(var.sort(), var, term.sort(), term); } +#endif inline TermSugar operator+(TermSugar lhs, TermSugar rhs) { return syntaxSugarGlobals().add(lhs, rhs); } inline TermSugar operator*(TermSugar lhs, TermSugar rhs) { return syntaxSugarGlobals().mul(lhs, rhs); } @@ -533,13 +545,15 @@ __IMPL_NUMBER_BIN_FUN(operator<=, Lit) __IMPL_NUMBER_BIN_FUN(operator> , Lit) __IMPL_NUMBER_BIN_FUN(operator>=, Lit) - +#if VHOL inline SortSugar arrow(TermList args, TermList res) { return AtomicSort::arrowSort({ args }, res); } inline SortSugar arrow(Stack args, TermList res) { return AtomicSort::arrowSort(args, res); } +#endif + class FuncSugar { unsigned _functor; unsigned _arity; diff --git a/UnitTests/tBetaReduction.cpp b/UnitTests/tBetaReduction.cpp index 2f0d00d440..134ebb56c4 100644 --- a/UnitTests/tBetaReduction.cpp +++ b/UnitTests/tBetaReduction.cpp @@ -12,6 +12,8 @@ * @author Ahmed Bhayat */ +#if VHOL + #include "Test/UnitTesting.hpp" #include "Test/SyntaxSugar.hpp" #include "Kernel/ApplicativeHelper.hpp" @@ -237,7 +239,7 @@ TEST_FUN(fo_subterm_rep1) { cout << replaced << endl; } - +#endif diff --git a/UnitTests/tImitateProject.cpp b/UnitTests/tImitateProject.cpp index 601423346a..7f01a25cfb 100644 --- a/UnitTests/tImitateProject.cpp +++ b/UnitTests/tImitateProject.cpp @@ -8,6 +8,7 @@ * and in the source directory */ +#if VHOL #include "Test/UnitTesting.hpp" #include "Test/SyntaxSugar.hpp" @@ -78,4 +79,6 @@ TEST_GENERATION(test_03, // <- name clause({ ap(ap(g, a), b) != ap(ap( dbs(lam(y, lam(p, ap(ap(g, ap(ap(m, y), p) ), ap(ap(k, y), p)) ))), b ), a) }) // to be returned. Order matters! )) .higherOrder(true) - ) \ No newline at end of file + ) + +#endif \ No newline at end of file diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 97bcaf3d9b..11280e063a 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -31,7 +31,9 @@ #include "Indexing/TermSubstitutionTree.hpp" #include "Indexing/TermIndex.hpp" +#if VHOL #include "Shell/LambdaConversion.hpp" +#endif #include "Test/UnitTesting.hpp" #include "Test/SyntaxSugar.hpp" @@ -45,10 +47,11 @@ using namespace Indexing; #define TODO ASSERTION_VIOLATION_REP("TODO") - +#if VHOL TermList toDBs(TermList t){ return LambdaConversion().convertLambda(t); } +#endif Clause* unit(Literal* lit) { @@ -161,11 +164,13 @@ void checkTermMatches(TermSubstitutionTree& index, TypedTermList term, Stack expected) { return checkTermMatchesWithUnifFun(index, term, expected, false, - [&](auto& idx, auto t) { return idx.getPotentialHOLUnifiers(term); }); + [&](auto& idx, auto t) { return idx.getHOLUnifiers(term); }); } +#endif struct IndexTest { unique_ptr index; From e7acc1dbe9511006c8af996263c96abcace79540 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 2 Apr 2023 16:02:14 +0100 Subject: [PATCH 050/210] fixing a bug relating to equality factoring and polymorphism --- CMakeLists.txt | 1 + Inferences/EqualityFactoring.cpp | 13 +++++++------ Inferences/EqualityResolution.cpp | 6 ++---- Kernel/HOLUnification.cpp | 2 +- Kernel/HOLUnification.hpp | 2 +- Kernel/MismatchHandler.cpp | 13 +++++-------- Kernel/MismatchHandler.hpp | 13 +++++-------- Shell/Property.hpp | 6 ++++++ UnitTests/tUnificationWithAbstraction.cpp | 5 ++++- 9 files changed, 32 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e28726a71..215c18f1ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -739,6 +739,7 @@ set(UNIT_TESTS UnitTests/tBottomUpEvaluation.cpp UnitTests/tCoproduct.cpp UnitTests/tEqualityResolution.cpp + UnitTests/tEqualityFactoring.cpp UnitTests/tImitateProject.cpp UnitTests/tIterator.cpp UnitTests/tOption.cpp diff --git a/Inferences/EqualityFactoring.cpp b/Inferences/EqualityFactoring.cpp index 3c5ea86f43..80cb5ca6d4 100644 --- a/Inferences/EqualityFactoring.cpp +++ b/Inferences/EqualityFactoring.cpp @@ -110,16 +110,16 @@ struct EqualityFactoring::ResultFn TermList srt = SortHelper::getEqualityArgumentSort(sLit); - static RobSubstitution subst; - subst.reset(); + Recycled subst; + // TODO, do we need to reset? - if (!subst.unify(srt, 0, SortHelper::getEqualityArgumentSort(fLit), 0)) { + if (!subst->unify(srt, 0, SortHelper::getEqualityArgumentSort(fLit), 0)) { return ClauseIterator::getEmpty(); } Recycled results; - TermList srtS = subst.apply(srt,0); + TermList srtS = subst->apply(srt,0); TermList sLHS=arg.first.second; TermList sRHS=EqHelper::getOtherEqualitySide(sLit, sLHS); @@ -127,13 +127,14 @@ struct EqualityFactoring::ResultFn TermList fRHS=EqHelper::getOtherEqualitySide(fLit, fLHS); ASS_NEQ(sLit, fLit); - auto unifiers = _algo.unifiers(sLHS,0,fLHS,0); + auto unifiers = _algo.unifiers(sLHS,0,fLHS,0, &*subst); while(unifiers.hasNext()){ RobSubstitution* subst = unifiers.next(); TermList sLHSS = subst->apply(sLHS,0); TermList sRHSS = subst->apply(sRHS,0); + if(Ordering::isGorGEorE(_ordering.compare(sRHSS,sLHSS))) { // try next unifier (of course there isn't one in the syntactic first-order case) continue; @@ -143,7 +144,7 @@ struct EqualityFactoring::ResultFn continue; } auto constraints = subst->constraints(); - unsigned newLen=_cLen - 1 + constraints->length(); + unsigned newLen=_cLen + constraints->length(); Clause* res = new(newLen) Clause(newLen, GeneratingInference1(InferenceRule::EQUALITY_FACTORING, _cl)); diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index e68d0f5db6..ddf997476a 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -90,15 +90,13 @@ struct EqualityResolution::ResultFn ASS(lit->isEquality()); ASS(lit->isNegative()); - // static MismatchHandler _mismatchHandler = MismatchHandler::create(); - // auto handler = _mismatchHandler; - + Recycled sub; Recycled results; TermList arg0 = *lit->nthArgument(0); TermList arg1 = *lit->nthArgument(1); - auto substs = _algo.unifiers(arg0, 0, arg1, 0, /* no top level constraints */ true); + auto substs = _algo.unifiers(arg0, 0, arg1, 0, &*sub, /* no top level constraints */ true); while(substs.hasNext()){ RobSubstitution* sub = substs.next(); diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 7feb222704..a5a854b960 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -22,7 +22,7 @@ namespace Kernel namespace UnificationAlgorithms { -SubstIterator HOLUnification::unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck) +SubstIterator HOLUnification::unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck) { CALL("HOLUnification::unifiers"); diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index b8020174bc..21fa389405 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -50,7 +50,7 @@ class HOLUnification { bool unifyWithPlaceholders(TermList t1, unsigned bank1, TermList t2, unsigned bank2, RobSubstitution* sub); bool associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub); - SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck = false); + SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck = false); SubstIterator postprocess(RobSubstitution*, TermList t); // method used to decide whether to return all children of a node during tree diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index 9a8f260612..0d7e8500cc 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -240,13 +240,10 @@ bool AbstractingUnification::unify(TermList term1, unsigned bank1, TermList term return unify(TermSpec(term1, bank1), TermSpec(term2, bank2), progress, sub); } -SubstIterator AbstractingUnification::unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck) +SubstIterator AbstractingUnification::unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck) { CALL("AbstractingUnification::unifiers"); - static RobSubstitution subst; - subst.reset(); - // We only care about non-trivial constraints where the top-sybmol of the two literals are the same // and therefore a constraint can be created between arguments if(topLevelCheck && t1.isTerm() && t2.isTerm() && @@ -254,18 +251,18 @@ SubstIterator AbstractingUnification::unifiers(TermList t1, int index1, TermList return SubstIterator::getEmpty(); } - bool unifies = unify(t1, index1, t2, index2, &subst); + bool unifies = unify(t1, index1, t2, index2, sub); if(!unifies){ return SubstIterator::getEmpty(); } if(!_fpi){ - return pvi(getSingletonIterator(&subst)); + return pvi(getSingletonIterator(sub)); } - bool success = fixedPointIteration(&subst); - return success ? pvi(getSingletonIterator(&subst)) : SubstIterator::getEmpty(); + bool success = fixedPointIteration(sub); + return success ? pvi(getSingletonIterator(sub)) : SubstIterator::getEmpty(); } SubstIterator AbstractingUnification::postprocess(RobSubstitution* sub, TermList t) diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index c0e49a230d..5fdaa9a219 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -129,14 +129,11 @@ class RobUnification { // To be used for non-tree calls. Return an iterator instead of bool // to fit HOL interface - SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck = false){ - CALL("RobUnification::unifiers"); + SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck = false){ + CALL("RobUnification::unifiers"); - static RobSubstitution subst; - subst.reset(); - - if(subst.unify(t1, index1, t2, index2)){ - return pvi(getSingletonIterator(&subst)); + if(sub->unify(t1, index1, t2, index2)){ + return pvi(getSingletonIterator(sub)); } return SubstIterator::getEmpty(); } @@ -165,7 +162,7 @@ class AbstractingUnification { bool unify(TermList t1, unsigned bank1, TermList t2, unsigned bank2, RobSubstitution* sub); bool unify(TermSpec l, TermSpec r, bool& progress, RobSubstitution* sub); bool fixedPointIteration(RobSubstitution* sub); - SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, bool topLevelCheck = false); + SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck = false); SubstIterator postprocess(RobSubstitution* sub, TermList t); bool associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub) diff --git a/Shell/Property.hpp b/Shell/Property.hpp index 1fe0d8d84d..8417504098 100644 --- a/Shell/Property.hpp +++ b/Shell/Property.hpp @@ -191,6 +191,12 @@ class Property int maxFunArity() const { return _maxFunArity; } /** Maximal arity of a type con in the problem */ unsigned maxTypeConArity() const { return _maxTypeConArity; } +#if VDEBUG + // for use by polymorphic unit tests + // have to force the type con arity to avoid + // running KBOforEPR + void forceMaxTypeConArity() { _maxTypeConArity = 1; } +#endif /** Total number of variables in problem */ int totalNumberOfVariables() const { return _totalNumberOfVariables;} diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 11280e063a..053089d745 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -834,8 +834,11 @@ static const int NORM_QUERY_BANK=2; Option runRobUnify(TermList a, TermList b, Options::UnificationWithAbstraction opt, bool fixedPointIteration) { Kernel::UnificationAlgorithms::AbstractingUnification au(MismatchHandler(opt), fixedPointIteration); + + static Kernel::RobSubstitution subst; + subst.reset(); - auto unifs = au.unifiers(a, 0, b, 0); + auto unifs = au.unifiers(a, 0, b, 0, &subst); if (unifs.hasNext()) { Kernel::RobSubstitution* sub = unifs.next(); From de1ba2f2a3d55cc3585c9ce0879087236928cfb9 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Mon, 3 Apr 2023 09:07:13 +0100 Subject: [PATCH 051/210] new unit test for equality factoring --- Test/GenerationTester.hpp | 9 ++++- UnitTests/tEqualityFactoring.cpp | 57 ++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 UnitTests/tEqualityFactoring.cpp diff --git a/Test/GenerationTester.hpp b/Test/GenerationTester.hpp index bfef00f1a7..b02cefbfc7 100644 --- a/Test/GenerationTester.hpp +++ b/Test/GenerationTester.hpp @@ -89,6 +89,7 @@ class TestCase #if VHOL bool _higherOrder; #endif + bool _polymorphic; Stack _indices; OptionMap _options; Stack _preConditions; @@ -111,7 +112,7 @@ class TestCase #if VHOL _higherOrder(false), #endif - _options() {} + _polymorphic(false), _options() {} #define BUILDER_METHOD(type, field) \ TestCase field(type field) \ @@ -127,6 +128,7 @@ class TestCase #if VHOL BUILDER_METHOD(bool, higherOrder) #endif + BUILDER_METHOD(bool, polymorphic) BUILDER_METHOD(SimplifyingGeneratingInference*, rule) BUILDER_METHOD(Stack, indices) BUILDER_METHOD(OptionMap, options) @@ -140,6 +142,11 @@ class TestCase auto container = PlainClauseContainer(); Problem p; Options o; + + if(_polymorphic){ + p.getProperty()->forceMaxTypeConArity(); + } + for (const auto& kv : _options) { o.set(kv.first, kv.second); env.options->set(kv.first, kv.second); diff --git a/UnitTests/tEqualityFactoring.cpp b/UnitTests/tEqualityFactoring.cpp new file mode 100644 index 0000000000..9aed0c4917 --- /dev/null +++ b/UnitTests/tEqualityFactoring.cpp @@ -0,0 +1,57 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ + + +#include "Test/UnitTesting.hpp" +#include "Test/SyntaxSugar.hpp" +#include "Test/TestUtils.hpp" +#include "Test/GenerationTester.hpp" + +#include "Inferences/EqualityFactoring.hpp" + +using namespace Test; + +REGISTER_GEN_TESTER(EqualityFactoring) + +/** + * NECESSARY: We neet to tell the tester which syntax sugar to import for creating terms & clauses. + * See Test/SyntaxSugar.hpp for which kinds of syntax sugar are available + */ +#define MY_SYNTAX_SUGAR \ + DECL_DEFAULT_VARS \ + DECL_DEFAULT_SORT_VARS \ + DECL_SORT(s) \ + DECL_SORT(s2) \ + DECL_FUNC(f, {s}, s) \ + DECL_FUNC(g, {s}, s) \ + DECL_TYPE_CON(list, 1) \ + DECL_POLY_CONST(poly_list, 1, {list(alpha)}) \ + DECL_POLY_CONST(j, 1, {list(alpha)}) \ + DECL_CONST(a, s) \ + DECL_PRED (p, {s}) \ + DECL_PRED (q, {s}) \ + DECL_VAR(k, 3) \ + +TEST_GENERATION(test_01, // <- name + Generation::TestCase() + .input( clause({ selected(poly_list(alpha) == j(alpha)), j(s) == poly_list(s) })) // <- input clause + .expected(exactly( // <- a list of exactly which clauses are expected + clause({ j(s) == poly_list(s), poly_list(s) != poly_list(s) }) // to be returned. Order matters! + )) + .polymorphic(true) + ) + +TEST_GENERATION(test_02, + Generation::TestCase() + .input( clause({ selected(x.sort(s2) == y), z.sort(s) == k })) + .expected(exactly( + )) + .polymorphic(true) + ) \ No newline at end of file From f27b8050cb24072f31104f261f62d77aa72f44d6 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 4 Apr 2023 09:10:24 +0100 Subject: [PATCH 052/210] preparing to create non-splittable tree nodes --- Indexing/SubstitutionTree.cpp | 42 +++++++++++++++++------------------ Kernel/Term.cpp | 12 +++++++--- Kernel/Term.hpp | 8 ++++--- Test/SyntaxSugar.hpp | 8 +++++-- 4 files changed, 41 insertions(+), 29 deletions(-) diff --git a/Indexing/SubstitutionTree.cpp b/Indexing/SubstitutionTree.cpp index 96d9564331..ae1182d33f 100644 --- a/Indexing/SubstitutionTree.cpp +++ b/Indexing/SubstitutionTree.cpp @@ -183,31 +183,31 @@ void SubstitutionTree::insert(BindingMap& svBindings, LeafData ld) Node* child=inode->_nodes[0]; bool removeProblematicNode=false; if(svBindings.find(boundVar)) { - TermList term=svBindings.get(boundVar); - bool wouldDescendIntoChild = inode->childByTop(term.top(),false)!=0; - ASS_EQ(wouldDescendIntoChild, TermList::sameTop(term, child->term)); - if(!wouldDescendIntoChild) { - //if we'd have to perform all postponed splitting due to - //node with a single child, we rather remove that node - //from the tree and deal with the binding, it represented, - //later. - removeProblematicNode=true; - } + TermList term=svBindings.get(boundVar); + bool wouldDescendIntoChild = inode->childByTop(term.top(),false)!=0; + ASS_EQ(wouldDescendIntoChild, TermList::sameTop(term, child->term)); + if(!wouldDescendIntoChild) { + //if we'd have to perform all postponed splitting due to + //node with a single child, we rather remove that node + //from the tree and deal with the binding, it represented, + //later. + removeProblematicNode=true; + } } else if(!child->term.isTerm() || child->term.term()->shared()) { - //We can remove nodes binding to special variables undefined in our branch - //of the tree, as long as we're sure, that during split resolving we put these - //binding nodes below nodes that define spec. variables they bind. - removeProblematicNode=true; + //We can remove nodes binding to special variables undefined in our branch + //of the tree, as long as we're sure, that during split resolving we put these + //binding nodes below nodes that define spec. variables they bind. + removeProblematicNode=true; } else { - canPostponeSplits = false; + canPostponeSplits = false; } if(removeProblematicNode) { - unresolvedSplits.insert(UnresolvedSplitRecord(inode->childVar, child->term)); - child->term=inode->term; - *pnode=child; - inode->makeEmpty(); - delete inode; - goto start; + unresolvedSplits.insert(UnresolvedSplitRecord(inode->childVar, child->term)); + child->term=inode->term; + *pnode=child; + inode->makeEmpty(); + delete inode; + goto start; } } } diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 34c9961f09..220a8d257e 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -244,9 +244,15 @@ bool TermList::equals(TermList t1, TermList t2) return true; } -TermList::Top TermList::top() const -{ return isTerm() ? TermList::Top::functor(term()->functor()) - : TermList::Top::var(var()); } +TermList::Top TermList::top(bool splittable) const +{ + CALL("TermList::top"); + + if(!splittable) return TermList::Top::nonsplittable(term()->getId()); + + return isTerm() ? TermList::Top::functor(term()->functor()) + : TermList::Top::var(var()); +} /** * Return true if all proper terms in the @ args list are shared diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index bcd82354c8..11ab98a4c0 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -178,15 +178,17 @@ class TermList { /** make the term into a reference */ inline void setTerm(Term* t) { _term = t; ASS_EQ(tag(), REF); } - class Top : public Coproduct { - Top(Coproduct self) : Coproduct(self) {} + class Top : public Coproduct { + Top(Coproduct self) : Coproduct(self) {} public: static Top functor(unsigned f) { return Top(Coproduct::variant<0>(f)); } static Top var (unsigned v) { return Top(Coproduct::variant<1>(v)); } + static Top nonsplittable (unsigned id) { return Top(Coproduct::variant<2>(id)); } Option functor() const { return as<0>().toOwned(); } Option var() const { return as<1>().toOwned(); } + Option id() const { return as<2>().toOwned(); } }; - Top top() const; + Top top(bool splittable = true) const; static bool sameTop(TermList ss, TermList tt); static bool sameTopFunctor(TermList ss, TermList tt); static bool equals(TermList t1, TermList t2); diff --git a/Test/SyntaxSugar.hpp b/Test/SyntaxSugar.hpp index f596edbd32..71c501b49d 100644 --- a/Test/SyntaxSugar.hpp +++ b/Test/SyntaxSugar.hpp @@ -515,8 +515,12 @@ inline TermSugar operator-(TermSugar x) { return syntaxSugarGlobals().minus(x); inline Lit operator==(TermSugar lhs, TermSugar rhs) { SortId sort; - ALWAYS(SortHelper::tryGetResultSort(lhs, sort) || SortHelper::tryGetResultSort(rhs, sort)); - return Literal::createEquality(true, lhs, rhs, sort); + SortId lhsSort = lhs.sort(); + SortId rhsSort = rhs.sort(); + ASS(!lhsSort.isEmpty() || !rhsSort.isEmpty()); + ASS(lhsSort.isEmpty() || rhsSort.isEmpty() || lhsSort == rhsSort); + SortId nonEmptySort = lhsSort.isEmpty() ? rhsSort : lhsSort; + return Literal::createEquality(true, lhs, rhs, nonEmptySort); } From bccc80786a4f398deed078cc547cca2d7bbe521c Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 5 Apr 2023 14:58:03 +0100 Subject: [PATCH 053/210] further work on adding non-splitting functionality. Looking harder than I had hoped --- Indexing/SubstitutionTree.cpp | 221 +++++++++++++++++++++++++++++++++- Indexing/SubstitutionTree.hpp | 30 ++++- 2 files changed, 249 insertions(+), 2 deletions(-) diff --git a/Indexing/SubstitutionTree.cpp b/Indexing/SubstitutionTree.cpp index ae1182d33f..db6e9a8c05 100644 --- a/Indexing/SubstitutionTree.cpp +++ b/Indexing/SubstitutionTree.cpp @@ -49,9 +49,10 @@ using namespace Indexing; * Initialise the substitution tree. * @since 16/08/2008 flight Sydney-San Francisco */ -SubstitutionTree::SubstitutionTree() +SubstitutionTree::SubstitutionTree(Splittable* splittable) : _nextVar(0) , _root(nullptr) + , _splittable(splittable) #if VDEBUG , _tag(false) #endif @@ -70,6 +71,8 @@ SubstitutionTree::~SubstitutionTree() CALL("SubstitutionTree::~SubstitutionTree"); ASS_EQ(_iterCnt,0); delete _root; + if(_splittable) + delete _splittable; } // SubstitutionTree::~SubstitutionTree /** @@ -127,6 +130,222 @@ struct BindingComparator }; +void SubstitutionTree::splittableInsert(BindingMap& binding,LeafData ld) +{ +#define DEBUG_INSERT(...) // DBG(__VA_ARGS__) + CALL("SubstitutionTree::splittableInsert"); + ASS_EQ(_iterCnt,0); + ASS(_splittable); + + auto pnode = &_root; + DEBUG_INSERT("insert: ", svBindings, " into ", *this) + + if(*pnode == 0) { + if (svBindings.isEmpty()) { + auto leaf = createLeaf(); + leaf->insert(std::move(ld)); + *pnode = leaf; + DEBUG_INSERT(0, "out: ", *this); + return; + } else { + *pnode=createIntermediateNode(svBindings.getOneKey()); + } + } + if(svBindings.isEmpty()) { + ASS((*pnode)->isLeaf()); + ensureLeafEfficiency(reinterpret_cast(pnode)); + static_cast(*pnode)->insert(ld); + DEBUG_INSERT("out: ", *this); + return; + } + + typedef BinaryHeap SplitRecordHeap; + static SplitRecordHeap unresolvedSplits; + unresolvedSplits.reset(); + + ASS((*pnode)); + ASS(!(*pnode)->isLeaf()); + +start: + +#if REORDERING + ASS(!(*pnode)->isLeaf() || !unresolvedSplits.isEmpty()); + bool canPostponeSplits=false; + if((*pnode)->isLeaf() || (*pnode)->algorithm()!=UNSORTED_LIST) { + canPostponeSplits=false; + } else { + UArrIntermediateNode* inode = static_cast(*pnode); + canPostponeSplits = inode->size()==1; + if(canPostponeSplits) { + unsigned boundVar=inode->childVar; + Node* child=inode->_nodes[0]; + bool removeProblematicNode=false; + if(svBindings.find(boundVar)) { + TermList term=svBindings.get(boundVar); + bool wouldDescendIntoChild = inode->childByTop(term.top(),false)!=0; + ASS_EQ(wouldDescendIntoChild, TermList::sameTop(term, child->term)); + if(!wouldDescendIntoChild) { + //if we'd have to perform all postponed splitting due to + //node with a single child, we rather remove that node + //from the tree and deal with the binding, it represented, + //later. + removeProblematicNode=true; + } + } else if(!child->term.isTerm() || child->term.term()->shared()) { + //We can remove nodes binding to special variables undefined in our branch + //of the tree, as long as we're sure, that during split resolving we put these + //binding nodes below nodes that define spec. variables they bind. + removeProblematicNode=true; + } else { + canPostponeSplits = false; + } + if(removeProblematicNode) { + unresolvedSplits.insert(UnresolvedSplitRecord(inode->childVar, child->term)); + child->term=inode->term; + *pnode=child; + inode->makeEmpty(); + delete inode; + goto start; + } + } + } + canPostponeSplits|=unresolvedSplits.isEmpty(); + if(!canPostponeSplits) { + + while(!unresolvedSplits.isEmpty()) { + UnresolvedSplitRecord urr=unresolvedSplits.pop(); + + Node* node=*pnode; + IntermediateNode* newNode = createIntermediateNode(node->term, urr.var); + node->term=urr.original; + + *pnode=newNode; + + Node** nodePosition=newNode->childByTop(node->term.top(), true); + ASS(!*nodePosition); + *nodePosition=node; + } + } +#endif + ASS(!(*pnode)->isLeaf()); + + IntermediateNode* inode = static_cast(*pnode); + ASS(inode); + + unsigned boundVar=inode->childVar; + TermList term=svBindings.get(boundVar); + svBindings.remove(boundVar); + + //Into pparent we store the node, we might be inserting into. + //So in the case we do insert, we might check whether this node + //needs expansion. + Node** pparent=pnode; + pnode=inode->childByTop(term.top(),true); + + if (*pnode == 0) { + BindingMap::Iterator svit(svBindings); + BinaryHeap remainingBindings; + while (svit.hasNext()) { + unsigned var; + TermList term; + svit.next(var, term); + remainingBindings.insert(Binding(var, term)); + } + while (!remainingBindings.isEmpty()) { + Binding b=remainingBindings.pop(); + IntermediateNode* inode = createIntermediateNode(term, b.var); + term=b.term; + + *pnode = inode; + pnode = inode->childByTop(term.top(),true); + } + Leaf* lnode=createLeaf(term); + *pnode=lnode; + lnode->insert(ld); + + ensureIntermediateNodeEfficiency(reinterpret_cast(pparent)); + DEBUG_INSERT("out: ", *this); + return; + } + + + TermList* tt = &term; + TermList* ss = &(*pnode)->term; + + ASS(TermList::sameTop(*ss, *tt)); + + + // ss is the term in node, tt is the term to be inserted + // ss and tt have the same top symbols but are not equal + // create the common subterm of ss,tt and an alternative node + Stack subterms(64); + for (;;) { + if (*tt!=*ss && TermList::sameTop(*ss,*tt)) { + // ss and tt have the same tops and are different, so must be non-variables + ASS(! ss->isVar()); + ASS(! tt->isVar()); + + Term* s = ss->term(); + Term* t = tt->term(); + + ASS(s->arity() > 0); + ASS(s->functor() == t->functor()); + + if (s->shared()) { + // create a shallow copy of s + s = Term::cloneNonShared(s); + ss->setTerm(s); + } + + ss = s->args(); + tt = t->args(); + if (ss->next()->isEmpty()) { + continue; + } + subterms.push(ss->next()); + subterms.push(tt->next()); + } else { + if (! TermList::sameTop(*ss,*tt)) { + unsigned x; + if(!ss->isSpecialVar()) { + x = _nextVar++; + #if REORDERING + unresolvedSplits.insert(UnresolvedSplitRecord(x,*ss)); + ss->makeSpecialVar(x); + #else + Node::split(pnode,ss,x); + #endif + } else { + x=ss->var(); + } + svBindings.set(x,*tt); + } + + if (subterms.isEmpty()) { + break; + } + tt = subterms.pop(); + ss = subterms.pop(); + if (! ss->next()->isEmpty()) { + subterms.push(ss->next()); + subterms.push(tt->next()); + } + } + } + + if (svBindings.isEmpty()) { + ASS((*pnode)->isLeaf()); + ensureLeafEfficiency(reinterpret_cast(pnode)); + Leaf* leaf = static_cast(*pnode); + leaf->insert(ld); + DEBUG_INSERT("out: ", *this); + return; + } + + goto start; +} + + /** * Insert an entry to the substitution tree. * diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 96821c9321..3a60b8cb4a 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -74,6 +74,27 @@ std::ostream& operator<<(std::ostream& out, OutputMultiline co template struct SubtitutionTreeConfig; +class Splittable { +public: + CLASS_NAME(Splittable); + USE_ALLOCATOR(Splittable); + + virtual ~Splittable(){} + + // we should never call this function for default implementation + virtual bool operator()(TermList t) = 0; +}; + +class HOLSplittable : public Splittable { +public: + CLASS_NAME(HOLSplittable); + USE_ALLOCATOR(HOLSplittable); + + bool operator()(TermList t) override { //TODO + return true; + } +}; + /** a counter that is compiled away in release mode */ struct Cntr { #if VDEBUG @@ -129,7 +150,7 @@ class SubstitutionTree CLASS_NAME(SubstitutionTree); USE_ALLOCATOR(SubstitutionTree); - SubstitutionTree(); + SubstitutionTree(Splittable* splittable = 0); SubstitutionTree(SubstitutionTree const&) = delete; SubstitutionTree& operator=(SubstitutionTree const& other) = delete; SubstitutionTree(SubstitutionTree&& other) @@ -137,6 +158,7 @@ class SubstitutionTree { std::swap(_nextVar, other._nextVar); std::swap(_root, other._root); + std::swap(_splittable, other._splittable); #if VDEBUG std::swap(_tag, other._tag); #endif @@ -662,10 +684,16 @@ class SubstitutionTree void insert(BindingMap& binding,LeafData ld); void remove(BindingMap& binding,LeafData ld); + // To avoid slowing down / modifying standard insertion + // and remove, we define functions below + void splittableInsert(BindingMap& binding,LeafData ld); + void splittableRemove(BindingMap& binding,LeafData ld); + /** Number of the next variable */ int _nextVar; Node* _root; + Splittable* _splittable; #if VDEBUG bool _tag; #endif From 059c0e149b84a8a408309e30fb1c59b96bbd2cc1 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 11 Apr 2023 11:56:45 +0100 Subject: [PATCH 054/210] non-splittable insertion and deletion working nicely. Next: unification --- CMakeLists.txt | 2 + Indexing/HOLSubstitutionTree.cpp | 413 ++++++++++++++++++++++ Indexing/HOLSubstitutionTree.hpp | 160 +++++++++ Indexing/SubstitutionTree.cpp | 233 +----------- Indexing/SubstitutionTree.hpp | 114 +++--- Indexing/SubstitutionTree_Nodes.cpp | 22 +- Indexing/TermSubstitutionTree.cpp | 12 +- Indexing/TermSubstitutionTree.hpp | 32 +- Kernel/RobSubstitution.hpp | 5 +- Kernel/Term.cpp | 7 +- Test/SyntaxSugar.hpp | 2 + UnitTests/tUnificationWithAbstraction.cpp | 62 ++++ 12 files changed, 737 insertions(+), 327 deletions(-) create mode 100644 Indexing/HOLSubstitutionTree.cpp create mode 100644 Indexing/HOLSubstitutionTree.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 215c18f1ff..cd71744e09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -358,6 +358,7 @@ set(VAMPIRE_INDEXING_SOURCES Indexing/LiteralSubstitutionTree.cpp Indexing/ResultSubstitution.cpp Indexing/SubstitutionTree.cpp + Indexing/HOLSubstitutionTree.cpp Indexing/SubstitutionTree_FastGen.cpp Indexing/SubstitutionTree_FastInst.cpp Indexing/SubstitutionTree_Nodes.cpp @@ -380,6 +381,7 @@ set(VAMPIRE_INDEXING_SOURCES Indexing/LiteralSubstitutionTree.hpp Indexing/ResultSubstitution.hpp Indexing/SubstitutionTree.hpp + Indexing/HOLSubstitutionTree.hpp Indexing/TermCodeTree.hpp Indexing/TermIndex.hpp Indexing/TermIndexingStructure.hpp diff --git a/Indexing/HOLSubstitutionTree.cpp b/Indexing/HOLSubstitutionTree.cpp new file mode 100644 index 0000000000..ea53904266 --- /dev/null +++ b/Indexing/HOLSubstitutionTree.cpp @@ -0,0 +1,413 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file TermSubstitutionTree.cpp + * Implements class TermSubstitutionTree. + */ + +#if VHOL + +#include "Lib/Environment.hpp" +#include "Lib/Metaiterators.hpp" +#include "Kernel/Term.hpp" +#include "Indexing/HOLSubstitutionTree.hpp" + +namespace Indexing +{ + +using namespace Lib; +using namespace Kernel; + + +using Subterm = HOLSubstitutionTree::Subterm; + +std::ostream& operator<< (ostream& out, const Subterm& t ) +{ + return out<shared(); + bool r2HasSpecVars=r2.original.isTerm() && !r2.original.term()->shared(); + if( r1HasSpecVars && !r2HasSpecVars ) { + return GREATER; + } + if( r2HasSpecVars && !r1HasSpecVars ) { + return LESS; + } + return Int::compare(r2.var,r1.var); + } + static Comparison compare(const HOLBinding& b1, const HOLBinding& b2) + { +#if REORDERING + return Int::compare(b2.var,b1.var); +#else + return Int::compare(b1.var,b2.var); +#endif + } +}; + + +void HOLSubstitutionTree::higherOrderInsert(HOLBindingMap& svBindings,LeafData ld) +{ +#define DEBUG_INSERT(...) //DBG(__VA_ARGS__) + CALL("SubstitutionTree::splittableInsert"); + ASS_EQ(_iterCnt,0); + + auto pnode = &_root; + DEBUG_INSERT("insert: ", svBindings, " into ", *this) + + if(*pnode == 0) { + if (svBindings.isEmpty()) { + auto leaf = createLeaf(); + leaf->insert(std::move(ld)); + *pnode = leaf; + DEBUG_INSERT(0, "out: ", *this); + return; + } else { + // create root + *pnode=createIntermediateNode(svBindings.getOneKey()); + } + } + if(svBindings.isEmpty()) { + ASS((*pnode)->isLeaf()); + ensureLeafEfficiency(reinterpret_cast(pnode)); + static_cast(*pnode)->insert(ld); + DEBUG_INSERT("out: ", *this); + return; + } + + typedef BinaryHeap SplitRecordHeap; + static SplitRecordHeap unresolvedSplits; + unresolvedSplits.reset(); + + ASS((*pnode)); + ASS(!(*pnode)->isLeaf()); + +start: + +#if REORDERING + ASS(!(*pnode)->isLeaf() || !unresolvedSplits.isEmpty()); + bool canPostponeSplits=false; + if((*pnode)->isLeaf() || (*pnode)->algorithm()!=UNSORTED_LIST) { + canPostponeSplits=false; + } else { + UArrIntermediateNode* inode = static_cast(*pnode); + canPostponeSplits = inode->size()==1; + if(canPostponeSplits) { + unsigned boundVar=inode->childVar; + Node* child=inode->_nodes[0]; + bool removeProblematicNode=false; + if(svBindings.find(boundVar)) { + Subterm term=svBindings.get(boundVar); + + bool wouldDescendIntoChild = inode->childByTop(term.top(),false)!=0; + ASS_EQ(wouldDescendIntoChild, term.top() == child->top()); + if(!wouldDescendIntoChild) { + //if we'd have to perform all postponed splitting due to + //node with a single child, we rather remove that node + //from the tree and deal with the binding, it represented, + //later. + removeProblematicNode=true; + } + } else if(!child->term.isTerm() || child->term.term()->shared()) { + //We can remove nodes binding to special variables undefined in our branch + //of the tree, as long as we're sure, that during split resolving we put these + //binding nodes below nodes that define spec. variables they bind. + removeProblematicNode=true; + } else { + canPostponeSplits = false; + } + if(removeProblematicNode) { + unresolvedSplits.insert(HOLUnresolvedSplitRecord(inode->childVar, child->term, child->splittable())); + child->term=inode->term; + child->setSplittable(inode->splittable()); //TODO is this correct??? + *pnode=child; + inode->makeEmpty(); + delete inode; + goto start; + } + } + } + canPostponeSplits|=unresolvedSplits.isEmpty(); + if(!canPostponeSplits) { + + while(!unresolvedSplits.isEmpty()) { + HOLUnresolvedSplitRecord urr=unresolvedSplits.pop(); + + Node* node=*pnode; + IntermediateNode* newNode = createIntermediateNode(node->term, urr.var, node->splittable()); + + node->term=urr.original; + node->setSplittable(urr.splittable); + + *pnode=newNode; + + Node** nodePosition=newNode->childByTop(node->top(), true); + ASS(!*nodePosition); + *nodePosition=node; + } + } +#endif + ASS(!(*pnode)->isLeaf()); + + IntermediateNode* inode = static_cast(*pnode); + ASS(inode); + + unsigned boundVar=inode->childVar; + Subterm term=svBindings.get(boundVar); + svBindings.remove(boundVar); + + //Into pparent we store the node, we might be inserting into. + //So in the case we do insert, we might check whether this node + //needs expansion. + Node** pparent=pnode; + pnode=inode->childByTop(term.top(),true); + + if (*pnode == 0) { + HOLBindingMap::Iterator svit(svBindings); + BinaryHeap remainingBindings; + while (svit.hasNext()) { + unsigned var; + Subterm term; + svit.next(var, term); + remainingBindings.insert(HOLBinding(var, term)); + } + while (!remainingBindings.isEmpty()) { + HOLBinding b=remainingBindings.pop(); + IntermediateNode* inode = createIntermediateNode(term.term(), b.var, term.splittable()); + term=b.term; + + *pnode = inode; + pnode = inode->childByTop(term.top(),true); + } + Leaf* lnode=createLeaf(term.term(), term.splittable()); + *pnode=lnode; + lnode->insert(ld); + + ensureIntermediateNodeEfficiency(reinterpret_cast(pparent)); + DEBUG_INSERT("out: ", *this); + return; + } + + ASS(term.top() == (*pnode)->top()); + + TermList* tt = term.termPtr(); + TermList* ss = &(*pnode)->term; + + // ss is the term in node, tt is the term to be inserted + // ss and tt have the same top symbols but are not equal + // create the common subterm of ss,tt and an alternative node + Stack toProcess(64); + toProcess.push(SubtermPair(ss, (*pnode)->splittable(), tt, term.splittable())); + + while(!toProcess.isEmpty()) { + auto pair = toProcess.pop(); + + TermList* lhs = pair.lhs(); + TermList* rhs = pair.rhs(); + + // I am a bit concerned about doing + // an == check on possibly non-shared terms, + // but that is what existing code does + if(*lhs == *rhs){ + } else if(pair.lhsTop() == pair.rhsTop()){ + + // same top different content + ASS(!lhs->isVar() && !rhs->isVar()); + ASS(!lhs->isLambdaTerm() && !rhs->isLambdaTerm()); + ASS_EQ(lhs->term()->functor(), rhs->term()->functor()); + + if (lhs->isTerm() && lhs->term()->shared()) { + Term* s = lhs->term(); + // create a shallow copy of s + s = Term::cloneNonShared(s); + lhs->setTerm(s); + } + + Term* l = lhs->term(); + Term* r = rhs->term(); + + if(rhs->isApplication()){ + ASS(lhs->isApplication()); + toProcess.push(SubtermPair(l->nthArgument(0), true, r->nthArgument(0), true)); + toProcess.push(SubtermPair(l->nthArgument(1), true, r->nthArgument(1), true)); + toProcess.push(SubtermPair(l->nthArgument(2), true, r->nthArgument(2), true)); + toProcess.push(SubtermPair(l->nthArgument(3), splittable((*l)[3]), + r->nthArgument(3), splittable((*r)[3]))); + } else { + for (unsigned i = 0; i < l->arity(); i++) { + toProcess.push(SubtermPair(l->nthArgument(i), true, r->nthArgument(i), true)); + } + } + } else { + // different top + unsigned x; + if(!lhs->isSpecialVar()) { + x = _nextVar++; + #if REORDERING + unresolvedSplits.insert(HOLUnresolvedSplitRecord(x,*lhs, pair.lhsSplittable())); + lhs->makeSpecialVar(x); + #else + // TODO, this doesn't work with splitting currently + Node::split(pnode,lhs,x); + #endif + } else { + x=lhs->var(); + } + svBindings.set(x, Subterm(*rhs, pair.rhsSplittable())); + } + } + + if (svBindings.isEmpty()) { + ASS((*pnode)->isLeaf()); + ensureLeafEfficiency(reinterpret_cast(pnode)); + Leaf* leaf = static_cast(*pnode); + leaf->insert(ld); + DEBUG_INSERT("out: ", *this); + return; + } + + goto start; +} + +/* + * Remove an entry from the substitution tree. + * + * @b pnode is pointer to root of tree corresponding to + * top symbol of the term/literal being removed, and + * @b bh contains its arguments. + * + * If the removal results in a chain of nodes containing + * no terms/literals, all those nodes are removed as well. + */ +void HOLSubstitutionTree::higherOrderRemove(HOLBindingMap& svBindings, LeafData ld) +{ + CALL("SubstitutionTree::remove"); +#define DEBUG_REMOVE(...) //DBG(__VA_ARGS__) + ASS_EQ(_iterCnt,0); + auto pnode = &_root; + + ASS(*pnode); + + DEBUG_REMOVE("remove: ", svBindings, " from ", *this) + + static Stack history(1000); + history.reset(); + + while (! (*pnode)->isLeaf()) { + history.push(pnode); + + IntermediateNode* inode=static_cast(*pnode); + + unsigned boundVar=inode->childVar; + Subterm t = svBindings.get(boundVar); + + pnode=inode->childByTop(t.top(),false); + ASS(pnode); + + + TermList s = (*pnode)->term; + ASS((*pnode)->top() == t.top()); + + if(s==t.term()) { + continue; + } + + // computing the disagreement set of the two terms + Stack> subterms(120); + + subterms.push(std::make_pair(s, t)); + while (! subterms.isEmpty()) { + auto pair = subterms.pop(); + + auto treeTerm = pair.first; + auto remvTerm = pair.second; + + if (treeTerm==remvTerm.term()) { + continue; + } + if (treeTerm.isVar()) { + ASS(treeTerm.isSpecialVar()); + svBindings.set(treeTerm.var(),remvTerm); + continue; + } + ASS(!treeTerm.isVar()); + + Term* l = treeTerm.term(); + Term* r = remvTerm.term().term(); + + if(l->isApplication()){ + ASS(r->isApplication()); + subterms.push(std::make_pair((*l)[0], Subterm((*r)[0], true))); + subterms.push(std::make_pair((*l)[1], Subterm((*r)[1], true))); + subterms.push(std::make_pair((*l)[2], Subterm((*r)[2], true))); + subterms.push(std::make_pair((*l)[3], Subterm((*r)[3], splittable((*r)[3])))); + } else { + ASS(l->arity() == r->arity()); + for (unsigned i = 0; i < l->arity(); i++) { + subterms.push(std::make_pair((*l)[i], Subterm((*r)[i], true))); + } + } + } + } + + ASS ((*pnode)->isLeaf()); + + + Leaf* lnode = static_cast(*pnode); + lnode->remove(ld); + ensureLeafEfficiency(reinterpret_cast(pnode)); + + while( (*pnode)->isEmpty() ) { + if(history.isEmpty()) { + delete *pnode; + *pnode=0; + DEBUG_REMOVE("out: ", *this); + return; + } else { + Node* node=*pnode; + IntermediateNode* parent=static_cast(*history.top()); + parent->remove((*pnode)->top()); + delete node; + pnode=history.pop(); + ensureIntermediateNodeEfficiency(reinterpret_cast(pnode)); + } + } + DEBUG_REMOVE("out: ", *this); +} // SubstitutionTree::remove + +} // namespace Indexing + +#endif diff --git a/Indexing/HOLSubstitutionTree.hpp b/Indexing/HOLSubstitutionTree.hpp new file mode 100644 index 0000000000..b9861ea5e6 --- /dev/null +++ b/Indexing/HOLSubstitutionTree.hpp @@ -0,0 +1,160 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file TermSubstitutionTree.hpp + * Defines class TermSubstitutionTree. + */ + + +#ifndef __HOLSubstitutionTree__ +#define __HOLSubstitutionTree__ + +#if VHOL + + +#include "Forwards.hpp" +#include "SubstitutionTree.hpp" + +#include "Kernel/Renaming.hpp" + +namespace Indexing { + +/** A variant of substitution tree that supports non-splitting nodes */ +class HOLSubstitutionTree +: public SubstitutionTree +{ + +public: + class Subterm { + TermList _subterm; + bool _splittable; + public: + Subterm(TermList t, bool splittable) + : _subterm(t), _splittable(splittable) {} + + // dummy constructor needed for use in DHMap + Subterm(){} + + bool splittable() const { return _splittable; } + + TermList::Top top(){ + return _subterm.top(_splittable); + } + + TermList term() const { return _subterm; } + TermList* termPtr() { return &_subterm; } + + friend std::ostream& operator<<(std::ostream& out, Subterm const& self); + }; + + +private: + class SubtermPair + { + TermList* _t1; + TermList* _t2; + bool _t1Splittable; + bool _t2Splittable; + public: + SubtermPair(TermList* t1, bool t1s, TermList* t2, bool t2s) + : _t1(t1), _t2(t2), _t1Splittable(t1s), _t2Splittable(t2s) {} + + TermList* lhs() { return _t1; } + TermList* rhs() { return _t2; } + + bool lhsSplittable() { return _t1Splittable; } + bool rhsSplittable() { return _t2Splittable; } + + TermList::Top lhsTop() { return _t1->top(_t1Splittable); } + TermList::Top rhsTop() { return _t2->top(_t2Splittable); } + }; + + typedef DHMap HOLBindingMap; + + bool splittable(TermList t, bool topLevel = false){ + CALL("HOLSubstitutionTree::splittable"); + + if(t.isVar()) return true; + + if(t.isLambdaTerm() || t.head().isVar()) return false; + + auto sort = SortHelper::getResultSort(t.term()); + + if(env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION){ + if(sort.isArrowSort() || sort.isVar() || (sort.isBoolSort() && !topLevel)){ + return false; + } + } + return true; + } + +public: + + + void handle(TypedTermList const& key, LeafData ld, bool doInsert) override + { handleImplHol(key, ld, doInsert); } + + void handle(Literal* const& key, LeafData ld, bool doInsert) override + { handleImplHol(key, ld, doInsert); } + + template + void handleImplHol (Key const& key, LeafData ld, bool doInsert) + { + auto norm = Renaming::normalize(key); + Recycled bindings; + setSort(key, ld); + createHOLBindings(norm, /* reversed */ false, + [&](auto var, auto term) { + bindings->insert(var, term); + _nextVar = max(_nextVar, (int)var + 1); + }); + if (doInsert) higherOrderInsert(*bindings, ld); + else higherOrderRemove(*bindings, ld); + } + + void higherOrderInsert(HOLBindingMap& binding,LeafData ld); + void higherOrderRemove(HOLBindingMap& binding,LeafData ld); + + // TODO document + template + void createHOLBindings(TypedTermList term, bool reversed, BindingFunction bindSpecialVar) + { + bindSpecialVar(0, Subterm(term, splittable(term, true))); + bindSpecialVar(1, Subterm(term.sort(),true)); + } + + template + void createHOLBindings(Literal* lit, bool reversed, BindingFunction bindSpecialVar) + { + // equality is the only predicate + ASS(lit->isEquality()); + + TermList l0 = *lit->nthArgument(0); + TermList l1 = *lit->nthArgument(1); + + if (reversed) { + bindSpecialVar(1,Subterm(l0, splittable(l0, true)) ); + bindSpecialVar(0,Subterm(l1, splittable(l1, true)) ); + } else { + bindSpecialVar(0,Subterm(l0, splittable(l0, true)) ); + bindSpecialVar(1,Subterm(l1, splittable(l1, true)) ); + } + + auto sort = SortHelper::getEqualityArgumentSort(lit); + bindSpecialVar(2, Subterm(sort, true)); + } + +}; + +}; + +#endif + +#endif /* __TermSubstitutionTree__ */ diff --git a/Indexing/SubstitutionTree.cpp b/Indexing/SubstitutionTree.cpp index db6e9a8c05..a7d8a53a80 100644 --- a/Indexing/SubstitutionTree.cpp +++ b/Indexing/SubstitutionTree.cpp @@ -49,10 +49,9 @@ using namespace Indexing; * Initialise the substitution tree. * @since 16/08/2008 flight Sydney-San Francisco */ -SubstitutionTree::SubstitutionTree(Splittable* splittable) +SubstitutionTree::SubstitutionTree() : _nextVar(0) , _root(nullptr) - , _splittable(splittable) #if VDEBUG , _tag(false) #endif @@ -71,8 +70,6 @@ SubstitutionTree::~SubstitutionTree() CALL("SubstitutionTree::~SubstitutionTree"); ASS_EQ(_iterCnt,0); delete _root; - if(_splittable) - delete _splittable; } // SubstitutionTree::~SubstitutionTree /** @@ -129,223 +126,6 @@ struct BindingComparator } }; - -void SubstitutionTree::splittableInsert(BindingMap& binding,LeafData ld) -{ -#define DEBUG_INSERT(...) // DBG(__VA_ARGS__) - CALL("SubstitutionTree::splittableInsert"); - ASS_EQ(_iterCnt,0); - ASS(_splittable); - - auto pnode = &_root; - DEBUG_INSERT("insert: ", svBindings, " into ", *this) - - if(*pnode == 0) { - if (svBindings.isEmpty()) { - auto leaf = createLeaf(); - leaf->insert(std::move(ld)); - *pnode = leaf; - DEBUG_INSERT(0, "out: ", *this); - return; - } else { - *pnode=createIntermediateNode(svBindings.getOneKey()); - } - } - if(svBindings.isEmpty()) { - ASS((*pnode)->isLeaf()); - ensureLeafEfficiency(reinterpret_cast(pnode)); - static_cast(*pnode)->insert(ld); - DEBUG_INSERT("out: ", *this); - return; - } - - typedef BinaryHeap SplitRecordHeap; - static SplitRecordHeap unresolvedSplits; - unresolvedSplits.reset(); - - ASS((*pnode)); - ASS(!(*pnode)->isLeaf()); - -start: - -#if REORDERING - ASS(!(*pnode)->isLeaf() || !unresolvedSplits.isEmpty()); - bool canPostponeSplits=false; - if((*pnode)->isLeaf() || (*pnode)->algorithm()!=UNSORTED_LIST) { - canPostponeSplits=false; - } else { - UArrIntermediateNode* inode = static_cast(*pnode); - canPostponeSplits = inode->size()==1; - if(canPostponeSplits) { - unsigned boundVar=inode->childVar; - Node* child=inode->_nodes[0]; - bool removeProblematicNode=false; - if(svBindings.find(boundVar)) { - TermList term=svBindings.get(boundVar); - bool wouldDescendIntoChild = inode->childByTop(term.top(),false)!=0; - ASS_EQ(wouldDescendIntoChild, TermList::sameTop(term, child->term)); - if(!wouldDescendIntoChild) { - //if we'd have to perform all postponed splitting due to - //node with a single child, we rather remove that node - //from the tree and deal with the binding, it represented, - //later. - removeProblematicNode=true; - } - } else if(!child->term.isTerm() || child->term.term()->shared()) { - //We can remove nodes binding to special variables undefined in our branch - //of the tree, as long as we're sure, that during split resolving we put these - //binding nodes below nodes that define spec. variables they bind. - removeProblematicNode=true; - } else { - canPostponeSplits = false; - } - if(removeProblematicNode) { - unresolvedSplits.insert(UnresolvedSplitRecord(inode->childVar, child->term)); - child->term=inode->term; - *pnode=child; - inode->makeEmpty(); - delete inode; - goto start; - } - } - } - canPostponeSplits|=unresolvedSplits.isEmpty(); - if(!canPostponeSplits) { - - while(!unresolvedSplits.isEmpty()) { - UnresolvedSplitRecord urr=unresolvedSplits.pop(); - - Node* node=*pnode; - IntermediateNode* newNode = createIntermediateNode(node->term, urr.var); - node->term=urr.original; - - *pnode=newNode; - - Node** nodePosition=newNode->childByTop(node->term.top(), true); - ASS(!*nodePosition); - *nodePosition=node; - } - } -#endif - ASS(!(*pnode)->isLeaf()); - - IntermediateNode* inode = static_cast(*pnode); - ASS(inode); - - unsigned boundVar=inode->childVar; - TermList term=svBindings.get(boundVar); - svBindings.remove(boundVar); - - //Into pparent we store the node, we might be inserting into. - //So in the case we do insert, we might check whether this node - //needs expansion. - Node** pparent=pnode; - pnode=inode->childByTop(term.top(),true); - - if (*pnode == 0) { - BindingMap::Iterator svit(svBindings); - BinaryHeap remainingBindings; - while (svit.hasNext()) { - unsigned var; - TermList term; - svit.next(var, term); - remainingBindings.insert(Binding(var, term)); - } - while (!remainingBindings.isEmpty()) { - Binding b=remainingBindings.pop(); - IntermediateNode* inode = createIntermediateNode(term, b.var); - term=b.term; - - *pnode = inode; - pnode = inode->childByTop(term.top(),true); - } - Leaf* lnode=createLeaf(term); - *pnode=lnode; - lnode->insert(ld); - - ensureIntermediateNodeEfficiency(reinterpret_cast(pparent)); - DEBUG_INSERT("out: ", *this); - return; - } - - - TermList* tt = &term; - TermList* ss = &(*pnode)->term; - - ASS(TermList::sameTop(*ss, *tt)); - - - // ss is the term in node, tt is the term to be inserted - // ss and tt have the same top symbols but are not equal - // create the common subterm of ss,tt and an alternative node - Stack subterms(64); - for (;;) { - if (*tt!=*ss && TermList::sameTop(*ss,*tt)) { - // ss and tt have the same tops and are different, so must be non-variables - ASS(! ss->isVar()); - ASS(! tt->isVar()); - - Term* s = ss->term(); - Term* t = tt->term(); - - ASS(s->arity() > 0); - ASS(s->functor() == t->functor()); - - if (s->shared()) { - // create a shallow copy of s - s = Term::cloneNonShared(s); - ss->setTerm(s); - } - - ss = s->args(); - tt = t->args(); - if (ss->next()->isEmpty()) { - continue; - } - subterms.push(ss->next()); - subterms.push(tt->next()); - } else { - if (! TermList::sameTop(*ss,*tt)) { - unsigned x; - if(!ss->isSpecialVar()) { - x = _nextVar++; - #if REORDERING - unresolvedSplits.insert(UnresolvedSplitRecord(x,*ss)); - ss->makeSpecialVar(x); - #else - Node::split(pnode,ss,x); - #endif - } else { - x=ss->var(); - } - svBindings.set(x,*tt); - } - - if (subterms.isEmpty()) { - break; - } - tt = subterms.pop(); - ss = subterms.pop(); - if (! ss->next()->isEmpty()) { - subterms.push(ss->next()); - subterms.push(tt->next()); - } - } - } - - if (svBindings.isEmpty()) { - ASS((*pnode)->isLeaf()); - ensureLeafEfficiency(reinterpret_cast(pnode)); - Leaf* leaf = static_cast(*pnode); - leaf->insert(ld); - DEBUG_INSERT("out: ", *this); - return; - } - - goto start; -} - - /** * Insert an entry to the substitution tree. * @@ -442,7 +222,7 @@ void SubstitutionTree::insert(BindingMap& svBindings, LeafData ld) *pnode=newNode; - Node** nodePosition=newNode->childByTop(node->term.top(), true); + Node** nodePosition=newNode->childByTop(node->top(), true); ASS(!*nodePosition); *nodePosition=node; } @@ -787,7 +567,7 @@ void SubstitutionTree::IntermediateNode::loadChildren(NodeIterator children) while(children.hasNext()) { Node* ext=*children.next(); - Node** own=childByTop(ext->term.top(), true); + Node** own=childByTop(ext->top(), true); ASS(! *own); *own=ext; } @@ -851,15 +631,16 @@ bool SubstitutionTree::LeafIterator::hasNext() } void SubstitutionTree::Leaf::output(std::ostream& out, bool multiline, int indent) const -{ out << this->term; } +{ out << this->term << + (this->splittable() ? "" : " {NS}"); } void SubstitutionTree::IntermediateNode::output(std::ostream& out, bool multiline, int indent) const { // TODO const version of allChildren auto childIter = iterTraits(((IntermediateNode*)this)->allChildren()); if (!this->term.isEmpty()) { - out << this->term - << " ; "; + out << this->term << + (this->splittable() ? "" : " {NS}") << " ; "; } out << "S" << this->childVar << " -> "; diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 3a60b8cb4a..06bbce3c57 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -74,27 +74,6 @@ std::ostream& operator<<(std::ostream& out, OutputMultiline co template struct SubtitutionTreeConfig; -class Splittable { -public: - CLASS_NAME(Splittable); - USE_ALLOCATOR(Splittable); - - virtual ~Splittable(){} - - // we should never call this function for default implementation - virtual bool operator()(TermList t) = 0; -}; - -class HOLSplittable : public Splittable { -public: - CLASS_NAME(HOLSplittable); - USE_ALLOCATOR(HOLSplittable); - - bool operator()(TermList t) override { //TODO - return true; - } -}; - /** a counter that is compiled away in release mode */ struct Cntr { #if VDEBUG @@ -150,7 +129,7 @@ class SubstitutionTree CLASS_NAME(SubstitutionTree); USE_ALLOCATOR(SubstitutionTree); - SubstitutionTree(Splittable* splittable = 0); + SubstitutionTree(); SubstitutionTree(SubstitutionTree const&) = delete; SubstitutionTree& operator=(SubstitutionTree const& other) = delete; SubstitutionTree(SubstitutionTree&& other) @@ -158,7 +137,6 @@ class SubstitutionTree { std::swap(_nextVar, other._nextVar); std::swap(_root, other._root); - std::swap(_splittable, other._splittable); #if VDEBUG std::swap(_tag, other._tag); #endif @@ -281,6 +259,9 @@ class SubstitutionTree }; class Node { + protected: + bool canSplit; + public: friend std::ostream& operator<<(ostream& out, OutputMultiline const& self) { self.self.output(out, /* multiline = */ true, self.indent); return out; } @@ -289,11 +270,13 @@ class SubstitutionTree inline Node() { term.makeEmpty(); } inline - Node(TermList ts) : term(ts) { } + Node(TermList ts, bool splittable = true) : canSplit(splittable), term(ts) { } virtual ~Node(); /** True if a leaf node */ virtual bool isLeaf() const = 0; virtual bool isEmpty() const = 0; + + TermList::Top top() const { return term.top(canSplit); } /** * Return number of elements held in the node. * @@ -302,6 +285,10 @@ class SubstitutionTree virtual int size() const { NOT_IMPLEMENTED; } virtual NodeAlgorithm algorithm() const = 0; + + bool splittable() const { return canSplit; } + void setSplittable(bool b) { canSplit = b; } + /** * Remove all referenced structures without destroying them. * @@ -335,7 +322,8 @@ class SubstitutionTree /** Build a new intermediate node */ inline - IntermediateNode(TermList ts, unsigned childVar) : Node(ts), childVar(childVar) {} + IntermediateNode(TermList ts, unsigned childVar, bool splittable) : + Node(ts, splittable), childVar(childVar) {} inline bool isLeaf() const final override { return false; }; @@ -366,7 +354,7 @@ class SubstitutionTree * Remove all children of the node without destroying them. */ virtual void removeAllChildren() = 0; - + void destroyChildren(); void makeEmpty() final override @@ -392,7 +380,7 @@ class SubstitutionTree {} /** Build a new leaf */ inline - Leaf(TermList ts) : Node(ts) {} + Leaf(TermList ts, bool splittable) : Node(ts, splittable) {} inline bool isLeaf() const final override { return true; }; @@ -409,21 +397,18 @@ class SubstitutionTree class SListLeaf; class SetLeaf; static Leaf* createLeaf(); - static Leaf* createLeaf(TermList ts); + static Leaf* createLeaf(TermList ts, bool splittable = true); static void ensureLeafEfficiency(Leaf** l); static IntermediateNode* createIntermediateNode(unsigned childVar); - static IntermediateNode* createIntermediateNode(TermList ts, unsigned childVar); + static IntermediateNode* createIntermediateNode(TermList ts, unsigned childVar, bool splittable = true); static void ensureIntermediateNodeEfficiency(IntermediateNode** inode); struct IsPtrToVarNodeFn { bool operator()(Node** n) { - return (*n)->term.isVar() -#if VHOL - || (*n)->term.isPlaceholder() // treat placeholders exactly like variables -#endif - ; + // treat non-splittable nodes like variable nodes + return (*n)->term.isVar() || !(*n)->splittable(); } }; @@ -437,7 +422,8 @@ class SubstitutionTree _nodes[0]=0; } inline - UArrIntermediateNode(TermList ts, unsigned childVar) : IntermediateNode(ts, childVar), _size(0) + UArrIntermediateNode(TermList ts, unsigned childVar, bool splittable = true) + : IntermediateNode(ts, childVar, splittable), _size(0) { _nodes[0]=0; } @@ -488,7 +474,8 @@ class SubstitutionTree { public: SListIntermediateNode(unsigned childVar) : IntermediateNode(childVar) {} - SListIntermediateNode(TermList ts, unsigned childVar) : IntermediateNode(ts, childVar) {} + SListIntermediateNode(TermList ts, unsigned childVar, bool splittable = true) : + IntermediateNode(ts, childVar, splittable) {} ~SListIntermediateNode() { @@ -567,25 +554,26 @@ class SubstitutionTree if(t2.var()) { return GREATER; } -#if VHOL - if(env.property->higherOrder()){ - // always put placeholder directly after variables in SkipList - // so that IsPtrToVarNodeFn return true for placehodlers as well - bool t1IsPlaceholder = env.signature->isPlaceholder(t1.functor()); - bool t2IsPlaceholder = env.signature->isPlaceholder(t2.functor()); - if(t1IsPlaceholder && !t2IsPlaceholder) return LESS; - if(t2IsPlaceholder && !t1IsPlaceholder) return GREATER; + + if(t1.id()) { + if(t2.id()) { + return Int::compare(*t1.id(), *t2.id()); + } + return LESS; + } + if(t2.id()) { + return GREATER; } -#endif + return Int::compare(*t1.functor(), *t2.functor()); } static Comparison compare(Node* n1, Node* n2) - { return compare(n1->term.top(), n2->term.top()); + { return compare(n1->top(), n2->top()); } static Comparison compare(TermList::Top t1, Node* n2) - { return compare(t1, n2->term.top()); } + { return compare(t1, n2->top()); } }; typedef SkipList NodeSkipList; NodeSkipList _nodes; @@ -637,24 +625,10 @@ class SubstitutionTree void setSort(TypedTermList const& term, LeafData& ld) { - // in higher-order case we replace certain subterms with so-called - // placeholders, so assertion below doesn't hold in general - ASS(ld.term == term -#if VHOL - || env.property->higherOrder() -#endif - ); + ASS(ld.term == term); ld.sort = term.sort(); } - void setSort(TermList const& term, LeafData& ld) - { - ASS_EQ(ld.term, term) - if (term.isTerm()) { - ld.sort = SortHelper::getResultSort(term.term()); - } - } - void setSort(Literal* literal, LeafData &ld) { @@ -665,8 +639,14 @@ class SubstitutionTree } + virtual void handle(TypedTermList const& key, LeafData ld, bool doInsert) + { handleImpl(key, ld, doInsert); } + + virtual void handle(Literal* const& key, LeafData ld, bool doInsert) + { handleImpl(key, ld, doInsert); } + template - void handle(Key const& key, LeafData ld, bool doInsert) + void handleImpl(Key const& key, LeafData ld, bool doInsert) { auto norm = Renaming::normalize(key); Recycled bindings; @@ -680,20 +660,14 @@ class SubstitutionTree else remove(*bindings, ld); } -private: +protected: void insert(BindingMap& binding,LeafData ld); void remove(BindingMap& binding,LeafData ld); - // To avoid slowing down / modifying standard insertion - // and remove, we define functions below - void splittableInsert(BindingMap& binding,LeafData ld); - void splittableRemove(BindingMap& binding,LeafData ld); - /** Number of the next variable */ int _nextVar; Node* _root; - Splittable* _splittable; #if VDEBUG bool _tag; #endif diff --git a/Indexing/SubstitutionTree_Nodes.cpp b/Indexing/SubstitutionTree_Nodes.cpp index de1135fc4f..5412c71f44 100644 --- a/Indexing/SubstitutionTree_Nodes.cpp +++ b/Indexing/SubstitutionTree_Nodes.cpp @@ -36,7 +36,7 @@ class SubstitutionTree::UListLeaf inline UListLeaf() : _children(0), _size(0) {} inline - UListLeaf(TermList ts) : Leaf(ts), _children(0), _size(0) {} + UListLeaf(TermList ts, bool splittable = true) : Leaf(ts, splittable), _children(0), _size(0) {} ~UListLeaf() { LDList::destroy(_children); @@ -82,7 +82,7 @@ class SubstitutionTree::SListLeaf { public: SListLeaf() {} - SListLeaf(TermList ts) : Leaf(ts) {} + SListLeaf(TermList ts, bool splittable = true) : Leaf(ts, splittable) {} static SListLeaf* assimilate(Leaf* orig); @@ -123,9 +123,9 @@ SubstitutionTree::Leaf* SubstitutionTree::createLeaf() return new UListLeaf(); } -SubstitutionTree::Leaf* SubstitutionTree::createLeaf(TermList ts) +SubstitutionTree::Leaf* SubstitutionTree::createLeaf(TermList ts, bool splittable) { - return new UListLeaf(ts); + return new UListLeaf(ts, splittable); } SubstitutionTree::IntermediateNode* SubstitutionTree::createIntermediateNode(unsigned childVar) @@ -134,10 +134,10 @@ SubstitutionTree::IntermediateNode* SubstitutionTree::createIntermediateNode(uns return new UArrIntermediateNode(childVar); } -SubstitutionTree::IntermediateNode* SubstitutionTree::createIntermediateNode(TermList ts, unsigned childVar) +SubstitutionTree::IntermediateNode* SubstitutionTree::createIntermediateNode(TermList ts, unsigned childVar, bool splittable) { CALL("SubstitutionTree::createIntermediateNode/3"); - return new UArrIntermediateNode(ts, childVar); + return new UArrIntermediateNode(ts, childVar, splittable); } void SubstitutionTree::IntermediateNode::destroyChildren() @@ -164,9 +164,9 @@ void SubstitutionTree::IntermediateNode::destroyChildren() SubstitutionTree::Node** SubstitutionTree::UArrIntermediateNode::childByTop(TermList::Top t, bool canCreate) { CALL("SubstitutionTree::UArrIntermediateNode::childByTop"); - + for(int i=0;i<_size;i++) { - if(t == _nodes[i]->term.top()) { + if(t == _nodes[i]->top()) { return &_nodes[i]; } } @@ -184,7 +184,7 @@ void SubstitutionTree::UArrIntermediateNode::remove(TermList::Top t) CALL("SubstitutionTree::UArrIntermediateNode::remove"); for(int i=0;i<_size;i++) { - if(t == _nodes[i]->term.top()) { + if(t == _nodes[i]->top()) { _size--; _nodes[i]=_nodes[_size]; _nodes[_size]=0; @@ -203,7 +203,7 @@ SubstitutionTree::IntermediateNode* SubstitutionTree::SListIntermediateNode { CALL("SubstitutionTree::SListIntermediateNode::assimilate"); - IntermediateNode* res = new SListIntermediateNode(orig->term, orig->childVar); + IntermediateNode* res = new SListIntermediateNode(orig->term, orig->childVar, orig->splittable()); res->loadChildren(orig->allChildren()); orig->makeEmpty(); delete orig; @@ -218,7 +218,7 @@ SubstitutionTree::SListLeaf* SubstitutionTree::SListLeaf::assimilate(Leaf* orig) { CALL("SubstitutionTree::SListLeaf::assimilate"); - SListLeaf* res=new SListLeaf(orig->term); + SListLeaf* res=new SListLeaf(orig->term, orig->splittable()); res->loadChildren(orig->allChildren()); orig->makeEmpty(); delete orig; diff --git a/Indexing/TermSubstitutionTree.cpp b/Indexing/TermSubstitutionTree.cpp index 71fd7ec765..0b66c872d5 100644 --- a/Indexing/TermSubstitutionTree.cpp +++ b/Indexing/TermSubstitutionTree.cpp @@ -17,6 +17,10 @@ #include "Kernel/Term.hpp" #include "TermSubstitutionTree.hpp" +#if VHOL +#include "Indexing/HOLSubstitutionTree.hpp" +#endif + namespace Indexing { @@ -25,8 +29,12 @@ using namespace Kernel; TermSubstitutionTree::TermSubstitutionTree(bool extra) -: SubstitutionTree() -, _extra(extra) +: _extra(extra) +#if VHOL + ,_tree(env.property->higherOrder() ? new HOLSubstitutionTree() : new SubstitutionTree()) +#else + ,_tree(new SubstitutionTree()) +#endif { } } // namespace Indexing diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index 2ab5e56551..57fefb2310 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -27,7 +27,10 @@ #include "Index.hpp" #include "TermIndexingStructure.hpp" #include "SubstitutionTree.hpp" + +#if VHOL #include "Kernel/HOLUnification.hpp" +#endif namespace Indexing { @@ -40,11 +43,16 @@ namespace Indexing { /** A wrapper class around SubstitutionTree that makes it usable as a TermIndexingStructure */ class TermSubstitutionTree -: public TermIndexingStructure, SubstitutionTree +: public TermIndexingStructure { using AbstractingAlgo = UnificationAlgorithms::AbstractingUnification; using RobAlgo = UnificationAlgorithms::RobUnification; + using LeafData = SubstitutionTree::LeafData; + using FastInstancesIterator = SubstitutionTree::FastInstancesIterator; + using FastGeneralizationsIterator = SubstitutionTree::FastGeneralizationsIterator; +#if VHOL using HOLAlgo = UnificationAlgorithms::HOLUnification; +#endif public: CLASS_NAME(TermSubstitutionTree); @@ -78,29 +86,22 @@ class TermSubstitutionTree { handleTerm(t, LeafData(cls, lit, t, trm), /* insert */ true); } bool generalizationExists(TermList t) override - { return t.isVar() ? false : SubstitutionTree::generalizationExists(TypedTermList(t.term())); } + { return t.isVar() ? false : _tree->generalizationExists(TypedTermList(t.term())); } #if VDEBUG - virtual void markTagged() override { SubstitutionTree::markTagged();} + virtual void markTagged() override { _tree->markTagged();} virtual void output(std::ostream& out) const final override { out << *this; } #endif private: void handleTerm(TypedTermList tt, LeafData ld, bool insert) - { -#if VHOL - if(env.property->higherOrder()){ - // replace higher-order terms with placeholder constants - tt = TypedTermList(ToPlaceholders().replace(tt), tt.sort()); - } -#endif - SubstitutionTree::handle(tt, ld, insert); } + { _tree->handle(tt, ld, insert); } template auto getResultIterator(TypedTermList query, bool retrieveSubstitutions, Args... args) { - return iterTraits(SubstitutionTree::iterator(query, retrieveSubstitutions, /* reversed */ false, std::move(args)...)) + return iterTraits(_tree->iterator(query, retrieveSubstitutions, /* reversed */ false, std::move(args)...)) .map([this](auto qr) { return tQueryRes( _extra ? qr.data->extraTerm : qr.data->term, @@ -109,6 +110,7 @@ class TermSubstitutionTree //higher-order concerns bool _extra; + unique_ptr _tree; friend std::ostream& operator<<(std::ostream& out, TermSubstitutionTree const& self) { return out << (SubstitutionTree const&) self; } @@ -132,19 +134,19 @@ class TermSubstitutionTree static auto uwa = env.options->unificationWithAbstraction(); static bool fixedPointIteration = env.options->unificationWithAbstractionFixedPointIteration(); - return pvi(getResultIterator>(t, true, MismatchHandler(uwa), fixedPointIteration)); + return pvi(getResultIterator>(t, true, MismatchHandler(uwa), fixedPointIteration)); } #if VHOL TermQueryResultIterator getHOLUnifiers(TypedTermList t) final override { TypedTermList tp = TypedTermList(ToPlaceholders().replace(t), t.sort()); - return pvi(getResultIterator>(tp, false, t)); + return pvi(getResultIterator>(tp, false, t)); } #endif TermQueryResultIterator getUnifications(TypedTermList t, bool retrieveSubstitutions) override - { return pvi(getResultIterator>(t, retrieveSubstitutions)); } + { return pvi(getResultIterator>(t, retrieveSubstitutions)); } }; }; diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index c752bad03f..959bc58b63 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -271,8 +271,9 @@ class UnificationConstraint UnificationConstraint() {} CLASS_NAME(UnificationConstraint) USE_ALLOCATOR(UnificationConstraint) - // UnificationConstraint(UnificationConstraint&&) = default; - // UnificationConstraint& operator=(UnificationConstraint&&) = default; + UnificationConstraint(UnificationConstraint&&) = default; + UnificationConstraint& operator=(UnificationConstraint&&) = default; + auto asTuple() const -> decltype(auto) { return std::tie(_t1, _t2); } IMPL_COMPARISONS_FROM_TUPLE(UnificationConstraint); IMPL_HASH_FROM_TUPLE(UnificationConstraint); diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 220a8d257e..e2174d2301 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -248,7 +248,12 @@ TermList::Top TermList::top(bool splittable) const { CALL("TermList::top"); - if(!splittable) return TermList::Top::nonsplittable(term()->getId()); + if(!splittable){ + ASS(isTerm()); + ASS(term()->shared()); // TODO is this valid??? + + return TermList::Top::nonsplittable(term()->getId()); + } return isTerm() ? TermList::Top::functor(term()->functor()) : TermList::Top::var(var()); diff --git a/Test/SyntaxSugar.hpp b/Test/SyntaxSugar.hpp index 71c501b49d..b0ca7a142d 100644 --- a/Test/SyntaxSugar.hpp +++ b/Test/SyntaxSugar.hpp @@ -127,6 +127,8 @@ #define DECL_HOL_VAR(x, i, s) auto x = TermSugar(TermList::var(i), s); #define DECL_VAR_SORTED(x, i, s) auto x = TermSugar(TermList::var(i), s); +#define DECL_BOOL_SORT(b) auto b = SortSugar(AtomicSort::boolSort()); + #define DECL_DEFAULT_VARS \ __ALLOW_UNUSED( \ DECL_VAR(x, 0) \ diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 053089d745..206a87e9df 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -826,6 +826,68 @@ TEST_FUN(higher_order3) }); } +// AYB not a real test, but if run with debugging info +// in HOLSubstitutionTree, very useful for ensuring +// that insertions and deletions are taking place correctly +/*TEST_FUN(higher_order_tree) +{ + env.property->forceHigherOrder(); + + env.options->set("pretty_hol_printing","pretty"); + env.options->set("func_ext", "abstraction"); + auto index = getTermIndex(); + + DECL_DEFAULT_SORT_VARS + DECL_SORT(srt) + + DECL_CONST(a, arrow(srt,srt)) + DECL_CONST(b, srt) + DECL_CONST(d, arrow(srt, arrow(srt, srt))) + DECL_CONST(e, srt) + DECL_CONST(f, arrow(arrow(srt,srt), srt)) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(y, 1, arrow(srt,srt)) + DECL_HOL_VAR(z, 2, arrow(srt,srt)) + DECL_BOOL_SORT(bools); + DECL_CONST(p, arrow(srt,bools)) + DECL_CONST(g, arrow(bools,srt)) + + + auto t = ap(f, lam(x, ap(a, x))); + t = toDBs(t); + auto t2 = ap(f,lam(x, b)); + t2 = toDBs(t2); + + index->insert(t, 0, 0); + index->insert(t2, 0, 0); + + index->remove(t2, 0, 0); + index->remove(t, 0, 0); + + index->insert(ap(y,b), 0, 0); + index->insert(ap(y, ap(a,b)), 0, 0); + index->insert(ap(z, ap(a,b)), 0, 0); + + index->remove(ap(y,b), 0, 0); + index->remove(ap(y, ap(a,b)), 0, 0); + index->remove(ap(z, ap(a,b)), 0, 0); + + index->insert(ap(f,ap(d,b)), 0, 0); + index->insert(ap(f,ap(d,e)), 0, 0); + + index->remove(ap(f,ap(d,b)), 0, 0); + index->remove(ap(f,ap(d,e)), 0, 0); + + index->insert(ap(p,b), 0, 0); + index->insert(ap(p,e), 0, 0); + + index->remove(ap(p,b), 0, 0); + index->remove(ap(p,e), 0, 0); + + index->insert(ap(g, ap(p,b)), 0, 0); + index->insert(ap(g, ap(p,e)), 0, 0); +}*/ + #endif static const int NORM_QUERY_BANK=2; From ddc3b26ce3e7874d6af975ec7b70dec0693b0ec5 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 11 Apr 2023 12:21:27 +0100 Subject: [PATCH 055/210] starting work on unification with non-splittable nodes --- Indexing/SubstitutionTree.hpp | 2 +- Kernel/HOLUnification.cpp | 2 +- Kernel/HOLUnification.hpp | 2 +- Kernel/MismatchHandler.hpp | 17 ++--------------- 4 files changed, 5 insertions(+), 18 deletions(-) diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 06bbce3c57..94597ca3b2 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -1414,7 +1414,7 @@ class SubstitutionTree //n is proper node, not a root recording=true; _subst->bdRecord(bd); - success = _algo.associate(_svStack->top(),n->term,bd,&*_subst); + success = _algo.associate(_svStack->top(),n->term,n->splittable(),&*_subst); } if(success) { if(n->isLeaf()) { diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index a5a854b960..d7059924c6 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -39,7 +39,7 @@ SubstIterator HOLUnification::postprocess(RobSubstitution* sub, TermList t) return pvi(getSingletonIterator(sub)); } -bool HOLUnification::associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub) +bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub) { CALL("HOLUnification::associate"); TermList query(specialVar, /* special */ true); diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index 21fa389405..c1e49c151b 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -49,7 +49,7 @@ class HOLUnification { HOLUnification(TermList query) : _origQuery(query) {} bool unifyWithPlaceholders(TermList t1, unsigned bank1, TermList t2, unsigned bank2, RobSubstitution* sub); - bool associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub); + bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub); SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck = false); SubstIterator postprocess(RobSubstitution*, TermList t); diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 5fdaa9a219..2c40e37cb6 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -120,7 +120,7 @@ class RobUnification { public: // to be used for tree calls - bool associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub) + bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub) { CALL("RobUnification::associate"); TermList query(specialVar, /* special */ true); @@ -165,7 +165,7 @@ class AbstractingUnification { SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck = false); SubstIterator postprocess(RobSubstitution* sub, TermList t); - bool associate(unsigned specialVar, TermList node, BacktrackData& bd, RobSubstitution* sub) + bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub) { CALL("AbstractingUnification::associate"); @@ -173,19 +173,6 @@ class AbstractingUnification { return unify(query, Indexing::QUERY_BANK, node, Indexing::NORM_RESULT_BANK, sub); } - //RobSubstitution& subs(){ return *_subs; } - - /*Option fixedPointIteration() - { - if (_result->isNone()) { - *_result = some(bool(fixedPointIteration())); - if (_unif->isRecording()) { - _unif->bdGet().addClosure([res = _result]() { *res = {}; }); - } - } - return someIf(**_result, [&](){ return _unif; }); - }*/ - bool usesUwa() const { return _uwa.mode() != Options::UnificationWithAbstraction::OFF; } }; From 1b4ad3b114867b48fa7c030787b0570113661ba0 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 13 Apr 2023 12:35:50 +0100 Subject: [PATCH 056/210] working on HOL unification. need to add many unit tests to ensure that things working as expected --- Indexing/SubstitutionTree.cpp | 3 +- Indexing/SubstitutionTree.hpp | 7 +- Indexing/TermSubstitutionTree.hpp | 7 +- Kernel/HOLUnification.cpp | 170 +++++++++++++++++++--- Kernel/HOLUnification.hpp | 24 +-- Kernel/MismatchHandler.cpp | 2 +- Kernel/MismatchHandler.hpp | 4 +- Kernel/RobSubstitution.cpp | 21 ++- Kernel/RobSubstitution.hpp | 6 +- UnitTests/tUnificationWithAbstraction.cpp | 46 ++++-- 10 files changed, 234 insertions(+), 56 deletions(-) diff --git a/Indexing/SubstitutionTree.cpp b/Indexing/SubstitutionTree.cpp index a7d8a53a80..5ba0430fda 100644 --- a/Indexing/SubstitutionTree.cpp +++ b/Indexing/SubstitutionTree.cpp @@ -631,7 +631,8 @@ bool SubstitutionTree::LeafIterator::hasNext() } void SubstitutionTree::Leaf::output(std::ostream& out, bool multiline, int indent) const -{ out << this->term << +{ + out << this->term << (this->splittable() ? "" : " {NS}"); } void SubstitutionTree::IntermediateNode::output(std::ostream& out, bool multiline, int indent) const diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 94597ca3b2..bc0a14e972 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -1301,9 +1301,8 @@ class SubstitutionTree normalizer.normalizeVariables(ld->literal); } else { normalizer.normalizeVariables(ld->term); - if (ld->sort.isNonEmpty()) { - normalizer.normalizeVariables(ld->sort); - } + ASS (ld->sort.isNonEmpty()); + normalizer.normalizeVariables(ld->sort); } ASS(_clientBacktrackData.isEmpty()); @@ -1318,7 +1317,7 @@ class SubstitutionTree // the single unifier into an iterator // For UWA, if fixed point iteration has been chosen, this is carried out // For HOL, a set of HOL unifiers are returned - SubstIterator substs = _algo.postprocess(&*_subst, ld->term); + SubstIterator substs = _algo.postprocess(&*_subst); return pvi(iterTraits(substs).map([ld](RobSubstitution* subst){ return QueryResult(ld, ResultSubstitution::fromSubstitution(subst, QUERY_BANK, RESULT_BANK)); diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index 57fefb2310..95b7b09e43 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -113,9 +113,9 @@ class TermSubstitutionTree unique_ptr _tree; friend std::ostream& operator<<(std::ostream& out, TermSubstitutionTree const& self) - { return out << (SubstitutionTree const&) self; } + { return out << *self._tree; } friend std::ostream& operator<<(std::ostream& out, OutputMultiline const& self) - { return out << multiline((SubstitutionTree const&) self.self, self.indent); } + { return out << multiline(*self.self._tree, self.indent); } //auto postproUwa(TypedTermList t, Options::UnificationWithAbstraction uwa) //{ return iterTraits(getResultIterator>(t, /* retrieveSubstitutions */ true, MismatchHandler(uwa))) @@ -140,8 +140,7 @@ class TermSubstitutionTree #if VHOL TermQueryResultIterator getHOLUnifiers(TypedTermList t) final override { - TypedTermList tp = TypedTermList(ToPlaceholders().replace(t), t.sort()); - return pvi(getResultIterator>(tp, false, t)); + return pvi(getResultIterator>(t, true)); } #endif diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index d7059924c6..08021bc411 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -16,6 +16,7 @@ #if VHOL #include "Kernel/HOLUnification.hpp" +#include "Kernel/ApplicativeHelper.hpp" namespace Kernel { @@ -30,10 +31,11 @@ SubstIterator HOLUnification::unifiers(TermList t1, int index1, TermList t2, int return SubstIterator::getEmpty(); } -SubstIterator HOLUnification::postprocess(RobSubstitution* sub, TermList t) +SubstIterator HOLUnification::postprocess(RobSubstitution* sub) { CALL("HOLUnification::postprocess"); - ASS(!_origQuery.isEmpty()); + + cout << *sub << endl; // TODO dummy implementation return pvi(getSingletonIterator(sub)); @@ -42,28 +44,124 @@ SubstIterator HOLUnification::postprocess(RobSubstitution* sub, TermList t) bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub) { CALL("HOLUnification::associate"); + TermList query(specialVar, /* special */ true); - return unifyWithPlaceholders(query, QUERY_BANK, node, NORM_RESULT_BANK, sub); + return unifyTreeTerms(query, QUERY_BANK, node, NORM_RESULT_BANK, splittable, sub); } -bool HOLUnification::unifyWithPlaceholders(TermList t1, unsigned bank1, TermList t2, unsigned bank2, RobSubstitution* sub){ +bool HOLUnification::unifyTreeTerms(TermList t1, unsigned bank1, TermList t2, unsigned bank2, bool splittable, RobSubstitution* sub){ CALL("HOLUnification::unifyWithPlaceholders"); - return unify(TermSpec(t1,bank1), TermSpec(t2,bank2), sub); + return unify(TermSpec(t1,bank1), TermSpec(t2,bank2), splittable, sub); +} + +// TODO consider aadding a check for loose De Bruijn indices +// see E prover code by petar /TERMS/cte_fixpoint_unif.c +#define DEBUG_FP_UNIFY(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) +HOLUnification::OracleResult HOLUnification::fixpointUnify(VarSpec var, const TermSpec& t, RobSubstitution* sub) +{ + CALL("HOLUnification::fixpointUnify"); + + struct TermSpecFP { + TermSpec t; + bool underFlex; + }; + + BetaNormaliser bn; + EtaNormaliser en; + + // TODO does oder matter between eta and beta normalistion? + bool tIsLambda = bn.normalise(en.normalise(t.toTerm(*sub))).isLambdaTerm(); + VarSpec toFind = sub->root(var); + TermSpec ts = sub->derefBound(t).clone(); + if(ts.isVar()) { + DEBUG_FP_UNIFY(1, ".fp binding(", toFind, " -> ", ts, ")") + sub->bind(toFind, ts.clone()); + return OracleResult::SUCCESS; + } + + + typedef DHSet EncounterStore; + Recycled encountered; + Recycled> todo; + todo->push(TermSpecFP { .t = t.clone(), .underFlex = false }); + + while (todo->isNonEmpty()){ + auto ts = todo->pop(); + TermList trm = ts.t.toTerm(*sub); + int index = ts.t.index(); + + TermList head; + TermStack args; + + ApplicativeHelper::getHeadAndArgs(trm, head, args); + + if (head.isVar()) { + VarSpec tvar = sub->root(VarSpec(head.var(), index)); + if(tvar == toFind) { + if(ts.underFlex || (tIsLambda && args.size())){ + sub->pushConstraint(UnificationConstraint(TermSpec(var), ts.t.clone())); + return OracleResult::OUT_OF_FRAGMENT; + } else { + return OracleResult::FAILURE; + } + } else if(!encountered->find(tvar)) { + TermSpec dtvar = sub->derefBound(TermSpec(tvar)).clone(); + if(!dtvar.isVar()) { + encountered->insert(tvar); + todo->push(TermSpecFP { .t = std::move(dtvar), .underFlex = ts.underFlex }); + } + } + + } else { + Term* term = head.term(); + // this is a bit nasty. + // if we know that the original variable is a term var + // we wouldn't need to iterate through sort arguments + // sadly, that is not the case ... + for(unsigned i = 0; i < term->arity(); i++){ + TermSpec spec((*term)[i], index); + todo->push(TermSpecFP { .t = std::move(spec), .underFlex = ts.underFlex} ); + } + } + + bool argsUnderFlex = head.isVar() ? true : ts.underFlex; + + for(unsigned i = 0; i < args.size(); i++){ + TermSpec spec(args[i], index); + todo->push(TermSpecFP { .t = std::move(spec), .underFlex = argsUnderFlex} ); + } + } + + DEBUG_FP_UNIFY(1, ".fp binding(", toFind, " -> ", ts, ")") + sub->bind(toFind, ts.clone()); + return OracleResult::SUCCESS; } + #define DEBUG_UNIFY(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) -bool HOLUnification::unify(TermSpec t1, TermSpec t2, RobSubstitution* sub) +bool HOLUnification::unify(TermSpec t1, TermSpec t2, bool splittable, RobSubstitution* sub) { CALL("HOLUnification::unify"); - DEBUG_UNIFY(1, ".unify(", t1, ",", t2, ")") + DEBUG_UNIFY(1, ".unify(", t1, ",", t2, (splittable ? "" : "{NS}"), ")") if(t1 == t2) { return true; } auto impl = [&]() -> bool { + TermList t1t = t1.toTerm(*sub); + TermList t1thead = t1t.head(); + + // Node term and query term must have the same type. Hence we do not + // to check for type of query. We can rely on the !splittable check + if(!t1t.isVar() && (t1thead.isVar() || t1thead.isLambdaTerm() || !splittable)) { + // create top level constraint + sub->pushConstraint(UnificationConstraint(t1.clone(), t2.clone())); + return true; + } + Recycled> toDo; toDo->push(UnificationConstraint(t1.clone(), t2.clone())); @@ -72,10 +170,18 @@ bool HOLUnification::unify(TermSpec t1, TermSpec t2, RobSubstitution* sub) Recycled> encountered; auto pushTodo = [&](auto pair) { - if (!encountered->find(pair)) { - encountered->insert(pair.clone()); - toDo->push(std::move(pair)); - } + if (!encountered->find(pair)) { + encountered->insert(pair.clone()); + toDo->push(std::move(pair)); + } + }; + + auto sortCheck = [](auto& t) { + if(env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION && + (t.isNormalVar() || t.isArrowSort() || t.isBoolSort())){ + return true; + } + return false; }; while (toDo->isNonEmpty()) { @@ -83,20 +189,46 @@ bool HOLUnification::unify(TermSpec t1, TermSpec t2, RobSubstitution* sub) auto& dt1 = x.lhs().deref(sub); auto& dt2 = x.rhs().deref(sub); - if (dt1 == dt2 || dt1.isPlaceholder() || dt2.isPlaceholder()) { + if (dt1 == dt2) { // do nothing - // we want unification to pass in these cases - } else if(dt1.isVar() && !sub->occurs(dt1.varSpec(), dt2)) { - sub->bind(dt1.varSpec(), dt2.clone()); - } else if(dt2.isVar() && !sub->occurs(dt2.varSpec(), dt1)) { - sub->bind(dt2.varSpec(), dt1.clone()); + } else if(dt1.isVar()) { + if(fixpointUnify(dt1.varSpec(), dt2, sub) == OracleResult::FAILURE) + return false; + } else if(dt2.isVar()) { + if(fixpointUnify(dt2.varSpec(), dt1, sub) == OracleResult::FAILURE) + return false; } else if(dt1.isTerm() && dt2.isTerm() && dt1.functor() == dt2.functor()) { - for (auto c : dt1.allArgs().zip(dt2.allArgs())) { - pushTodo(UnificationConstraint(std::move(c.first), std::move(c.second))); + if(dt1.isApplication()){ + ASS(dt2.isApplication()); + TermSpec dt1s1 = dt1.typeArg(0); + TermSpec dt2s1 = dt2.typeArg(0); + TermSpec dt1t2 = dt1.termArg(1); + TermSpec dt2t2 = dt2.termArg(1); + TermList dt1t2head = dt1t2.head(sub); + TermList dt2t2head = dt2t2.head(sub); + pushTodo(UnificationConstraint(dt1s1.clone(), dt2s1.clone())); + pushTodo(UnificationConstraint(dt1.typeArg(1).clone(), dt2.typeArg(1).clone())); + pushTodo(UnificationConstraint(dt1.termArg(0).clone(), dt2.termArg(0).clone())); + + // Not sure the logic below is right. Things get very complicated because + // the sorts can be special variables. I think what we have below is an + // over approximation, but I am not 100% + if(sortCheck(dt1s1) || dt1t2head.isVar() || dt1t2head.isLambdaTerm() || + sortCheck(dt2s1) || dt2t2head.isVar() || dt2t2head.isLambdaTerm() ) { + sub->pushConstraint(UnificationConstraint(dt1t2.clone(), dt2t2.clone())); + } else { + pushTodo(UnificationConstraint(std::move(dt1t2), std::move(dt2t2))); + } + } else { + for (auto c : dt1.allArgs().zip(dt2.allArgs())) { + pushTodo(UnificationConstraint(std::move(c.first), std::move(c.second))); + } } } else { + // head symbol clash at first-order position + // can be no unifier fail return false; } } diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index c1e49c151b..b3317009a1 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -38,20 +38,26 @@ namespace UnificationAlgorithms { class HOLUnification { - // when this class is used for tree unification the field - // below holds the original query before higher-order subterms have - // been replaced by placeholders - TermList _origQuery; - bool unify(TermSpec t1, TermSpec t2, RobSubstitution* sub); + + bool unify(TermSpec t1, TermSpec t2, bool splittable, RobSubstitution* sub); + + // TODO if we implement solid fragment, this will not work... + enum OracleResult + { + SUCCESS=1, + FAILURE=2, + OUT_OF_FRAGMENT=3 + }; + + OracleResult fixpointUnify(VarSpec var, const TermSpec& t2, RobSubstitution* sub); public: - HOLUnification() { _origQuery.makeEmpty(); } - HOLUnification(TermList query) : _origQuery(query) {} + HOLUnification() { } - bool unifyWithPlaceholders(TermList t1, unsigned bank1, TermList t2, unsigned bank2, RobSubstitution* sub); + bool unifyTreeTerms(TermList t1, unsigned bank1, TermList t2, unsigned bank2, bool splittable , RobSubstitution* sub); bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub); SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck = false); - SubstIterator postprocess(RobSubstitution*, TermList t); + SubstIterator postprocess(RobSubstitution*); // method used to decide whether to return all children of a node during tree // traversal or only the children with same top diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index 0d7e8500cc..d4a493bc79 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -265,7 +265,7 @@ SubstIterator AbstractingUnification::unifiers(TermList t1, int index1, TermList return success ? pvi(getSingletonIterator(sub)) : SubstIterator::getEmpty(); } -SubstIterator AbstractingUnification::postprocess(RobSubstitution* sub, TermList t) +SubstIterator AbstractingUnification::postprocess(RobSubstitution* sub) { CALL("AbstractingUnification::postprocess"); diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 2c40e37cb6..2a011426b8 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -140,7 +140,7 @@ class RobUnification { // function is called when in the leaf of a substitution tree // during unification. t is the term stored in the leaf - SubstIterator postprocess(RobSubstitution* sub, TermList t){ + SubstIterator postprocess(RobSubstitution* sub){ CALL("RobUnification::postprocess"); // sub is a unifier of query and leaf term t, return it @@ -163,7 +163,7 @@ class AbstractingUnification { bool unify(TermSpec l, TermSpec r, bool& progress, RobSubstitution* sub); bool fixedPointIteration(RobSubstitution* sub); SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck = false); - SubstIterator postprocess(RobSubstitution* sub, TermList t); + SubstIterator postprocess(RobSubstitution* sub); bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub) { diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 37aecdac19..73867bacc5 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -120,9 +120,26 @@ unsigned TermSpec::functor() const [](OldTermSpec const& self) { return self.term.term()->functor(); }); } #if VHOL - bool TermSpec::isPlaceholder() const + bool TermSpec::isApplication() const { return _self.match([](Appl const& a) { return false; }, - [](OldTermSpec const& self) { return self.term.isPlaceholder(); }); } + [](OldTermSpec const& self) { return self.term.isApplication(); }); } + + // TODO consider dereference before this check as a term may not have a var head after dereferencing + TermList TermSpec::head(RobSubstitution* s) const + { return _self.match([&](Appl const& a) { ASSERTION_VIOLATION; return toTerm(*s); }, + [&](OldTermSpec const& self) { return toTerm(*s).head(); }); } + + bool TermSpec::isArrowSort() + { return _self.match([](Appl const& a) { return false; }, + [](OldTermSpec& self) { return self.term.isArrowSort(); }); } + + bool TermSpec::isBoolSort() + { return _self.match([](Appl const& a) { return false; }, + [](OldTermSpec& self) { return self.term.isBoolSort(); }); } + + int TermSpec::index() const + { return _self.match([](Appl const& a) { ASSERTION_VIOLATION; return -1; }, + [](OldTermSpec const& self) { return self.index; }); } #endif unsigned TermSpec::nTypeArgs() const diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 959bc58b63..1146ec157c 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -229,7 +229,11 @@ class TermSpec unsigned functor() const; #if VHOL - bool isPlaceholder() const; + bool isApplication() const; + TermList head(RobSubstitution* s) const; + bool isArrowSort(); + bool isBoolSort(); + int index() const; #endif unsigned nTypeArgs() const;//{ return derefTerm().term()->numTypeArguments(); } diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 206a87e9df..2e764191de 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -126,14 +126,15 @@ void checkLiteralMatches(LiteralSubstitutionTree& index, Literal* lit, Stack -void checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Stack expected, bool applySub, F unifFun) +void checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Stack expected, F unifFun) { CALL("checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Stack expected, F unifFun)") + Stack is; for (auto qr : iterTraits(unifFun(index, term))) { is.push(TermUnificationResultSpec { - .querySigma = applySub ? qr.unifier->apply(term, /* result */ QUERY_BANK) : term, - .resultSigma = applySub ? qr.unifier->apply(qr.term, /* result */ RESULT_BANK) : qr.term, + .querySigma = qr.unifier->apply(term, /* result */ QUERY_BANK) , + .resultSigma = qr.unifier->apply(qr.term, /* result */ RESULT_BANK) , .constraints = *qr.unifier->getConstraints(), }); } @@ -160,14 +161,14 @@ void checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Sta void checkTermMatches(TermSubstitutionTree& index, TypedTermList term, Stack expected) { - return checkTermMatchesWithUnifFun(index, term, expected, true, + checkTermMatchesWithUnifFun(index, term, expected, [&](auto& idx, auto t) { return idx.getUwa(term); }); } #if VHOL void checkHigherOrderTermMatches(TermSubstitutionTree& index, TypedTermList term, Stack expected) { - return checkTermMatchesWithUnifFun(index, term, expected, false, + checkTermMatchesWithUnifFun(index, term, expected, [&](auto& idx, auto t) { return idx.getHOLUnifiers(term); }); } #endif @@ -735,7 +736,7 @@ TEST_FUN(higher_order) TermUnificationResultSpec { .querySigma = ap(f,b), .resultSigma = ap(f,a), - .constraints = Stack{ } }, + .constraints = Stack{a != b } }, }); @@ -745,7 +746,7 @@ TEST_FUN(higher_order) checkHigherOrderTermMatches(*index, TypedTermList(x, arrow(srt, srt)), Stack{ TermUnificationResultSpec - { .querySigma = x, + { .querySigma = ap(g,c), .resultSigma = ap(g,c), .constraints = Stack{} }, @@ -756,7 +757,7 @@ TEST_FUN(higher_order) TermUnificationResultSpec { .querySigma = ap(f,b), .resultSigma = ap(f,a), - .constraints = Stack{ } }, + .constraints = Stack{ a != b } }, }); @@ -765,7 +766,7 @@ TEST_FUN(higher_order) TermUnificationResultSpec { .querySigma = ap(g,d), .resultSigma = ap(g,c), - .constraints = Stack{ } }, + .constraints = Stack{ ap(g,c) != ap(g,d) } }, }); } @@ -783,6 +784,8 @@ TEST_FUN(higher_order2) DECL_CONST(a, srt) DECL_HOL_VAR(x, 0, arrow(srt, srt)) + DECL_HOL_VAR(x2, 2, arrow(srt, arrow(srt, srt))) + DECL_HOL_VAR(x3, 3, srt) index->insert(ap(x, a), 0, 0); @@ -791,9 +794,26 @@ TEST_FUN(higher_order2) TermUnificationResultSpec { .querySigma = a, .resultSigma = ap(x,a), - .constraints = Stack{ } }, + .constraints = {a != ap(x,a) } }, }); + + index->insert(ap(ap(x2, a), x3), 0, 0); + + checkHigherOrderTermMatches(*index, x3, Stack{ + + TermUnificationResultSpec + { .querySigma = ap(ap(x2, a), x3), + .resultSigma = ap(ap(x2, a), x3), + .constraints = Stack{} }, + + TermUnificationResultSpec + { .querySigma = ap(x,a), + .resultSigma = ap(x,a), + .constraints = Stack{ } }, + + }); + } TEST_FUN(higher_order3) @@ -811,8 +831,8 @@ TEST_FUN(higher_order3) DECL_CONST(f, arrow(arrow(srt,srt), srt)) DECL_HOL_VAR(x, 0, srt) - auto t = ap(f, lam(x, ap(a, x))); - t = toDBs(t); + auto lamTerm = toDBs(lam(x, ap(a, x))); + auto t = ap(f, lamTerm); index->insert(t, 0, 0); @@ -821,7 +841,7 @@ TEST_FUN(higher_order3) TermUnificationResultSpec { .querySigma = ap(f,a), .resultSigma = toDBs(ap(f, lam(x, ap(a, x)))), - .constraints = Stack{ } }, + .constraints = Stack{ a != lamTerm } }, }); } From ccf7d1789282c08371a5af30f2fa48172b5b66e7 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sat, 15 Apr 2023 16:25:35 +0100 Subject: [PATCH 057/210] adding unit tests for unification with unsplittable nodes and fixpoint oracle. seems to be working nices --- Inferences/BetaEtaISE.cpp | 4 +- Kernel/ApplicativeHelper.cpp | 24 ++-- Kernel/ApplicativeHelper.hpp | 7 +- Kernel/HOLUnification.cpp | 63 ++++----- Kernel/RobSubstitution.cpp | 16 ++- Kernel/RobSubstitution.hpp | 1 + Kernel/Term.cpp | 26 +++- Kernel/Term.hpp | 5 + UnitTests/tUnificationWithAbstraction.cpp | 159 ++++++++++++++++++++++ 9 files changed, 251 insertions(+), 54 deletions(-) diff --git a/Inferences/BetaEtaISE.cpp b/Inferences/BetaEtaISE.cpp index f45e288656..13fc312c31 100644 --- a/Inferences/BetaEtaISE.cpp +++ b/Inferences/BetaEtaISE.cpp @@ -42,8 +42,8 @@ Clause* BetaEtaSimplify::simplify(Clause* c) TermList t0 = *lit->nthArgument(0); TermList t1 = *lit->nthArgument(1); - TermList t0r = EtaNormaliser().normalise(BetaNormaliser().normalise(t0)); - TermList t1r = EtaNormaliser().normalise(BetaNormaliser().normalise(t1)); + TermList t0r = t0.betaEtaNF(); + TermList t1r = t1.betaEtaNF(); if((t0r != t0) || (t1r != t1)){ diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index d0e610f6b1..35712730f0 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -35,8 +35,13 @@ TermList BetaNormaliser::transformSubterm(TermList t) { CALL("BetaNormaliser::transformSubterm"); - while(ApplicativeHelper::canHeadReduce(t)){ - t = RedexReducer().reduce(t); + TermList head; + TermStack args; + ApplicativeHelper::getHeadAndArgs(t, head, args); + + while(ApplicativeHelper::canHeadReduce(head, args)){ + t = RedexReducer().reduce(head, args); + ApplicativeHelper::getHeadAndArgs(t, head, args); } return t; @@ -138,14 +143,10 @@ bool EtaNormaliser::exploreSubterms(TermList orig, TermList newTerm) return true; } -TermList RedexReducer::reduce(TermList redex) +TermList RedexReducer::reduce(TermList head, TermStack& args) { CALL("RedexReducer::reduce"); - ASS(AH::canHeadReduce(redex)); - - TermList head; - TermStack args; - AH::getHeadAndArgs(redex, head, args); + ASS(AH::canHeadReduce(head, args)); _replace = 0; TermList t1 = head.lambdaBody(); @@ -570,7 +571,7 @@ TermList ApplicativeHelper::rhsSort(TermList t) return *t.term()->nthArgument(0); } -Signature::Proxy ApplicativeHelper::getProxy(const TermList t) +Signature::Proxy ApplicativeHelper::getProxy(const TermList& t) { CALL("ApplicativeHelper::getProxy"); if(t.isVar()){ @@ -594,12 +595,9 @@ bool ApplicativeHelper::isFalse(TermList term){ return term.isTerm() && !term.term()->isSort() && env.signature->isFoolConstantSymbol(false, term.term()->functor()); } -bool ApplicativeHelper::canHeadReduce(TermList t){ +bool ApplicativeHelper::canHeadReduce(TermList const& head, TermStack const& args){ CALL("ApplicativeHelper::canHeadReduce"); - TermList head; - TermStack args; - getHeadAndArgs(t, head, args); return head.isLambdaTerm() && args.size(); } diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 7565ab5b17..80417cee52 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -61,12 +61,12 @@ class ApplicativeHelper { static TermList rhsSort(TermList t); static void getArgSorts(TermList t, TermStack& sorts); - static Signature::Proxy getProxy(const TermList t); + static Signature::Proxy getProxy(const TermList& t); static bool isBool(TermList t); static bool isTrue(TermList term); static bool isFalse(TermList term); - static bool canHeadReduce(TermList t); + static bool canHeadReduce(const TermList& head, const TermStack& args); static TermList createGeneralBinding(unsigned freshVar, TermList head, TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, bool surround = true); static TermList surroundWithLambdas(TermList t, TermStack& sorts); @@ -94,6 +94,7 @@ class BetaNormaliser : public TermTransformer dontTransformSorts(); } TermList normalise(TermList t); + // puts term into weak head normal form TermList transformSubterm(TermList t) override; bool exploreSubterms(TermList orig, TermList newTerm) override; }; @@ -124,7 +125,7 @@ class RedexReducer : public TermTransformer RedexReducer() { dontTransformSorts(); } - TermList reduce(TermList redex); + TermList reduce(TermList head, TermStack& args); TermList transformSubterm(TermList t) override; void onTermEntry(Term* t) override; void onTermExit(Term* t) override; diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 08021bc411..fc3f235839 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -57,7 +57,7 @@ bool HOLUnification::unifyTreeTerms(TermList t1, unsigned bank1, TermList t2, un // TODO consider aadding a check for loose De Bruijn indices // see E prover code by petar /TERMS/cte_fixpoint_unif.c -#define DEBUG_FP_UNIFY(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) +#define DEBUG_FP_UNIFY(LVL, ...) if (LVL <= 1) DBG(__VA_ARGS__) HOLUnification::OracleResult HOLUnification::fixpointUnify(VarSpec var, const TermSpec& t, RobSubstitution* sub) { CALL("HOLUnification::fixpointUnify"); @@ -67,11 +67,7 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(VarSpec var, const Te bool underFlex; }; - BetaNormaliser bn; - EtaNormaliser en; - - // TODO does oder matter between eta and beta normalistion? - bool tIsLambda = bn.normalise(en.normalise(t.toTerm(*sub))).isLambdaTerm(); + bool tIsLambda = t.toTerm(*sub).whnf().isLambdaTerm(); VarSpec toFind = sub->root(var); TermSpec ts = sub->derefBound(t).clone(); if(ts.isVar()) { @@ -88,19 +84,17 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(VarSpec var, const Te while (todo->isNonEmpty()){ auto ts = todo->pop(); - TermList trm = ts.t.toTerm(*sub); - int index = ts.t.index(); - TermList head; - TermStack args; - ApplicativeHelper::getHeadAndArgs(trm, head, args); + TermSpec head; + Stack args; + + ts.t.headAndArgs(head, args); if (head.isVar()) { - VarSpec tvar = sub->root(VarSpec(head.var(), index)); + VarSpec tvar = sub->root(head.varSpec()); if(tvar == toFind) { if(ts.underFlex || (tIsLambda && args.size())){ - sub->pushConstraint(UnificationConstraint(TermSpec(var), ts.t.clone())); return OracleResult::OUT_OF_FRAGMENT; } else { return OracleResult::FAILURE; @@ -114,22 +108,20 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(VarSpec var, const Te } } else { - Term* term = head.term(); // this is a bit nasty. // if we know that the original variable is a term var // we wouldn't need to iterate through sort arguments // sadly, that is not the case ... - for(unsigned i = 0; i < term->arity(); i++){ - TermSpec spec((*term)[i], index); - todo->push(TermSpecFP { .t = std::move(spec), .underFlex = ts.underFlex} ); + for(auto c : head.allArgs()){ + todo->push(TermSpecFP { .t = c.clone(), .underFlex = ts.underFlex} ); } } bool argsUnderFlex = head.isVar() ? true : ts.underFlex; for(unsigned i = 0; i < args.size(); i++){ - TermSpec spec(args[i], index); - todo->push(TermSpecFP { .t = std::move(spec), .underFlex = argsUnderFlex} ); + // TODO double iteration over args. Once here and once in TermSpec::headAndArgs(...) + todo->push(TermSpecFP { args[i].clone(), .underFlex = argsUnderFlex} ); } } @@ -139,7 +131,7 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(VarSpec var, const Te } -#define DEBUG_UNIFY(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) +#define DEBUG_UNIFY(LVL, ...) if (LVL <= 2) DBG(__VA_ARGS__) bool HOLUnification::unify(TermSpec t1, TermSpec t2, bool splittable, RobSubstitution* sub) { CALL("HOLUnification::unify"); @@ -177,26 +169,31 @@ bool HOLUnification::unify(TermSpec t1, TermSpec t2, bool splittable, RobSubstit }; auto sortCheck = [](auto& t) { - if(env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION && - (t.isNormalVar() || t.isArrowSort() || t.isBoolSort())){ - return true; - } - return false; + return + env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION && + (t.isNormalVar() || t.isArrowSort() || t.isBoolSort()); }; while (toDo->isNonEmpty()) { auto x = toDo->pop(); auto& dt1 = x.lhs().deref(sub); auto& dt2 = x.rhs().deref(sub); + DEBUG_UNIFY(2, ".unify(", dt1, ",", dt2, ")") if (dt1 == dt2) { // do nothing } else if(dt1.isVar()) { - if(fixpointUnify(dt1.varSpec(), dt2, sub) == OracleResult::FAILURE) - return false; + auto res = fixpointUnify(dt1.varSpec(), dt2, sub); + if(res == OracleResult::FAILURE) return false; + if(res == OracleResult::OUT_OF_FRAGMENT) + sub->pushConstraint(UnificationConstraint(dt1.clone(), dt2.clone())); + } else if(dt2.isVar()) { - if(fixpointUnify(dt2.varSpec(), dt1, sub) == OracleResult::FAILURE) - return false; + auto res = fixpointUnify(dt2.varSpec(), dt1, sub); + if(res == OracleResult::FAILURE) return false; + if(res == OracleResult::OUT_OF_FRAGMENT) + sub->pushConstraint(UnificationConstraint(dt2.clone(), dt1.clone())); + } else if(dt1.isTerm() && dt2.isTerm() && dt1.functor() == dt2.functor()) { if(dt1.isApplication()){ @@ -214,8 +211,12 @@ bool HOLUnification::unify(TermSpec t1, TermSpec t2, bool splittable, RobSubstit // Not sure the logic below is right. Things get very complicated because // the sorts can be special variables. I think what we have below is an // over approximation, but I am not 100% - if(sortCheck(dt1s1) || dt1t2head.isVar() || dt1t2head.isLambdaTerm() || - sortCheck(dt2s1) || dt2t2head.isVar() || dt2t2head.isLambdaTerm() ) { + if(dt1t2.isVar() || dt2t2.isVar()){ + // if either is a variable let fixpoint unification decide + // whether to create a constraint or to bind + pushTodo(UnificationConstraint(std::move(dt1t2), std::move(dt2t2))); + } else if(sortCheck(dt1s1) || dt1t2head.isVar() || dt1t2head.isLambdaTerm() || + sortCheck(dt2s1) || dt2t2head.isVar() || dt2t2head.isLambdaTerm() ) { sub->pushConstraint(UnificationConstraint(dt1t2.clone(), dt2t2.clone())); } else { pushTodo(UnificationConstraint(std::move(dt1t2), std::move(dt2t2))); diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 73867bacc5..c2be8b4294 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -124,7 +124,6 @@ unsigned TermSpec::functor() const { return _self.match([](Appl const& a) { return false; }, [](OldTermSpec const& self) { return self.term.isApplication(); }); } - // TODO consider dereference before this check as a term may not have a var head after dereferencing TermList TermSpec::head(RobSubstitution* s) const { return _self.match([&](Appl const& a) { ASSERTION_VIOLATION; return toTerm(*s); }, [&](OldTermSpec const& self) { return toTerm(*s).head(); }); } @@ -137,9 +136,18 @@ unsigned TermSpec::functor() const { return _self.match([](Appl const& a) { return false; }, [](OldTermSpec& self) { return self.term.isBoolSort(); }); } - int TermSpec::index() const - { return _self.match([](Appl const& a) { ASSERTION_VIOLATION; return -1; }, - [](OldTermSpec const& self) { return self.index; }); } + void TermSpec::headAndArgs(TermSpec& head, Stack& args) + { return _self.match([ ](Appl const& a) { ASSERTION_VIOLATION; }, + [&](OldTermSpec const& self) { + TermList headt; + static TermStack argst; + ApplicativeHelper::getHeadAndArgs(self.term, headt, argst); + head = TermSpec(headt, self.index); + for(unsigned i = 0; i < argst.size(); i++){ + args.push(TermSpec(argst[i], self.index)); + } }); + } + #endif unsigned TermSpec::nTypeArgs() const diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 1146ec157c..71d5c45ca9 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -234,6 +234,7 @@ class TermSpec bool isArrowSort(); bool isBoolSort(); int index() const; + void headAndArgs(TermSpec& head, Stack& args); #endif unsigned nTypeArgs() const;//{ return derefTerm().term()->numTypeArguments(); } diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index e2174d2301..99eaea8339 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -359,11 +359,35 @@ TermList TermList::result(){ } TermList TermList::finalResult(){ - CALL("AtomicSort::finalResult"); + CALL("TermList::finalResult"); return isVar() || !isArrowSort() ? *this : static_cast(term())->finalResult(); } +TermList TermList::whnf(){ + CALL("TermList::whnf"); + + return BetaNormaliser().transformSubterm(*this); +} + +TermList TermList::betaNF(){ + CALL("TermList::betaNF"); + + return BetaNormaliser().normalise(*this); +} + +TermList TermList::etaNF(){ + CALL("TermList::etaNF"); + + return EtaNormaliser().normalise(*this); +} + +TermList TermList::betaEtaNF(){ + CALL("TermList::betaEtaNF"); + + return this->betaNF().etaNF(); +} + TermList AtomicSort::result(){ CALL("AtomicSort::result"); ASS(isArrowSort()); diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 11ab98a4c0..484ef9d95e 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -229,6 +229,11 @@ class TermList { TermList domain(); TermList result(); TermList finalResult(); + // return the weak head normal form of the term + TermList whnf(); + TermList betaNF(); + TermList etaNF(); + TermList betaEtaNF(); #endif bool containsSubterm(TermList v); diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 2e764191de..ba087adc57 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -846,6 +846,165 @@ TEST_FUN(higher_order3) }); } +TEST_FUN(higher_order4) +{ + env.property->forceHigherOrder(); + + env.options->set("pretty_hol_printing","pretty"); + env.options->set("func_ext", "abstraction"); + auto index = getTermIndex(); + + DECL_DEFAULT_SORT_VARS + DECL_SORT(srt) + + DECL_CONST(a, srt) + DECL_CONST(g, arrow(srt,srt)) + DECL_CONST(f, arrow(arrow(srt,srt), arrow(srt, srt))) + DECL_HOL_VAR(x, 0, arrow(srt,srt)) + + + auto t = ap(ap(f, g), a); + + index->insert(t, 0, 0); + + checkHigherOrderTermMatches(*index, ap(ap(f, x), ap(x,a)), Stack{ + + TermUnificationResultSpec + { .querySigma = ap(ap(f, g), ap(g,a)), + .resultSigma = ap(ap(f, g), a), + .constraints = { ap(g, a) != a } }, + + }); +} + +TEST_FUN(higher_order5) +{ + env.property->forceHigherOrder(); + + env.options->set("pretty_hol_printing","pretty"); + env.options->set("func_ext", "abstraction"); + auto index = getTermIndex(); + + DECL_DEFAULT_SORT_VARS + DECL_SORT(srt) + + DECL_CONST(a, srt) + DECL_CONST(g, arrow(srt,srt)) + DECL_CONST(f, arrow(arrow(srt,srt), arrow(srt, srt))) + DECL_HOL_VAR(x, 0, arrow(srt,srt)) + + + auto t = ap(ap(f, g), a); + + index->insert(t, 0, 0); + + checkHigherOrderTermMatches(*index, ap(ap(f, x), ap(x,a)), Stack{ + + TermUnificationResultSpec + { .querySigma = ap(ap(f, g), ap(g,a)), + .resultSigma = ap(ap(f, g), a), + .constraints = { ap(g, a) != a } }, + + }); +} + + +TEST_FUN(higher_order6) +{ + env.property->forceHigherOrder(); + + env.options->set("pretty_hol_printing","pretty"); + env.options->set("func_ext", "abstraction"); + auto index = getTermIndex(); + + DECL_DEFAULT_SORT_VARS + DECL_SORT(srt) + + DECL_CONST(f, arrow(srt, arrow(srt, srt))) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(z, 1, srt) + DECL_HOL_VAR(y, 2, arrow(srt, srt)) + + auto t = ap(ap(f, x), x); + + index->insert(t, 0, 0); + + checkHigherOrderTermMatches(*index, ap(ap(f, ap(y,z)), z), Stack{ + + TermUnificationResultSpec + { .querySigma = ap(ap(f, ap(y,x)), x), + .resultSigma = ap(ap(f, x), x), + .constraints = { ap(y,x) != x } }, + + }); +} + +TEST_FUN(higher_order7) +{ + env.property->forceHigherOrder(); + + env.options->set("pretty_hol_printing","pretty"); + env.options->set("func_ext", "abstraction"); + auto index = getTermIndex(); + + DECL_DEFAULT_SORT_VARS + DECL_SORT(srt) + + DECL_CONST(f, arrow(srt, arrow(srt, srt))) + DECL_CONST(g, arrow(srt, srt)) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(z, 1, srt) + + auto t = ap(ap(f, x), x); + + index->insert(t, 0, 0); + + checkHigherOrderTermMatches(*index, ap(ap(f, ap(g,z)), z), Stack{ + }); +} + +TEST_FUN(higher_order8) +{ + env.property->forceHigherOrder(); + + env.options->set("pretty_hol_printing","pretty"); + env.options->set("func_ext", "abstraction"); + auto index = getTermIndex(); + + DECL_DEFAULT_SORT_VARS + DECL_SORT(srt) + + DECL_CONST(a, srt) + DECL_CONST(g, arrow(srt,srt)) + DECL_HOL_VAR(x, 0, arrow(srt,srt)) + DECL_HOL_VAR(z, 1, arrow(srt,srt)) + + + index->insert(ap(x,a), 0, 0); + index->insert(ap(z,a), 0, 0); + index->insert(ap(g,ap(z, a)), 0, 0); + + + checkHigherOrderTermMatches(*index, ap(g,a), Stack{ + + TermUnificationResultSpec + { .querySigma = ap(g,a), + .resultSigma = ap(x,a), + .constraints = { ap(g,a) != ap(x,a) } }, + + TermUnificationResultSpec + { .querySigma = ap(g,a), + .resultSigma = ap(z,a), + .constraints = { ap(g,a) != ap(z,a) } }, + + TermUnificationResultSpec + { .querySigma = ap(g,a), + .resultSigma = ap(g,ap(x,a)), //really irritating variable renaming... + .constraints = { a != ap(x,a) } }, + + }); +} + // AYB not a real test, but if run with debugging info // in HOLSubstitutionTree, very useful for ensuring // that insertions and deletions are taking place correctly From f86fbac18faed468f20102dd5badfbf9af86acb9 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 23 Apr 2023 16:14:49 +0100 Subject: [PATCH 058/210] HOU still in a state of flux. About to start major change relating to storing of variables in Vampire. May need reverting --- Inferences/InferenceEngine.cpp | 4 + Kernel/ApplicativeHelper.cpp | 30 ++++++ Kernel/ApplicativeHelper.hpp | 16 ++++ Kernel/HOLUnification.cpp | 7 +- Kernel/RobSubstitution.cpp | 170 +-------------------------------- Kernel/RobSubstitution.hpp | 1 - Kernel/Term.cpp | 2 +- UnitTests/tBetaReduction.cpp | 38 +++++++- 8 files changed, 92 insertions(+), 176 deletions(-) diff --git a/Inferences/InferenceEngine.cpp b/Inferences/InferenceEngine.cpp index b45b1be604..61a0754bae 100644 --- a/Inferences/InferenceEngine.cpp +++ b/Inferences/InferenceEngine.cpp @@ -318,6 +318,8 @@ bool ChoiceDefinitionISE::isOfFormXY(Literal* lit, TermList& x){ TermList term = AH::isBool(*lit->nthArgument(0)) ? *lit->nthArgument(1) : *lit->nthArgument(0); + ASS(!term.isLambdaTerm()); + TermStack args; ApplicativeHelper::getHeadAndArgs(term, x, args); return (x.isVar() && args.size() == 1 && args[0].isVar()); @@ -328,6 +330,8 @@ bool ChoiceDefinitionISE::isOfFormXfX(Literal* lit, TermList x, TermList& f){ TermList term = AH::isBool(*lit->nthArgument(0)) ? *lit->nthArgument(1) : *lit->nthArgument(0); + ASS(!term.isLambdaTerm()); + TermStack args; TermList head; ApplicativeHelper::getHeadAndArgs(term, head, args); diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 35712730f0..d7be20bb92 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -35,12 +35,15 @@ TermList BetaNormaliser::transformSubterm(TermList t) { CALL("BetaNormaliser::transformSubterm"); + if(t.isLambdaTerm()) return t; + TermList head; TermStack args; ApplicativeHelper::getHeadAndArgs(t, head, args); while(ApplicativeHelper::canHeadReduce(head, args)){ t = RedexReducer().reduce(head, args); + if(t.isLambdaTerm()) break; ApplicativeHelper::getHeadAndArgs(t, head, args); } @@ -55,6 +58,29 @@ bool BetaNormaliser::exploreSubterms(TermList orig, TermList newTerm) return false; } +TermList WHNF::normalise(TermList t) +{ + CALL("WHNF::normalise"); + + // term transformer does not work at the top level... + t = transformSubterm(t); + return t.isLambdaTerm() ? transform(t) : t; +} + +TermList WHNF::transformSubterm(TermList t) +{ + CALL("WHNF::transformSubterm"); + + return BetaNormaliser().transformSubterm(t); +} + +bool WHNF::exploreSubterms(TermList orig, TermList newTerm) +{ + CALL("WHNF::exploreSubterms"); + + return newTerm.isLambdaTerm() && newTerm.term()->hasRedex(); +} + TermList EtaNormaliser::normalise(TermList t) { CALL("EtaNormaliser::normalise"); @@ -532,6 +558,10 @@ void ApplicativeHelper::getHeadAndArgs(TermList term, TermList& head, TermStack& if(!args.isEmpty()){ args.reset(); } + while(term.isLambdaTerm()){ + term = term.lambdaBody(); + } + while(term.isApplication()){ args.push(term.rhs()); term = term.lhs(); diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 80417cee52..1328514717 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -118,6 +118,22 @@ class EtaNormaliser : public TermTransformer TermList _awaiting; }; +// similar to BetaNormaliser, but places a term in WHNF instead +// of into full normal form +class WHNF : public TermTransformer +{ +public: + + WHNF() { + dontTransformSorts(); + } + TermList normalise(TermList t); + // puts term into weak head normal form + TermList transformSubterm(TermList t) override; + bool exploreSubterms(TermList orig, TermList newTerm) override; +}; + + class RedexReducer : public TermTransformer { public: diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index fc3f235839..dfc351dbf0 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -107,7 +107,7 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(VarSpec var, const Te } } - } else { + } else { // TODO what about if head is a lambda term?? // this is a bit nasty. // if we know that the original variable is a term var // we wouldn't need to iterate through sort arguments @@ -143,11 +143,10 @@ bool HOLUnification::unify(TermSpec t1, TermSpec t2, bool splittable, RobSubstit auto impl = [&]() -> bool { - TermList t1t = t1.toTerm(*sub); - TermList t1thead = t1t.head(); + TermList t1thead = t1.deref(sub).head(); // Node term and query term must have the same type. Hence we do not - // to check for type of query. We can rely on the !splittable check + // check type of query. We can rely on the !splittable check if(!t1t.isVar() && (t1thead.isVar() || t1thead.isLambdaTerm() || !splittable)) { // create top level constraint sub->pushConstraint(UnificationConstraint(t1.clone(), t2.clone())); diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index c2be8b4294..9414b4ff03 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -126,7 +126,7 @@ unsigned TermSpec::functor() const TermList TermSpec::head(RobSubstitution* s) const { return _self.match([&](Appl const& a) { ASSERTION_VIOLATION; return toTerm(*s); }, - [&](OldTermSpec const& self) { return toTerm(*s).head(); }); } + [&](OldTermSpec const& self) { return self.term.head(); }); } bool TermSpec::isArrowSort() { return _self.match([](Appl const& a) { return false; }, @@ -709,91 +709,6 @@ TermList RobSubstitution::apply(TermList trm, int index) const return tout; }); return out; - - // TODO check the use of nilVS & memorization - // static Stack toDo(8); - // static Stack toDoIndex(8); - // static Stack terms(8); - // static Stack termRefVars(8); - // static Stack args(8); - // static DHMap known; - // - // //is inserted into termRefVars, if respective - // //term in terms isn't referenced by any variable - // const VarSpec nilVS(-1,0); - // - // toDo.push(&trm); - // toDoIndex.push(index); - // - // while(!toDo.isEmpty()) { - // TermList* tt=toDo.pop(); - // index=toDoIndex.pop(); - // if(tt->isEmpty()) { - // Term* orig=terms.pop(); - // //here we assume, that stack is an array with - // //second topmost element as &top()-1, third at - // //&top()-2, etc... - // TermList* argLst=&args.top() - (orig->arity()-1); - // args.truncate(args.length() - orig->arity()); - // TermList constructed; - // if(orig->isSort()){ - // constructed.setTerm(AtomicSort::create(static_cast(orig),argLst)); - // } else { - // constructed.setTerm(Term::create(orig,argLst)); - // } - // args.push(constructed); - // - // VarSpec ref=termRefVars.pop(); - // if(ref!=nilVS) { - // ALWAYS(known.insert(ref,constructed)); - // } - // continue; - // } else { - // //if tt==&trm, we're dealing with the top - // //term, for which the next() is undefined - // if(tt!=&trm) { - // toDo.push(tt->next()); - // toDoIndex.push(index); - // } - // } - // - // TermSpec ts(*tt,index); - // - // VarSpec vs; - // if(ts.isVar()) { - // vs=root(ts.varSpec() ); - // - // TermList found; - // if(known.find(vs, found)) { - // args.push(found); - // continue; - // } - // - // ts=deref(vs); - // if(ts.isVar()) { - // ASS(ts.isOutputVar()); - // args.push(ts.term); - // continue; - // } - // } else { - // vs=nilVS; - // } - // Term* t = ts.term.term(); - // if(t->shared() && t->ground()) { - // args.push(TermList(t)); - // continue; - // } - // terms.push(t); - // termRefVars.push(vs); - // - // toDo.push(t->args()); - // toDoIndex.push(ts.index); - // } - // ASS(toDo.isEmpty() && toDoIndex.isEmpty() && terms.isEmpty() && args.length()==1); - // known.reset(); - // - // - // return args.pop(); } TermList RobSubstitution::apply(TermSpec t) @@ -809,89 +724,6 @@ size_t RobSubstitution::getApplicationResultWeight(TermList trm, int index) cons : (1 + range(0, orig.term.nAllArgs()) .map([&](auto i) { return sizes[i]; }) .sum()); }); - - // - // static Stack toDo(8); - // static Stack toDoIndex(8); - // static Stack terms(8); - // static Stack termRefVars(8); - // static Stack argSizes(8); - // - // static DHMap known; - // known.reset(); - // - // //is inserted into termRefVars, if respective - // //term in terms isn't referenced by any variable - // const VarSpec nilVS(-1,0); - // - // toDo.push(&trm); - // toDoIndex.push(index); - // - // while(!toDo.isEmpty()) { - // TermList* tt=toDo.pop(); - // index=toDoIndex.pop(); - // if(tt->isEmpty()) { - // Term* orig=terms.pop(); - // unsigned arity = orig->arity(); - // //here we assume, that stack is an array with - // //second topmost element as &top()-1, third at - // //&top()-2, etc... - // size_t* szArr=&argSizes.top() - (orig->arity()-1); - // size_t sz = 1; //1 for the function symbol - // for(unsigned i=0; inext()); - // toDoIndex.push(index); - // } - // } - // - // TermSpec ts(*tt,index); - // - // VarSpec vs; - // if(ts.isVar()) { - // vs=root(ts.varSpec()); - // - // size_t found; - // if(known.find(vs, found)) { - // argSizes.push(found); - // continue; - // } - // - // ts=deref(vs); - // if(ts.isVar()) { - // ASS(ts.isOutputVar()); - // argSizes.push(1); - // continue; - // } - // } else { - // vs=nilVS; - // } - // Term* t = ts.old().term.term(); - // if(t->shared() && t->ground()) { - // argSizes.push(t->weight()); - // continue; - // } - // terms.push(t); - // termRefVars.push(vs); - // - // toDo.push(t->args()); - // toDoIndex.push(ts.old().index); - // } - // ASS(toDo.isEmpty() && toDoIndex.isEmpty() && terms.isEmpty() && argSizes.length()==1); - // return argSizes.pop(); } size_t RobSubstitution::getApplicationResultWeight(Literal* lit, int index) const diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 71d5c45ca9..ff29adb024 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -233,7 +233,6 @@ class TermSpec TermList head(RobSubstitution* s) const; bool isArrowSort(); bool isBoolSort(); - int index() const; void headAndArgs(TermSpec& head, Stack& args); #endif diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 99eaea8339..4a94820999 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -367,7 +367,7 @@ TermList TermList::finalResult(){ TermList TermList::whnf(){ CALL("TermList::whnf"); - return BetaNormaliser().transformSubterm(*this); + return WHNF().normalise(*this); } TermList TermList::betaNF(){ diff --git a/UnitTests/tBetaReduction.cpp b/UnitTests/tBetaReduction.cpp index 134ebb56c4..b82b4657ce 100644 --- a/UnitTests/tBetaReduction.cpp +++ b/UnitTests/tBetaReduction.cpp @@ -31,7 +31,6 @@ TEST_FUN(beta_reduction01) { DECL_SORT(srt) DECL_HOL_VAR(x0, 0, srt) DECL_CONST(a, srt) - DECL_CONST(b, srt) BetaNormaliser bn; auto t = ap(lam(x0,x0),a); @@ -217,6 +216,43 @@ TEST_FUN(eta_reduction06) { ASS_EQ(reduced, ap(f,g).sugaredExpr()); } +TEST_FUN(whnf_01) { + DECL_SORT(srt) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(y, 1, srt) + DECL_CONST(f, arrow(srt,srt)) + DECL_CONST(a, srt) + + env.options->setHolPrinting(Options::HPrinting::PRETTY); + env.property->forceHigherOrder(); + + auto inner = ap(f, ap( lam(x,x), a )); + auto t = ap(lam(y,y), inner ); + auto tdb = toDeBruijnIndices(t); + + + ASS_EQ(tdb.whnf(), toDeBruijnIndices(inner)); +} + +TEST_FUN(whnf_02) { + DECL_SORT(srt) + DECL_HOL_VAR(x, 0, srt) + DECL_HOL_VAR(y, 1, srt) + DECL_HOL_VAR(z, 2, srt) + DECL_HOL_VAR(q, 3, srt) + DECL_CONST(f, arrow(srt,srt)) + DECL_CONST(a, srt) + + env.options->setHolPrinting(Options::HPrinting::PRETTY); + env.property->forceHigherOrder(); + + auto t = lam(y,ap(lam(x, lam(z, ap( lam(q,q), x ) )), a)); + auto tdb = toDeBruijnIndices(t); + + + ASS_EQ(tdb.whnf(), toDeBruijnIndices(lam(y, lam(z, a)))); +} + TEST_FUN(fo_subterm_rep1) { DECL_SORT(srt) DECL_ARROW_SORT(gSrt, {srt, srt}) From cd736fcf29128fab0cf638e4b6ff4575a2b7f2fe Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 28 Apr 2023 17:38:14 +0100 Subject: [PATCH 059/210] major changes to facilitate RobSubstitution with both TermSpecs and TermLists. Compiling. UNTESTED --- CMakeLists.txt | 2 +- Forwards.hpp | 14 +- Indexing/AcyclicityIndex.cpp | 4 +- Indexing/IndexManager.cpp | 6 +- Indexing/ResultSubstitution.cpp | 18 +- Indexing/ResultSubstitution.hpp | 6 +- Indexing/SubstitutionTree.hpp | 20 +- Indexing/TermIndexingStructure.hpp | 3 +- Indexing/TermSharing.cpp | 8 +- Inferences/Choice.cpp | 18 +- Inferences/Condensation.cpp | 10 +- Inferences/ElimLeibniz.cpp | 12 +- Inferences/ElimLeibniz.hpp | 2 +- Inferences/EqualityFactoring.cpp | 20 +- Inferences/EqualityResolution.cpp | 10 +- Inferences/ExtensionalityResolution.cpp | 30 +- Inferences/ExtensionalityResolution.hpp | 2 +- Inferences/Factoring.cpp | 18 +- Inferences/ForwardDemodulation.cpp | 2 +- Inferences/HyperSuperposition.cpp | 14 +- Inferences/HyperSuperposition.hpp | 6 +- Kernel/ApplicativeHelper.cpp | 28 +- Kernel/ApplicativeHelper.hpp | 8 +- Kernel/HOLUnification.cpp | 150 ++-- Kernel/HOLUnification.hpp | 13 +- Kernel/LookaheadLiteralSelector.cpp | 4 +- Kernel/MismatchHandler.cpp | 136 ++-- Kernel/MismatchHandler.hpp | 36 +- Kernel/Renaming.cpp | 18 +- Kernel/Renaming.hpp | 32 +- Kernel/RobSubstitution.cpp | 812 +++++++++------------- Kernel/RobSubstitution.hpp | 579 +++++++-------- Kernel/Term.cpp | 50 +- Kernel/Term.hpp | 116 +++- Kernel/TermTransformer.cpp | 27 +- Kernel/TermTransformer.hpp | 20 +- Parse/TPTP.cpp | 4 +- Shell/AnswerExtractor.cpp | 6 +- Shell/BlockedClauseElimination.cpp | 8 +- UnitTests/tBetaReduction.cpp | 4 +- UnitTests/tInduction.cpp | 2 +- UnitTests/tUnificationWithAbstraction.cpp | 10 +- 42 files changed, 1117 insertions(+), 1171 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cd71744e09..99c527a783 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -366,7 +366,7 @@ set(VAMPIRE_INDEXING_SOURCES Indexing/TermIndex.cpp Indexing/TermSharing.cpp Indexing/TermSubstitutionTree.cpp - Indexing/AcyclicityIndex.hpp +# Indexing/AcyclicityIndex.hpp Indexing/ClauseCodeTree.hpp Indexing/ClauseVariantIndex.hpp Indexing/CodeTree.hpp diff --git a/Forwards.hpp b/Forwards.hpp index 0f3e4393b4..e96abb9863 100644 --- a/Forwards.hpp +++ b/Forwards.hpp @@ -96,9 +96,13 @@ class Problem; class Renaming; class Substitution; -class RobSubstitution; -typedef VirtualIterator SubstIterator; -typedef Lib::SmartPtr RobSubstitutionSP; +class RobSubstitutionTL; +typedef VirtualIterator SubstIterator; +typedef Lib::SmartPtr RobSubstitutionSP; + +class RobSubstitutionTS; +typedef VirtualIterator SubstIteratorTS; +typedef Lib::SmartPtr RobSubstitutionTSSP; class Matcher; typedef VirtualIterator MatchIterator; @@ -136,10 +140,6 @@ enum SymbolType{FUNC, PRED, TYPE_CON}; namespace Indexing { -// TODO where should these go? -static constexpr int QUERY_BANK=0; -static constexpr int RESULT_BANK=1; -static constexpr int NORM_RESULT_BANK=3; class Index; class IndexManager; diff --git a/Indexing/AcyclicityIndex.cpp b/Indexing/AcyclicityIndex.cpp index 7e1281ffee..4aa508af53 100644 --- a/Indexing/AcyclicityIndex.cpp +++ b/Indexing/AcyclicityIndex.cpp @@ -204,7 +204,7 @@ namespace Indexing _tis(nullptr), _nextResult(nullptr), _stack(0), - _subst(new RobSubstitution()), + _subst(new RobSubstitutionTS()), _substChanges(0), _nextAvailableIndex(0), _currentDepth(0) @@ -393,7 +393,7 @@ namespace Indexing TermIndexingStructure *_tis; CycleQueryResult *_nextResult; Stack _stack; - RobSubstitution *_subst; + RobSubstitutionTS *_subst; Stack _substChanges; int _nextAvailableIndex; unsigned _currentDepth; diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 569ce6c1e3..2a761cd2bf 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -151,10 +151,10 @@ Index* IndexManager::create(IndexType t) break; #endif - case ACYCLICITY_INDEX: - res = new AcyclicityIndex(new TermSubstitutionTree(/* extra */ false)); + case ACYCLICITY_INDEX: + res = new AcyclicityIndex(new TermSubstitutionTree( false)); isGenerating = true; - break; + break; case DEMODULATION_SUBTERM_SUBST_TREE: { auto tis=new TermSubstitutionTree(/* extra */ false); diff --git a/Indexing/ResultSubstitution.cpp b/Indexing/ResultSubstitution.cpp index 3560de6370..7c398df104 100644 --- a/Indexing/ResultSubstitution.cpp +++ b/Indexing/ResultSubstitution.cpp @@ -29,7 +29,7 @@ class RSProxy CLASS_NAME(RSProxy); USE_ALLOCATOR(RSProxy); - RSProxy(RobSubstitution* subst, int queryBank, int resultBank) + RSProxy(RobSubstitutionTL* subst, VarBank queryBank, VarBank resultBank) : _subst(subst), _queryBank(queryBank), _resultBank(resultBank) {} TermList applyToQuery(TermList t) override @@ -42,10 +42,10 @@ class RSProxy Literal* applyToResult(Literal* l) override { return _subst->apply(l,_resultBank); } - TermList applyTo(TermList t,unsigned index) override - { return _subst->apply(t,index); } - Literal* applyTo(Literal* l,unsigned index) override - { return _subst->apply(l,index); } + TermList applyTo(TermList t,VarBank bank) override + { return _subst->apply(t,bank); } + Literal* applyTo(Literal* l,VarBank bank) override + { return _subst->apply(l,bank); } virtual size_t getQueryApplicationWeight(TermList t) override { return _subst->getApplicationResultWeight(t, _queryBank); } virtual size_t getQueryApplicationWeight(Literal* l) override { return _subst->getApplicationResultWeight(l, _queryBank); } @@ -58,12 +58,12 @@ class RSProxy virtual Recycled getConstraints() override { return _subst->constraints(); } private: - RobSubstitution* _subst; - int _queryBank; - int _resultBank; + RobSubstitutionTL* _subst; + VarBank _queryBank; + VarBank _resultBank; }; -ResultSubstitutionSP ResultSubstitution::fromSubstitution(RobSubstitution* s, int queryBank, int resultBank) +ResultSubstitutionSP ResultSubstitution::fromSubstitution(RobSubstitutionTL* s, VarBank queryBank, VarBank resultBank) { return ResultSubstitutionSP(new RSProxy(s, queryBank, resultBank)); } /** diff --git a/Indexing/ResultSubstitution.hpp b/Indexing/ResultSubstitution.hpp index 1bbe57ba5e..aa425e3886 100644 --- a/Indexing/ResultSubstitution.hpp +++ b/Indexing/ResultSubstitution.hpp @@ -46,8 +46,8 @@ class ResultSubstitution virtual TermList applyToResult(TermList t) { NOT_IMPLEMENTED; } virtual Literal* applyToResult(Literal* l) { NOT_IMPLEMENTED; } - virtual TermList applyTo(TermList t, unsigned index) { ASSERTION_VIOLATION; } - virtual Literal* applyTo(Literal* l, unsigned index) { NOT_IMPLEMENTED; } + virtual TermList applyTo(TermList t, VarBank bank) { ASSERTION_VIOLATION; } + virtual Literal* applyTo(Literal* l, VarBank bank) { NOT_IMPLEMENTED; } /** if implementation cannot easily give result for this, zero is returned */ virtual size_t getQueryApplicationWeight(TermList t) { return 0; } @@ -135,7 +135,7 @@ class ResultSubstitution */ virtual bool isIdentityOnResultWhenQueryBound() {return false;} - static ResultSubstitutionSP fromSubstitution(RobSubstitution* s, int queryBank, int resultBank); + static ResultSubstitutionSP fromSubstitution(RobSubstitutionTL* s, VarBank queryBank, VarBank resultBank); virtual void output(std::ostream& ) const = 0; friend std::ostream& operator<<(std::ostream& out, ResultSubstitution const& self) { self.output(out); return out; } diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index bc0a14e972..c208b6addd 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -648,7 +648,7 @@ class SubstitutionTree template void handleImpl(Key const& key, LeafData ld, bool doInsert) { - auto norm = Renaming::normalize(key); + auto norm = Renaming::normalize(key, VarBank::RESULT_BANK); Recycled bindings; setSort(key, ld); createBindings(norm, /* reversed */ false, @@ -690,8 +690,8 @@ class SubstitutionTree virtual TermList applyToResult(TermList t) final override { return _result->apply(t); } virtual Literal* applyToResult(Literal* l) final override { return _result->apply(l); } - virtual TermList applyTo(TermList t, unsigned index) final override { ASSERTION_VIOLATION; } - virtual Literal* applyTo(Literal* l, unsigned index) final override { NOT_IMPLEMENTED; } + virtual TermList applyTo(TermList t, VarBank bank) final override { ASSERTION_VIOLATION; } + virtual Literal* applyTo(Literal* l, VarBank bank) final override { NOT_IMPLEMENTED; } virtual size_t getQueryApplicationWeight(TermList t) final override { return t.weight(); } virtual size_t getQueryApplicationWeight(Literal* l) final override { return l->weight(); } @@ -1245,8 +1245,10 @@ class SubstitutionTree return; } + query = ToBank(VarBank::QUERY_BANK).toBank(query); + parent->createBindings(query, reversed, - [&](unsigned var, TermList t) { _subst->bindSpecialVar(var, t, QUERY_BANK); }); + [&](unsigned var, TermList t) { _subst->bindSpecialVar(var, t); }); DEBUG_QUERY("query: ", *_subst); BacktrackData bd; @@ -1309,7 +1311,7 @@ class SubstitutionTree _subst->bdRecord(_clientBacktrackData); _clientBDRecording=true; - _subst->denormalize(normalizer,NORM_RESULT_BANK,RESULT_BANK); + _subst->denormalize(normalizer,VarBank::NORM_RESULT_BANK,VarBank::RESULT_BANK); } // postprocess in the leaf @@ -1318,9 +1320,9 @@ class SubstitutionTree // For UWA, if fixed point iteration has been chosen, this is carried out // For HOL, a set of HOL unifiers are returned SubstIterator substs = _algo.postprocess(&*_subst); - return pvi(iterTraits(substs).map([ld](RobSubstitution* subst){ + return pvi(iterTraits(substs).map([ld](RobSubstitutionTL* subst){ return QueryResult(ld, - ResultSubstitution::fromSubstitution(subst, QUERY_BANK, RESULT_BANK)); + ResultSubstitution::fromSubstitution(subst, VarBank::QUERY_BANK, VarBank::RESULT_BANK)); })); } @@ -1339,7 +1341,7 @@ class SubstitutionTree // TermList qt = _abstractingUnifier.subs().getSpecialVarTop(specVar); // TODO should this function really be part of algo? auto top = _subst->getSpecialVarTop(specVar); - if(top.var()) { + if(top.var() || top.id()) { return n->allChildren(); } else { Node** match=n->childByTop(top, false); @@ -1432,7 +1434,7 @@ class SubstitutionTree return success; } - Recycled _subst; + Recycled _subst; UnificationAlgorithm _algo; Recycled _svStack; diff --git a/Indexing/TermIndexingStructure.hpp b/Indexing/TermIndexingStructure.hpp index ce605ac28d..ecb336395c 100644 --- a/Indexing/TermIndexingStructure.hpp +++ b/Indexing/TermIndexingStructure.hpp @@ -49,8 +49,9 @@ class TermIndexingStructure { #if VDEBUG virtual void markTagged() = 0; - virtual void output(std::ostream& output) const = 0; #endif + + virtual void output(std::ostream& output) const = 0; friend std::ostream& operator<<(std::ostream& out, TermIndexingStructure const& self) { self.output(out); return out; } }; diff --git a/Indexing/TermSharing.cpp b/Indexing/TermSharing.cpp index fea04cc153..2f0f828934 100644 --- a/Indexing/TermSharing.cpp +++ b/Indexing/TermSharing.cpp @@ -108,7 +108,7 @@ Term* TermSharing::insert(Term* t) TermList* ts1 = t->args(); TermList* ts2 = ts1->next(); if (argNormGt(*ts1, *ts2)) { - swap(ts1->_content, ts2->_content); + t->argSwap(); } } @@ -275,7 +275,7 @@ Literal* TermSharing::insert(Literal* t) TermList* ts1 = t->args(); TermList* ts2 = ts1->next(); if (argNormGt(*ts1, *ts2)) { - swap(ts1->_content, ts2->_content); + t->argSwap(); } } @@ -356,7 +356,7 @@ Literal* TermSharing::insertVariableEquality(Literal* t, TermList sort) TermList* ts1 = t->args(); TermList* ts2 = ts1->next(); if (argNormGt(*ts1, *ts2)) { - swap(ts1->_content, ts2->_content); + t->argSwap(); } //we need these values set during insertion into the sharing set @@ -502,7 +502,7 @@ bool TermSharing::equals(const Term* s,const Term* t) const TermList* ss = s->args(); const TermList* tt = t->args(); while (! ss->isEmpty()) { - if (ss->_content != tt->_content) { + if (*ss != *tt) { return false; } ss = ss->next(); diff --git a/Inferences/Choice.cpp b/Inferences/Choice.cpp index 64fc358670..86b532a253 100644 --- a/Inferences/Choice.cpp +++ b/Inferences/Choice.cpp @@ -83,7 +83,7 @@ struct Choice::AxiomsIterator CALL("Choice::AxiomsIterator"); ASS(term.isApplication()); - _set = term.rhs(); + _set = term.rhs(); _headSort = AH::lhsSort(term); _resultSort = SortHelper::getResultSort(term.term()); //cout << "the result sort is " + _resultSort.toString() << endl; @@ -106,21 +106,21 @@ struct Choice::AxiomsIterator _choiceOps.remove(op); OperatorType* type = env.signature->getFunction(op)->fnType(); - static RobSubstitution subst; + static RobSubstitutionTL subst; static TermStack typeArgs; typeArgs.reset(); subst.reset(); for(int i = type->numTypeArguments() -1; i >= 0; i--){ - TermList typeArg = TermList((unsigned)i, false); + TermList typeArg = TermList((unsigned)i, VarBank::QUERY_BANK); typeArgs.push(typeArg); } Term* choiceOp = Term::create(op, typeArgs.size(), typeArgs.begin()); TermList choiceOpSort = SortHelper::getResultSort(choiceOp); - if(subst.unify(choiceOpSort, 0, _headSort, 1)){ + if(subst.unify(choiceOpSort, _headSort)){ _nextChoiceOperator = TermList(choiceOp); - _opApplied = subst.apply(_nextChoiceOperator, 0); - _setApplied = subst.apply(_set, 1); + _opApplied = subst.apply(_nextChoiceOperator, VarBank::QUERY_BANK); + _setApplied = subst.apply(_set, DEFAULT_BANK); _inBetweenNextandHasNext = true; return true; } @@ -176,14 +176,14 @@ struct Choice::IsChoiceTerm if(args.size() == 1){ TermList headSort = AH::lhsSort(TermList(t)); - TermList tv = TermList(0, false); + TermList tv = TermList(0, VarBank::QUERY_BANK); // put on QUERY_BANK to separate in from variables in headSort TermList o = AtomicSort::boolSort(); TermList sort = AtomicSort::arrowSort(AtomicSort::arrowSort(tv, o), tv); - static RobSubstitution subst; + static RobSubstitutionTL subst; subst.reset(); return ((head.isVar() || env.signature->isChoiceOperator(head.term()->functor())) && - subst.match(sort,0,headSort,1)); + subst.match(sort,headSort)); } return false; } diff --git a/Inferences/Condensation.cpp b/Inferences/Condensation.cpp index 0bdc78b500..9cdf989d00 100644 --- a/Inferences/Condensation.cpp +++ b/Inferences/Condensation.cpp @@ -74,19 +74,19 @@ Clause* Condensation::simplify(Clause* cl) newLits.ensure(newLen); - RobSubstitution subst0; + RobSubstitutionTL subst0; // For each unifying subst of l1 and l2 // apply the subst to l1 and search for instances of this in the clause // (note that this is symmetric to applying subst to l2) - SubstIterator sit=subst0.unifiers(l1,0,l2,0,false); + SubstIterator sit=subst0.unifiers(l1,l2,false); while(sit.hasNext()) { - RobSubstitution* subst=sit.next(); + RobSubstitutionTL* subst=sit.next(); alts.init(newLen,0); bool success=false; unsigned next=0; { - Literal* lit=subst->apply(l1,0); + Literal* lit=subst->apply(l1, DEFAULT_BANK); newLits[next] = lit; // Use lit as a query to find instances of it in cmi (i.e. the clause) LiteralMiniIndex::InstanceIterator iit(cmi, lit, false); @@ -105,7 +105,7 @@ Clause* Condensation::simplify(Clause* cl) // apply the subst and search for instances of the result as before for(unsigned i=0;iapply((*cl)[i],0); + Literal* lit=subst->apply((*cl)[i],DEFAULT_BANK); newLits[next] = lit; LiteralMiniIndex::InstanceIterator iit(cmi, lit, false); if(!iit.hasNext()) { diff --git a/Inferences/ElimLeibniz.cpp b/Inferences/ElimLeibniz.cpp index cfbd053d72..5fd03dcc3a 100644 --- a/Inferences/ElimLeibniz.cpp +++ b/Inferences/ElimLeibniz.cpp @@ -86,18 +86,18 @@ ElimLeibniz::LeibEqRec ElimLeibniz::getLiteralInfo(Literal* lit){ } Clause* ElimLeibniz::createConclusion(Clause* premise, Literal* newLit, - Literal* posLit, Literal* negLit, RobSubstitution& subst){ + Literal* posLit, Literal* negLit, RobSubstitutionTL& subst){ CALL("ElimLeibniz::createConclusion"); unsigned newLen=premise->length() - 1; Clause* res = new(newLen) Clause(newLen, GeneratingInference1(InferenceRule::LEIBNIZ_ELIMINATION, premise)); - Literal* newLitAfter = subst.apply(newLit, 0); + Literal* newLitAfter = subst.apply(newLit, DEFAULT_BANK); unsigned next = 0; for(unsigned i=0;ilength();i++) { Literal* curr=(*premise)[i]; if(curr!=posLit && curr!=negLit){ - Literal* currAfter = subst.apply(curr, 0); + Literal* currAfter = subst.apply(curr, DEFAULT_BANK); (*res)[next++] = currAfter; } } @@ -149,7 +149,7 @@ ClauseIterator ElimLeibniz::generateClauses(Clause* premise) afterLoop: ClauseStack clauses; - static RobSubstitution subst; + static RobSubstitutionTL subst; subst.reset(); LeibEqRec lerPosLit = getLiteralInfo(posLit); @@ -163,7 +163,7 @@ ClauseIterator ElimLeibniz::generateClauses(Clause* premise) TermList vEquals = AH::equality(argS); // creating the term = arg (which is eta-equivalent to ^x. arg = x) TermList t1 = AH::app(vEquals, lerNegLit.arg); - if(subst.unify(var, 0, t1, 0)){ + if(subst.unify(var, t1)){ Clause* c = createConclusion(premise, newLit, posLit, negLit, subst); clauses.push(c); subst.reset(); @@ -173,7 +173,7 @@ ClauseIterator ElimLeibniz::generateClauses(Clause* premise) // creating the term ^x. arg != x TermList t2 = AH::lambda(argS, AH::app(AH::neg(), AH::app(AH::app(vEquals, lerPosLit.arg),db))); - if(subst.unify(var, 0, t2, 0)){ + if(subst.unify(var, t2)){ Clause* c = createConclusion(premise, newLit, posLit, negLit, subst); clauses.push(c); } diff --git a/Inferences/ElimLeibniz.hpp b/Inferences/ElimLeibniz.hpp index 6520c4c5ff..cbe7057cc8 100644 --- a/Inferences/ElimLeibniz.hpp +++ b/Inferences/ElimLeibniz.hpp @@ -45,7 +45,7 @@ class ElimLeibniz : public GeneratingInferenceEngine bool isPair(Literal* l1, Literal* l2); - Clause* createConclusion(Clause* premise, Literal* newLit, Literal* posLit, Literal* negLit, RobSubstitution& subst); + Clause* createConclusion(Clause* premise, Literal* newLit, Literal* posLit, Literal* negLit, RobSubstitutionTL& subst); LeibEqRec getLiteralInfo(Literal* lit); diff --git a/Inferences/EqualityFactoring.cpp b/Inferences/EqualityFactoring.cpp index 80cb5ca6d4..6104c7115c 100644 --- a/Inferences/EqualityFactoring.cpp +++ b/Inferences/EqualityFactoring.cpp @@ -110,16 +110,16 @@ struct EqualityFactoring::ResultFn TermList srt = SortHelper::getEqualityArgumentSort(sLit); - Recycled subst; + Recycled subst; // TODO, do we need to reset? - if (!subst->unify(srt, 0, SortHelper::getEqualityArgumentSort(fLit), 0)) { + if (!subst->unify(srt, SortHelper::getEqualityArgumentSort(fLit))) { return ClauseIterator::getEmpty(); } Recycled results; - TermList srtS = subst->apply(srt,0); + TermList srtS = subst->apply(srt,DEFAULT_BANK); TermList sLHS=arg.first.second; TermList sRHS=EqHelper::getOtherEqualitySide(sLit, sLHS); @@ -127,19 +127,19 @@ struct EqualityFactoring::ResultFn TermList fRHS=EqHelper::getOtherEqualitySide(fLit, fLHS); ASS_NEQ(sLit, fLit); - auto unifiers = _algo.unifiers(sLHS,0,fLHS,0, &*subst); + auto unifiers = _algo.unifiers(sLHS,fLHS, &*subst); while(unifiers.hasNext()){ - RobSubstitution* subst = unifiers.next(); + RobSubstitutionTL* subst = unifiers.next(); - TermList sLHSS = subst->apply(sLHS,0); - TermList sRHSS = subst->apply(sRHS,0); + TermList sLHSS = subst->apply(sLHS,DEFAULT_BANK); + TermList sRHSS = subst->apply(sRHS,DEFAULT_BANK); if(Ordering::isGorGEorE(_ordering.compare(sRHSS,sLHSS))) { // try next unifier (of course there isn't one in the syntactic first-order case) continue; } - TermList fRHSS = subst->apply(fRHS,0); + TermList fRHSS = subst->apply(fRHS,DEFAULT_BANK); if(Ordering::isGorGEorE(_ordering.compare(fRHSS,sLHSS))) { continue; } @@ -153,7 +153,7 @@ struct EqualityFactoring::ResultFn Literal* sLitAfter = 0; if (_afterCheck && _cl->numSelected() > 1) { TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); - sLitAfter = subst->apply(sLit, 0); + sLitAfter = subst->apply(sLit, DEFAULT_BANK); } unsigned next = 1; @@ -161,7 +161,7 @@ struct EqualityFactoring::ResultFn for(unsigned i=0;i<_cLen;i++) { Literal* curr=(*_cl)[i]; if(curr!=sLit) { - Literal* currAfter = subst->apply(curr, 0); + Literal* currAfter = subst->apply(curr, DEFAULT_BANK); if (sLitAfter) { TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index ddf997476a..6ecc2ded2b 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -90,16 +90,16 @@ struct EqualityResolution::ResultFn ASS(lit->isEquality()); ASS(lit->isNegative()); - Recycled sub; + Recycled sub; Recycled results; TermList arg0 = *lit->nthArgument(0); TermList arg1 = *lit->nthArgument(1); - auto substs = _algo.unifiers(arg0, 0, arg1, 0, &*sub, /* no top level constraints */ true); + auto substs = _algo.unifiers(arg0, arg1, &*sub, /* no top level constraints */ true); while(substs.hasNext()){ - RobSubstitution* sub = substs.next(); + RobSubstitutionTL* sub = substs.next(); auto constraints = sub->constraints(); unsigned newLen=_cLen - 1 + constraints->length(); @@ -110,7 +110,7 @@ struct EqualityResolution::ResultFn if (_afterCheck && _cl->numSelected() > 1) { TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); - litAfter = sub->apply(lit, 0); + litAfter = sub->apply(lit, DEFAULT_BANK); } unsigned next = 0; @@ -118,7 +118,7 @@ struct EqualityResolution::ResultFn for(unsigned i=0;i<_cLen;i++) { Literal* curr=(*_cl)[i]; if(curr!=lit) { - Literal* currAfter = sub->apply(curr, 0); + Literal* currAfter = sub->apply(curr, DEFAULT_BANK); if (litAfter) { TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); diff --git a/Inferences/ExtensionalityResolution.cpp b/Inferences/ExtensionalityResolution.cpp index 7b29e607aa..7fc005de57 100644 --- a/Inferences/ExtensionalityResolution.cpp +++ b/Inferences/ExtensionalityResolution.cpp @@ -76,22 +76,22 @@ struct ExtensionalityResolution::ForwardPairingFn */ struct ExtensionalityResolution::ForwardUnificationsFn { - ForwardUnificationsFn() { _subst = RobSubstitutionSP(new RobSubstitution()); } - VirtualIterator, RobSubstitution*> > operator()(pair arg) + ForwardUnificationsFn() { _subst = RobSubstitutionTSSP(new RobSubstitutionTS()); } + VirtualIterator, RobSubstitutionTS*> > operator()(pair arg) { CALL("ExtensionalityResolution::ForwardUnificationsFn::operator()"); Literal* trmEq = arg.first; Literal* varEq = arg.second.literal; - SubstIterator unifs = _subst->unifiers(varEq,0,trmEq,1,true); + SubstIteratorTS unifs = _subst->unifiers(varEq,0,trmEq,1,true); if (!unifs.hasNext()) { - return VirtualIterator, RobSubstitution*> >::getEmpty(); + return VirtualIterator, RobSubstitutionTS*> >::getEmpty(); } return pvi(pushPairIntoRightIterator(arg, unifs)); } private: - RobSubstitutionSP _subst; + RobSubstitutionTSSP _subst; }; /** @@ -100,11 +100,11 @@ struct ExtensionalityResolution::ForwardUnificationsFn struct ExtensionalityResolution::ForwardResultFn { ForwardResultFn(Clause* otherCl, ExtensionalityResolution& parent) : _otherCl(otherCl), _parent(parent) {} - Clause* operator()(pair, RobSubstitution*> arg) + Clause* operator()(pair, RobSubstitutionTS*> arg) { CALL("ExtensionalityResolution::ForwardResultFn::operator()"); - RobSubstitution* subst = arg.second; + RobSubstitutionTS* subst = arg.second; Literal* otherLit = arg.first.first; Clause* extCl = arg.first.second.clause; Literal* extLit = arg.first.second.literal; @@ -166,22 +166,22 @@ struct ExtensionalityResolution::BackwardPairingFn struct ExtensionalityResolution::BackwardUnificationsFn { BackwardUnificationsFn(Literal* extLit) - : _extLit (extLit) { _subst = RobSubstitutionSP(new RobSubstitution()); } - VirtualIterator, RobSubstitution*> > operator()(pair arg) + : _extLit (extLit) { _subst = RobSubstitutionTSSP(new RobSubstitutionTS()); } + VirtualIterator, RobSubstitutionTS*> > operator()(pair arg) { CALL("ExtensionalityResolution::BackwardUnificationsFn::operator()"); Literal* otherLit = arg.second; - SubstIterator unifs = _subst->unifiers(_extLit,0,otherLit,1,true); + SubstIteratorTS unifs = _subst->unifiers(_extLit,0,otherLit,1,true); if (!unifs.hasNext()) { - return VirtualIterator, RobSubstitution*> >::getEmpty(); + return VirtualIterator, RobSubstitutionTS*> >::getEmpty(); } return pvi(pushPairIntoRightIterator(arg, unifs)); } private: Literal* _extLit; - RobSubstitutionSP _subst; + RobSubstitutionTSSP _subst; }; /** @@ -190,11 +190,11 @@ struct ExtensionalityResolution::BackwardUnificationsFn struct ExtensionalityResolution::BackwardResultFn { BackwardResultFn(Clause* extCl, Literal* extLit, ExtensionalityResolution& parent) : _extCl(extCl), _extLit(extLit), _parent(parent) {} - Clause* operator()(pair, RobSubstitution*> arg) + Clause* operator()(pair, RobSubstitutionTS*> arg) { CALL("ExtensionalityResolution::BackwardResultFn::operator()"); - RobSubstitution* subst = arg.second; + RobSubstitutionTS* subst = arg.second; Clause* otherCl = arg.first.first; Literal* otherLit = arg.first.second; @@ -217,7 +217,7 @@ struct ExtensionalityResolution::BackwardResultFn Clause* ExtensionalityResolution::performExtensionalityResolution( Clause* extCl, Literal* extLit, Clause* otherCl, Literal* otherLit, - RobSubstitution* subst, + RobSubstitutionTS* subst, unsigned& counter, const Options& opts) { diff --git a/Inferences/ExtensionalityResolution.hpp b/Inferences/ExtensionalityResolution.hpp index 8daad523e3..b6e103d18b 100644 --- a/Inferences/ExtensionalityResolution.hpp +++ b/Inferences/ExtensionalityResolution.hpp @@ -50,7 +50,7 @@ class ExtensionalityResolution static Clause* performExtensionalityResolution( Clause* extCl, Literal* extLit, Clause* otherCl, Literal* otherLit, - RobSubstitution* subst, + RobSubstitutionTS* subst, unsigned& counter, const Options& opts); private: diff --git a/Inferences/Factoring.cpp b/Inferences/Factoring.cpp index 8b2b1bab40..dfb1017915 100644 --- a/Inferences/Factoring.cpp +++ b/Inferences/Factoring.cpp @@ -55,9 +55,9 @@ class Factoring::UnificationsOnPositiveFn UnificationsOnPositiveFn(Clause* cl, LiteralSelector& sel) : _cl(cl), _sel(sel) { - _subst=RobSubstitutionSP(new RobSubstitution()); + _subst=RobSubstitutionSP(new RobSubstitutionTL()); } - VirtualIterator > operator() (pair nums) + VirtualIterator > operator() (pair nums) { CALL("Factoring::UnificationsFn::operator()"); @@ -70,19 +70,19 @@ class Factoring::UnificationsOnPositiveFn if(l1->isEquality()) { //We don't perform factoring with equalities - return VirtualIterator >::getEmpty(); + return VirtualIterator >::getEmpty(); } if(_sel.isNegativeForSelection(l1)) { //We don't perform factoring on negative literals // (this check only becomes relevant, when there is more than one literal selected // and yet the selected ones are not all positive -- see the check in generateClauses) - return VirtualIterator >::getEmpty(); + return VirtualIterator >::getEmpty(); } - SubstIterator unifs=_subst->unifiers(l1,0,l2,0, false); + SubstIterator unifs=_subst->unifiers(l1,l2, false); if(!unifs.hasNext()) { - return VirtualIterator >::getEmpty(); + return VirtualIterator >::getEmpty(); } return pvi( pushPairIntoRightIterator(l2, unifs) ); @@ -104,7 +104,7 @@ class Factoring::ResultsFn public: ResultsFn(Clause* cl, bool afterCheck, Ordering& ord) : _cl(cl), _cLen(cl->length()), _afterCheck(afterCheck), _ord(ord) {} - Clause* operator() (pair arg) + Clause* operator() (pair arg) { CALL("Factoring::ResultsFn::operator()"); @@ -119,13 +119,13 @@ class Factoring::ResultsFn if (_afterCheck && _cl->numSelected() > 1) { TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); - skippedAfter = arg.second->apply(skipped, 0); + skippedAfter = arg.second->apply(skipped, DEFAULT_BANK); } for(unsigned i=0;i<_cLen;i++) { Literal* curr=(*_cl)[i]; if(curr!=skipped) { - Literal* currAfter = arg.second->apply(curr, 0); + Literal* currAfter = arg.second->apply(curr, DEFAULT_BANK); if (skippedAfter) { TIME_TRACE(TimeTrace::LITERAL_ORDER_AFTERCHECK); diff --git a/Inferences/ForwardDemodulation.cpp b/Inferences/ForwardDemodulation.cpp index 0a3b57a921..e382184757 100644 --- a/Inferences/ForwardDemodulation.cpp +++ b/Inferences/ForwardDemodulation.cpp @@ -126,7 +126,7 @@ bool ForwardDemodulation::perform(Clause* cl, Clause*& replacem // However, ForwardDemodulation uses a CodeTree as its // indexing mechanism, and it is not clear how to extend // the substitution returned by a code tree. - static RobSubstitution subst; + static RobSubstitutionTS subst; bool resultTermIsVar = qr.term.isVar(); if(resultTermIsVar){ TermList querySort = SortHelper::getTermSort(trm, lit); diff --git a/Inferences/HyperSuperposition.cpp b/Inferences/HyperSuperposition.cpp index cb983cd619..d60d7f2743 100644 --- a/Inferences/HyperSuperposition.cpp +++ b/Inferences/HyperSuperposition.cpp @@ -90,7 +90,7 @@ bool HyperSuperposition::rewriterEntryComparator(RewriterEntry p1, RewriterEntry return w1isLiteral(),t2->isLiteral()); @@ -226,7 +226,7 @@ void HyperSuperposition::tryUnifyingSuperpositioins(Clause* cl, unsigned literal Color clauseClr = cl->color(); - static RobSubstitution subst; + static RobSubstitutionTS subst; subst.reset(); int bank2 = disjointVariables ? 1 : 0; @@ -274,9 +274,9 @@ void HyperSuperposition::tryUnifyingSuperpositioins(Clause* cl, unsigned literal t1Rwr = SubtermReplacer(src,tgt).transform(t1Rwr); } - static RobSubstitution checkerSubst; + static RobSubstitutionTS checkerSubst; checkerSubst.reset(); - if(!checkerSubst.unifyArgs(t1Rwr, 0, t2, bank2)) { + if(!checkerSubst.unify(TermList(t1Rwr), 0, TermList(t2), bank2)) { return; } @@ -430,7 +430,7 @@ bool HyperSuperposition::tryGetUnifyingPremises(Term* t1, Term* t2, Color clr, b Color clauseClr = clr; - static RobSubstitution subst; + static RobSubstitutionTS subst; subst.reset(); int bank2 = disjointVariables ? 1 : 0; diff --git a/Inferences/HyperSuperposition.hpp b/Inferences/HyperSuperposition.hpp index 6e866d7a4b..01428ea4d4 100644 --- a/Inferences/HyperSuperposition.hpp +++ b/Inferences/HyperSuperposition.hpp @@ -55,14 +55,14 @@ class HyperSuperposition typedef pair ClausePair; typedef Stack ClausePairStack; - bool tryToUnifyTwoTermPairs(RobSubstitution& subst, TermList tp1t1, int bank11, + bool tryToUnifyTwoTermPairs(RobSubstitutionTS& subst, TermList tp1t1, int bank11, TermList tp1t2, int bank12, TermList tp2t1, int bank21, TermList tp2t2, int bank22); bool tryMakeTopUnifiableByRewriter(TermList t1, TermList t2, int t2Bank, int& nextAvailableBank, ClauseStack& premises, - RewriterStack& rewriters, RobSubstitution& subst, Color& infClr); + RewriterStack& rewriters, RobSubstitutionTS& subst, Color& infClr); bool tryGetRewriters(Term* t1, Term* t2, int t2Bank, int& nextAvailableBank, ClauseStack& premises, - RewriterStack& rewriters, RobSubstitution& subst, Color& infClr); + RewriterStack& rewriters, RobSubstitutionTS& subst, Color& infClr); void tryUnifyingSuperpositioins(Clause* cl, unsigned literalIndex, Term* t1, Term* t2, bool disjointVariables, ClauseStack& acc); diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index d7be20bb92..6cb5da6190 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -58,25 +58,39 @@ bool BetaNormaliser::exploreSubterms(TermList orig, TermList newTerm) return false; } -TermList WHNF::normalise(TermList t) +TermList WHNFDeref::normalise(TermList t) { - CALL("WHNF::normalise"); + CALL("WHNFDeref::normalise"); // term transformer does not work at the top level... t = transformSubterm(t); return t.isLambdaTerm() ? transform(t) : t; } -TermList WHNF::transformSubterm(TermList t) +TermList WHNFDeref::transformSubterm(TermList t) { - CALL("WHNF::transformSubterm"); + CALL("WHNFDeref::transformSubterm"); - return BetaNormaliser().transformSubterm(t); + if(t.isLambdaTerm()) return t; + + TermList head; + TermStack args; + ApplicativeHelper::getHeadAndArgs(t, head, args); + head = _sub->derefBound(head); + + while(ApplicativeHelper::canHeadReduce(head, args)){ + t = RedexReducer().reduce(head, args); + if(t.isLambdaTerm()) break; + ApplicativeHelper::getHeadAndArgs(t, head, args); + head = _sub->derefBound(head); + } + + return t; } -bool WHNF::exploreSubterms(TermList orig, TermList newTerm) +bool WHNFDeref::exploreSubterms(TermList orig, TermList newTerm) { - CALL("WHNF::exploreSubterms"); + CALL("WHNFDeref::exploreSubterms"); return newTerm.isLambdaTerm() && newTerm.term()->hasRedex(); } diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 1328514717..39164ed481 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -20,6 +20,7 @@ #include "Lib/Deque.hpp" #include "Lib/BiMap.hpp" #include "Kernel/TermTransformer.hpp" +#include "Kernel/RobSubstitution.hpp" using namespace Kernel; using namespace Shell; @@ -120,17 +121,20 @@ class EtaNormaliser : public TermTransformer // similar to BetaNormaliser, but places a term in WHNF instead // of into full normal form -class WHNF : public TermTransformer +class WHNFDeref : public TermTransformer { public: - WHNF() { + WHNFDeref( RobSubstitutionTL* sub) : _sub(sub) { dontTransformSorts(); } TermList normalise(TermList t); // puts term into weak head normal form TermList transformSubterm(TermList t) override; bool exploreSubterms(TermList orig, TermList newTerm) override; + +private: + RobSubstitutionTL* _sub; }; diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index dfc351dbf0..3f24185f06 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -23,7 +23,7 @@ namespace Kernel namespace UnificationAlgorithms { -SubstIterator HOLUnification::unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck) +SubstIterator HOLUnification::unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck) { CALL("HOLUnification::unifiers"); @@ -31,130 +31,116 @@ SubstIterator HOLUnification::unifiers(TermList t1, int index1, TermList t2, int return SubstIterator::getEmpty(); } -SubstIterator HOLUnification::postprocess(RobSubstitution* sub) +SubstIterator HOLUnification::postprocess(RobSubstitutionTL* sub) { CALL("HOLUnification::postprocess"); - cout << *sub << endl; - // TODO dummy implementation return pvi(getSingletonIterator(sub)); } -bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub) +bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) { CALL("HOLUnification::associate"); TermList query(specialVar, /* special */ true); - return unifyTreeTerms(query, QUERY_BANK, node, NORM_RESULT_BANK, splittable, sub); + return unifyTreeTerms(query, node, splittable, sub); } -bool HOLUnification::unifyTreeTerms(TermList t1, unsigned bank1, TermList t2, unsigned bank2, bool splittable, RobSubstitution* sub){ - CALL("HOLUnification::unifyWithPlaceholders"); - - return unify(TermSpec(t1,bank1), TermSpec(t2,bank2), splittable, sub); -} -// TODO consider aadding a check for loose De Bruijn indices +// TODO consider adding a check for loose De Bruijn indices // see E prover code by petar /TERMS/cte_fixpoint_unif.c #define DEBUG_FP_UNIFY(LVL, ...) if (LVL <= 1) DBG(__VA_ARGS__) -HOLUnification::OracleResult HOLUnification::fixpointUnify(VarSpec var, const TermSpec& t, RobSubstitution* sub) +HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermList t, RobSubstitutionTL* sub) { CALL("HOLUnification::fixpointUnify"); + ASS(var.isVar()); - struct TermSpecFP { - TermSpec t; + struct TermListFP { + TermList t; bool underFlex; }; - bool tIsLambda = t.toTerm(*sub).whnf().isLambdaTerm(); - VarSpec toFind = sub->root(var); - TermSpec ts = sub->derefBound(t).clone(); + bool tIsLambda = t.whnfDeref(sub).isLambdaTerm(); + TermList toFind = sub->root(var); + TermList ts = sub->derefBound(t); // TODO do we even need this derefBound? Shouldn't t already be dereferenced??? if(ts.isVar()) { DEBUG_FP_UNIFY(1, ".fp binding(", toFind, " -> ", ts, ")") - sub->bind(toFind, ts.clone()); + sub->bind(toFind, ts); return OracleResult::SUCCESS; } - typedef DHSet EncounterStore; - Recycled encountered; - Recycled> todo; - todo->push(TermSpecFP { .t = t.clone(), .underFlex = false }); + Recycled> todo; + todo->push(TermListFP { .t = t, .underFlex = false }); while (todo->isNonEmpty()){ auto ts = todo->pop(); + auto term = ts.t.whnfDeref(sub); + // TODO consider adding an encountered store similar to first-order occurs check... - TermSpec head; - Stack args; + TermList head; + TermStack args; - ts.t.headAndArgs(head, args); + ApplicativeHelper::getHeadAndArgs(term, head, args); if (head.isVar()) { - VarSpec tvar = sub->root(head.varSpec()); - if(tvar == toFind) { + if(head == toFind) { if(ts.underFlex || (tIsLambda && args.size())){ return OracleResult::OUT_OF_FRAGMENT; } else { return OracleResult::FAILURE; } - } else if(!encountered->find(tvar)) { - TermSpec dtvar = sub->derefBound(TermSpec(tvar)).clone(); - if(!dtvar.isVar()) { - encountered->insert(tvar); - todo->push(TermSpecFP { .t = std::move(dtvar), .underFlex = ts.underFlex }); - } - } - - } else { // TODO what about if head is a lambda term?? - // this is a bit nasty. - // if we know that the original variable is a term var - // we wouldn't need to iterate through sort arguments - // sadly, that is not the case ... - for(auto c : head.allArgs()){ - todo->push(TermSpecFP { .t = c.clone(), .underFlex = ts.underFlex} ); } + } else if (head.isLambdaTerm()) { + ASS(!args.size()); // if we had args, term wouldnt be in whnf + todo->push(TermListFP { head.lambdaBody(), .underFlex = ts.underFlex} ); } + bool argsUnderFlex = head.isVar() ? true : ts.underFlex; for(unsigned i = 0; i < args.size(); i++){ - // TODO double iteration over args. Once here and once in TermSpec::headAndArgs(...) - todo->push(TermSpecFP { args[i].clone(), .underFlex = argsUnderFlex} ); + todo->push(TermListFP { args[i], .underFlex = argsUnderFlex} ); } } DEBUG_FP_UNIFY(1, ".fp binding(", toFind, " -> ", ts, ")") - sub->bind(toFind, ts.clone()); + sub->bind(toFind, ts); return OracleResult::SUCCESS; } #define DEBUG_UNIFY(LVL, ...) if (LVL <= 2) DBG(__VA_ARGS__) -bool HOLUnification::unify(TermSpec t1, TermSpec t2, bool splittable, RobSubstitution* sub) +bool HOLUnification::unifyTreeTerms(TermList t1, TermList t2, bool splittable, RobSubstitutionTL* sub) { - CALL("HOLUnification::unify"); + CALL("HOLUnification::unifyTreeTerms"); DEBUG_UNIFY(1, ".unify(", t1, ",", t2, (splittable ? "" : "{NS}"), ")") - if(t1 == t2) { + if(sub->sameTermContent(t1,t2)) { return true; } auto impl = [&]() -> bool { - TermList t1thead = t1.deref(sub).head(); + if( (t1.isTerm() && t1.term()->isSort()) || + (t2.isTerm() && t2.term()->isSort()) ) { + return sub->unify(t1,t2); // sorts can be unified by standard algo + } + + TermList t1thead = sub->derefBound(t1.head()); // Node term and query term must have the same type. Hence we do not // check type of query. We can rely on the !splittable check - if(!t1t.isVar() && (t1thead.isVar() || t1thead.isLambdaTerm() || !splittable)) { + if(!t1.isVar() && (t1thead.isVar() || t1thead.isLambdaTerm() || !splittable)) { // create top level constraint - sub->pushConstraint(UnificationConstraint(t1.clone(), t2.clone())); + sub->pushConstraint(UnificationConstraint(t1, t2)); return true; } Recycled> toDo; - toDo->push(UnificationConstraint(t1.clone(), t2.clone())); + toDo->push(UnificationConstraint(t1, t2)); // Save encountered unification pairs to avoid // recomputing their unification @@ -162,67 +148,65 @@ bool HOLUnification::unify(TermSpec t1, TermSpec t2, bool splittable, RobSubstit auto pushTodo = [&](auto pair) { if (!encountered->find(pair)) { - encountered->insert(pair.clone()); - toDo->push(std::move(pair)); + encountered->insert(pair); + toDo->push(pair); } }; auto sortCheck = [](auto& t) { return env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION && - (t.isNormalVar() || t.isArrowSort() || t.isBoolSort()); + (t.isOrdinaryVar() || t.isArrowSort() || t.isBoolSort()); }; while (toDo->isNonEmpty()) { auto x = toDo->pop(); - auto& dt1 = x.lhs().deref(sub); - auto& dt2 = x.rhs().deref(sub); + TermList dt1 = sub->derefBound(x.lhs()); + TermList dt2 = sub->derefBound(x.rhs()); DEBUG_UNIFY(2, ".unify(", dt1, ",", dt2, ")") - if (dt1 == dt2) { + if (sub->sameTermContent(dt1, dt2)) { // do nothing } else if(dt1.isVar()) { - auto res = fixpointUnify(dt1.varSpec(), dt2, sub); + auto res = fixpointUnify(dt1, dt2, sub); if(res == OracleResult::FAILURE) return false; if(res == OracleResult::OUT_OF_FRAGMENT) - sub->pushConstraint(UnificationConstraint(dt1.clone(), dt2.clone())); + sub->pushConstraint(UnificationConstraint(dt1, dt2)); } else if(dt2.isVar()) { - auto res = fixpointUnify(dt2.varSpec(), dt1, sub); + auto res = fixpointUnify(dt2, dt1, sub); if(res == OracleResult::FAILURE) return false; if(res == OracleResult::OUT_OF_FRAGMENT) - sub->pushConstraint(UnificationConstraint(dt2.clone(), dt1.clone())); + sub->pushConstraint(UnificationConstraint(dt2, dt1)); - } else if(dt1.isTerm() && dt2.isTerm() && dt1.functor() == dt2.functor()) { + } else if(dt1.isTerm() && dt2.isTerm() && dt1.term()->functor() == dt2.term()->functor()) { if(dt1.isApplication()){ ASS(dt2.isApplication()); - TermSpec dt1s1 = dt1.typeArg(0); - TermSpec dt2s1 = dt2.typeArg(0); - TermSpec dt1t2 = dt1.termArg(1); - TermSpec dt2t2 = dt2.termArg(1); - TermList dt1t2head = dt1t2.head(sub); - TermList dt2t2head = dt2t2.head(sub); - pushTodo(UnificationConstraint(dt1s1.clone(), dt2s1.clone())); - pushTodo(UnificationConstraint(dt1.typeArg(1).clone(), dt2.typeArg(1).clone())); - pushTodo(UnificationConstraint(dt1.termArg(0).clone(), dt2.termArg(0).clone())); + TermList dt1s1 = dt1.term()->typeArg(0); + TermList dt2s1 = dt2.term()->typeArg(0); + TermList dt1t2 = dt1.term()->termArg(1); + TermList dt2t2 = dt2.term()->termArg(1); + TermList dt1t2head = sub->derefBound(dt1t2.head()); + TermList dt2t2head = sub->derefBound(dt2t2.head()); + + pushTodo(UnificationConstraint(dt1.term()->termArg(0), dt2.term()->termArg(0))); // Not sure the logic below is right. Things get very complicated because // the sorts can be special variables. I think what we have below is an // over approximation, but I am not 100% - if(dt1t2.isVar() || dt2t2.isVar()){ - // if either is a variable let fixpoint unification decide - // whether to create a constraint or to bind - pushTodo(UnificationConstraint(std::move(dt1t2), std::move(dt2t2))); - } else if(sortCheck(dt1s1) || dt1t2head.isVar() || dt1t2head.isLambdaTerm() || - sortCheck(dt2s1) || dt2t2head.isVar() || dt2t2head.isLambdaTerm() ) { - sub->pushConstraint(UnificationConstraint(dt1t2.clone(), dt2t2.clone())); + if(!dt1t2.isVar() && !dt2t2.isVar() && // if either is a variable let fixpoint unification decide whether to create a constraint or to bind + (sortCheck(dt1s1) || dt1t2head.isVar() || dt1t2head.isLambdaTerm() || + sortCheck(dt2s1) || dt2t2head.isVar() || dt2t2head.isLambdaTerm() )) { + sub->pushConstraint(UnificationConstraint(dt1t2, dt2t2)); } else { - pushTodo(UnificationConstraint(std::move(dt1t2), std::move(dt2t2))); + pushTodo(UnificationConstraint(dt1t2, dt2t2)); } } else { - for (auto c : dt1.allArgs().zip(dt2.allArgs())) { - pushTodo(UnificationConstraint(std::move(c.first), std::move(c.second))); + for (unsigned i = 0; i < dt1.term()->arity(); i++) { + // must be a sort + bool unifySort = sub->unify(dt1.nthArg(i), dt2.nthArg(i)); + if(!unifySort) return false; // failed sort unification } } diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index b3317009a1..3ce80c3d3e 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -39,7 +39,7 @@ namespace UnificationAlgorithms { class HOLUnification { - bool unify(TermSpec t1, TermSpec t2, bool splittable, RobSubstitution* sub); + bool unifyTreeTerms(TermList t1, TermList t2, bool splittable, RobSubstitutionTL* sub); // TODO if we implement solid fragment, this will not work... enum OracleResult @@ -49,15 +49,16 @@ class HOLUnification { OUT_OF_FRAGMENT=3 }; - OracleResult fixpointUnify(VarSpec var, const TermSpec& t2, RobSubstitution* sub); + OracleResult fixpointUnify(TermList var, TermList t, RobSubstitutionTL* sub); + + using UnificationConstraint = UnificationConstraint; public: HOLUnification() { } - bool unifyTreeTerms(TermList t1, unsigned bank1, TermList t2, unsigned bank2, bool splittable , RobSubstitution* sub); - bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub); - SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck = false); - SubstIterator postprocess(RobSubstitution*); + bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub); + SubstIterator unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck = false); + SubstIterator postprocess(RobSubstitutionTL*); // method used to decide whether to return all children of a node during tree // traversal or only the children with same top diff --git a/Kernel/LookaheadLiteralSelector.cpp b/Kernel/LookaheadLiteralSelector.cpp index 277b24e0f6..e43b74e65e 100644 --- a/Kernel/LookaheadLiteralSelector.cpp +++ b/Kernel/LookaheadLiteralSelector.cpp @@ -112,8 +112,8 @@ struct LookaheadLiteralSelector::GenIteratorIterator { bool haveEqRes=false; if(lit->isNegative() && lit->isEquality()) { - RobSubstitution rs; - if(rs.unify(*lit->nthArgument(0), 0, *lit->nthArgument(1), 0)) { + RobSubstitutionTL rs; + if(rs.unify(*lit->nthArgument(0), *lit->nthArgument(1))) { haveEqRes=true; nextIt=pvi( dropElementType(getSingletonIterator(0)) ); } diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index d4a493bc79..2efa9cc427 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -69,42 +69,47 @@ bool MismatchHandler::isInterpreted(unsigned functor) const class AcIter { unsigned _function; - Recycled> _todo; - RobSubstitution const* _subs; + Recycled _todo; + RobSubstitutionTL const* _subs; public: - AcIter(unsigned function, TermSpec t, RobSubstitution const* subs) : _function(function), _todo(), _subs(subs) - { _todo->push(std::move(t)); } + AcIter(unsigned function, TermList t, RobSubstitutionTL const* subs) : _function(function), _todo(), _subs(subs) + { _todo->push(t); } - DECL_ELEMENT_TYPE(TermSpec); + DECL_ELEMENT_TYPE(TermList); bool hasNext() const { return !_todo->isEmpty(); } - TermSpec next() { + TermList next() { ASS(!_todo->isEmpty()); auto t = _todo->pop(); - auto* dt = &t.deref(_subs); - while (dt->isTerm() && dt->functor() == _function) { - ASS_EQ(dt->nTermArgs(), 2); - _todo->push(dt->termArg(1)); - t = dt->termArg(0); - dt = &t.deref(_subs); + auto* dt = &_subs->derefBound(t); + while (dt->isTerm() && dt->term()->functor() == _function) { + ASS_EQ(dt->term()->arity(), 2); + _todo->push(dt->term()->termArg(1)); + t = dt->term()->termArg(0); + dt = &_subs->derefBound(t); } - return dt->clone(); + return *dt; } }; // auto acIter(unsigned f, TermSpec t) // { return iterTraits(AcIter(f, t)); } -bool MismatchHandler::canAbstract(TermSpec const& t1, TermSpec const& t2) const +bool MismatchHandler::canAbstract(TermList const& t1, TermList const& t2) const { - + + auto isNumeral = [](TermList t){ + ASS(t.isTerm()); + return env.signature->getFunction(t.term()->functor())->interpretedNumber(); + }; + if(!(t1.isTerm() && t2.isTerm())) return false; - if(t1.isSort() || t2.isSort()) return false; + if(t1.term()->isSort() || t2.term()->isSort()) return false; - bool t1Interp = isInterpreted(t1.functor()); - bool t2Interp = isInterpreted(t2.functor()); - bool bothNumbers = t1.isNumeral() && t2.isNumeral(); + bool t1Interp = isInterpreted(t1.term()->functor()); + bool t2Interp = isInterpreted(t2.term()->functor()); + bool bothNumbers = isNumeral(t1) && isNumeral(t2); switch(_mode) { case Shell::Options::UnificationWithAbstraction::INTERP_ONLY: @@ -114,8 +119,8 @@ bool MismatchHandler::canAbstract(TermSpec const& t1, TermSpec const& t2) const break; case Shell::Options::UnificationWithAbstraction::CONSTANT: return !bothNumbers && (t2Interp || t2Interp) - && (t1Interp || t1.nTermArgs()) - && (t2Interp || t2.nTermArgs()); + && (t1Interp || t1.term()->numTermArguments()) + && (t2Interp || t2.term()->numTermArguments()); case Shell::Options::UnificationWithAbstraction::ALL: case Shell::Options::UnificationWithAbstraction::GROUND: return true; @@ -128,7 +133,7 @@ bool MismatchHandler::canAbstract(TermSpec const& t1, TermSpec const& t2) const ASSERTION_VIOLATION; } -Option MismatchHandler::tryAbstract(RobSubstitution* sub, TermSpec const& t1, TermSpec const& t2) const +Option MismatchHandler::tryAbstract(RobSubstitutionTL* sub, TermList const& t1, TermList const& t2) const { CALL("MismatchHandler::checkUWA"); using Uwa = Shell::Options::UnificationWithAbstraction; @@ -137,36 +142,34 @@ Option MismatchHandler::tryAbstract(RobSubst // TODO add parameter instead of reading from options if (_mode == Uwa::AC1 || _mode == Uwa::AC2) { - if (!(t1.isTerm() && theory->isInterpretedFunction(t1.functor(), IntTraits::addI)) - || !(t2.isTerm() && theory->isInterpretedFunction(t2.functor(), IntTraits::addI))) { + if (!(t1.isTerm() && theory->isInterpretedFunction(t1.term()->functor(), IntTraits::addI)) + || !(t2.isTerm() && theory->isInterpretedFunction(t2.term()->functor(), IntTraits::addI))) { return Option(); } - auto a1 = iterTraits(AcIter(IntTraits::addF(), t1.clone(), sub)).template collect(); - auto a2 = iterTraits(AcIter(IntTraits::addF(), t2.clone(), sub)).template collect(); - auto cmp = [&](TermSpec const& lhs, TermSpec const& rhs) { return TermSpec::compare(lhs, rhs, [&](auto& t) -> TermSpec const& { return t.deref(sub); }); }; - auto less = [&](TermSpec const& lhs, TermSpec const& rhs) { return cmp(lhs, rhs) < 0; }; + auto a1 = iterTraits(AcIter(IntTraits::addF(), t1, sub)).template collect(); + auto a2 = iterTraits(AcIter(IntTraits::addF(), t2, sub)).template collect(); + // TODO not sure that the below works as desired AYB + auto less = [&](TermList const& lhs, TermList const& rhs) { return lhs < rhs; }; a1.sort(less); a2.sort(less); - // a1.sort(); - // a2.sort(); - Recycled> diff1_; - Recycled> diff2_; + Recycled diff1_; + Recycled diff2_; auto& diff1 = *diff1_; auto& diff2 = *diff2_; - diff1.moveFromIterator(iterSortedDiff(arrayIter(a1), arrayIter(a2), cmp).map([](auto& x) -> TermSpec { return x.clone(); })); - diff2.moveFromIterator(iterSortedDiff(arrayIter(a2), arrayIter(a1), cmp).map([](auto& x) -> TermSpec { return x.clone(); })); + diff1.moveFromIterator(iterSortedDiff(arrayIter(a1), arrayIter(a2)).map([](auto& x) -> TermList { return x; })); + diff2.moveFromIterator(iterSortedDiff(arrayIter(a2), arrayIter(a1)).map([](auto& x) -> TermList { return x; })); auto sum = [](auto& diff) { return arrayIter(diff) - .map([](auto& x) { return x.clone(); }) + .map([](auto& x) { return x; }) .fold([](auto l, auto r) - { return TermSpec(IntTraits::addF(), std::move(l), std::move(r)); }) + { return TermList(Term::create2(IntTraits::addF(), l, r)); }) //create non-shared? .unwrap(); }; auto diffConstr = [&]() { return UnificationConstraint(sum(diff1), sum(diff2)); }; auto functors = [](auto& diff) - { return arrayIter(diff).map([](auto& f) { return f.functor(); }); }; + { return arrayIter(diff).map([](auto& f) { return f.term()->functor(); }); }; if (diff1.size() == 0 && diff2.size() == 0) { return some(AbstractionResult(EqualIf())); @@ -176,10 +179,10 @@ Option MismatchHandler::tryAbstract(RobSubst return some(AbstractionResult(NeverEqual{})); } else if (_mode == Uwa::AC2 && diff1.size() == 1 && diff1[0].isVar()) { - return some(AbstractionResult(EqualIf().unify(UnificationConstraint(std::move(diff1[0]), sum(diff2))))); + return some(AbstractionResult(EqualIf().unify(UnificationConstraint(diff1[0], sum(diff2))))); } else if (_mode == Uwa::AC2 && diff2.size() == 1 && diff2[0].isVar()) { - return some(AbstractionResult(EqualIf().unify(UnificationConstraint(std::move(diff2[0]), sum(diff1))))); + return some(AbstractionResult(EqualIf().unify(UnificationConstraint(diff2[0], sum(diff1))))); } else if (concatIters(arrayIter(diff1), arrayIter(diff2)).any([](auto& x) { return x.isVar(); })) { return some(AbstractionResult(EqualIf().constr(diffConstr()))); @@ -195,7 +198,7 @@ Option MismatchHandler::tryAbstract(RobSubst auto abs = canAbstract(t1, t2); DEBUG("canAbstract(", t1, ",", t2, ") = ", abs); return someIf(abs, [&](){ - return AbstractionResult(EqualIf().constr(UnificationConstraint(t1.clone(), t2.clone()))); + return AbstractionResult(EqualIf().constr(UnificationConstraint(t1, t2))); }); } } @@ -203,10 +206,10 @@ Option MismatchHandler::tryAbstract(RobSubst namespace UnificationAlgorithms { -bool AbstractingUnification::fixedPointIteration(RobSubstitution* sub) +bool AbstractingUnification::fixedPointIteration(RobSubstitutionTL* sub) { CALL("AbstractingUnification::fixedPointIteration"); - Recycled> todo; + Recycled>> todo; while (!sub->emptyConstraints()) { todo->push(sub->popConstraint()); } @@ -216,7 +219,7 @@ bool AbstractingUnification::fixedPointIteration(RobSubstitution* sub) auto c = todo->pop(); DEBUG_FINALIZE(2, "popped: ", c); bool progress; - auto res = unify(c.lhs().clone(), c.rhs().clone(), progress, sub); + auto res = unify(c.lhs(), c.rhs(), progress, sub); if (!res) { DEBUG_FINALIZE(1, "finalizing failed"); return false; @@ -232,15 +235,15 @@ bool AbstractingUnification::fixedPointIteration(RobSubstitution* sub) return true; } -bool AbstractingUnification::unify(TermList term1, unsigned bank1, TermList term2, unsigned bank2, RobSubstitution* sub) +bool AbstractingUnification::unify(TermList term1, TermList term2, RobSubstitutionTL* sub) { ASS(_uwa._mode != Shell::Options::UnificationWithAbstraction::OFF); bool progress; - return unify(TermSpec(term1, bank1), TermSpec(term2, bank2), progress, sub); + return unify(term1, term2, progress, sub); } -SubstIterator AbstractingUnification::unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck) +SubstIterator AbstractingUnification::unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck) { CALL("AbstractingUnification::unifiers"); @@ -251,7 +254,7 @@ SubstIterator AbstractingUnification::unifiers(TermList t1, int index1, TermList return SubstIterator::getEmpty(); } - bool unifies = unify(t1, index1, t2, index2, sub); + bool unifies = unify(t1, t2, sub); if(!unifies){ return SubstIterator::getEmpty(); @@ -265,7 +268,7 @@ SubstIterator AbstractingUnification::unifiers(TermList t1, int index1, TermList return success ? pvi(getSingletonIterator(sub)) : SubstIterator::getEmpty(); } -SubstIterator AbstractingUnification::postprocess(RobSubstitution* sub) +SubstIterator AbstractingUnification::postprocess(RobSubstitutionTL* sub) { CALL("AbstractingUnification::postprocess"); @@ -279,26 +282,26 @@ SubstIterator AbstractingUnification::postprocess(RobSubstitution* sub) #define DEBUG_UNIFY(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) -bool AbstractingUnification::unify(TermSpec t1, TermSpec t2, bool& progress, RobSubstitution* sub) +bool AbstractingUnification::unify(TermList t1, TermList t2, bool& progress, RobSubstitutionTL* sub) { CALL("AbstractingUnification::unify"); ASS_NEQ(_uwa._mode, Shell::Options::UnificationWithAbstraction::OFF) DEBUG_UNIFY(1, ".unify(", t1, ",", t2, ")") progress = false; - if(t1 == t2) { + if(sub->sameTermContent(t1,t2)) { progress = true; return true; } auto impl = [&]() -> bool { - Recycled> toDo; - toDo->push(UnificationConstraint(t1.clone(), t2.clone())); + Recycled>> toDo; + toDo->push(UnificationConstraint(t1, t2)); // Save encountered unification pairs to avoid // recomputing their unification - Recycled> encountered; + Recycled>> encountered; Option absRes; auto doAbstract = [&](auto& l, auto& r) -> bool @@ -322,27 +325,28 @@ bool AbstractingUnification::unify(TermSpec t1, TermSpec t2, bool& progress, Rob // toDo.push(pair); // } else if (!encountered->find(pair)) { - encountered->insert(pair.clone()); - toDo->push(std::move(pair)); + encountered->insert(pair); + toDo->push(pair); } }; while (toDo->isNonEmpty()) { auto x = toDo->pop(); - auto& dt1 = x.lhs().deref(sub); - auto& dt2 = x.rhs().deref(sub); + TermList dt1 = sub->derefBound(x.lhs()); + TermList dt2 = sub->derefBound(x.rhs()); + DEBUG_UNIFY(2, "popped: ", dt1, " = ", dt2) - if (dt1 == dt2) { + if (sub->sameTermContent(dt1, dt2)) { progress = true; - } else if(dt1.isVar() && !sub->occurs(dt1.varSpec(), dt2)) { + } else if(dt1.isVar() && !sub->occurs(dt1, dt2)) { progress = true; - sub->bind(dt1.varSpec(), dt2.clone()); + sub->bind(dt1, dt2); - } else if(dt2.isVar() && !sub->occurs(dt2.varSpec(), dt1)) { + } else if(dt2.isVar() && !sub->occurs(dt2, dt1)) { progress = true; - sub->bind(dt2.varSpec(), dt1.clone()); + sub->bind(dt2, dt1); } else if(doAbstract(dt1, dt2)) { @@ -353,7 +357,7 @@ bool AbstractingUnification::unify(TermSpec t1, TermSpec t2, bool& progress, Rob } else { ASS(absRes->is()) auto& conditions = absRes->unwrap(); - auto eq = [](UnificationConstraint& c, TermSpec const& lhs, TermSpec const& rhs) + auto eq = [](UnificationConstraint& c, TermList const& lhs, TermList const& rhs) { return (c.lhs() == lhs && c.rhs() == rhs) || (c.lhs() == rhs && c.rhs() == lhs); }; @@ -372,10 +376,10 @@ bool AbstractingUnification::unify(TermSpec t1, TermSpec t2, bool& progress, Rob } } - } else if(dt1.isTerm() && dt2.isTerm() && dt1.functor() == dt2.functor()) { + } else if(dt1.isTerm() && dt2.isTerm() && dt1.term()->functor() == dt2.term()->functor()) { - for (auto c : dt1.allArgs().zip(dt2.allArgs())) { - pushTodo(UnificationConstraint(std::move(c.first), std::move(c.second))); + for (unsigned i = 0; i < dt1.term()->arity(); i++) { + pushTodo(UnificationConstraint(dt1.nthArg(i), dt2.nthArg(i))); } } else { diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 2a011426b8..04ebeab857 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -40,6 +40,8 @@ class MismatchHandler final MismatchHandler(Shell::Options::UnificationWithAbstraction mode) : _mode(mode) {} + using UnificationConstraint = UnificationConstraint; + struct EqualIf { Recycled> _unify; Recycled> _constr; @@ -94,9 +96,9 @@ class MismatchHandler final /** TODO document */ Option tryAbstract( - RobSubstitution* rob, - TermSpec const& t1, - TermSpec const& t2) const; + RobSubstitutionTL* rob, + TermList const& t1, + TermList const& t2) const; auto mode() const { return _mode; } @@ -109,8 +111,8 @@ class MismatchHandler final // for old non-alasca uwa modes bool isInterpreted(unsigned f) const; bool canAbstract( - TermSpec const& t1, - TermSpec const& t2) const; + TermList const& t1, + TermList const& t2) const; }; namespace UnificationAlgorithms { @@ -120,19 +122,19 @@ class RobUnification { public: // to be used for tree calls - bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub) + bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) { CALL("RobUnification::associate"); TermList query(specialVar, /* special */ true); - return sub->unify(query, Indexing::QUERY_BANK, node, Indexing::NORM_RESULT_BANK); + return sub->unify(query, node); } // To be used for non-tree calls. Return an iterator instead of bool // to fit HOL interface - SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck = false){ + SubstIterator unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck = false){ CALL("RobUnification::unifiers"); - if(sub->unify(t1, index1, t2, index2)){ + if(sub->unify(t1, t2)){ return pvi(getSingletonIterator(sub)); } return SubstIterator::getEmpty(); @@ -140,7 +142,7 @@ class RobUnification { // function is called when in the leaf of a substitution tree // during unification. t is the term stored in the leaf - SubstIterator postprocess(RobSubstitution* sub){ + SubstIterator postprocess(RobSubstitutionTL* sub){ CALL("RobUnification::postprocess"); // sub is a unifier of query and leaf term t, return it @@ -159,18 +161,18 @@ class AbstractingUnification { AbstractingUnification(MismatchHandler uwa, bool fixedPointIter) : _uwa(uwa), _fpi(fixedPointIter) { } - bool unify(TermList t1, unsigned bank1, TermList t2, unsigned bank2, RobSubstitution* sub); - bool unify(TermSpec l, TermSpec r, bool& progress, RobSubstitution* sub); - bool fixedPointIteration(RobSubstitution* sub); - SubstIterator unifiers(TermList t1, int index1, TermList t2, int index2, RobSubstitution* sub, bool topLevelCheck = false); - SubstIterator postprocess(RobSubstitution* sub); + bool unify(TermList t1, TermList t2, RobSubstitutionTL* sub); + bool unify(TermList l, TermList r, bool& progress, RobSubstitutionTL* sub); + bool fixedPointIteration(RobSubstitutionTL* sub); + SubstIterator unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck = false); + SubstIterator postprocess(RobSubstitutionTL* sub); - bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitution* sub) + bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) { CALL("AbstractingUnification::associate"); TermList query(specialVar, /* special */ true); - return unify(query, Indexing::QUERY_BANK, node, Indexing::NORM_RESULT_BANK, sub); + return unify(query, node, sub); } bool usesUwa() const { return _uwa.mode() != Options::UnificationWithAbstraction::OFF; } diff --git a/Kernel/Renaming.cpp b/Kernel/Renaming.cpp index 05de944b1a..031a9f1e15 100644 --- a/Kernel/Renaming.cpp +++ b/Kernel/Renaming.cpp @@ -121,13 +121,13 @@ void Renaming::makeInverse(const Renaming& orig) _identity = orig.identity(); } -TypedTermList Renaming::normalize(TypedTermList l) +TypedTermList Renaming::normalize(TypedTermList l, VarBank bank) { CALL("Renaming::normalize(Literal*)"); if (l.isTerm()) { - return TypedTermList(normalize(l.term())); + return TypedTermList(normalize(l.term(), bank)); } else { - Recycled n; + Recycled n(0, bank); n->normalizeVariables(TermList(l)); n->normalizeVariables(l.sort()); return TypedTermList(n->apply(TermList(l)), n->apply(l.sort())); @@ -135,29 +135,29 @@ TypedTermList Renaming::normalize(TypedTermList l) } -Literal* Renaming::normalize(Literal* l) +Literal* Renaming::normalize(Literal* l, VarBank bank) { CALL("Renaming::normalize(Literal*)"); - Recycled n; + Recycled n(0, bank); n->normalizeVariables(l); return n->apply(l); } -Term* Renaming::normalize(Term* trm) +Term* Renaming::normalize(Term* trm, VarBank bank) { CALL("Renaming::normalize(Term*)"); - Recycled n; + Recycled n(0, bank); n->normalizeVariables(trm); return n->apply(trm); } -TermList Renaming::normalize(TermList trm) +TermList Renaming::normalize(TermList trm, VarBank bank) { CALL("Renaming::normalize(TermList)"); - Recycled n; + Recycled n(0, bank); n->normalizeVariables(trm); return n->apply(trm); } diff --git a/Kernel/Renaming.hpp b/Kernel/Renaming.hpp index 4dd3b358ca..496d7591fb 100644 --- a/Kernel/Renaming.hpp +++ b/Kernel/Renaming.hpp @@ -37,14 +37,18 @@ class Renaming { USE_ALLOCATOR(Renaming); Renaming() : - _nextVar(0), _identity(true) { + _nextVar(0), _identity(true), _bank(DEFAULT_BANK) { } /* * Construct a renaming with names starting at firstVar */ Renaming(unsigned firstVar) : - _nextVar(firstVar), _identity(true) { + _nextVar(firstVar), _identity(true), _bank(DEFAULT_BANK) { + } + + Renaming(unsigned firstVar, VarBank bank) : + _nextVar(firstVar), _identity(true), _bank(bank) { } void reset() @@ -52,16 +56,24 @@ class Renaming { _data.reset(); _nextVar = 0; _identity = true; + _bank = DEFAULT_BANK; } bool keepRecycled() const { return _data.keepRecycled() > 0; } + void init(unsigned firstVar, VarBank bank){ + _data.reset(); + _nextVar = firstVar; + _identity = true; + _bank = bank; + } + unsigned getOrBind(unsigned v) { unsigned res; if (_data.findOrInsert(v, res, _nextVar)) { _nextVar++; if(v!=res) { - _identity = false; + _identity = false; } } return res; @@ -71,6 +83,8 @@ class Renaming { bool contains(unsigned v) { return _data.find(v); } + VarBank bank() { return _bank; } + Literal* apply(Literal* l); Term* apply(Term* l); TermList apply(TermList l); @@ -80,10 +94,10 @@ class Renaming { void normalizeVariables(TermList t); void makeInverse(const Renaming& orig); - static Literal* normalize(Literal* l); - static TypedTermList normalize(TypedTermList l); - static Term* normalize(Term* t); - static TermList normalize(TermList t); + static Literal* normalize(Literal* l, VarBank bank = DEFAULT_BANK); + static TypedTermList normalize(TypedTermList l, VarBank bank = DEFAULT_BANK); + static Term* normalize(Term* t, VarBank bank = DEFAULT_BANK); + static TermList normalize(TermList t, VarBank bank = DEFAULT_BANK); friend std::ostream& operator<<(std::ostream& out, Renaming const& self) { return out << self._data; } @@ -97,7 +111,7 @@ class Renaming { public: Applicator(Renaming* parent) : _parent(parent) {} TermList apply(unsigned var) - { return TermList(_parent->getOrBind(var), false); } + { return TermList(_parent->getOrBind(var), _parent->bank()); } private: Renaming* _parent; }; @@ -106,6 +120,8 @@ class Renaming { VariableMap _data; unsigned _nextVar; bool _identity; + // we may wish to rename and place on bank simultaneously + VarBank _bank; public: typedef VariableMap::Item Item; VirtualIterator items() const { return _data.items(); } diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 9414b4ff03..96daaf909a 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -34,162 +34,12 @@ namespace Kernel using namespace Lib; -std::ostream& operator<<(std::ostream& out, TermSpec const& self) -{ return self._self.match([&](TermSpec::Appl const& self) -> decltype(auto) { return out << env.signature->getFunction(self.functor)->name() << "(" << commaSep(self.argsIter()) << ")"; }, - [&](OldTermSpec const& self) -> decltype(auto) { return out << self.term << "/" << self.index; }); } +const int TermSpec::SPECIAL_INDEX=-2; +const int TermSpec::UNBOUND_INDEX=-1; -bool TermSpec::isOutputVar() const -{ return _self.match([](Appl const&) { return false; }, - [](OldTermSpec const& self) { ASS(self.index != RobSubstitution::UNBOUND_INDEX || self.term.isVar()); return self.index == RobSubstitution::UNBOUND_INDEX; }); } - - -TermList::Top TermSpec::top() const -{ return _self.match([](Appl const& a) { return TermList::Top::functor(a.functor); }, - [](OldTermSpec const& old) { return old.term.top(); }); } - -TermSpec const& TermSpec::deref(RobSubstitution const* s) const& - { return s->derefBound(*this); }; - -bool TermSpec::definitelyGround() const -{ return _self.match([](Appl const& a) { return iterTraits(a.argsIter()).all([](auto& x) { return x.definitelyGround(); }); }, - [](OldTermSpec const& t) { return t.term.isTerm() && t.term.term()->shared() && t.term.term()->ground(); }); } - -unsigned TermSpec::weight() const -{ - ASS(definitelyGround()) - return _self.match([](Appl const& a) { return iterTraits(a.argsIter()).map([](auto& x) { return x.weight(); }).sum(); }, - [](OldTermSpec const& t) { return t.term.term()->weight(); }); } - -const int RobSubstitution::SPECIAL_INDEX=-2; -const int RobSubstitution::UNBOUND_INDEX=-1; - -bool TermSpec::sameTermContent(TermSpec const& other) const -{ - if (top() != other.top()) return false; - if (isVar()) { - ASS(other.isVar()) - return (isSpecialVar() && other.isSpecialVar()) || varSpec().index == other.varSpec().index; - } else { - ASS(isTerm()) - ASS(other.isTerm()) - auto t1 = _self.as(); - auto t2 = other._self.as(); - if (t1.isSome() && t2.isSome()) { - return t1->term == t2->term && ( - (t1->index == t2->index) - || (t1->term.term()->shared() && t1->term.term()->ground()) - || (t1->term.term()->arity() == 0) - ); - } else { - return allArgs().zip(other.allArgs()) - .all([](auto pair) { return pair.first.sameTermContent(pair.second); }); - } - } -} - -bool TermSpec::isSpecialVar() const -{ return _self.match([](Appl const&) { return false; }, - [](OldTermSpec const& self) { return self.term.isSpecialVar(); }); } - -bool TermSpec::isVar() const -{ return _self.match([](Appl const&) { return false; }, - [](OldTermSpec const& self) { return self.term.isVar(); }); } - -bool TermSpec::isTerm() const -{ return _self.match([](Appl const&) { return true; }, - [](OldTermSpec const& self) { return self.term.isTerm(); }); } - -bool TermSpec::isLiteral() const -{ return _self.match([](Appl const&) { return false; }, - [](OldTermSpec const& self) { return self.term.isTerm() && self.term.term()->isLiteral(); }); } - -bool TermSpec::isSort() const -{ return _self.match([](Appl const& a) { return a.isSort(); }, - [](OldTermSpec const& self) { return self.term.term()->isSort(); }); } - - -VarSpec TermSpec::varSpec() const -{ - auto s = _self.as(); - return VarSpec(s->term.var(), s->term.isSpecialVar() ? RobSubstitution::SPECIAL_INDEX : s->index); -} - -unsigned TermSpec::functor() const -{ return _self.match([](Appl const& a) { return a.functor; }, - [](OldTermSpec const& self) { return self.term.term()->functor(); }); } - -#if VHOL - bool TermSpec::isApplication() const - { return _self.match([](Appl const& a) { return false; }, - [](OldTermSpec const& self) { return self.term.isApplication(); }); } - - TermList TermSpec::head(RobSubstitution* s) const - { return _self.match([&](Appl const& a) { ASSERTION_VIOLATION; return toTerm(*s); }, - [&](OldTermSpec const& self) { return self.term.head(); }); } - - bool TermSpec::isArrowSort() - { return _self.match([](Appl const& a) { return false; }, - [](OldTermSpec& self) { return self.term.isArrowSort(); }); } - - bool TermSpec::isBoolSort() - { return _self.match([](Appl const& a) { return false; }, - [](OldTermSpec& self) { return self.term.isBoolSort(); }); } - - void TermSpec::headAndArgs(TermSpec& head, Stack& args) - { return _self.match([ ](Appl const& a) { ASSERTION_VIOLATION; }, - [&](OldTermSpec const& self) { - TermList headt; - static TermStack argst; - ApplicativeHelper::getHeadAndArgs(self.term, headt, argst); - head = TermSpec(headt, self.index); - for(unsigned i = 0; i < argst.size(); i++){ - args.push(TermSpec(argst[i], self.index)); - } }); - } - -#endif - -unsigned TermSpec::nTypeArgs() const -{ return _self.match([](Appl const& a) { return env.signature->getFunction(a.functor)->numTypeArguments(); }, - [](OldTermSpec const& self) { return self.term.term()->numTermArguments(); }); } - -unsigned TermSpec::nTermArgs() const -{ return _self.match([](Appl const& a) { return env.signature->getFunction(a.functor)->numTermArguments(); }, - [](OldTermSpec const& self) { return self.term.term()->numTermArguments(); }); } - -unsigned TermSpec::nAllArgs() const -{ return _self.match([](Appl const& a) { return a.args.map([](auto& x) { return x->size(); }).unwrapOr(0); }, - [](OldTermSpec const& self) { return self.term.term()->arity(); }); } - - -TermSpec TermSpec::termArg(unsigned i) const -{ return _self.match([&](Appl const& a) { return a.arg(i + nTypeArgs()).clone(); }, - [&](OldTermSpec const& self) { return TermSpec(self.term.term()->termArg(i), self.index); }); } - -TermSpec TermSpec::typeArg(unsigned i) const -{ return _self.match([&](Appl const& a) { return a.arg(i).clone(); }, - [&](OldTermSpec const& self) { return TermSpec(self.term.term()->typeArg(i), self.index); }); } - -TermSpec TermSpec::anyArg(unsigned i) const -{ return _self.match([&](Appl const& a) { return a.arg(i).clone(); }, - [&](OldTermSpec const& self) { return TermSpec(*self.term.term()->nthArgument(i), self.index); }); } - - -TermList TermSpec::toTerm(RobSubstitution& s) const -{ return _self.match([&](Appl const& a) { return TermList(Term::createFromIter(a.functor, iterTraits(a.argsIter()).map([&](auto& t) { return t.toTerm(s); }))); }, - [&](OldTermSpec const& self) { return s.apply(self.term, self.index); }); } - -TermSpec TermSpec::sort() const -{ return _self.match([&](Appl const& a) -> TermSpec { - auto f = env.signature->getFunction(a.functor)->fnType(); - ASS_REP(f->numTypeArguments() == 0, "TODO: tricky because of polymorphism...") - return TermSpec(f->result(), {}); - }, - [&](OldTermSpec const& self) -> TermSpec { return TermSpec(SortHelper::getResultSort(self.term.term()), self.index); }); } - - -void UnificationConstraintStack::add(UnificationConstraint c, Option bd) +template +void UnificationConstraintStack::add(Constraint c, Option bd) { if (bd) { backtrackablePush(_cont, std::move(c), *bd); @@ -198,7 +48,9 @@ void UnificationConstraintStack::add(UnificationConstraint c, Option bd) +template +UnificationConstraint +UnificationConstraintStack::pop(Option bd) { auto old = _cont.pop(); if (bd) { @@ -207,7 +59,8 @@ UnificationConstraint UnificationConstraintStack::pop(Option bd) return old; } -Recycled> UnificationConstraintStack::literals(RobSubstitution& s) +template +Recycled> UnificationConstraintStack::literals(RobSubstitution& s) { Recycled> out; out->reserve(_cont.size()); @@ -215,64 +68,16 @@ Recycled> UnificationConstraintStack::literals(RobSubstitution& return out; } - -Option UnificationConstraint::toLiteral(RobSubstitution& s) +template +Option UnificationConstraint::toLiteral(RobSubstitution& s) { - auto t1 = _t1.toTerm(s); - auto t2 = _t2.toTerm(s); + auto t1 = s.deref(_t1); + auto t2 = s.deref(_t2); return t1 == t2 ? Option() : Option(Literal::createEquality(false, t1, t2, t1.isTerm() ? SortHelper::getResultSort(t1.term()) : SortHelper::getResultSort(t2.term()))); } -/** - * Unify @b t1 and @b t2, and return true iff it was successful. - */ -bool RobSubstitution::unify(TermList t1,int index1, TermList t2, int index2) -{ - CALL("RobSubstitution::unify/4"); - - return unify(TermSpec(t1,index1), TermSpec(t2,index2)); -} - -/** - * Unify arguments of @b t1 and @b t2, and return true iff it was successful. - * - * @b t1 and @b t2 can be either terms or literals. - */ -bool RobSubstitution::unifyArgs(Term* t1,int index1, Term* t2, int index2) -{ - CALL("RobSubstitution::unifyArgs"); - ASS_EQ(t1->functor(),t2->functor()); - - TermList t1TL(t1); - TermList t2TL(t2); - - return unify(TermSpec(t1TL,index1), TermSpec(t2TL,index2)); -} - -bool RobSubstitution::match(TermList base,int baseIndex, - TermList instance, int instanceIndex) -{ - CALL("RobSubstitution::match(TermList...)"); - return match(TermSpec(base,baseIndex), TermSpec(instance,instanceIndex)); -} -/** - * Match arguments of @b t1 and @b t2, and return true iff it was successful. - * - * @b t1 and @b t2 can be either terms or literals. - */ -bool RobSubstitution::matchArgs(Term* base,int baseIndex, - Term* instance, int instanceIndex) -{ - CALL("RobSubstitution::match(Literal*...)"); - ASS_EQ(base->functor(),instance->functor()); - - TermList baseTL(base); - TermList instanceTL(instance); - return match(TermSpec(baseTL,baseIndex), TermSpec(instanceTL,instanceIndex)); -} - /** * Bind variables from @b denormalizedIndex to variables in @b normalIndex * in a way, that applying the substitution to a term in @b denormalizedIndex @@ -282,23 +87,27 @@ bool RobSubstitution::matchArgs(Term* base,int baseIndex, * @warning All variables, that occured in some term that was matched or unified * in @b normalIndex, must be also present in the @b normalizer. */ -void RobSubstitution::denormalize(const Renaming& normalizer, int normalIndex, int denormalizedIndex) +template +void RobSubstitution::denormalize(const Renaming& normalizer, VarBankOrInt normBank, VarBankOrInt denormBank) { CALL("RobSubstitution::denormalize"); VirtualIterator nit=normalizer.items(); while(nit.hasNext()) { Renaming::Item itm=nit.next(); - VarSpec normal(itm.second, normalIndex); - VarSpec denormalized(itm.first, denormalizedIndex); + TermSpecOrList normal(itm.second, normBank); + TermSpecOrList denormalized(itm.first, denormBank); ASS(!_bank.find(denormalized)); - bindVar(denormalized,normal); + bind(denormalized,normal); } } -bool RobSubstitution::isUnbound(VarSpec v) const +template +bool RobSubstitution::isUnbound(TermSpecOrList v) const { CALL("RobSubstitution::isUnbound"); + ASS(v.isVar()); + for(;;) { auto binding = _bank.find(v); if(binding.isNone() || binding->isOutputVar()) { @@ -306,7 +115,7 @@ bool RobSubstitution::isUnbound(VarSpec v) const } else if(binding->isTerm()) { return false; } - v = binding->varSpec(); + v = binding.unwrap(); } } @@ -315,9 +124,11 @@ bool RobSubstitution::isUnbound(VarSpec v) const * return a term, that has the same top functor. Otherwise * return an arbitrary variable. */ -TermList::Top RobSubstitution::getSpecialVarTop(unsigned specialVar) const +template +TermList::Top +RobSubstitution::getSpecialVarTop(unsigned specialVar) const { - VarSpec v(specialVar, SPECIAL_INDEX); + TermSpecOrList v(specialVar, true); for(;;) { auto binding = _bank.find(v); if(binding.isNone() || binding->isOutputVar()) { @@ -326,7 +137,7 @@ TermList::Top RobSubstitution::getSpecialVarTop(unsigned specialVar) const } else if(binding->isTerm()) { return binding->top(); } - v = binding->varSpec(); + v = binding.unwrap(); } } @@ -335,16 +146,18 @@ TermList::Top RobSubstitution::getSpecialVarTop(unsigned specialVar) const * a non-variable term, return the term. Otherwise, return the root variable * to which @b t belongs. */ -TermSpec const& RobSubstitution::derefBound(TermSpec const& t_) const +template +TermSpecOrList const& RobSubstitution::derefBound(TermSpecOrList const& t_) const { CALL("RobSubstitution::derefBound"); - TermSpec const* t = &t_; + TermSpecOrList const* t = &t_; for(;;) { if (t->isTerm() || t->isOutputVar()) { return *t; } else { - auto binding = _bank.find(t->varSpec()); + ASS(t->isVar()); + auto binding = _bank.find(*t); if (!binding || binding->isOutputVar()) { return *t; } else { @@ -357,115 +170,150 @@ TermSpec const& RobSubstitution::derefBound(TermSpec const& t_) const /** * If @b v is a bound variable then return the term or root variable * it is bound to. Otherwise, return the next unbound variable in the - * UNBOUND_INDEX. This effectively names unbound variables apart from + * OUTPUT_BANK. This effectively names unbound variables apart from * any variables in the range of bound variables. */ -TermSpec const& RobSubstitution::deref(VarSpec v) const +template +TermSpecOrList const& RobSubstitution::deref(TermSpecOrList v) const { CALL("RobSubstitution::deref"); + ASS(v.isVar()); + for(;;) { auto binding = _bank.find(v); if(binding.isNone()) { - const_cast(*this).bindVar(v,VarSpec(_nextUnboundAvailable++, UNBOUND_INDEX)); + const_cast(*this).bind(v, getUnboundVar(_nextUnboundAvailable++)); return _bank.get(v); } else if(binding->isOutputVar() || binding->isTerm()) { return binding.unwrap(); } - v = binding->varSpec(); + v = binding.unwrap(); } } -void RobSubstitution::bind(const VarSpec& v, TermSpec b) +template +void RobSubstitution::bind(const TermSpecOrList& v, TermSpecOrList b) { CALL("RobSubstitution::bind"); + ASS(v.isVar()); + //Aux terms don't contain special variables, ergo //should be shared. //ASS(!b.term.isTerm() || b.index!=AUX_INDEX || b.term.term()->shared()); - ASS_NEQ(v.index, UNBOUND_INDEX); if(bdIsRecording()) { bdAdd(new BindingBacktrackObject(this, v)); } - _bank.set(v,std::move(b)); + _bank.set(v,b); } -void RobSubstitution::bindVar(const VarSpec& var, const VarSpec& to) -{ - CALL("RobSubstitution::bindVar"); - ASS_NEQ(var,to); - - bind(var,TermSpec(to)); -} - -VarSpec RobSubstitution::root(VarSpec v) const +template +TermSpecOrList RobSubstitution::root(TermSpecOrList v) const { CALL("RobSubstitution::root"); + ASS(v.isVar()); + for(;;) { auto binding = _bank.find(v); if(binding.isNone() || binding->isOutputVar() || binding->isTerm()) { return v; } - v = binding->varSpec(); + v = binding.unwrap(); } } -bool RobSubstitution::occurs(VarSpec const& toFind_, TermSpec const& ts_) +template +bool RobSubstitution::occurs(TermSpecOrList const& toFind_, TermSpecOrList const& ts_) { + ASS(toFind_.isVar()); - VarSpec toFind = root(toFind_); - TermSpec ts = derefBound(ts_).clone(); + TermSpecOrList toFind = root(toFind_); + TermSpecOrList ts = derefBound(ts_); if(ts.isVar()) { return false; } - typedef DHSet EncounterStore; + typedef DHSet EncounterStore; Recycled encountered; - Recycled> todo; - todo->push(std::move(ts)); + Recycled> todo; + todo->push(ts); while (todo->isNonEmpty()){ auto ts = todo->pop(); if (ts.isVar()) { - VarSpec tvar = root(ts.varSpec()); + TermSpecOrList tvar = root(ts); if(tvar == toFind) { return true; } else if(!encountered->find(tvar)) { - TermSpec dtvar = derefBound(TermSpec(tvar)).clone(); + TermSpecOrList dtvar = derefBound(tvar); if(!dtvar.isVar()) { encountered->insert(tvar); - todo->push(std::move(dtvar)); + todo->push(dtvar); } } } else { - todo->loadFromIterator(ts.allArgs()); + for(unsigned i = 0; i < ts.term()->arity(); i++){ + todo->push(ts.nthArg(i)); + } } } return false; } +template +bool RobSubstitution::sameTermContent(TermSpecOrList t1, TermSpecOrList t2) +{ + CALL("RobSubstitution::sameTermContent"); + + bool termSameContent = t1.sameContent(t2); + if(!termSameContent && t1.isTerm() && t1.term()->isLiteral() && + t2.isTerm() && t2.term()->isLiteral()) { + const Literal* l1=static_cast(t1.term()); + const Literal* l2=static_cast(t2.term()); + if(l1->functor()==l2->functor() && l1->arity()==0) { + return true; + } + } + return termSameContent; +} -bool RobSubstitution::unify(TermSpec s, TermSpec t) +bool RobSubstitutionTS::unify(TermList t1, int idx1, TermList t2, int idx2) +{ + CALL("RobSubstitution::unify/1"); + + return RobSubstitution::unify(TermSpec(t1,idx1), TermSpec(t2,idx2)); +} + +bool RobSubstitutionTS::match(TermList t1, int idx1, TermList t2, int idx2) +{ + CALL("RobSubstitution::match/1"); + + return RobSubstitution::match(TermSpec(t1,idx1), TermSpec(t2,idx2)); +} + +template +bool RobSubstitution::unify(TermSpecOrList t1, TermSpecOrList t2) { CALL("RobSubstitution::unify/2"); #define DEBUG_UNIFY(lvl, ...) if (lvl < 0) DBG("unify: ", __VA_ARGS__) - DEBUG_UNIFY(0, *this, ".unify(", s, ",", t, ")") + DEBUG_UNIFY(0, *this, ".unify(", t1, ",", t2, ")") - if(s.sameTermContent(t)) { + if(sameTermContent(t1,t2)) { return true; } BacktrackData localBD; bdRecord(localBD); - static Stack toDo(64); + static Stack toDo(64); ASS(toDo.isEmpty()); - toDo.push(UnificationConstraint(std::move(s), std::move(t))); + toDo.push(Constraint(t1, t2)); // Save encountered unification pairs to avoid // recomputing their unification - Recycled> encountered; + Recycled> encountered; auto pushTodo = [&](auto pair) { // we unify each subterm pair at most once, to avoid worst-case exponential runtimes @@ -473,12 +321,12 @@ bool RobSubstitution::unify(TermSpec s, TermSpec t) // (Note by joe: didn't make this decision, but just keeping the implemenntation // working as before. i.e. as described in the paper "Comparing Unification // Algorithms in First-Order Theorem Proving", by Krystof and Andrei) - if (pair.lhs().isVar() && isUnbound(pair.lhs().varSpec()) && - pair.rhs().isVar() && isUnbound(pair.rhs().varSpec())) { + if (pair.lhs().isVar() && isUnbound(pair.lhs()) && + pair.rhs().isVar() && isUnbound(pair.rhs())) { toDo.push(std::move(pair)); } else if (!encountered->find(pair)) { - encountered->insert(pair.clone()); - toDo.push(std::move(pair)); + encountered->insert(pair); + toDo.push(pair); } }; @@ -488,27 +336,27 @@ bool RobSubstitution::unify(TermSpec s, TermSpec t) // version in dt1 and dt2 while (toDo.isNonEmpty()) { auto x = toDo.pop(); - TermSpec const& dt1 = derefBound(x.lhs()); - TermSpec const& dt2 = derefBound(x.rhs()); + TermSpecOrList const& dt1 = derefBound(x.lhs()); + TermSpecOrList const& dt2 = derefBound(x.rhs()); DEBUG_UNIFY(1, "next pair: ", tie(dt1, dt2)) // If they have the same content then skip // (note that sameTermContent is best-effort) - if (dt1.sameTermContent(dt2)) { + if (sameTermContent(dt1,dt2)) { // Deal with the case where eithe rare variables // Do an occurs-check and note that the variable // cannot be currently bound as we already dereferenced - } else if(dt1.isVar() && !occurs(dt1.varSpec(), dt2)) { - bind(dt1.varSpec(), dt2.clone()); + } else if(dt1.isVar() && !occurs(dt1, dt2)) { + bind(dt1, dt2); - } else if(dt2.isVar() && !occurs(dt2.varSpec(), dt1)) { - bind(dt2.varSpec(), dt1.clone()); + } else if(dt2.isVar() && !occurs(dt2, dt1)) { + bind(dt2, dt1); } else if(dt1.isTerm() && dt2.isTerm() - && dt1.functor() == dt2.functor()) { + && dt1.term()->functor() == dt2.term()->functor()) { - for (auto c : dt1.allArgs().zip(dt2.allArgs())) { - pushTodo(UnificationConstraint(std::move(c.first), std::move(c.second))); + for (unsigned i = 0; i < dt1.term()->arity(); i++) { + pushTodo(Constraint(dt1.nthArg(i), dt2.nthArg(i))); } } else { @@ -547,11 +395,12 @@ bool RobSubstitution::unify(TermSpec s, TermSpec t) * only in internal terms of substitution trees and * this behavior allows easy instance retrieval.) */ -bool RobSubstitution::match(TermSpec base, TermSpec instance) +template +bool RobSubstitution::match(TermSpecOrList base, TermSpecOrList instance) { CALL("RobSubstitution::match(TermSpec...)"); - if(base.sameTermContent(instance)) { + if(sameTermContent(base,instance)) { return true; } @@ -559,92 +408,71 @@ bool RobSubstitution::match(TermSpec base, TermSpec instance) BacktrackData localBD; bdRecord(localBD); - static Stack subterms(64); - ASS(subterms.isEmpty()); - - auto obase = base.old(); - auto oinstance = instance.old(); - TermList* bt=&obase.term; - TermList* it=&oinstance.term; + static Stack toDo(64); + ASS(toDo.isEmpty()); + toDo.push(Constraint(base, instance)); - OldTermSpec binding1; - OldTermSpec binding2; + // add encountered store?? - for (;;) { - TermSpec bts(*bt,base.old().index); - TermSpec its(*it,instance.old().index); + // Iteratively resolve matching pairs in toDo + while (toDo.isNonEmpty()) { + auto x = toDo.pop(); + TermSpecOrList bt = x.lhs(); + TermSpecOrList it = x.rhs(); + DEBUG_UNIFY(1, "next pair: ", tie(bt, it)) + // If they have the same content then skip + // (note that sameTermContent is best-effort) - if (!bts.sameTermContent(its) && TermList::sameTopFunctor(bts.old().term,its.old().term)) { - Term* s = bts.old().term.term(); - Term* t = its.old().term.term(); - ASS(s->arity() > 0); + if (sameTermContent(bt,it)) { - bt = s->args(); - it = t->args(); - } else { - if (! TermList::sameTopFunctor(bts.old().term,its.old().term)) { - if(bts.old().term.isSpecialVar()) { - VarSpec bvs(bts.old().term.var(), SPECIAL_INDEX); - auto binding = _bank.find(bvs); - - if(binding) { - binding1 = binding->old(); - ASS_EQ(binding1.index, base.old().index); - bt=&binding1.term; - continue; - } else { - bind(bvs,its.clone()); - } - } else if(its.old().term.isSpecialVar()) { - VarSpec ivs(its.old().term.var(), SPECIAL_INDEX); - auto binding = _bank.find(ivs); - - if(binding) { - binding2 = binding->old(); - ASS_EQ(binding2.index, instance.old().index); - it=&binding2.term; - continue; - } else { - bind(ivs,bts.clone()); - } - } else if(bts.old().term.isOrdinaryVar()) { - VarSpec bvs(bts.old().term.var(), bts.old().index); - auto binding = _bank.find(bvs); - - if(binding) { - binding1 = binding->old(); - ASS_EQ(binding1.index, instance.old().index); - if(!TermList::equals(binding1.term, its.old().term)) - { - mismatch=true; - break; - } - } else { - bind(bvs,its.clone()); - } - } else { + } else if(bt.isSpecialVar()) { + auto binding = _bank.find(bt); + if(binding) { + bt = binding.unwrap(); + toDo.push(Constraint(bt,it)); + continue; + } else { + bind(bt, it); + } + } else if(it.isSpecialVar()) { + auto binding = _bank.find(it); + if(binding) { + it = binding.unwrap(); + toDo.push(Constraint(bt,it)); + continue; + } else { + bind(it, bt); + } + } else if (bt.isVar()) { + auto binding = _bank.find(bt); + + if(binding) { + auto b = binding.unwrap(); + if(!TermSpecOrList::equals(b, it)) + { mismatch=true; break; } + } else { + bind(bt, it); } - - if (subterms.isEmpty()) { - break; + } else if (it.isVar()) { + mismatch=true; + break; + } else if (bt.isTerm() && it.isTerm() && bt.term()->functor() == it.term()->functor()) { + for (unsigned i = 0; i < bt.term()->arity(); i++) { + toDo.push(Constraint(bt.nthArg(i), it.nthArg(i))); } - bt = subterms.pop(); - it = subterms.pop(); - } - if (!bt->next()->isEmpty()) { - subterms.push(it->next()); - subterms.push(bt->next()); + } else { + mismatch = true; + break; } + + ASS(!mismatch) } bdDone(); - subterms.reset(); - - if(mismatch) { localBD.backtrack(); } else { @@ -657,17 +485,20 @@ bool RobSubstitution::match(TermSpec base, TermSpec instance) return !mismatch; } - -Stack RobSubstitution::apply(Stack cl, int index) const +// AYB do we use this? Not very efficient that we are passing a stack around +// by value +template +Stack RobSubstitution::apply(Stack cl, VarBankOrInt bank) const { CALL("RobSubstitution::apply(Clause*...)"); for (unsigned i = 0; i < cl.size(); i++) { - cl[i] = apply(cl[i], index); + cl[i] = apply(cl[i], bank); } return cl; } -Literal* RobSubstitution::apply(Literal* lit, int index) const +template +Literal* RobSubstitution::apply(Literal* lit, VarBankOrInt bank) const { CALL("RobSubstitution::apply(Literal*...)"); static DArray ts(32); @@ -678,55 +509,57 @@ Literal* RobSubstitution::apply(Literal* lit, int index) const int arity = lit->arity(); ts.ensure(arity); - int i = 0; - for (TermList* args = lit->args(); ! args->isEmpty(); args = args->next()) { - ts[i++]=apply(*args,index); + for (unsigned i = 0; i < arity; i++) { + ts[i]=apply(getLitArg(lit,i,bank),bank); } if(lit->isTwoVarEquality()){ - TermList sort = apply(lit->twoVarEqSort(),index); + TermList sort = apply(getLitSort(lit,bank),bank); return Literal::createEquality(lit->polarity(), ts[0], ts[1], sort); } return Literal::create(lit,ts.array()); } -TermList RobSubstitution::apply(TermList trm, int index) const +template +TermList RobSubstitution::apply(TermSpecOrList trm, VarBankOrInt bank) const { CALL("RobSubstitution::apply(TermList...)"); // DBG(*this, ".apply(", TermSpec(trm, index), ")") - auto out = evalBottomUp(AutoDerefTermSpec(TermSpec(trm, index), this), + auto out = evalBottomUp(AutoDerefTerm(trm, this, bank), [&](auto& orig, TermList* args) -> TermList { TermList tout; if (orig.term.isVar()) { ASS(!orig.term.isOutputVar()) - tout = TermList::var(deref(orig.term.varSpec()).varSpec().var); + auto var = deref(orig.term); + ASS(var.isVar() && var.isOutputVar()); + tout = TermList(var.var(), DEFAULT_BANK); } else { - tout = TermList(orig.term.isSort() ? AtomicSort::create(orig.term.functor(), orig.term.nAllArgs(), args) - : Term::create(orig.term.functor(), orig.term.nAllArgs(), args)); + const Term* origT = orig.term.term(); + tout = TermList(origT->isSort() ? AtomicSort::create(origT->functor(), origT->arity(), args) + : Term::create (origT->functor(), origT->arity(), args)); } return tout; }); return out; } -TermList RobSubstitution::apply(TermSpec t) -{ return t.toTerm(*this); } - -size_t RobSubstitution::getApplicationResultWeight(TermList trm, int index) const +template +size_t RobSubstitution::getApplicationResultWeight(TermSpecOrList trm, VarBankOrInt bank) const { CALL("RobSubstitution::getApplicationResultWeight"); - return evalBottomUp(AutoDerefTermSpec(TermSpec(trm, index), this), + return evalBottomUp(AutoDerefTerm(trm, this, bank), [](auto& orig, size_t* sizes) { return orig.term.isVar() ? 1 - : (1 + range(0, orig.term.nAllArgs()) + : (1 + range(0, orig.term.term()->arity()) .map([&](auto i) { return sizes[i]; }) .sum()); }); } -size_t RobSubstitution::getApplicationResultWeight(Literal* lit, int index) const +template +size_t RobSubstitution::getApplicationResultWeight(Literal* lit, VarBankOrInt bank) const { CALL("RobSubstitution::getApplicationResultWeight"); static DArray ts(32); @@ -736,25 +569,64 @@ size_t RobSubstitution::getApplicationResultWeight(Literal* lit, int index) cons } size_t res = 1; //the predicate symbol weight - for (TermList* args = lit->args(); ! args->isEmpty(); args = args->next()) { - size_t argWeight = getApplicationResultWeight(*args,index); + for (unsigned i = 0; i < lit->arity(); i++) { + size_t argWeight = getApplicationResultWeight(getLitArg(lit,i,bank),bank); res += argWeight; } return res; } +struct RobSubstitutionTL::ToRobTermList +{ + RobSubstitutionTL* operator()(RobSubstitution* r) + { return static_cast(r); } +}; + +struct RobSubstitutionTS::ToRobTermSpec +{ + RobSubstitutionTS* operator()(RobSubstitution* r) + { return static_cast(r); } +}; + /** * Return iterator on matching substitutions of @b l1 and @b l2. * * For guides on use of the iterator, see the documentation of * RobSubstitution::AssocIterator. */ -SubstIterator RobSubstitution::matches(Literal* base, int baseIndex, - Literal* instance, int instanceIndex, bool complementary) +SubstIterator RobSubstitutionTL::matches(Literal* base, Literal* instance, bool complementary) +{ + if( !Literal::headersMatch(base,instance,complementary) ) { + return SubstIterator::getEmpty(); + } + + TermList s1 = base->isEquality() ? SortHelper::getEqualityArgumentSort(base) : TermList(0,false); + TermList s2 = instance->isEquality() ? SortHelper::getEqualityArgumentSort(instance) : TermList(0,false); + + TermList t1 = TermList(base); + TermList t2 = TermList(instance); + + auto it = RobSubstitution::getAssocIterator(this, t1 ,s1, t2, s2, complementary); + + return pvi(getMappingIterator(it, ToRobTermList())); +} + +SubstIteratorTS RobSubstitutionTS::matches(Literal* base, int idx1, Literal* instance, int idx2, bool complementary) { - return getAssocIterator(this, base, baseIndex, - instance, instanceIndex, complementary); + if( !Literal::headersMatch(base,instance,complementary) ) { + return SubstIteratorTS::getEmpty(); + } + + TermSpec s1(base->isEquality() ? SortHelper::getEqualityArgumentSort(base) : TermList(0,false), idx1); + TermSpec s2(instance->isEquality() ? SortHelper::getEqualityArgumentSort(instance) : TermList(0,false), idx2); + + TermSpec t1(TermList(base), idx1); + TermSpec t2(TermList(instance), idx2); + + auto it = RobSubstitution::getAssocIterator(this, t1, s1, t2, s2, complementary); + + return pvi(getMappingIterator(it, ToRobTermSpec())); } /** @@ -763,57 +635,91 @@ SubstIterator RobSubstitution::matches(Literal* base, int baseIndex, * For guides on use of the iterator, see the documentation of * RobSubstitution::AssocIterator. */ -SubstIterator RobSubstitution::unifiers(Literal* l1, int l1Index, - Literal* l2, int l2Index, bool complementary) +SubstIterator RobSubstitutionTL::unifiers(Literal* l1, Literal* l2, bool complementary) { - return getAssocIterator(this, l1, l1Index, - l2, l2Index, complementary); + + if( !Literal::headersMatch(l1,l2,complementary) ) { + return SubstIterator::getEmpty(); + } + + TermList s1 = l1->isEquality() ? SortHelper::getEqualityArgumentSort(l1) : TermList(0,false); + TermList s2 = l2->isEquality() ? SortHelper::getEqualityArgumentSort(l2) : TermList(0,false); + + TermList t1 = TermList(l1); + TermList t2 = TermList(l2); + + auto it = RobSubstitution::getAssocIterator(this, t1,s1,t2,s2, complementary); + + return pvi(getMappingIterator(it, ToRobTermList())); } -template -SubstIterator RobSubstitution::getAssocIterator(RobSubstitution* subst, - Literal* l1, int l1Index, Literal* l2, int l2Index, bool complementary) +SubstIteratorTS RobSubstitutionTS::unifiers(Literal* l1, int idx1, Literal* l2, int idx2, bool complementary) { - CALL("RobSubstitution::getAssocIterator"); - if( !Literal::headersMatch(l1,l2,complementary) ) { - return SubstIterator::getEmpty(); + return SubstIteratorTS::getEmpty(); } - if( !l1->commutative() ) { + TermSpec s1(l1->isEquality() ? SortHelper::getEqualityArgumentSort(l1) : TermList(0,false), idx1); + TermSpec s2(l2->isEquality() ? SortHelper::getEqualityArgumentSort(l2) : TermList(0,false), idx2); + + TermSpec t1(TermList(l1), idx1); + TermSpec t2(TermList(l2), idx2); + + auto it = RobSubstitution::getAssocIterator(this, t1, s1, t2, s2, complementary); + + return pvi(getMappingIterator(it, ToRobTermSpec())); +} + +template +template +VirtualIterator*> +RobSubstitution::getAssocIterator(RobSubst* subst, + TermSpecOrList l1, TermSpecOrList s1, TermSpecOrList l2, TermSpecOrList s2, bool complementary) +{ + CALL("RobSubstitution::getAssocIterator"); + + if( !l1.term()->commutative() ) { return pvi( getContextualIterator(getSingletonIterator(subst), - AssocContext(l1, l1Index, l2, l2Index)) ); + AssocContext(l1, l2)) ); } else { return vi( - new AssocIterator(subst, l1, l1Index, l2, l2Index)); + new AssocIterator(subst, l1, s1, l2, s2)); } } +template class UnificationConstraint; +template class UnificationConstraint; + +template class UnificationConstraintStack; +template class UnificationConstraintStack; + +template class RobSubstitution; +template class RobSubstitution; + +template template -struct RobSubstitution::AssocContext +struct RobSubstitution::AssocContext { - AssocContext(Literal* l1, int l1Index, Literal* l2, int l2Index) - : _l1(l1), _l1i(l1Index), _l2(l2), _l2i(l2Index) { ASS(!l1->isEquality()); ASS(!l2->isEquality()); } // only used for non-commutative, i.e. also non-equality, literals - bool enter(RobSubstitution* subst) + AssocContext(TermSpecOrList l1, TermSpecOrList l2) + : _l1(l1), _l2(l2) { } // only used for non-commutative, i.e. also non-equality, literals + bool enter(RobSubst* subst) { subst->bdRecord(_bdata); - bool res=Fn::associate(subst, _l1, _l1i, _l2, _l2i); + bool res=Fn::associate(subst, _l1, _l2); if(!res) { subst->bdDone(); ASS(_bdata.isEmpty()); } return res; } - void leave(RobSubstitution* subst) + void leave(RobSubst* subst) { subst->bdDone(); _bdata.backtrack(); } private: - Literal* _l1; - int _l1i; - Literal* _l2; - int _l2i; + TermSpecOrList _l1; + TermSpecOrList _l2; BacktrackData _bdata; }; @@ -849,16 +755,20 @@ struct RobSubstitution::AssocContext * * [1] associate means either match or unify */ +template template -class RobSubstitution::AssocIterator: public IteratorCore { +class RobSubstitution::AssocIterator: public IteratorCore { public: - AssocIterator(RobSubstitution* subst, Literal* l1, int l1Index, Literal* l2, - int l2Index) : - _subst(subst), _l1(l1), _l1i(l1Index), _l2(l2), _l2i(l2Index), + AssocIterator(RobSubst* subst, + TermSpecOrList l1, + TermSpecOrList s1, + TermSpecOrList l2, + TermSpecOrList s2) : + _subst(subst), _l1(l1), _s1(s1), _l2(l2), _s2(s2), _isEq(static_cast(l1.term())->isEquality()), _state(FIRST), _used(true) { - ASS_EQ(_l1->functor(), _l2->functor()); - ASS(_l1->commutative()); - ASS_EQ(_l1->arity(), 2); + ASS_EQ(_l1.term()->functor(), _l2.term()->functor()); + ASS(_l1.term()->commutative()); + ASS_EQ(_l1.term()->arity(), 2); } ~AssocIterator() { CALL("RobSubstitution::AssocIterator::~AssocIterator"); @@ -882,9 +792,9 @@ class RobSubstitution::AssocIterator: public IteratorCore { if (_state != FIRST) { backtrack(_bdataMain); - } else { + } else if (_isEq) { _subst->bdRecord(_bdataEqAssoc); - if (!Fn::associateEqualitySorts(_subst, _l1, _l1i, _l2, _l2i)) { + if (!Fn::associate(_subst, _s1, _s2)) { backtrack(_bdataEqAssoc); // this might not be necessary _state = FINISHED; return false; @@ -895,18 +805,18 @@ class RobSubstitution::AssocIterator: public IteratorCore { switch (_state) { case NEXT_STRAIGHT: - if (Fn::associate(_subst, _l1, _l1i, _l2, _l2i)) { + if (Fn::associate(_subst, _l1, _l2)) { _state = NEXT_REVERSED; break; } //no break here intentionally case NEXT_REVERSED: { - TermList t11 = *_l1->nthArgument(0); - TermList t12 = *_l1->nthArgument(1); - TermList t21 = *_l2->nthArgument(0); - TermList t22 = *_l2->nthArgument(1); - if (Fn::associate(_subst, t11, _l1i, t22, _l2i)) { - if (Fn::associate(_subst, t12, _l1i, t21, _l2i)) { + TermSpecOrList t11 = _l1.nthArg(0); + TermSpecOrList t12 = _l1.nthArg(1); + TermSpecOrList t21 = _l2.nthArg(0); + TermSpecOrList t22 = _l2.nthArg(1); + if (Fn::associate(_subst, t11, t22)) { + if (Fn::associate(_subst, t12, t21)) { _state = NEXT_CLEANUP; break; } @@ -929,7 +839,7 @@ class RobSubstitution::AssocIterator: public IteratorCore { return _state != FINISHED; } - RobSubstitution* next() { + RobSubst* next() { _used = true; return _subst; } @@ -950,11 +860,12 @@ class RobSubstitution::AssocIterator: public IteratorCore { FINISHED = 3 }; - RobSubstitution* _subst; - Literal* _l1; - int _l1i; - Literal* _l2; - int _l2i; + RobSubst* _subst; + TermSpecOrList _l1; + TermSpecOrList _s1; + TermSpecOrList _l2; + TermSpecOrList _s2; + bool _isEq; BacktrackData _bdataMain; BacktrackData _bdataEqAssoc; @@ -967,80 +878,19 @@ class RobSubstitution::AssocIterator: public IteratorCore { bool _used; }; -struct RobSubstitution::MatchingFn { - static bool associateEqualitySorts(RobSubstitution* subst, Literal* l1, int l1Index, - Literal* l2, int l2Index) { - /* Only in the case l1 is of the form X = Y ad l2 is of the form - t1 = t2 can the literals be matched without their sorts being matched */ - if(l1->isTwoVarEquality()){ - ASS(l2->isEquality()); - TermList sb = SortHelper::getEqualityArgumentSort(l1); - TermList si = SortHelper::getEqualityArgumentSort(l2); - return subst->match(sb, l1Index, si, l2Index); - } - return true; - } - static bool associate(RobSubstitution* subst, Literal* l1, int l1Index, - Literal* l2, int l2Index) - { return subst->matchArgs(l1,l1Index,l2,l2Index); } +template +struct RobSubstitution::MatchingFn { - static bool associate(RobSubstitution* subst, TermList t1, int t1Index, - TermList t2, int t2Index) - { return subst->match(t1,t1Index,t2,t2Index); } + static bool associate(RobSubst* subst, TermSpecOrList l1, TermSpecOrList l2) + { return subst->match(l1,l2); } }; -struct RobSubstitution::UnificationFn { +template +struct RobSubstitution::UnificationFn { - static bool associateEqualitySorts(RobSubstitution* subst, Literal* l1, int l1Index, - Literal* l2, int l2Index) { - if(l1->isEquality()) { - ASS(l2->isEquality()); - TermList s1 = SortHelper::getEqualityArgumentSort(l1); - TermList s2 = SortHelper::getEqualityArgumentSort(l2); - return subst->unify(s1, l1Index, s2, l2Index); - } - return true; - } - - static bool associate(RobSubstitution* subst, Literal* l1, int l1Index, - Literal* l2, int l2Index) - { return subst->unifyArgs(l1,l1Index,l2,l2Index); } - - static bool associate(RobSubstitution* subst, TermList t1, int t1Index, - TermList t2, int t2Index) - { return subst->unify(t1,t1Index,t2,t2Index); } + static bool associate(RobSubst* subst, TermSpecOrList l1, TermSpecOrList l2) + { return subst->unify(l1,l2); } }; -bool operator==(TermSpec const& lhs, TermSpec const& rhs) -{ return TermSpec::compare(lhs, rhs, [](auto& t) -> decltype(auto) { return t; }) == 0; } - -bool operator<(TermSpec const& lhs, TermSpec const& rhs) -{ return TermSpec::compare(lhs, rhs, [](auto& t) -> decltype(auto) { return t; }) < 0; } - -template -unsigned __hash(HashFn hashFn, TermSpec const& t) { - Recycled> todo; - todo->push(t.clone()); - unsigned hash = 0; - while (todo->isNonEmpty()) { - auto t = todo->pop(); - if (t.isTerm()) { - hash = HashUtils::combine(hash, hashFn(t.functor())); - todo->loadFromIterator(t.allArgs()); - } else { - hash = HashUtils::combine(hash, t.varNumber(), t.varSpec().index); - } - } - return 0; -} - - -unsigned TermSpec::defaultHash() const -{ return __hash([](auto const& x) { return DefaultHash::hash(x); }, *this); } - -unsigned TermSpec::defaultHash2() const -{ return __hash([](auto const& x) { return DefaultHash2::hash(x); }, *this); } -std::ostream& operator<<(std::ostream& out, AutoDerefTermSpec const& self) -{ return out << self.term << "@" << *self.subs; } } // namespace Kernel diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index ff29adb024..716ad66e38 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -34,273 +34,111 @@ namespace Kernel { -struct VarSpec -{ - /** Create a new VarSpec struct */ - VarSpec() {} - /** Create a new VarSpec struct */ - VarSpec(unsigned var, int index) : var(var), index(index) {} - - bool operator==(const VarSpec& o) const - { return var==o.var && index==o.index; } - bool operator!=(const VarSpec& o) const - { return !(*this==o); } - friend std::ostream& operator<<(std::ostream& out, VarSpec const& self); +template +class RobSubstitution; - /** number of variable */ - unsigned var; - /** index of variable bank */ - int index; - - /** struct containing first hash function for DHMap object storing variable banks */ - struct Hash1 - { - static unsigned hash(VarSpec const& o) { - return HashUtils::combine(o.var, o.index); - } - }; - /** struct containing second hash function for DHMap object storing variable banks */ - struct Hash2 - { - static unsigned hash(VarSpec const& o) { - return HashUtils::combine(o.index, o.var); +struct TermSpec { // for backwards compatibility + TermSpec() {} + TermSpec(TermList t, int i) : trm(t), index(i) {} + TermSpec(unsigned v, int i) : index(i) { + if(i == SPECIAL_INDEX){ + trm = TermList(v, true); // special variable + } else { + trm = TermList(v, false); // standard variable } - }; -}; - -// TODO get rid of this -struct OldTermSpec { - OldTermSpec() {} - OldTermSpec(TermList t, int i) : term(t), index(i) {} - auto asTuple() const -> decltype(auto) { return std::tie(term, index); } - IMPL_COMPARISONS_FROM_TUPLE(OldTermSpec) - IMPL_HASH_FROM_TUPLE(OldTermSpec) + } + /*TermSpec(unsigned v, bool b) : trm(TermList(v, b)), index(SPECIAL_INDEX) { + ASS(b) + }*/ - TermList term; - int index; + auto asTuple() const -> decltype(auto) { return std::tie(trm, index); } + IMPL_COMPARISONS_FROM_TUPLE(TermSpec) + IMPL_HASH_FROM_TUPLE(TermSpec) - bool sameTermContent(const OldTermSpec& ts) + bool sameContent(const TermSpec& ts) { - bool termSameContent=term.sameContent(&ts.term); - if(!termSameContent && term.isTerm() && term.term()->isLiteral() && - ts.term.isTerm() && ts.term.term()->isLiteral()) { - const Literal* l1=static_cast(term.term()); - const Literal* l2=static_cast(ts.term.term()); - if(l1->functor()==l2->functor() && l1->arity()==0) { - return true; - } - } - if(!termSameContent) { - return false; - } - return index==ts.index || term.isSpecialVar() || - (term.isTerm() && ( - (term.term()->shared() && term.term()->ground()) || - term.term()->arity()==0 )); + bool termSameContent=trm.sameContent(&ts.trm); + return termSameContent && (index==ts.index || trm.isSpecialVar() || + (trm.isTerm() && ( + (trm.term()->shared() && trm.term()->ground()) || + trm.term()->arity()==0 ))); } - OldTermSpec clone() const { return *this; } -}; - -class TermSpec -{ - // TODO get rid of implicit copying of this - struct Appl { - unsigned functor; - Option>> args; - auto asTuple() const -> decltype(auto) { return std::tie(functor, args); } - IMPL_COMPARISONS_FROM_TUPLE(TermSpec::Appl) - IMPL_HASH_FROM_TUPLE(TermSpec::Appl) - bool isSort() const { return false; } - - Appl(Appl&&) = default; - Appl& operator=(Appl&&) = default; - - TermSpec const& arg(unsigned i) const { return (**args)[i]; } - auto argsIter() const - { return iterTraits(args.iter()) - .flatMap([](auto& args) { return arrayIter(*args); }); } - - Appl clone() const - { return Appl { .functor = functor, - .args = args.map([](auto& x) { - return x.clone([](auto& to, auto const& from) { - to.loadFromIterator( - arrayIter(from) - .map([](auto& c){ return c.clone(); })); - }); - }), - }; } - }; - using Copro = Coproduct< - Appl, - OldTermSpec - >; - Copro _self; - friend class UnificationConstraint; - friend class RobSubstitution; - - TermSpec(TermSpec const&) = delete; - TermSpec(Copro self) : _self(std::move(self)) {} -public: - TermSpec(TermSpec&&) = default; - TermSpec& operator=(TermSpec&&) = default; - OldTermSpec old() const { return _self.unwrap(); } - // TODO get rid of default constructor - TermSpec() : TermSpec(decltype(_self)(OldTermSpec())) {} - TermSpec(VarSpec v) : TermSpec(TermList::var(v.var), v.index) {} - - friend bool operator==(TermSpec const& lhs, TermSpec const& rhs); - friend bool operator<(TermSpec const& lhs, TermSpec const& rhs); - IMPL_COMPARISONS_FROM_LESS_AND_EQUALS(TermSpec); - unsigned defaultHash() const; - unsigned defaultHash2() const; - - template - static int compare(TermSpec const& lhs, TermSpec const& rhs, Deref deref) { - Recycled>> todo; - todo->push(make_pair(lhs.clone(),rhs.clone())); - // DBG("compare: ", lhs, " <> ", rhs) - while (todo->isNonEmpty()) { - auto lhs_ = std::move(todo->top().first); - auto rhs_ = todo->pop().second; - auto& lhs = deref(lhs_); - auto& rhs = deref(rhs_); - - if (lhs.isTerm() != rhs.isTerm()) { - return lhs.isVar() ? -1 : 1; + static const int UNBOUND_INDEX; + static const int SPECIAL_INDEX; - } else { - if (lhs.isTerm()) { - if (lhs.functor() != rhs.functor()) { - return lhs.functor() < rhs.functor() ? -1 : 1; - } else { - todo->loadFromIterator(lhs.allArgs().zip(rhs.allArgs())); - } - } else { - ASS(lhs.isVar() && rhs.isVar()) - auto v1 = lhs.varSpec(); - auto v2 = rhs.varSpec(); - if (v1 != v2) { - return std::tie(v1.var, v1.index) < std::tie(v2.var, v2.index) ? -1 : 1; - } - } - } - } - return 0; + static bool equals(TermSpec t1, TermSpec t2){ + return t1.index == t2.index && TermList::equals(t1.trm, t2.trm); } + TermList trm; + int index; - TermSpec clone() const { return TermSpec(_self.clone()); } - - friend std::ostream& operator<<(std::ostream& out, TermSpec const& self); - TermSpec(TermList self, int index) : _self(OldTermSpec(self, index)) {} - - - template - TermSpec(unsigned functor, Args... args) - : _self(Appl{functor, someIf(sizeof...(args) != 0, []() { return Recycled>(); }) }) - { - ASS_EQ(sizeof...(args), env.signature->getFunction(functor)->arity()) - if (sizeof...(args) != 0) { - _self.template unwrap().args.unwrap()->pushMany(std::move(args)...); - } + bool isVar() const { return trm.isVar(); } + bool isSpecialVar() const { return trm.isSpecialVar(); } + bool isTerm() const { return trm.isTerm(); } + bool isOutputVar() const { return isVar() && index == UNBOUND_INDEX; } + bool onBank() const { return true; } // always on a bank + unsigned var() const { ASS(trm.isVar()); return trm.var(); } + const Term* term() const { ASS(isTerm()); return trm.term(); } + TermList::Top top() const { return trm.top(); } + + TermSpec nthArg(unsigned i ) const { + ASS(isTerm()); + return TermSpec(trm.nthArg(i), index); } - TermList::Top top() const; - TermSpec const& deref(RobSubstitution const* s) const&; - bool isOutputVar() const; - unsigned varNumber() const { return *top().var(); } - bool definitelyGround() const;// { return t->shared() && t->ground(); } - // assuming it's ground - unsigned weight() const; - bool sameTermContent(TermSpec const& other) const; - - bool isSpecialVar() const; - bool isVar() const; - bool isNormalVar() const { return isVar() && !isSpecialVar(); } - - bool isTerm() const; - bool isLiteral() const; - TermSpec sort() const; - bool isSort() const; - VarSpec varSpec() const; - unsigned functor() const; - -#if VHOL - bool isApplication() const; - TermList head(RobSubstitution* s) const; - bool isArrowSort(); - bool isBoolSort(); - void headAndArgs(TermSpec& head, Stack& args); -#endif + /** WARNING implicit conversion */ + operator TermList() const {return trm;} - unsigned nTypeArgs() const;//{ return derefTerm().term()->numTypeArguments(); } - unsigned nTermArgs() const;//{ return derefTerm().term()->numTermArguments(); } - unsigned nAllArgs() const;//{ return derefTerm().term()->numTermArguments(); } - // - bool isNumeral() const { return isTerm() && env.signature->getFunction(functor())->interpretedNumber(); } - // bool isGround() { return _subs->apply(_term, _index).ground(); } - TermSpec termArg(unsigned i) const; - TermSpec typeArg(unsigned i) const; - TermSpec anyArg(unsigned i) const; - auto typeArgs() const { return range(0, nTypeArgs()).map([this](auto i) { return typeArg(i); }); } - auto termArgs() const { return range(0, nTermArgs()).map([this](auto i) { return termArg(i); }); } - auto allArgs() const { return range(0, nAllArgs()).map([this](auto i) { return anyArg(i); }); } - - TermList toTerm(RobSubstitution& s) const; + friend std::ostream& operator<<(std::ostream& out, TermSpec const& self) + { return out << self.trm << "/" << self.index;; } + TermSpec clone() const { return *this; } }; -struct AutoDerefTermSpec -{ - TermSpec term; - RobSubstitution const* subs; - AutoDerefTermSpec clone() const { return { term.clone(), subs, }; } - AutoDerefTermSpec(TermSpec const& t, RobSubstitution const* s) - : term(t.deref(s).clone()) - , subs(s) { } - explicit AutoDerefTermSpec(AutoDerefTermSpec const& other) : term(other.term.clone()), subs(other.subs) {} - AutoDerefTermSpec(AutoDerefTermSpec && other) = default; - friend std::ostream& operator<<(std::ostream& out, AutoDerefTermSpec const& self); -}; - +template class UnificationConstraint { - TermSpec _t1; - TermSpec _t2; + TermSpecOrList _t1; + TermSpecOrList _t2; + + using Constraint = UnificationConstraint; + using RobSubstitution = RobSubstitution; public: // TODO get rid of default constr UnificationConstraint() {} CLASS_NAME(UnificationConstraint) USE_ALLOCATOR(UnificationConstraint) - UnificationConstraint(UnificationConstraint&&) = default; - UnificationConstraint& operator=(UnificationConstraint&&) = default; auto asTuple() const -> decltype(auto) { return std::tie(_t1, _t2); } IMPL_COMPARISONS_FROM_TUPLE(UnificationConstraint); IMPL_HASH_FROM_TUPLE(UnificationConstraint); - UnificationConstraint clone() const { return UnificationConstraint(lhs().clone(), rhs().clone()); } + Constraint clone() const { return Constraint(lhs(), rhs()); } - UnificationConstraint(TermSpec t1, TermSpec t2) - : _t1(std::move(t1)), _t2(std::move(t2)) + UnificationConstraint(TermSpecOrList t1, TermSpecOrList t2) + : _t1(t1), _t2(t2) {} Option toLiteral(RobSubstitution& s); - TermSpec const& lhs() const { return _t1; } - TermSpec const& rhs() const { return _t2; } + TermSpecOrList const& lhs() const { return _t1; } + TermSpecOrList const& rhs() const { return _t2; } - friend std::ostream& operator<<(std::ostream& out, UnificationConstraint const& self) + friend std::ostream& operator<<(std::ostream& out, Constraint const& self) { return out << self._t1 << " != " << self._t2; } }; +template class UnificationConstraintStack { - Stack _cont; + using Constraint = UnificationConstraint; + using RobSubstitution = RobSubstitution; + + Stack _cont; public: CLASS_NAME(UnificationConstraintStack) USE_ALLOCATOR(UnificationConstraintStack) @@ -317,7 +155,7 @@ class UnificationConstraintStack { return iterTraits(_cont.iter()) .filterMap([&](auto& c) { return c.toLiteral(s); }); } - friend std::ostream& operator<<(std::ostream& out, UnificationConstraintStack const& self) + friend std::ostream& operator<<(std::ostream& out, UnificationConstraintStack const& self) { return out << self._cont; } void reset() { _cont.reset(); } @@ -326,8 +164,8 @@ class UnificationConstraintStack bool isEmpty() const { return _cont.isEmpty(); } - void add(UnificationConstraint c, Option bd); - UnificationConstraint pop(Option bd); + void add(Constraint c, Option bd); + Constraint pop(Option bd); }; using namespace Lib; @@ -337,36 +175,33 @@ namespace UnificationAlgorithms { class HOLUnification; class RobUnification; } -class UnificationConstraint; +template class RobSubstitution :public Backtrackable { friend class UnificationAlgorithms::AbstractingUnification; friend class UnificationAlgorithms::HOLUnification; - friend class UnificationConstraint; + friend class UnificationConstraint; + + using Constraint = UnificationConstraint; + using ConstraintStack = UnificationConstraintStack; + using RobSubst = RobSubstitution; public: CLASS_NAME(RobSubstitution); USE_ALLOCATOR(RobSubstitution); RobSubstitution() : _nextUnboundAvailable(0) {} + virtual ~RobSubstitution() = default; - SubstIterator matches(Literal* base, int baseIndex, - Literal* instance, int instanceIndex, bool complementary); - SubstIterator unifiers(Literal* l1, int l1Index, Literal* l2, int l2Index, bool complementary); + bool unify(TermSpecOrList t1, TermSpecOrList t2); + bool match(TermSpecOrList base, TermSpecOrList instance); - bool unify(TermList t1,int index1, TermList t2, int index2); - - bool match(TermList base,int baseIndex, TermList instance, int instanceIndex); - - bool unifyArgs(Term* t1,int index1, Term* t2, int index2); - bool matchArgs(Term* base,int baseIndex, Term* instance, int instanceIndex); - - void denormalize(const Renaming& normalizer, int normalIndex, int denormalizedIndex); - bool isUnbound(unsigned var, int index) const + void denormalize(const Renaming& normalizer, VarBankOrInt normBank, VarBankOrInt denormBank); + bool isUnbound(unsigned var, VarBankOrInt bank) const { - return isUnbound(VarSpec(var,index)); + return isUnbound(TermSpecOrList(var, bank)); } void reset() { @@ -379,26 +214,24 @@ class RobSubstitution bool keepRecycled() const { return _bank.keepRecycled(); } - /** - * Bind special variable to a specified term - * - * Calls to this method must happen before calls to any - * other methods. Also no special variables can occur in - * binding term, as no occur-check is performed. - */ - void bindSpecialVar(unsigned var, TermList t, int index) - { - VarSpec vs(var, SPECIAL_INDEX); - ASS(!_bank.find(vs)); - bind(vs, TermSpec(t,index)); - } + TermList::Top getSpecialVarTop(unsigned specialVar) const; - TermList apply(TermList t, int index) const; - Literal* apply(Literal* lit, int index) const; - Stack apply(Stack cl, int index) const; - size_t getApplicationResultWeight(TermList t, int index) const; - size_t getApplicationResultWeight(Literal* lit, int index) const; + Literal* apply(Literal* lit, VarBankOrInt bank) const; + Stack apply(Stack cl, VarBankOrInt bank) const; + size_t getApplicationResultWeight(Literal* lit, VarBankOrInt bank) const; + size_t getApplicationResultWeight(TermSpecOrList t, VarBankOrInt bank) const; + TermList apply(TermSpecOrList t, VarBankOrInt bank) const; + + virtual TermSpecOrList getUnboundVar(unsigned var) const = 0; + virtual TermSpecOrList getLitArg(Literal* lit, unsigned idx, VarBankOrInt bank) const = 0; + virtual TermSpecOrList getLitSort(Literal* lit, VarBankOrInt bank) const = 0; + // functions are needed by so many other classes that it is + // easier to just make them public rather than adding other + // classes as friends + TermSpecOrList const& deref(TermSpecOrList v) const; + TermSpecOrList const& derefBound(TermSpecOrList const& v) const; + #if VDEBUG /** * Return number of bindings stored in the substitution. @@ -409,54 +242,49 @@ class RobSubstitution size_t size() const {return _bank.size(); } #endif - friend std::ostream& operator<<(std::ostream& out, RobSubstitution const& self); - std::ostream& output(std::ostream& out, bool deref) const; - - friend std::ostream& operator<<(std::ostream& out, VarSpec const& self) - { - if(self.index == SPECIAL_INDEX) { - return out << "S" << self.var; - } else { - return out << "X" << self.var << "/" << self.index; - } - } - RobSubstitution(RobSubstitution&& obj) = default; RobSubstitution& operator=(RobSubstitution&& obj) = default; + + +protected: + typedef DHMap BankType; + mutable unsigned _nextUnboundAvailable; + BankType _bank; + Recycled _constr; + bool sameTermContent(TermSpecOrList t1, TermSpecOrList t2); + void bind(const TermSpecOrList& v, TermSpecOrList b); + + template + VirtualIterator getAssocIterator(RobSubst* subst, + TermSpecOrList l1, TermSpecOrList s1, TermSpecOrList l2, TermSpecOrList s2, bool complementary); + + template + struct AssocContext; + template + class AssocIterator; + + struct MatchingFn; + struct UnificationFn; + private: - TermList apply(TermSpec); - friend class TermSpec; RobSubstitution(const RobSubstitution& obj) = delete; RobSubstitution& operator=(const RobSubstitution& obj) = delete; + bool isUnbound(TermSpecOrList v) const; - static const int UNBOUND_INDEX; - static const int SPECIAL_INDEX; - - bool isUnbound(VarSpec v) const; - TermSpec const& deref(VarSpec v) const; - TermSpec const& derefBound(TermSpec const& v) const; - - void pushConstraint(UnificationConstraint c){ + void pushConstraint(Constraint c){ _constr->add(std::move(c), bd()); } - UnificationConstraint popConstraint(){ + Constraint popConstraint(){ return _constr->pop(bd()); } bool emptyConstraints(){ return _constr->isEmpty(); } - void bind(const VarSpec& v, TermSpec b); - - void bindVar(const VarSpec& var, const VarSpec& to); - VarSpec root(VarSpec v) const; - bool match(TermSpec base, TermSpec instance); - bool unify(TermSpec t1, TermSpec t2); + TermSpecOrList root(TermSpecOrList v) const; + bool occurs(TermSpecOrList const& vs, TermSpecOrList const& ts); - bool occurs(VarSpec const& vs, TermSpec const& ts); - - Option bd(){ if(bdIsRecording()){ return Option(bdGet()); @@ -465,33 +293,19 @@ class RobSubstitution } } - // VarSpec getVarSpec(TermList tl, int index) const - // { - // CALL("RobSubstitution::getVarSpec"); - // ASS(tl.isVar()); - // index = tl.isSpecialVar() ? SPECIAL_INDEX : index; - // return VarSpec(tl.var(), index); - // } - - typedef DHMap BankType; - - BankType _bank; - Recycled _constr; - mutable unsigned _nextUnboundAvailable; - - friend std::ostream& operator<<(std::ostream& out, RobSubstitution const& self) + friend std::ostream& operator<<(std::ostream& out, RobSubst const& self) { return out << "bindings: " << self._bank << "\n" << "constraints: " << self._constr; } class BindingBacktrackObject : public BacktrackObject { public: - BindingBacktrackObject(RobSubstitution* subst, VarSpec v) + BindingBacktrackObject(RobSubst* subst, TermSpecOrList v) :_subst(subst), _var(v) { - Option t = _subst->_bank.find(_var); + Option t = _subst->_bank.find(_var); if(t) { - _term = some(t->clone()); + _term = some(*t); } } void backtrack() @@ -507,22 +321,104 @@ class RobSubstitution CLASS_NAME(RobSubstitution::BindingBacktrackObject); USE_ALLOCATOR(BindingBacktrackObject); private: - RobSubstitution* _subst; - VarSpec _var; - Option _term; + RobSubst* _subst; + TermSpecOrList _var; + Option _term; }; +}; - template - SubstIterator getAssocIterator(RobSubstitution* subst, - Literal* l1, int l1Index, Literal* l2, int l2Index, bool complementary); +class RobSubstitutionTL : public RobSubstitution +{ +public: + SubstIterator matches(Literal* base, Literal* instance, bool complementary); + SubstIterator unifiers(Literal* l1, Literal* l2, bool complementary); - template - struct AssocContext; - template - class AssocIterator; + Literal* apply(Literal* lit, VarBank bank) const + { return RobSubstitution::apply(lit, bank); } - struct MatchingFn; - struct UnificationFn; + TermList apply(TermList t, VarBank bank) const + { return RobSubstitution::apply(t, bank); } + + /** + * Bind special variable to a specified term + * + * Calls to this method must happen before calls to any + * other methods. Also no special variables can occur in + * binding term, as no occur-check is performed. + */ + void bindSpecialVar(unsigned var, TermList t) + { + TermList vs(var, true); + ASS(!_bank.find(vs)); + bind(vs, t); + } + +private: + virtual TermList getUnboundVar(unsigned var) const override + { return TermList(_nextUnboundAvailable++, VarBank::OUTPUT_BANK); } + + virtual TermList getLitArg(Literal* lit, unsigned idx, VarBank b) const override + { return *lit->nthArgument(idx); } + + virtual TermList getLitSort(Literal* lit, VarBank bank) const override + { ASS(lit->isTwoVarEquality()); return lit->twoVarEqSort(); } + + struct ToRobTermList; +}; + +// for backwards compatibility purposes +class RobSubstitutionTS : public RobSubstitution +{ +public: + bool unify(TermList t1, int idx1, TermList t2, int idx2); + bool match(TermList t1, int idx1, TermList t2, int idx2); + + SubstIteratorTS matches(Literal* base, int l1idx, Literal* instance, int l2idx, bool complementary); + SubstIteratorTS unifiers(Literal* l1, int l1idx, Literal* l2, int l2idx, bool complementary); + + Literal* apply(Literal* lit, int index) const + { return RobSubstitution::apply(lit, index); } + + TermList apply(TermList t, int index) const + { return RobSubstitution::apply(TermSpec(t,index), index); } + +private: + virtual TermSpec getUnboundVar(unsigned var) const override + { return TermSpec(_nextUnboundAvailable++, TermSpec::UNBOUND_INDEX); } + + virtual TermSpec getLitArg(Literal* lit, unsigned idx, int b) const override + { return TermSpec(*lit->nthArgument(idx),b); } + + virtual TermSpec getLitSort(Literal* lit, int b) const override + { ASS(lit->isTwoVarEquality()); return TermSpec(lit->twoVarEqSort(),b); } + + struct ToRobTermSpec; +}; + +using namespace Lib; + +template +struct AutoDerefTerm +{ + using RobSubst = RobSubstitution; + + TermSpecOrList term; + RobSubst const* subs; + VarBankOrInt bank; + + AutoDerefTerm(TermSpecOrList const& t, RobSubst const* s, VarBankOrInt b) + : subs(s) + , bank(b) { + term = t.isVar() && !t.onBank() ? + s->derefBound(TermSpecOrList(t.var(), b)) : + s->derefBound(t); + } + + AutoDerefTerm clone() const { return { term, subs, bank }; } + explicit AutoDerefTerm(AutoDerefTerm const& other) : term(other.term), subs(other.subs), bank(other.bank) {} + AutoDerefTerm(AutoDerefTerm && other) = default; + friend std::ostream& operator<<(std::ostream& out, AutoDerefTerm const& self) + { return out << self.term << "@" << *self.subs; } }; @@ -530,29 +426,52 @@ class RobSubstitution namespace Lib { - // TODO optimize to use TermList iterator template<> // struct BottomUpChildIter> - struct BottomUpChildIter + struct BottomUpChildIter> { - using Item = Kernel::AutoDerefTermSpec; + using Item = Kernel::AutoDerefTerm; Item _self; unsigned _arg; BottomUpChildIter(Item const& self) : _self(Item(self)), _arg(0) {} - + Item self() { return _self.clone(); } Item next() - { return Kernel::AutoDerefTermSpec(_self.term.anyArg(_arg++), _self.subs); } + { return Item(_self.term.nthArg(_arg++), _self.subs, _self.bank); } bool hasNext() - { return _self.term.isTerm() && _arg < _self.term.nAllArgs(); } + { return _self.term.isTerm() && _arg < _self.term.term()->arity(); } unsigned nChildren() - { return _self.term.isVar() ? 0 : _self.term.nAllArgs(); } + { return _self.term.isVar() ? 0 : _self.term.term()->arity(); } }; + // TODO get rid of code duplication ... + template<> + struct BottomUpChildIter> + { + using Item = Kernel::AutoDerefTerm; + Item _self; + unsigned _arg; + + BottomUpChildIter(Item const& self) : _self(Item(self)), _arg(0) {} + + Item self() { return _self.clone(); } + + Item next() + { return Item(_self.term.nthArg(_arg++), _self.subs, _self.bank); } + + bool hasNext() + { return _self.term.isTerm() && _arg < _self.term.term()->arity(); } + + unsigned nChildren() + { return _self.term.isVar() ? 0 : _self.term.term()->arity(); } + }; + + + } // namespace Lib #endif /*__RobSubstitution__*/ diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 4a94820999..3f51155c46 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -20,7 +20,10 @@ #include "SubstHelper.hpp" #include "TermIterators.hpp" #include "RobSubstitution.hpp" +#include "TermTransformer.hpp" +#if VHOL #include "ApplicativeHelper.hpp" +#endif #include "Lib/Metaiterators.hpp" #include "Term.hpp" @@ -226,7 +229,7 @@ bool TermList::equals(TermList t1, TermList t2) stack.push(s->args()); stack.push(t->args()); } - else if (ss->content()!=tt->content()) { + else if (*ss != *tt) { stack.reset(); return false; } @@ -364,10 +367,10 @@ TermList TermList::finalResult(){ return isVar() || !isArrowSort() ? *this : static_cast(term())->finalResult(); } -TermList TermList::whnf(){ - CALL("TermList::whnf"); +TermList TermList::whnfDeref(RobSubstitutionTL* sub){ + CALL("TermList::whnfDeref"); - return WHNF().normalise(*this); + return WHNFDeref(sub).normalise(*this); } TermList TermList::betaNF(){ @@ -690,6 +693,35 @@ unsigned Term::numTermArguments() const return _arity - numTypeArguments(); } +TermList TermList::toBank(VarBank b) +{ + CALL("TermList::toBank"); + + if(isVar()) + return TermList(_var.var, b); + + return TermList(term()->toBank(b)); +} + +TermList TermList::nthArg(unsigned i) const { + ASS(isTerm()); + return *term()->nthArgument(i); +} + +Term* Term::toBank(VarBank b) +{ + CALL("Term::toBank"); + + return ToBank(b).toBank(this); +} + +Literal* Literal::toBank(VarBank b) +{ + CALL("Literal::toBank"); + + return ToBank(b).toBank(this); +} + bool TermList::containsSubterm(TermList trm) { CALL("Term::containsSubterm"); @@ -2201,7 +2233,7 @@ Literal* Literal::createEquality (bool polarity, TermList arg1, TermList arg2, T TermList srt1, srt2; #if VDEBUG - static RobSubstitution checkSortSubst; + static RobSubstitutionTL checkSortSubst; checkSortSubst.reset(); #endif @@ -2211,14 +2243,14 @@ Literal* Literal::createEquality (bool polarity, TermList arg1, TermList arg2, T ASS_REP(arg2.isVar(), arg2.toString()); return createVariableEquality(polarity, arg1, arg2, sort); } - ASS(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, 0, srt2, 1)); + ASS(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, srt2)); } else { - ASS_REP2(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, 0, srt1, 1), sort.toString(), srt1.toString()); + ASS_REP2(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, srt1), sort.toString(), srt1.toString()); #if VDEBUG if (SortHelper::tryGetResultSort(arg2, srt2)) { checkSortSubst.reset(); - ASS_REP2(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, 0, srt2, 1), sort.toString(), arg2.toString() + " : " + srt2.toString()); + ASS_REP2(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, srt2), sort.toString(), arg2.toString() + " : " + srt2.toString()); } #endif } @@ -2431,7 +2463,7 @@ bool Kernel::operator<(const TermList& lhs, const TermList& rhs) } else { ASS(lhs.isVar()) ASS(rhs.isVar()) - return lhs.var() < rhs.var(); + return lhs.var() < rhs.var(); // TODO compare indexes??? } } diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 484ef9d95e..211af0635b 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -90,8 +90,19 @@ enum ArgumentOrderVals { AO_INCOMPARABLE=6, }; +enum VarBank { + DEFAULT_BANK=0, + QUERY_BANK=1, + RESULT_BANK=2, + NORM_RESULT_BANK=3, + FRESH_BANK=4, + OUTPUT_BANK=5 +}; + bool operator<(const TermList& lhs, const TermList& rhs); +class RobSubstitutionTL; // forward declaration + /** * Class containing either a pointer to a compound term or * a variable number or a functor. @@ -103,8 +114,12 @@ class TermList { static const unsigned SPEC_UPPER_BOUND = (UINT_MAX / 4) / 2; /** dummy constructor, does nothing */ TermList() {} - /** creates a term list and initialises its content with data */ - explicit TermList(size_t data) : _content(data) {} + /** creates a term list and initialises its content with data + * AYB deprecated. Should NOT be using a TermList to store arbitrary data + * Kept for backwards compatibility */ + explicit TermList(size_t data) { + _var.var = data; + } /** creates a term list containing a pointer to a term */ explicit TermList(Term* t) : _term(t) { ASS_EQ(tag(), REF); } /** creates a term list containing a variable. If @b special is true, then the variable @@ -120,6 +135,12 @@ class TermList { } } + TermList(unsigned var, VarBank bank) + { + // special variables never need to be on a bank + makeVar(var, bank); + } + /** the tag */ inline TermTag tag() const { return static_cast(_info.tag); } /** the term list is empty */ @@ -143,7 +164,7 @@ class TermList { /** return the variable number */ inline unsigned var() const - { ASS(isVar()); return _content / 4; } + { ASS(isVar()); return _var.var; } /** the term contains reference to Term class */ inline bool isTerm() const { return tag() == REF; } @@ -154,11 +175,12 @@ class TermList { /** True of the terms have the same content. Useful for comparing * arguments of shared terms. */ inline bool sameContent(const TermList* t) const - { return _content == t->_content ; } + { return *this == *t ; } inline bool sameContent(const TermList& t) const { return sameContent(&t); } - /** return the content, useful for e.g., term argument comparison */ - inline size_t content() const { return _content; } + /** return the content, useful for e.g., term argument comparison + * AYB depracated */ + inline size_t content() const { return _var.var; } /** default hash is to hash the content */ unsigned defaultHash() const { return DefaultHash::hash(content()); } @@ -166,15 +188,32 @@ class TermList { vstring toString() const; + inline VarBank bank() const + { return static_cast(_var.bank); } + + inline bool isOutputVar() const + { return isVar() && bank() == OUTPUT_BANK; } + + inline bool onBank() const + { return isVar() && bank() != DEFAULT_BANK; } + /** make the term into an ordinary variable with a given number */ - inline void makeVar(unsigned vnumber) - { _content = vnumber * 4 + ORD_VAR; } + inline void makeVar(unsigned vnumber, VarBank bank = DEFAULT_BANK) + { + _var.var = vnumber; + _var.tag = ORD_VAR; + _var.bank = bank; + } /** make the term into a special variable with a given number */ inline void makeSpecialVar(unsigned vnumber) - { _content = vnumber * 4 + SPEC_VAR; } + { + _var.var = vnumber; + _var.tag = SPEC_VAR; + _var.bank = DEFAULT_BANK; + } /** make the term empty (so that isEmpty() returns true) */ inline void makeEmpty() - { _content = FUN; } + { _var.tag = FUN; } /** make the term into a reference */ inline void setTerm(Term* t) { _term = t; ASS_EQ(tag(), REF); } @@ -230,12 +269,17 @@ class TermList { TermList result(); TermList finalResult(); // return the weak head normal form of the term - TermList whnf(); + TermList whnfDeref(RobSubstitutionTL* sub); TermList betaNF(); TermList etaNF(); TermList betaEtaNF(); #endif + TermList toBank(VarBank bank); + // Use with care! Make sure that it is a term before calling + // mainly here for compatibility with TermSpec in RobSubstitution + TermList nthArg(unsigned i) const; + bool containsSubterm(TermList v); bool containsAllVariablesOf(TermList t); @@ -250,9 +294,29 @@ class TermList { #endif inline bool operator==(const TermList& t) const - { return _content==t._content; } + { + if(isVar()){ + return _var.tag == t._var.tag && + _var.var == t._var.var && + _var.bank == t._var.bank; + } else if(isTerm()){ + return _term == t._term; + } else { + // I don't think we ever want to compare info, + // but hey why not + return _info.tag == t._info.tag && + _info.polarity == t._info.polarity && + _info.commutative == t._info.commutative && + _info.shared == t._info.shared && + _info.literal == t._info.literal && + _info.sort == t._info.sort && + _info.hasTermVar == t._info.hasTermVar && + _info.order == t._info.order && + _info.id == t._info.id; //ignoring HOL data for now + } + } inline bool operator!=(const TermList& t) const - { return _content!=t._content; } + { return !(*this == t); } friend bool operator<(const TermList& lhs, const TermList& rhs); @@ -262,8 +326,15 @@ class TermList { union { /** reference to another term */ Term* _term; - /** raw content, can be anything */ - size_t _content; + /** variable */ + struct { + /** a TermTag indicating what is stored here */ + unsigned tag : 2; + /** bank the variable is currently on */ + unsigned bank : 30; + /** variable number */ + unsigned var : 32; + } _var; /** Used by Term, storing some information about the term using bits */ /* * A note from 2022: the following bitfield is somewhat non-portable. @@ -290,14 +361,14 @@ class TermList { unsigned sort : 1; /** true if term contains at least one term var */ unsigned hasTermVar : 1; -#if VHOL + #if VHOL /** true if the term contains a De Bruijn index */ unsigned hasDBIndex : 1; /** true if the term contains a redex */ unsigned hasRedex : 1; /** true if a term contains a lambda */ unsigned hasLambda : 1; -#endif + #endif /** Ordering comparison result for commutative term arguments, one of * 0 (unknown) 1 (less), 2 (equal), 3 (greater), 4 (incomparable) @@ -312,9 +383,10 @@ class TermList { /** term id hiding in this _info */ // this should not be removed without care, // otherwise the bitfield layout might shift, resulting in broken pointer tagging - unsigned id : 32; + unsigned id : 32; } _info; }; + friend class Indexing::TermSharing; friend class Term; friend class Literal; @@ -322,7 +394,7 @@ class TermList { }; // class TermList static_assert( - sizeof(TermList) == sizeof(size_t), + sizeof(TermList) == 8, "size of TermList must be the same size as that of size_t" ); @@ -642,7 +714,7 @@ class Term TermList* ts1 = args(); TermList* ts2 = ts1->next(); - swap(ts1->_content, ts2->_content); + swap(ts1->_var, ts2->_var); } /** Return the weight. Applicable only to shared terms */ @@ -853,6 +925,8 @@ class Term bool containsAllVariablesOf(Term* t); size_t countSubtermOccurrences(TermList subterm); + Term* toBank(VarBank bank); + /** Return true if term has no non-constant functions as subterms */ bool isShallow() const; @@ -1166,6 +1240,8 @@ class Literal return _args[0]._info.polarity; } // polarity + Literal* toBank(VarBank b); + /** * Mark this object as an equality between two variables. */ diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index 793fced2e9..a0fc2ca563 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -264,7 +264,7 @@ TermList TermTransformer::transform(TermList ts) return ts; } } -} +} TermList SubtermReplacer::transformSubterm(TermList t) { @@ -274,6 +274,31 @@ TermList SubtermReplacer::transformSubterm(TermList t) return t; } + +TypedTermList ToBank::toBank(TypedTermList term){ + CALL("ToBank::toBank"); + + TermList sort = term.sort(); + + return(TypedTermList(term.isVar() ? transformSubterm(term) : transform(term), + sort.isVar() ? transformSubterm(sort) : transform(sort) )); +} + +TermList ToBank::transformSubterm(TermList t) { + CALL("ToBank::transformSubterm"); + + if(t.isVar() && t.bank() != _bank){ + return TermList(t.var(), _bank); + } + return t; +} + +bool ToBank::exploreSubterms(TermList orig, TermList newTerm) { + CALL("ToBank::exploreSubterms"); + + return !(newTerm.isTerm() && newTerm.term()->shared() && newTerm.term()->ground()); +} + Formula* TermTransformer::transform(Formula* f) { CALL("TermTransformer::transform(Formula* f)"); diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index a9e914c698..9bbed3866d 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -17,6 +17,7 @@ #include "Forwards.hpp" #include "Term.hpp" +#include "TypedTermList.hpp" namespace Kernel { @@ -51,7 +52,7 @@ class TermTransformer { Term* transform(Term* term); Literal* transform(Literal* lit); TermList transform(TermList ts); - + protected: virtual TermList transformSubterm(TermList trm) = 0; // Deliberately empty bodies. @@ -88,6 +89,22 @@ class SubtermReplacer : public TermTransformer { TermList _by; }; +class ToBank : public TermTransformer +{ +public: + ToBank(VarBank bank) : _bank(bank) {} + + Term* toBank(Term* t){ return transform(t); } + Literal* toBank(Literal* l){ return transform(l); } + TypedTermList toBank(TypedTermList term); + + TermList transformSubterm(TermList t) override; + bool exploreSubterms(TermList orig, TermList newTerm) override; +private: + VarBank _bank; +}; + + /** * Has similar philosophy to TermTransformer, but: * goes bottom up and so subterms of currently considered terms @@ -111,7 +128,6 @@ class BottomUpTermTransformer { Formula* transform(Formula* f); }; - } #endif // __TermTransformer__ diff --git a/Parse/TPTP.cpp b/Parse/TPTP.cpp index c3df569221..27fceddaa5 100644 --- a/Parse/TPTP.cpp +++ b/Parse/TPTP.cpp @@ -3287,7 +3287,7 @@ Formula* TPTP::createPredicateApplication(vstring name, unsigned arity) "is not $ttype as mandated by TF1"); } } else { - static RobSubstitution subst; + static RobSubstitutionTS subst; subst.reset(); if(!subst.match(sort, 0, tsSort, 1)) { USER_ERROR("Failed to create predicate application for " + name + " of type " + type->toString() + "\n" + @@ -3341,7 +3341,7 @@ TermList TPTP::createFunctionApplication(vstring name, unsigned arity) "is not $tType as mandated by TF1"); } } else { - static RobSubstitution subst; + static RobSubstitutionTS subst; subst.reset(); if(!subst.match(sort, 0, ssSort, 1)){ USER_ERROR("Failed to create function application for " + name + " of type " + type->toString() + "\n" + diff --git a/Shell/AnswerExtractor.cpp b/Shell/AnswerExtractor.cpp index a268c2c24c..158c80f500 100644 --- a/Shell/AnswerExtractor.cpp +++ b/Shell/AnswerExtractor.cpp @@ -120,7 +120,7 @@ void AnswerExtractor::getNeededUnits(Clause* refutation, ClauseStack& premiseCla class ConjunctionGoalAnswerExractor::SubstBuilder { public: - SubstBuilder(LiteralStack& goalLits, LiteralIndexingStructure& lemmas, RobSubstitution& subst) + SubstBuilder(LiteralStack& goalLits, LiteralIndexingStructure& lemmas, RobSubstitutionTS& subst) : _goalLits(goalLits), _lemmas(lemmas), _subst(subst), _goalCnt(goalLits.size()), _btData(_goalCnt), _unifIts(_goalCnt), _triedEqUnif(_goalCnt) {} @@ -186,7 +186,7 @@ class ConjunctionGoalAnswerExractor::SubstBuilder while(_unifIts[_depth].hasNext()) { SLQueryResult qres = _unifIts[_depth].next(); ASS_EQ(goalLit->header(), qres.literal->header()); - if(_subst.unifyArgs(goalLit, 0, qres.literal, 1)) { + if(_subst.unify(TermList(goalLit), 0, TermList(qres.literal), 1)) { return true; } } @@ -202,7 +202,7 @@ class ConjunctionGoalAnswerExractor::SubstBuilder private: LiteralStack& _goalLits; LiteralIndexingStructure& _lemmas; - RobSubstitution& _subst; + RobSubstitutionTS& _subst; unsigned _goalCnt; DArray _btData; diff --git a/Shell/BlockedClauseElimination.cpp b/Shell/BlockedClauseElimination.cpp index 23059d5c52..885fe87c8f 100644 --- a/Shell/BlockedClauseElimination.cpp +++ b/Shell/BlockedClauseElimination.cpp @@ -503,9 +503,9 @@ bool BlockedClauseElimination::resolvesToTautologyUn(Clause* cl, Literal* lit, C // cout << "lit: " << lit->toString() << endl; // cout << "plit: " << plit->toString() << endl; - static RobSubstitution subst_main; + static RobSubstitutionTS subst_main; subst_main.reset(); - if(!subst_main.unifyArgs(lit,0,plit,1)) { + if(!subst_main.unify(TermList(lit),0,TermList(plit),1)) { return true; // since they don't resolve } @@ -538,7 +538,7 @@ bool BlockedClauseElimination::resolvesToTautologyUn(Clause* cl, Literal* lit, C static DHSet pcl_lits; pcl_lits.reset(); - static RobSubstitution subst_aux; + static RobSubstitutionTS subst_aux; subst_aux.reset(); for (unsigned i = 0; i < pcl->length(); i++) { @@ -554,7 +554,7 @@ bool BlockedClauseElimination::resolvesToTautologyUn(Clause* cl, Literal* lit, C // cout << "insert2(scurlit): " << scurlit->toString() << endl; if (curlit != plit && cl_lits.find(opscurlit)) { - if (opslit->functor() != scurlit->functor() || !subst_aux.unifyArgs(opslit,0,scurlit,0)) { // opslit is the same thing as plit(subst_main) + if (opslit->functor() != scurlit->functor() || !subst_aux.unify(TermList(opslit),0,TermList(scurlit),0)) { // opslit is the same thing as plit(subst_main) return true; } else { subst_aux.reset(); diff --git a/UnitTests/tBetaReduction.cpp b/UnitTests/tBetaReduction.cpp index b82b4657ce..b1f8dd41c6 100644 --- a/UnitTests/tBetaReduction.cpp +++ b/UnitTests/tBetaReduction.cpp @@ -216,7 +216,7 @@ TEST_FUN(eta_reduction06) { ASS_EQ(reduced, ap(f,g).sugaredExpr()); } -TEST_FUN(whnf_01) { +/*TEST_FUN(whnf_01) { DECL_SORT(srt) DECL_HOL_VAR(x, 0, srt) DECL_HOL_VAR(y, 1, srt) @@ -251,7 +251,7 @@ TEST_FUN(whnf_02) { ASS_EQ(tdb.whnf(), toDeBruijnIndices(lam(y, lam(z, a)))); -} +}*/ TEST_FUN(fo_subterm_rep1) { DECL_SORT(srt) diff --git a/UnitTests/tInduction.cpp b/UnitTests/tInduction.cpp index 65f3c2e012..4a7b9c57b6 100644 --- a/UnitTests/tInduction.cpp +++ b/UnitTests/tInduction.cpp @@ -176,7 +176,7 @@ class GenerationTesterInduction return true; } - Kernel::RobSubstitution _subst; + Kernel::RobSubstitutionTS _subst; unordered_set _varsMatched; BacktrackData _btd; diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index ba087adc57..6c59784cce 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -1076,16 +1076,16 @@ Option runRobUnify(TermList a, TermList b, Options::U Kernel::UnificationAlgorithms::AbstractingUnification au(MismatchHandler(opt), fixedPointIteration); - static Kernel::RobSubstitution subst; + static Kernel::RobSubstitutionTL subst; subst.reset(); - auto unifs = au.unifiers(a, 0, b, 0, &subst); + auto unifs = au.unifiers(a, b, &subst); if (unifs.hasNext()) { - Kernel::RobSubstitution* sub = unifs.next(); + Kernel::RobSubstitutionTL* sub = unifs.next(); return some(TermUnificationResultSpec { - .querySigma = sub->apply(a, 0), - .resultSigma = sub->apply(b, 0), + .querySigma = sub->apply(a, DEFAULT_BANK), + .resultSigma = sub->apply(b, DEFAULT_BANK), .constraints = *sub->constraints(), }); } else { From 6966f629577ad2e8d69a0f669b6f14ab72053282 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 2 May 2023 09:19:31 +0100 Subject: [PATCH 060/210] bug fixing. all UnificationWithAbstraction unit tests now pass --- Indexing/HOLSubstitutionTree.hpp | 2 +- Indexing/SubstitutionTree.hpp | 14 +++++-- Kernel/ApplicativeHelper.cpp | 49 ++++++++++++++--------- Kernel/ApplicativeHelper.hpp | 7 ++-- Kernel/HOLUnification.cpp | 11 ++++- Kernel/MismatchHandler.cpp | 10 +++-- Kernel/Renaming.cpp | 9 +++-- Kernel/RobSubstitution.cpp | 12 +++--- Kernel/RobSubstitution.hpp | 29 +++++++++++--- Kernel/Term.cpp | 5 ++- Kernel/Term.hpp | 31 ++++---------- Shell/Options.cpp | 10 +++++ Shell/Options.hpp | 6 +++ UnitTests/tUnificationWithAbstraction.cpp | 47 +++++++++++++--------- 14 files changed, 155 insertions(+), 87 deletions(-) diff --git a/Indexing/HOLSubstitutionTree.hpp b/Indexing/HOLSubstitutionTree.hpp index b9861ea5e6..6e492218c8 100644 --- a/Indexing/HOLSubstitutionTree.hpp +++ b/Indexing/HOLSubstitutionTree.hpp @@ -107,7 +107,7 @@ class HOLSubstitutionTree template void handleImplHol (Key const& key, LeafData ld, bool doInsert) { - auto norm = Renaming::normalize(key); + auto norm = Renaming::normalize(key,VarBank::NORM_RESULT_BANK); Recycled bindings; setSort(key, ld); createHOLBindings(norm, /* reversed */ false, diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index c208b6addd..1843aa1459 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -648,7 +648,8 @@ class SubstitutionTree template void handleImpl(Key const& key, LeafData ld, bool doInsert) { - auto norm = Renaming::normalize(key, VarBank::RESULT_BANK); + CALL("SubstitutionTree::handleImpl"); + auto norm = Renaming::normalize(key, NORM_RESULT_BANK); Recycled bindings; setSort(key, ld); createBindings(norm, /* reversed */ false, @@ -1212,6 +1213,11 @@ class SubstitutionTree InstanceCntr _iterCntr; }; + // currently, the iterator makes use of RobSubstitutionTL + // so tree unification cannot involve termspecs, only TermLists + // This has a minor performance drawback, so what should be done + // is to template this Iterator with a substitution to allow it to be + // use with either RobSubstitutionTL or RobSubstitutionTS (or any other substitution) template class UnificationsIterator final : public IteratorCore @@ -1245,7 +1251,7 @@ class SubstitutionTree return; } - query = ToBank(VarBank::QUERY_BANK).toBank(query); + query = ToBank(QUERY_BANK).toBank(query); parent->createBindings(query, reversed, [&](unsigned var, TermList t) { _subst->bindSpecialVar(var, t); }); @@ -1311,7 +1317,7 @@ class SubstitutionTree _subst->bdRecord(_clientBacktrackData); _clientBDRecording=true; - _subst->denormalize(normalizer,VarBank::NORM_RESULT_BANK,VarBank::RESULT_BANK); + _subst->denormalize(normalizer,NORM_RESULT_BANK,RESULT_BANK); } // postprocess in the leaf @@ -1322,7 +1328,7 @@ class SubstitutionTree SubstIterator substs = _algo.postprocess(&*_subst); return pvi(iterTraits(substs).map([ld](RobSubstitutionTL* subst){ return QueryResult(ld, - ResultSubstitution::fromSubstitution(subst, VarBank::QUERY_BANK, VarBank::RESULT_BANK)); + ResultSubstitution::fromSubstitution(subst,QUERY_BANK,RESULT_BANK)); })); } diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 6cb5da6190..686331fe79 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -74,18 +74,34 @@ TermList WHNFDeref::transformSubterm(TermList t) if(t.isLambdaTerm()) return t; TermList head; + TermList sort; TermStack args; - ApplicativeHelper::getHeadAndArgs(t, head, args); - head = _sub->derefBound(head); + ApplicativeHelper::getHeadSortAndArgs(t, head, sort, args); + TermList newHead = _sub->derefBound(head); - while(ApplicativeHelper::canHeadReduce(head, args)){ + // if the head is a bound variable, then + // either it is bound to a lambda term creating a redex on dereferencing, + // or it is not. In the case, it isn't we need to track + // that the head has changed + bool headDereffed = newHead != head; + + while(ApplicativeHelper::canHeadReduce(newHead, args)){ + headDereffed = false; t = RedexReducer().reduce(head, args); if(t.isLambdaTerm()) break; - ApplicativeHelper::getHeadAndArgs(t, head, args); - head = _sub->derefBound(head); + ApplicativeHelper::getHeadSortAndArgs(t, head, sort, args); + newHead = _sub->derefBound(head); + headDereffed = newHead != head; } - return t; + if(!headDereffed){ + return t; + } else if(!args.size()){ + return newHead; + } else { + return ApplicativeHelper::app(sort, newHead, args); + } + } bool WHNFDeref::exploreSubterms(TermList orig, TermList newTerm) @@ -523,7 +539,7 @@ unsigned ApplicativeHelper::getArity(TermList sort) args.push(*term.term()->nthArgument(i)); } } -} +} */ void ApplicativeHelper::getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args) @@ -532,23 +548,20 @@ void ApplicativeHelper::getHeadSortAndArgs(TermList term, TermList& head, if(!args.isEmpty()){ args.reset(); } - if(!term.isTerm()){ - head = term; - return; + while(term.isLambdaTerm()){ + term = term.lambdaBody(); } while(term.isApplication()){ - Term* t = term.term(); - args.push(*t->nthArgument(3)); - term = *t->nthArgument(2); - if(!term.isApplication()){ - headSort = AtomicSort::arrowSort(*t->nthArgument(0), *t->nthArgument(1)); - break; + args.push(term.rhs()); + TermList t = term.lhs(); + if(!t.isApplication()){ + headSort = AtomicSort::arrowSort(term.nthArg(0), term.nthArg(1)); } + term = t; } head = term; - -}*/ +} void ApplicativeHelper::getArgSorts(TermList t, TermStack& sorts) { diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 39164ed481..80a009aeda 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -53,9 +53,10 @@ class ApplicativeHelper { static void getHeadAndArgs(Term* term, TermList& head, TermStack& args); static void getHeadAndArgs(const Term* term, TermList& head, TermStack& args); - // both functions below ONLY used in AppliArgsIT which is used in SKIKBO. Leaving for now in case need to - // revive -// static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); + + static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); +// function below ONLY used in AppliArgsIT which is used in SKIKBO. Leaving for now in case need to +// revive // static void getHeadAndAllArgs(TermList term, TermList& head, TermStack& args); static TermList lhsSort(TermList t); diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 3f24185f06..64d134e0a0 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -35,8 +35,12 @@ SubstIterator HOLUnification::postprocess(RobSubstitutionTL* sub) { CALL("HOLUnification::postprocess"); + // We could carry out a fix point iteration here + // but it is slighly involved and I am not sure that it is worth it. + // will leave for now. + // TODO dummy implementation - return pvi(getSingletonIterator(sub)); + return pvi(getSingletonIterator(sub)); } bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) @@ -124,6 +128,9 @@ bool HOLUnification::unifyTreeTerms(TermList t1, TermList t2, bool splittable, R auto impl = [&]() -> bool { + ASS(t1.isSpecialVar()); + t1 = sub->derefBound(t1); + if( (t1.isTerm() && t1.term()->isSort()) || (t2.isTerm() && t2.term()->isSort()) ) { return sub->unify(t1,t2); // sorts can be unified by standard algo @@ -133,6 +140,8 @@ bool HOLUnification::unifyTreeTerms(TermList t1, TermList t2, bool splittable, R // Node term and query term must have the same type. Hence we do not // check type of query. We can rely on the !splittable check + // TODO, logic is a little off here. A node can be non-splittanle, but on + // apply a substitution to the term it can become splittable if(!t1.isVar() && (t1thead.isVar() || t1thead.isLambdaTerm() || !splittable)) { // create top level constraint sub->pushConstraint(UnificationConstraint(t1, t2)); diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index 2efa9cc427..9ef3a08b1d 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -163,7 +163,10 @@ Option MismatchHandler::tryAbstract(RobSubst return arrayIter(diff) .map([](auto& x) { return x; }) .fold([](auto l, auto r) - { return TermList(Term::create2(IntTraits::addF(), l, r)); }) //create non-shared? + { + TermList args[] = {l, r}; + return TermList(Term::createNonShared(IntTraits::addF(), 2, args)); + }) //create non-shared? .unwrap(); }; auto diffConstr = [&]() { return UnificationConstraint(sum(diff1), sum(diff2)); }; @@ -359,8 +362,9 @@ bool AbstractingUnification::unify(TermList t1, TermList t2, bool& progress, Rob auto& conditions = absRes->unwrap(); auto eq = [](UnificationConstraint& c, TermList const& lhs, TermList const& rhs) { - return (c.lhs() == lhs && c.rhs() == rhs) - || (c.lhs() == rhs && c.rhs() == lhs); }; + // equals instead of == because some of the terms could be non-shared + return (TermList::equals(c.lhs(),lhs) && TermList::equals(c.rhs(),rhs)) + || (TermList::equals(c.lhs(),rhs) && TermList::equals(c.rhs(),lhs)); }; if (progress || conditions.constr().size() != 1 || conditions.unify().size() != 0 diff --git a/Kernel/Renaming.cpp b/Kernel/Renaming.cpp index 031a9f1e15..8a3ce01fd7 100644 --- a/Kernel/Renaming.cpp +++ b/Kernel/Renaming.cpp @@ -36,7 +36,8 @@ Literal* Renaming::apply(Literal* lit) { CALL("Renaming::apply(Literal*...)"); - if(identity()) { + if((identity() && _bank == DEFAULT_BANK) || + (lit->shared() && lit->ground())) { return lit; } Applicator a(this); @@ -47,7 +48,8 @@ Term* Renaming::apply(Term* trm) { CALL("Renaming::apply(Term*...)"); - if(identity()) { + if((identity() && _bank == DEFAULT_BANK) || + (trm->shared() && trm->ground())) { return trm; } Applicator a(this); @@ -58,7 +60,8 @@ TermList Renaming::apply(TermList trm) { CALL("Renaming::apply(TermList...)"); - if(identity()) { + if((identity() && _bank == DEFAULT_BANK) || + (trm.isTerm() && trm.term()->shared() && trm.term()->ground())) { return trm; } Applicator a(this); diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 96daaf909a..ebfa18bccc 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -71,8 +71,9 @@ Recycled> UnificationConstraintStack Option UnificationConstraint::toLiteral(RobSubstitution& s) { - auto t1 = s.deref(_t1); - auto t2 = s.deref(_t2); + auto t1 = s.apply(_t1); + auto t2 = s.apply(_t2); + return t1 == t2 ? Option() : Option(Literal::createEquality(false, t1, t2, t1.isTerm() ? SortHelper::getResultSort(t1.term()) : SortHelper::getResultSort(t2.term()))); @@ -182,7 +183,7 @@ TermSpecOrList const& RobSubstitution::deref(TermS for(;;) { auto binding = _bank.find(v); if(binding.isNone()) { - const_cast(*this).bind(v, getUnboundVar(_nextUnboundAvailable++)); + const_cast(*this).bind(v, getUnboundVar()); return _bank.get(v); } else if(binding->isOutputVar() || binding->isTerm()) { return binding.unwrap(); @@ -525,10 +526,11 @@ TermList RobSubstitution::apply(TermSpecOrList trm, { CALL("RobSubstitution::apply(TermList...)"); - // DBG(*this, ".apply(", TermSpec(trm, index), ")") - + //DBG(*this, ".apply(", trm, ")") + auto out = evalBottomUp(AutoDerefTerm(trm, this, bank), [&](auto& orig, TermList* args) -> TermList { + //cout << "orig " << orig << endl; TermList tout; if (orig.term.isVar()) { ASS(!orig.term.isOutputVar()) diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 716ad66e38..1672eb1bf9 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -77,6 +77,7 @@ struct TermSpec { // for backwards compatibility bool isVar() const { return trm.isVar(); } bool isSpecialVar() const { return trm.isSpecialVar(); } + bool isOrdinaryVar() const { return trm.isOrdinaryVar(); } bool isTerm() const { return trm.isTerm(); } bool isOutputVar() const { return isVar() && index == UNBOUND_INDEX; } bool onBank() const { return true; } // always on a bank @@ -149,6 +150,7 @@ class UnificationConstraintStack auto iter() const { return iterTraits(_cont.iter()); } + // only require these functions for termlists ... Recycled> literals(RobSubstitution& s); auto literalIter(RobSubstitution& s) @@ -222,10 +224,11 @@ class RobSubstitution size_t getApplicationResultWeight(TermSpecOrList t, VarBankOrInt bank) const; TermList apply(TermSpecOrList t, VarBankOrInt bank) const; - virtual TermSpecOrList getUnboundVar(unsigned var) const = 0; + virtual TermList apply(TermSpecOrList t) const = 0; + virtual TermSpecOrList getUnboundVar() const = 0; virtual TermSpecOrList getLitArg(Literal* lit, unsigned idx, VarBankOrInt bank) const = 0; virtual TermSpecOrList getLitSort(Literal* lit, VarBankOrInt bank) const = 0; - + // functions are needed by so many other classes that it is // easier to just make them public rather than adding other // classes as friends @@ -329,6 +332,8 @@ class RobSubstitution class RobSubstitutionTL : public RobSubstitution { + friend class UnificationConstraint; + public: SubstIterator matches(Literal* base, Literal* instance, bool complementary); SubstIterator unifiers(Literal* l1, Literal* l2, bool complementary); @@ -349,12 +354,18 @@ class RobSubstitutionTL : public RobSubstitution void bindSpecialVar(unsigned var, TermList t) { TermList vs(var, true); + ASS(!_bank.find(vs)); bind(vs, t); } private: - virtual TermList getUnboundVar(unsigned var) const override + /** This method should only be used when all variables of + * t are on a bank different to DEFAULT_BANK */ + virtual TermList apply(TermList t) const override + { return RobSubstitution::apply(t, DEFAULT_BANK); } + + virtual TermList getUnboundVar() const override { return TermList(_nextUnboundAvailable++, VarBank::OUTPUT_BANK); } virtual TermList getLitArg(Literal* lit, unsigned idx, VarBank b) const override @@ -369,6 +380,8 @@ class RobSubstitutionTL : public RobSubstitution // for backwards compatibility purposes class RobSubstitutionTS : public RobSubstitution { + friend class UnificationConstraint; + public: bool unify(TermList t1, int idx1, TermList t2, int idx2); bool match(TermList t1, int idx1, TermList t2, int idx2); @@ -383,7 +396,11 @@ class RobSubstitutionTS : public RobSubstitution { return RobSubstitution::apply(TermSpec(t,index), index); } private: - virtual TermSpec getUnboundVar(unsigned var) const override + + virtual TermList apply(TermSpec t) const override + { return RobSubstitution::apply(t, t.index); } + + virtual TermSpec getUnboundVar() const override { return TermSpec(_nextUnboundAvailable++, TermSpec::UNBOUND_INDEX); } virtual TermSpec getLitArg(Literal* lit, unsigned idx, int b) const override @@ -409,7 +426,9 @@ struct AutoDerefTerm AutoDerefTerm(TermSpecOrList const& t, RobSubst const* s, VarBankOrInt b) : subs(s) , bank(b) { - term = t.isVar() && !t.onBank() ? + CALL("AutoDerefTerm::AutoDerefTerm"); + + term = t.isOrdinaryVar() && !t.onBank() ? s->derefBound(TermSpecOrList(t.var(), b)) : s->derefBound(t); } diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 3f51155c46..7fd3bfce7d 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -878,8 +878,11 @@ vstring Term::variableToString(TermList var) CALL("Term::variableToString"); ASS(var.isVar()); + bool outputBanks = env.options->printVarBanks(); + if (var.isOrdinaryVar()) { - return (vstring)"X" + Int::toString(var.var()); + return (vstring)"X" + Int::toString(var.var()) + (outputBanks ? + " / " + Int::toString((int)var.bank()) : ""); } else { return (vstring)"S" + Int::toString(var.var()); diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 211af0635b..8cf212bd66 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -93,8 +93,8 @@ enum ArgumentOrderVals { enum VarBank { DEFAULT_BANK=0, QUERY_BANK=1, - RESULT_BANK=2, - NORM_RESULT_BANK=3, + NORM_RESULT_BANK=2, + RESULT_BANK=3, FRESH_BANK=4, OUTPUT_BANK=5 }; @@ -118,7 +118,7 @@ class TermList { * AYB deprecated. Should NOT be using a TermList to store arbitrary data * Kept for backwards compatibility */ explicit TermList(size_t data) { - _var.var = data; + _content = data; } /** creates a term list containing a pointer to a term */ explicit TermList(Term* t) : _term(t) { ASS_EQ(tag(), REF); } @@ -180,7 +180,7 @@ class TermList { { return sameContent(&t); } /** return the content, useful for e.g., term argument comparison * AYB depracated */ - inline size_t content() const { return _var.var; } + inline size_t content() const { return _content; } /** default hash is to hash the content */ unsigned defaultHash() const { return DefaultHash::hash(content()); } @@ -295,25 +295,8 @@ class TermList { inline bool operator==(const TermList& t) const { - if(isVar()){ - return _var.tag == t._var.tag && - _var.var == t._var.var && - _var.bank == t._var.bank; - } else if(isTerm()){ - return _term == t._term; - } else { - // I don't think we ever want to compare info, - // but hey why not - return _info.tag == t._info.tag && - _info.polarity == t._info.polarity && - _info.commutative == t._info.commutative && - _info.shared == t._info.shared && - _info.literal == t._info.literal && - _info.sort == t._info.sort && - _info.hasTermVar == t._info.hasTermVar && - _info.order == t._info.order && - _info.id == t._info.id; //ignoring HOL data for now - } + // bit comparison + return _content == t._content; } inline bool operator!=(const TermList& t) const { return !(*this == t); } @@ -324,6 +307,8 @@ class TermList { vstring asArgsToString() const; union { + /** raw content to make it easy to carry out bit comparisons. DON'T USE */ + size_t _content; /** reference to another term */ Term* _term; /** variable */ diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 0e6bfb5220..4da9fdaaff 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -313,6 +313,13 @@ void Options::init() _lookup.insert(&_printProofToFile); _printProofToFile.tag(OptionTag::OUTPUT); +#if VDEBUG + _printVarBanks = BoolOptionValue("print_var_banks","pvb",false); + _printVarBanks.description="print var bank after each variable. useful for debugging"; + _lookup.insert(&_printVarBanks); + _printVarBanks.tag(OptionTag::OUTPUT); +#endif + _proofExtra = ChoiceOptionValue("proof_extra","",ProofExtra::OFF,{"off","free","full"}); _proofExtra.description="Add extra detail to proofs:\n " "- free uses known information only\n" @@ -3409,6 +3416,9 @@ vstring Options::generateEncodedOptions() const forbidden.insert(&_encode); forbidden.insert(&_decode); forbidden.insert(&_ignoreMissing); // or maybe we do! +#if VDEBUG + forbidden.insert(&_printVarBanks); +#endif } VirtualIterator options = _lookup.values(); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index f7c98fe03c..3dc3934e15 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2094,6 +2094,9 @@ bool _hard; ProofExtra proofExtra() const { return _proofExtra.actualValue; } vstring printProofToFile() const { return _printProofToFile.actualValue; } int naming() const { return _naming.actualValue; } +#if VDEBUG + bool printVarBanks() const { return _printVarBanks.actualValue; } +#endif bool fmbNonGroundDefs() const { return _fmbNonGroundDefs.actualValue; } unsigned fmbStartSize() const { return _fmbStartSize.actualValue;} @@ -2707,6 +2710,9 @@ bool _hard; BoolOptionValue _outputAxiomNames; StringOptionValue _printProofToFile; +#if VDEBUG + BoolOptionValue _printVarBanks; +#endif BoolOptionValue _printClausifierPremises; StringOptionValue _problemName; ChoiceOptionValue _proof; diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 6c59784cce..2d281a6209 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -100,8 +100,8 @@ void checkLiteralMatches(LiteralSubstitutionTree& index, Literal* lit, StacknumberOfConstraints(); is.push(LiteralUnificationResultSpec { - .querySigma = qr.unifier->apply(lit, /* result */ QUERY_BANK), - .resultSigma = qr.unifier->apply(qr.literal, /* result */ RESULT_BANK), + .querySigma = qr.unifier->apply(lit, QUERY_BANK), + .resultSigma = qr.unifier->apply(qr.literal, RESULT_BANK), .constraints = *qr.unifier->getConstraints(), }); } @@ -133,8 +133,8 @@ void checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Sta Stack is; for (auto qr : iterTraits(unifFun(index, term))) { is.push(TermUnificationResultSpec { - .querySigma = qr.unifier->apply(term, /* result */ QUERY_BANK) , - .resultSigma = qr.unifier->apply(qr.term, /* result */ RESULT_BANK) , + .querySigma = qr.unifier->applyTo(term, QUERY_BANK) , + .resultSigma = qr.unifier->applyTo(qr.term, RESULT_BANK) , .constraints = *qr.unifier->getConstraints(), }); } @@ -784,8 +784,8 @@ TEST_FUN(higher_order2) DECL_CONST(a, srt) DECL_HOL_VAR(x, 0, arrow(srt, srt)) - DECL_HOL_VAR(x2, 2, arrow(srt, arrow(srt, srt))) - DECL_HOL_VAR(x3, 3, srt) + DECL_HOL_VAR(x2, 1, arrow(srt, arrow(srt, srt))) + DECL_HOL_VAR(x3, 2, srt) index->insert(ap(x, a), 0, 0); @@ -921,9 +921,12 @@ TEST_FUN(higher_order6) DECL_SORT(srt) DECL_CONST(f, arrow(srt, arrow(srt, srt))) - DECL_HOL_VAR(x, 0, srt) - DECL_HOL_VAR(z, 1, srt) - DECL_HOL_VAR(y, 2, arrow(srt, srt)) + DECL_HOL_VAR(x0, 0, arrow(srt, srt)) + DECL_HOL_VAR(x1, 1, srt) + + DECL_HOL_VAR(x, 10, srt) + DECL_HOL_VAR(z, 11, srt) + DECL_HOL_VAR(y, 12, arrow(srt, srt)) auto t = ap(ap(f, x), x); @@ -932,9 +935,9 @@ TEST_FUN(higher_order6) checkHigherOrderTermMatches(*index, ap(ap(f, ap(y,z)), z), Stack{ TermUnificationResultSpec - { .querySigma = ap(ap(f, ap(y,x)), x), - .resultSigma = ap(ap(f, x), x), - .constraints = { ap(y,x) != x } }, + { .querySigma = ap(ap(f, ap(x0,x1)), x1), + .resultSigma = ap(ap(f, x1), x1), + .constraints = { ap(x0,x1) != x1 } }, }); } @@ -976,8 +979,12 @@ TEST_FUN(higher_order8) DECL_CONST(a, srt) DECL_CONST(g, arrow(srt,srt)) - DECL_HOL_VAR(x, 0, arrow(srt,srt)) - DECL_HOL_VAR(z, 1, arrow(srt,srt)) + DECL_HOL_VAR(x0, 0, arrow(srt,srt)) + DECL_HOL_VAR(x1, 1, arrow(srt,srt)) + DECL_HOL_VAR(x2, 2, arrow(srt,srt)) + + DECL_HOL_VAR(x, 10, arrow(srt,srt)) + DECL_HOL_VAR(z, 11, arrow(srt,srt)) index->insert(ap(x,a), 0, 0); @@ -989,18 +996,18 @@ TEST_FUN(higher_order8) TermUnificationResultSpec { .querySigma = ap(g,a), - .resultSigma = ap(x,a), - .constraints = { ap(g,a) != ap(x,a) } }, + .resultSigma = ap(x2,a), + .constraints = { ap(g,a) != ap(x2,a) } }, TermUnificationResultSpec { .querySigma = ap(g,a), - .resultSigma = ap(z,a), - .constraints = { ap(g,a) != ap(z,a) } }, + .resultSigma = ap(x1,a), + .constraints = { ap(g,a) != ap(x1,a) } }, TermUnificationResultSpec { .querySigma = ap(g,a), - .resultSigma = ap(g,ap(x,a)), //really irritating variable renaming... - .constraints = { a != ap(x,a) } }, + .resultSigma = ap(g,ap(x0,a)), //really irritating variable renaming... + .constraints = { a != ap(x0,a) } }, }); } From a91678dc9e420097b89d1b213954ddb44e1c5486 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 2 May 2023 09:36:36 +0100 Subject: [PATCH 061/210] fixing bug with TermTransformer and sorts --- Kernel/TermTransformer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index a0fc2ca563..f0157e51c3 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -144,8 +144,9 @@ Term* TermTransformer::transform(Term* term) transform(SortHelper::getEqualityArgumentSort(lit))); } return create (term, argLst, _sharedResult); + } else if (term->isSort()){ + return create(term, argLst, _sharedResult); } - return create(term, argLst, _sharedResult); } From 57377e88049fb01f7e8b7ae33f60633ac32cba84 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 2 May 2023 16:47:54 +0100 Subject: [PATCH 062/210] changing SymbolType to enum class --- Forwards.hpp | 2 +- Kernel/InferenceStore.cpp | 15 +++++++-------- Kernel/Ordering.cpp | 10 +++++----- Shell/EqualityProxy.cpp | 2 +- Shell/EqualityProxyMono.cpp | 2 +- Shell/InequalitySplitting.cpp | 4 ++-- Shell/Naming.cpp | 2 +- Shell/Skolem.cpp | 4 ++-- 8 files changed, 20 insertions(+), 21 deletions(-) diff --git a/Forwards.hpp b/Forwards.hpp index e96abb9863..3f6c1bad69 100644 --- a/Forwards.hpp +++ b/Forwards.hpp @@ -133,7 +133,7 @@ enum Color { COLOR_INVALID = 3u }; -enum SymbolType{FUNC, PRED, TYPE_CON}; +enum class SymbolType{FUNC, PRED, TYPE_CON}; }; diff --git a/Kernel/InferenceStore.cpp b/Kernel/InferenceStore.cpp index d8f33a45dc..794b660276 100644 --- a/Kernel/InferenceStore.cpp +++ b/Kernel/InferenceStore.cpp @@ -689,10 +689,9 @@ struct InferenceStore::TPTPProofPrinter vostringstream symsStr; while(symIt.hasNext()) { SymbolId sym = symIt.next(); - if (sym.first == FUNC) { + if (sym.first == SymbolType::FUNC) { symsStr << env.signature->functionName(sym.second); - } - else if (sym.first == PRED) { + } else if (sym.first == SymbolType::PRED) { symsStr << env.signature->predicateName(sym.second); } else { symsStr << env.signature->typeConName(sym.second); @@ -851,14 +850,14 @@ struct InferenceStore::TPTPProofPrinter while(lits.hasNext()) { Literal* lit=lits.next(); if (lit==nameLit) { - continue; + continue; } if (first) { - first=false; + first=false; } else { - multiple=true; - compStr+=" | "; + multiple=true; + compStr+=" | "; } compStr+=lit->toString(); @@ -879,7 +878,7 @@ struct InferenceStore::TPTPProofPrinter defStr=getQuantifiedStr(nameVars, defStr); List::destroy(nameVars); - SymbolId nameSymbol = SymbolId(PRED,nameLit->functor()); + SymbolId nameSymbol = SymbolId(SymbolType::PRED,nameLit->functor()); vostringstream originStm; originStm << "introduced(" << tptpRuleName(rule) << ",[" << getNewSymbols("naming",getSingletonIterator(nameSymbol)) diff --git a/Kernel/Ordering.cpp b/Kernel/Ordering.cpp index 3219fb1acd..59fa575fa0 100644 --- a/Kernel/Ordering.cpp +++ b/Kernel/Ordering.cpp @@ -488,9 +488,9 @@ struct SymbolComparator { SymbolComparator(SymbolType symType) : _symType(symType) {} Signature::Symbol* getSymbol(unsigned s) { - if(_symType == FUNC){ + if(_symType == SymbolType::FUNC){ return env.signature->getFunction(s); - } else if (_symType == PRED){ + } else if (_symType == SymbolType::PRED){ return env.signature->getPredicate(s); } else { return env.signature->getTypeCon(s); @@ -785,7 +785,7 @@ DArray PrecedenceOrdering::typeConPrecFromOpts(Problem& prb, const Options& precedence_file.close(); } } else { - sortAuxBySymbolPrecedence(aux,opt,TYPE_CON); + sortAuxBySymbolPrecedence(aux,opt,SymbolType::TYPE_CON); } } @@ -815,7 +815,7 @@ DArray PrecedenceOrdering::funcPrecFromOpts(Problem& prb, const Options& op precedence_file.close(); } } else { - sortAuxBySymbolPrecedence(aux,opt,FUNC); + sortAuxBySymbolPrecedence(aux,opt,SymbolType::FUNC); } } @@ -843,7 +843,7 @@ DArray PrecedenceOrdering::predPrecFromOpts(Problem& prb, const Options& op precedence_file.close(); } } else { - sortAuxBySymbolPrecedence(aux,opt,PRED); + sortAuxBySymbolPrecedence(aux,opt,SymbolType::PRED); } DArray predicatePrecedences(nPredicates); diff --git a/Shell/EqualityProxy.cpp b/Shell/EqualityProxy.cpp index dcee949199..5f76530484 100644 --- a/Shell/EqualityProxy.cpp +++ b/Shell/EqualityProxy.cpp @@ -338,7 +338,7 @@ unsigned EqualityProxy::getProxyPredicate() _defUnit = new FormulaUnit(quantDefForm,NonspecificInference0(UnitInputType::AXIOM,InferenceRule::EQUALITY_PROXY_AXIOM1)); - InferenceStore::instance()->recordIntroducedSymbol(_defUnit, PRED, newPred); + InferenceStore::instance()->recordIntroducedSymbol(_defUnit, SymbolType::PRED, newPred); _proxyPredicate = newPred; _addedPred = true; return newPred; diff --git a/Shell/EqualityProxyMono.cpp b/Shell/EqualityProxyMono.cpp index 0f762baaad..9a066686a1 100644 --- a/Shell/EqualityProxyMono.cpp +++ b/Shell/EqualityProxyMono.cpp @@ -369,7 +369,7 @@ unsigned EqualityProxyMono::getProxyPredicate(TermList sort) FormulaUnit* defUnit = new FormulaUnit(quantDefForm,NonspecificInference0(UnitInputType::AXIOM,InferenceRule::EQUALITY_PROXY_AXIOM1)); s_proxyPremises.insert(sort, defUnit); - InferenceStore::instance()->recordIntroducedSymbol(defUnit, PRED, newPred); + InferenceStore::instance()->recordIntroducedSymbol(defUnit, SymbolType::PRED, newPred); return newPred; } diff --git a/Shell/InequalitySplitting.cpp b/Shell/InequalitySplitting.cpp index dde8ad738b..630bbffe3e 100644 --- a/Shell/InequalitySplitting.cpp +++ b/Shell/InequalitySplitting.cpp @@ -216,10 +216,10 @@ Literal* InequalitySplitting::splitLiteral(Literal* lit, UnitInputType inpType, #if VHOL if(_appify){ - InferenceStore::instance()->recordIntroducedSymbol(defCl,FUNC,fun); + InferenceStore::instance()->recordIntroducedSymbol(defCl,SymbolType::FUNC,fun); } else { #endif - InferenceStore::instance()->recordIntroducedSymbol(defCl,PRED,fun); + InferenceStore::instance()->recordIntroducedSymbol(defCl,SymbolType::PRED,fun); #if VHOL } #endif diff --git a/Shell/Naming.cpp b/Shell/Naming.cpp index fa76a320fd..23303f3a6d 100644 --- a/Shell/Naming.cpp +++ b/Shell/Naming.cpp @@ -1275,7 +1275,7 @@ Formula* Naming::introduceDefinition(Formula* f, bool iff) { } Unit* definition = new FormulaUnit(def, NonspecificInference0(UnitInputType::AXIOM,InferenceRule::PREDICATE_DEFINITION)); - InferenceStore::instance()->recordIntroducedSymbol(definition, PRED, + InferenceStore::instance()->recordIntroducedSymbol(definition, SymbolType::PRED, atom->functor()); UnitList::push(definition, _defs); diff --git a/Shell/Skolem.cpp b/Shell/Skolem.cpp index 8a9c639a7c..d4ebcd9d0d 100644 --- a/Shell/Skolem.cpp +++ b/Shell/Skolem.cpp @@ -108,9 +108,9 @@ FormulaUnit* Skolem::skolemiseImpl (FormulaUnit* unit, bool appify) auto symPair = _introducedSkolemSyms.pop(); if(symPair.first){ - InferenceStore::instance()->recordIntroducedSymbol(res,TYPE_CON,symPair.second); + InferenceStore::instance()->recordIntroducedSymbol(res,SymbolType::TYPE_CON,symPair.second); } else { - InferenceStore::instance()->recordIntroducedSymbol(res,FUNC,symPair.second); + InferenceStore::instance()->recordIntroducedSymbol(res,SymbolType::FUNC,symPair.second); } if(unit->derivedFromGoal()){ From 9bf6662f0143394aa7eea835722540bf75831d0a Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 5 May 2023 11:21:17 +0100 Subject: [PATCH 063/210] about to start work on higher-order unification proper --- Indexing/CodeTreeInterfaces.hpp | 3 +- Indexing/HOLSubstitutionTree.cpp | 6 +- Indexing/HOLSubstitutionTree.hpp | 29 ++--- Indexing/SubstitutionTree.hpp | 4 +- Indexing/TermSubstitutionTree.hpp | 3 +- Kernel/ApplicativeHelper.cpp | 17 +++ Kernel/ApplicativeHelper.hpp | 5 + Kernel/HOLUnification.cpp | 176 +++++++++++++++++++++++++++--- Kernel/HOLUnification.hpp | 43 +++++++- Kernel/RobSubstitution.hpp | 9 +- Kernel/Term.cpp | 5 +- Shell/Options.cpp | 7 ++ Shell/Options.hpp | 2 + 13 files changed, 254 insertions(+), 55 deletions(-) diff --git a/Indexing/CodeTreeInterfaces.hpp b/Indexing/CodeTreeInterfaces.hpp index e0b8635dde..624f196eb4 100644 --- a/Indexing/CodeTreeInterfaces.hpp +++ b/Indexing/CodeTreeInterfaces.hpp @@ -53,9 +53,10 @@ class CodeTreeTIS : public TermIndexingStructure #if VDEBUG virtual void markTagged(){ NOT_IMPLEMENTED; } - virtual void output(std::ostream& out) const { out << "CodeTree"; } #endif + virtual void output(std::ostream& out) const { out << "CodeTree"; } + private: class ResultIterator; diff --git a/Indexing/HOLSubstitutionTree.cpp b/Indexing/HOLSubstitutionTree.cpp index ea53904266..fe3ce568fb 100644 --- a/Indexing/HOLSubstitutionTree.cpp +++ b/Indexing/HOLSubstitutionTree.cpp @@ -264,8 +264,8 @@ void HOLSubstitutionTree::higherOrderInsert(HOLBindingMap& svBindings,LeafData l toProcess.push(SubtermPair(l->nthArgument(0), true, r->nthArgument(0), true)); toProcess.push(SubtermPair(l->nthArgument(1), true, r->nthArgument(1), true)); toProcess.push(SubtermPair(l->nthArgument(2), true, r->nthArgument(2), true)); - toProcess.push(SubtermPair(l->nthArgument(3), splittable((*l)[3]), - r->nthArgument(3), splittable((*r)[3]))); + toProcess.push(SubtermPair(l->nthArgument(3), AH::splittable(lhs->nthArg(3)), + r->nthArgument(3), AH::splittable(rhs->nthArg(3)))); } else { for (unsigned i = 0; i < l->arity(); i++) { toProcess.push(SubtermPair(l->nthArgument(i), true, r->nthArgument(i), true)); @@ -373,7 +373,7 @@ void HOLSubstitutionTree::higherOrderRemove(HOLBindingMap& svBindings, LeafData subterms.push(std::make_pair((*l)[0], Subterm((*r)[0], true))); subterms.push(std::make_pair((*l)[1], Subterm((*r)[1], true))); subterms.push(std::make_pair((*l)[2], Subterm((*r)[2], true))); - subterms.push(std::make_pair((*l)[3], Subterm((*r)[3], splittable((*r)[3])))); + subterms.push(std::make_pair((*l)[3], Subterm((*r)[3], AH::splittable((*r)[3])))); } else { ASS(l->arity() == r->arity()); for (unsigned i = 0; i < l->arity(); i++) { diff --git a/Indexing/HOLSubstitutionTree.hpp b/Indexing/HOLSubstitutionTree.hpp index 6e492218c8..4eeb2a8677 100644 --- a/Indexing/HOLSubstitutionTree.hpp +++ b/Indexing/HOLSubstitutionTree.hpp @@ -23,6 +23,7 @@ #include "SubstitutionTree.hpp" #include "Kernel/Renaming.hpp" +#include "Kernel/ApplicativeHelper.hpp" namespace Indexing { @@ -77,23 +78,7 @@ class HOLSubstitutionTree }; typedef DHMap HOLBindingMap; - - bool splittable(TermList t, bool topLevel = false){ - CALL("HOLSubstitutionTree::splittable"); - - if(t.isVar()) return true; - - if(t.isLambdaTerm() || t.head().isVar()) return false; - - auto sort = SortHelper::getResultSort(t.term()); - - if(env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION){ - if(sort.isArrowSort() || sort.isVar() || (sort.isBoolSort() && !topLevel)){ - return false; - } - } - return true; - } + typedef ApplicativeHelper AH; public: @@ -126,7 +111,7 @@ class HOLSubstitutionTree template void createHOLBindings(TypedTermList term, bool reversed, BindingFunction bindSpecialVar) { - bindSpecialVar(0, Subterm(term, splittable(term, true))); + bindSpecialVar(0, Subterm(term, AH::splittable(term, true))); bindSpecialVar(1, Subterm(term.sort(),true)); } @@ -140,11 +125,11 @@ class HOLSubstitutionTree TermList l1 = *lit->nthArgument(1); if (reversed) { - bindSpecialVar(1,Subterm(l0, splittable(l0, true)) ); - bindSpecialVar(0,Subterm(l1, splittable(l1, true)) ); + bindSpecialVar(1,Subterm(l0, AH::splittable(l0, true)) ); + bindSpecialVar(0,Subterm(l1, AH::splittable(l1, true)) ); } else { - bindSpecialVar(0,Subterm(l0, splittable(l0, true)) ); - bindSpecialVar(1,Subterm(l1, splittable(l1, true)) ); + bindSpecialVar(0,Subterm(l0, AH::splittable(l0, true)) ); + bindSpecialVar(1,Subterm(l1, AH::splittable(l1, true)) ); } auto sort = SortHelper::getEqualityArgumentSort(lit); diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 1843aa1459..4829266c2a 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -667,6 +667,7 @@ class SubstitutionTree /** Number of the next variable */ int _nextVar; + Cntr _iterCnt; Node* _root; #if VDEBUG @@ -1459,13 +1460,10 @@ class SubstitutionTree }; -#if VDEBUG public: bool isEmpty() const { return _root == nullptr || _root->isEmpty(); } -#endif friend std::ostream& operator<<(std::ostream& out, SubstitutionTree const& self); - Cntr _iterCnt; }; // class SubstiutionTree template<> diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index 95b7b09e43..1655011fc5 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -90,9 +90,10 @@ class TermSubstitutionTree #if VDEBUG virtual void markTagged() override { _tree->markTagged();} - virtual void output(std::ostream& out) const final override { out << *this; } #endif + virtual void output(std::ostream& out) const final override { out << *this; } + private: void handleTerm(TypedTermList tt, LeafData ld, bool insert) diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 686331fe79..4a33af5314 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -642,6 +642,23 @@ bool ApplicativeHelper::isBool(TermList t){ return isTrue(t) || isFalse(t); } +bool ApplicativeHelper::splittable(TermList t, bool topLevel){ + CALL("ApplicativeHelper::splittable"); + + if(t.isVar()) return true; + + ASS(!t.head().isLambdaTerm()); // assume t is in head normal form + if(t.isLambdaTerm() || t.head().isVar()) return false; + + if(env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION){ + auto sort = SortHelper::getResultSort(t.term()); + if(sort.isArrowSort() || sort.isVar() || (sort.isBoolSort() && !topLevel)){ + return false; + } + } + return true; +} + bool ApplicativeHelper::isTrue(TermList term){ CALL("ApplicativeHelper::isTrue"); return term.isTerm() && !term.term()->isSort() && env.signature->isFoolConstantSymbol(true, term.term()->functor()); diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 80a009aeda..2d66b83284 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -65,6 +65,11 @@ class ApplicativeHelper { static void getArgSorts(TermList t, TermStack& sorts); static Signature::Proxy getProxy(const TermList& t); + // returns true if we can split (decompose) term + // during first-order unification without losing HOL + // unifiers. Return false otherwise + // Assumes that t is in head normal form + static bool splittable(TermList t, bool topLevel = false); static bool isBool(TermList t); static bool isTrue(TermList term); static bool isFalse(TermList term); diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 64d134e0a0..846a4b0926 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -18,29 +18,170 @@ #include "Kernel/HOLUnification.hpp" #include "Kernel/ApplicativeHelper.hpp" +#include "Lib/SkipList.hpp" + namespace Kernel { namespace UnificationAlgorithms { +class HOLUnification::HigherOrderUnifiersIt: public IteratorCore { +public: + HigherOrderUnifiersIt(RobSubstitutionTL* subst) : + _returnInitial(false), _used(false), _subst(subst){ + ASS(!_subst->bdIsRecording()); + _subst->bdRecord(_initData); + + // move constraints from to priority queue + // will be undone when hasNext() return false + while(!_subst->emptyConstraints()){ + auto con = _subst->popConstraint(); + TermList lhs = con.lhs(); + TermList rhs = con.rhs(); + lhs = lhs.whnfDeref(_subst); + rhs = rhs.whnfDeref(_subst); + auto higherOrderCon = HOLConstraint(lhs,rhs); + if(higherOrderCon.rigidRigid()){ + // if one of the pairs is rigid rigid and is of functional sort + // don't do any higher-order unification. Instead let functional extensionality + // inferences such as ArgCong and NegExt do their thing + TermList sort = higherOrderCon.sort(); + if(sort.isArrowSort() || sort.isOrdinaryVar()){ + _returnInitial = true; + break; + } + } + addToUnifPairs(higherOrderCon,_initData); + } + + _subst->bdDone(); + if(_returnInitial){ + _initData.backtrack(); + } + } + + ~HigherOrderUnifiersIt() { + CALL("HOLUnification::HigherOrderUnifiersIt::~HigherOrderUnifiersIt"); + ASS(_unifPairs.isEmpty()); + } + + bool hasNext() { + CALL("HOLUnification::HigherOrderUnifiersIt::hasNext"); + + if(_returnInitial){ + if(!_used){ + _used = true; + return _used; + } + return false; + } + + //dummy + return true; + } + + RobSubstitutionTL* next() { + CALL("HOLUnification::HigherOrderUnifiersIt::next"); + + return _subst; + } + + void addToUnifPairs(HOLConstraint con, BacktrackData& bd){ + CALL("HigherOrderUnifiersIt::addToUnifPairs"); + + _unifPairs.insert(con); + bd.addClosure([&](){ _unifPairs.remove(con); }); + } + +private: + + class HOLCnstComp + { + public: + inline + static Comparison compare(const HOLConstraint& hc1, const HOLConstraint& hc2) + { + CALL("HOLUnification::HOLCnstComp::compare"); + + auto compareTerms = [](TermList t1, TermList t2){ + if(t1.isVar()){ + if(t2.isVar()){ + return (t1.var() < t2.var()) ? LESS : (t1.var() > t2.var())? GREATER : EQUAL; + } + return LESS; + } else if(t2.isVar()){ + return GREATER; + } + + unsigned id1 = t1.term()->getId(); + unsigned id2 = t2.term()->getId(); + + return (id1id2)? GREATER : EQUAL; + }; + + if(hc1.rigidRigid() && !hc2.rigidRigid()){ + return LESS; + } else if (hc2.rigidRigid() && !hc1.rigidRigid()){ + return GREATER; + } else if (hc1.flexRigid() && hc2.flexFlex()){ + return LESS; + } else if (hc2.flexRigid() && hc1.flexFlex()){ + return GREATER; + } + + auto res = compareTerms(hc1.lhs(), hc2.lhs()); + if(res == EQUAL){ + res = compareTerms(hc1.rhs(), hc2.rhs()); + } + return res; + } + }; + + bool _returnInitial; + bool _used; + BacktrackData _initData; + SkipList _unifPairs; + RobSubstitutionTL* _subst; +}; + SubstIterator HOLUnification::unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck) { CALL("HOLUnification::unifiers"); - // TODO dummy implementation - return SubstIterator::getEmpty(); + bool splittable = true; + if(!ApplicativeHelper::splittable(t1) || !ApplicativeHelper::splittable(t2)){ + if(topLevelCheck) return SubstIterator::getEmpty(); + splittable = false; + } + + unifyFirstOrderStructure(t1,t2,splittable,sub); + + unsigned depth = env.options->higherOrderUnifDepth(); + + if(!depth){ + return pvi(getSingletonIterator(sub)); + } else { + return vi(new HigherOrderUnifiersIt(sub)); + } } SubstIterator HOLUnification::postprocess(RobSubstitutionTL* sub) { CALL("HOLUnification::postprocess"); - + // We could carry out a fix point iteration here // but it is slighly involved and I am not sure that it is worth it. // will leave for now. - // TODO dummy implementation - return pvi(getSingletonIterator(sub)); + unsigned depth = env.options->higherOrderUnifDepth(); + + if(!depth || sub->emptyConstraints()){ + // if depth == 0, then we are unifying via dedicated inferences + // if there are no constraints, then first-order unification sufficed + return pvi(getSingletonIterator(sub)); + } else { + return vi(new HigherOrderUnifiersIt(sub)); + } } bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) @@ -48,12 +189,12 @@ bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittab CALL("HOLUnification::associate"); TermList query(specialVar, /* special */ true); - return unifyTreeTerms(query, node, splittable, sub); + return unifyFirstOrderStructure(query, node, splittable, sub); } // TODO consider adding a check for loose De Bruijn indices -// see E prover code by petar /TERMS/cte_fixpoint_unif.c +// see E prover code by Petar /TERMS/cte_fixpoint_unif.c #define DEBUG_FP_UNIFY(LVL, ...) if (LVL <= 1) DBG(__VA_ARGS__) HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermList t, RobSubstitutionTL* sub) { @@ -117,9 +258,9 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermLis #define DEBUG_UNIFY(LVL, ...) if (LVL <= 2) DBG(__VA_ARGS__) -bool HOLUnification::unifyTreeTerms(TermList t1, TermList t2, bool splittable, RobSubstitutionTL* sub) +bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool splittable, RobSubstitutionTL* sub) { - CALL("HOLUnification::unifyTreeTerms"); + CALL("HOLUnification::unifyFirstOrderStructure"); DEBUG_UNIFY(1, ".unify(", t1, ",", t2, (splittable ? "" : "{NS}"), ")") if(sub->sameTermContent(t1,t2)) { @@ -136,13 +277,20 @@ bool HOLUnification::unifyTreeTerms(TermList t1, TermList t2, bool splittable, R return sub->unify(t1,t2); // sorts can be unified by standard algo } - TermList t1thead = sub->derefBound(t1.head()); + TermList t1head = sub->derefBound(t1.head()); + TermList t2head = sub->derefBound(t2.head()); + + ASS(!splittable || !t2.isVar()) + + bool t2NotSplittable = !splittable && + (SortHelper::getResultSort(t2.term()).isArrowSort() || + SortHelper::getResultSort(t2.term()).isOrdinaryVar() || + t2head.isVar() || + t2head.isLambdaTerm()); // Node term and query term must have the same type. Hence we do not - // check type of query. We can rely on the !splittable check - // TODO, logic is a little off here. A node can be non-splittanle, but on - // apply a substitution to the term it can become splittable - if(!t1.isVar() && (t1thead.isVar() || t1thead.isLambdaTerm() || !splittable)) { + // check type of query. We can rely on the t2NotSplittable check + if(!t1.isVar() && (t1head.isVar() || t1head.isLambdaTerm() || t2NotSplittable)) { // create top level constraint sub->pushConstraint(UnificationConstraint(t1, t2)); return true; diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index 3ce80c3d3e..80a7e7cac2 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -19,14 +19,17 @@ #if VHOL #include "Forwards.hpp" -#include "Lib/Backtrackable.hpp" -#include "Lib/Recycled.hpp" + #include "Term.hpp" #include "Lib/Hash.hpp" #include "Lib/DHMap.hpp" #include "Lib/Metaiterators.hpp" -#include "Kernel/RobSubstitution.hpp" #include "Lib/Environment.hpp" +#include "Lib/Backtrackable.hpp" +#include "Lib/Recycled.hpp" + +#include "Kernel/RobSubstitution.hpp" +#include "Kernel/SortHelper.hpp" #include "Kernel/Signature.hpp" namespace Kernel @@ -39,7 +42,7 @@ namespace UnificationAlgorithms { class HOLUnification { - bool unifyTreeTerms(TermList t1, TermList t2, bool splittable, RobSubstitutionTL* sub); + bool unifyFirstOrderStructure(TermList t1, TermList t2, bool splittable, RobSubstitutionTL* sub); // TODO if we implement solid fragment, this will not work... enum OracleResult @@ -53,6 +56,38 @@ class HOLUnification { using UnificationConstraint = UnificationConstraint; + class HOLConstraint : public UnificationConstraint + { + private: + TermList _t1head; + TermList _t2head; + public: + + HOLConstraint(){} // dummy constructor required for use in SkipList + HOLConstraint(TermList t1, TermList t2) : UnificationConstraint(t1,t2), + _t1head(t1.head()), _t2head(t2.head()) { + ASS(!_t1head.isLambdaTerm() && !_t2head.isLambdaTerm()); // terms must be in whnf + } + CLASS_NAME(HOLConstraint) + USE_ALLOCATOR(HOLConstraint) + + bool flexFlex() const { return _t1head.isVar() && _t2head.isVar(); } + bool rigidRigid() const { return _t1head.isTerm() && _t2head.isTerm(); } + bool flexRigid() const { return (_t1head.isVar() && !_t2head.isVar()) || (_t2head.isVar() && !_t1head.isVar()); } + + TermList sort() const { + CALL("HOLConstraint::sort()"); + ASS(lhs().isTerm() || rhs().isTerm()); + if(lhs().isTerm()) + { return SortHelper::getResultSort(lhs().term()); } + return SortHelper::getResultSort(rhs().term()); + } + + UnificationConstraint constraint() { return UnificationConstraint(lhs(),rhs()); } + }; + + class HigherOrderUnifiersIt; + public: HOLUnification() { } diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 1672eb1bf9..84ab378c74 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -39,6 +39,9 @@ template class RobSubstitution; struct TermSpec { // for backwards compatibility + static const int UNBOUND_INDEX; + static const int SPECIAL_INDEX; + TermSpec() {} TermSpec(TermList t, int i) : trm(t), index(i) {} TermSpec(unsigned v, int i) : index(i) { @@ -48,9 +51,6 @@ struct TermSpec { // for backwards compatibility trm = TermList(v, false); // standard variable } } - /*TermSpec(unsigned v, bool b) : trm(TermList(v, b)), index(SPECIAL_INDEX) { - ASS(b) - }*/ auto asTuple() const -> decltype(auto) { return std::tie(trm, index); } IMPL_COMPARISONS_FROM_TUPLE(TermSpec) @@ -65,9 +65,6 @@ struct TermSpec { // for backwards compatibility trm.term()->arity()==0 ))); } - static const int UNBOUND_INDEX; - static const int SPECIAL_INDEX; - static bool equals(TermSpec t1, TermSpec t2){ return t1.index == t2.index && TermList::equals(t1.trm, t2.trm); } diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 7fd3bfce7d..fc43cb324e 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -878,7 +878,10 @@ vstring Term::variableToString(TermList var) CALL("Term::variableToString"); ASS(var.isVar()); - bool outputBanks = env.options->printVarBanks(); + bool outputBanks = false; +#if VDEBUG + outputBanks = env.options->printVarBanks(); +#endif if (var.isOrdinaryVar()) { return (vstring)"X" + Int::toString(var.var()) + (outputBanks ? diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 4da9fdaaff..2147a4327f 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1767,6 +1767,13 @@ void Options::init() _superposition.description= "Control superposition. Turning off this core inference leads to an incomplete calculus on equational problems."; _lookup.insert(&_superposition); + _higherOrderUnifDepth = UnsignedOptionValue("hol_unif_depth","hud",0); + _higherOrderUnifDepth.description = "Set the maximum depth (in terms of projextions and imitations) that higher-order unification can descend to. Once limit is reached, remaining pairs are retunred as constraints."; + _higherOrderUnifDepth.addProblemConstraint(hasHigherOrder()); + _higherOrderUnifDepth.addHardConstraint(lessThan(5u)); + _lookup.insert(&_higherOrderUnifDepth); + _higherOrderUnifDepth.tag(OptionTag::HIGHER_ORDER); + _addProxyAxioms = BoolOptionValue("add_proxy_axioms","apa",false); _addProxyAxioms.description="Add logical proxy axioms"; _lookup.insert(&_addProxyAxioms); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 3dc3934e15..3370cce1e4 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2431,6 +2431,7 @@ bool _hard; HPrinting holPrinting() const { return _holPrinting.actualValue; } void setHolPrinting(HPrinting setting) { _holPrinting.actualValue = setting; } bool superposition() const {return _superposition.actualValue; } + unsigned higherOrderUnifDepth() const { return _higherOrderUnifDepth.actualValue; } #endif // For unit testing @@ -2873,6 +2874,7 @@ bool _hard; BoolOptionValue _lambdaFreeHol; BoolOptionValue _complexVarCondition; ChoiceOptionValue _holPrinting; + UnsignedOptionValue _higherOrderUnifDepth; #endif }; // class Options From 7121c886e0f298b672e0e0bfd87b9b2d71b3e5cc Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 9 May 2023 10:29:06 +0100 Subject: [PATCH 064/210] higher-order unification implemented and compiling. not tested --- Inferences/ImitateProject.cpp | 72 +++------- Inferences/PrimitiveInstantiation.cpp | 15 +- Kernel/ApplicativeHelper.cpp | 129 +++++++++++++++-- Kernel/ApplicativeHelper.hpp | 18 ++- Kernel/HOLUnification.cpp | 193 ++++++++++++++++++++++---- Kernel/HOLUnification.hpp | 5 +- 6 files changed, 336 insertions(+), 96 deletions(-) diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp index b0dce3c54b..5c01331579 100644 --- a/Inferences/ImitateProject.cpp +++ b/Inferences/ImitateProject.cpp @@ -124,65 +124,37 @@ struct ImitateProject::ResultFn flexTerm = arg1; rigidTerm = arg0; } - - // since term is rigid, cannot be a variable - TermList sort = SortHelper::getResultSort(rigidTerm.term()); - ASS(!sort.isArrowSort()); - TermList headFlex, headRigid; - TermStack argsFlex; - TermStack argsRigid; - TermStack sortsFlex; //sorts of arguments of flex head - TermStack sortsRigid; - - AH::getHeadAndArgs(flexTerm, headFlex, argsFlex); - AH::getHeadAndArgs(rigidTerm, headRigid, argsRigid); - ASS(argsFlex.size()); // Flex side is not a variable - - AH::getArgSorts(flexTerm, sortsFlex); - AH::getArgSorts(rigidTerm, sortsRigid); - - TermStack deBruijnIndices; - for(int i = 0; i < argsFlex.size(); i++){ - // could get away with only creating these when we certainly need them - // but the logic becomes a lot more complicated - deBruijnIndices.push(AH::getDeBruijnIndex(i, sortsFlex[i])); + + TermStack bindings; + AH::getProjAndImitBindings(flexTerm,rigidTerm,bindings,_maxVar); + ASS(bindings.size()) // must have at least an imitation binding + + // some inefficiency below as we iterate the term twice. Once in + // getProjAndImitBindings and again in the head() call below. + // However, it keeps the code cleaner, and I doubt that the penaly is high + TermList headFlex = flexTerm.head(); + TermList imitpb = bindings[0]; + + _subst.bind(headFlex.var(), imitpb); + Clause* res = createRes(InferenceRule::IMITATE); + + if(env.options->proofExtra()==Options::ProofExtra::FULL){ + addProofExtraString(res, lit, headFlex, imitpb); } - { // imitation - unsigned fVar = _maxVar; - - TermList pb = AH::createGeneralBinding(fVar,headRigid,argsFlex,sortsFlex,deBruijnIndices); - - _subst.bind(headFlex.var(), pb); - Clause* res = createRes(InferenceRule::IMITATE); - - if(env.options->proofExtra()==Options::ProofExtra::FULL){ - addProofExtraString(res, lit, headFlex, pb); - } - - results.push(res); - } + results.push(res); // projections - for(unsigned i = 0; i < argsFlex.size(); i++){ + for(unsigned i = 1; i < bindings.size(); i++){ // try and project each of the arguments of the flex head in turn _subst.reset(); - TermList arg = argsFlex[i]; - TermList argSort = sortsFlex[i]; - // sort wrong, cannot project this arg - if(argSort.finalResult() != sort) continue; - TermList head = arg.head(); - // argument has a rigid head different to that of rhs. no point projecting - if(head.isTerm() && head.deBruijnIndex().isNone() && head != headRigid) continue; - - unsigned fVar = _maxVar; - TermList pb = AH::createGeneralBinding(fVar,deBruijnIndices[i],argsFlex,sortsFlex,deBruijnIndices); - - _subst.bind(headFlex.var(), pb); + TermList projpb = bindings[i]; + + _subst.bind(headFlex.var(), projpb); Clause* res = createRes(InferenceRule::PROJECT); if(env.options->proofExtra()==Options::ProofExtra::FULL){ - addProofExtraString(res, lit, headFlex, pb, (int)(argsFlex.size() - i)); + addProofExtraString(res, lit, headFlex, projpb, (int)(bindings.size() - i)); } results.push(res); diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index 6770e5c1d3..532f924ba5 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -159,17 +159,12 @@ struct PrimitiveInstantiation::ResultFn ASS(argsFlex.size()); // Flex side is not a variable AH::getArgSorts(flexTerm, sortsFlex); - TermStack deBruijnIndices; - for(int i = 0; i < argsFlex.size(); i++){ - deBruijnIndices.push(AH::getDeBruijnIndex(i, sortsFlex[i])); - } - // if any amongst a1 ... an is of sort $o, project that // argument to the top for(unsigned i =0; i < sortsFlex.size() && pragmatic; i++){ if(sortsFlex[i].isBoolSort()){ _subst.reset(); - TermList gb = AH::surroundWithLambdas(deBruijnIndices[i], sortsFlex); + TermList gb = AH::surroundWithLambdas(AH::getDeBruijnIndex(i, sortsFlex[i]), sortsFlex); _subst.bind(headFlex.var(), gb); results.push(createRes()); } @@ -182,8 +177,8 @@ struct PrimitiveInstantiation::ResultFn _subst.reset(); IndexPair p = sameSortArgs[i]; - TermList dbi = deBruijnIndices[p.first]; - TermList dbj = deBruijnIndices[p.second]; + TermList dbi = AH::getDeBruijnIndex(p.first, sortsFlex[p.first]); + TermList dbj = AH::getDeBruijnIndex(p.second, sortsFlex[p.second]); // creating term dbi = dbj TermList tm = AH::app2(AH::equality(sortsFlex[p.first]), dbi, dbj); @@ -219,8 +214,8 @@ struct PrimitiveInstantiation::ResultFn unsigned fVar = _freshVar; bool surround = (!_heads[i].isEquals() || !include_not_eq); - TermList gb = AH::createGeneralBinding(fVar,_heads[i],argsFlex,sortsFlex,deBruijnIndices,surround); - gb = surround ? gb : AH::surroundWithLambdas(gb, sortsFlex); + TermList gb = AH::createGeneralBinding(fVar,_heads[i],sortsFlex,surround); + gb = surround ? gb : AH::surroundWithLambdas(gb, sortsFlex); // TODO looks dodgy _subst.bind(headFlex.var(), gb); results.push(createRes()); diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 4a33af5314..adeaa1c426 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -675,26 +675,139 @@ bool ApplicativeHelper::canHeadReduce(TermList const& head, TermStack const& arg return head.isLambdaTerm() && args.size(); } +void ApplicativeHelper::normaliseLambdaPrefixes(TermList& t1, TermList& t2) +{ + CALL("ApplicativeHelper::normaliseLambdaPrefixes"); + + auto pruneAndExpand = [](TermList& s1, TermList& s2){ + ASS(s1.isLambdaTerm() && !s2.isLambdaTerm()); + + TermList sort = SortHelper::getResultSort(s1.term()); + int n = 0; + while(s1.isLambdaTerm()){ + s1 = s1.lambdaBody(); + n++; + } + + s2 = TermShifter().shift(s2,n); // shift free indices up by n + for(unsigned i = 0; i < n; i++){ + s2 = app(sort,s2,getDeBruijnIndex(n - 1 - i, sort.domain())); + sort = sort.result(); + } + }; + + while(t1.isLambdaTerm() && t2.isLambdaTerm()){ + t1 = t1.lambdaBody(); + t2 = t2.lambdaBody(); + } + + if(t1.isLambdaTerm()){ + pruneAndExpand(t1,t2); + } else if(t2.isLambdaTerm()){ + pruneAndExpand(t2,t1); + } + +} + + +void ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings) +{ + CALL("ApplicativeHelper::getProjAndImitBindings/1"); + + getProjAndImitBindings(flexTerm,rigidTerm,bindings,0,false); +} + +void ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings, unsigned freshvar) +{ + CALL("ApplicativeHelper::getProjAndImitBindings/2"); + + getProjAndImitBindings(flexTerm,rigidTerm,bindings,freshvar,true); +} + +void ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings, + unsigned fVar, bool useFreshBank) +{ + CALL("ApplicativeHelper::getProjAndImitBindings/3"); + + ASS(bindings.isEmpty()); + + // since term is rigid, cannot be a variable + TermList sort = SortHelper::getResultSort(rigidTerm.term()); + TermList headRigid = rigidTerm.head(); + TermList headFlex; + TermStack argsFlex; + TermStack sortsFlex; //sorts of arguments of flex head + + getHeadAndArgs(flexTerm, headFlex, argsFlex); + ASS(argsFlex.size()); // Flex side is not a variable + getArgSorts(flexTerm, sortsFlex); + + // imitation + TermList pb = useFreshBank ? + createGeneralBinding(headRigid,sortsFlex) : + createGeneralBinding(fVar,headRigid,sortsFlex); + + bindings.push(pb); + + // projections + for(unsigned i = 0; i < argsFlex.size(); i++){ + // try and project each of the arguments of the flex head in turn + TermList arg = argsFlex[i]; + TermList argSort = sortsFlex[i]; + // sort wrong, cannot project this arg + if(argSort.finalResult() != sort) continue; + TermList head = arg.head(); + // argument has a rigid head different to that of rhs. no point projecting + if(head.isTerm() && head.deBruijnIndex().isNone() && head != headRigid) continue; + + TermList dbi = getDeBruijnIndex(i, sortsFlex[i]); + + TermList pb = useFreshBank ? + createGeneralBinding(dbi,sortsFlex) : + createGeneralBinding(fVar,dbi,sortsFlex); + + bindings.push(pb); + } + +} + +TermList ApplicativeHelper::createGeneralBinding(TermList head, TermStack& sorts){ + CALL("ApplicativeHelper::createGeneralBinding/1"); + + return createGeneralBinding(0,head,sorts,false,true); +} + +TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList head, TermStack& sorts, bool surround) +{ + CALL("ApplicativeHelper::createGeneralBinding/2"); + + return createGeneralBinding(freshVar,head,sorts,surround,false); +} + TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList head, - TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, bool surround){ - CALL("ApplicativeHelper::createGeneralBinding"); - ASS(head.isTerm()); - ASS(argsFlex.size() == sortsFlex.size()); - ASS(indices.size() == argsFlex.size()); + TermStack& sorts, bool surround, bool useFreshBank){ + CALL("ApplicativeHelper::createGeneralBinding/3"); + ASS(head.isTerm()); // in the future may wish to reconsider this assertion TermStack args; TermStack argSorts; + TermStack indices; + TermList headSort = SortHelper::getResultSort(head.term()); getArgSorts(headSort, argSorts); + for(int i = 0; i < sorts.size(); i++){ + indices.push(getDeBruijnIndex(i, sorts[i])); + } + while(!argSorts.isEmpty()){ - TermList fVar(++freshVar, false); - TermList varSort = AtomicSort::arrowSort(sortsFlex, argSorts.pop()); + TermList fVar(++freshVar, useFreshBank ? FRESH_BANK : false); + TermList varSort = AtomicSort::arrowSort(sorts, argSorts.pop()); args.push(app(varSort, fVar, indices)); } TermList pb = app(head, args); - return surround ? surroundWithLambdas(pb, sortsFlex) : pb; + return surround ? surroundWithLambdas(pb, sorts) : pb; } TermList ApplicativeHelper::surroundWithLambdas(TermList t, TermStack& sorts) diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 2d66b83284..915f5b2975 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -74,8 +74,15 @@ class ApplicativeHelper { static bool isTrue(TermList term); static bool isFalse(TermList term); static bool canHeadReduce(const TermList& head, const TermStack& args); - static TermList createGeneralBinding(unsigned freshVar, TermList head, - TermStack& argsFlex, TermStack& sortsFlex, TermStack& indices, bool surround = true); + + static void normaliseLambdaPrefixes(TermList& t1, TermList& t2); + + static void getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings); + static void getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings, unsigned freshvar); + + static TermList createGeneralBinding(TermList head, TermStack& sorts); + static TermList createGeneralBinding(unsigned freshVar, TermList head, TermStack& sorts, bool surround = true); + static TermList surroundWithLambdas(TermList t, TermStack& sorts); static TermList top(); static TermList bottom(); @@ -86,6 +93,13 @@ class ApplicativeHelper { static TermList equality(TermList sort); static TermList pi(TermList sort); static TermList sigma(TermList sort); + +private: + + static void getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings, unsigned freshvar, bool useFreshBank); + // creates a general binding of the form head (FV1 db1 ... dbn) (FV2 db1 ... dbn) ... + // if surround is set to true, the general binding is surround by n lambdas + static TermList createGeneralBinding(unsigned freshVar, TermList head, TermStack& sorts, bool surround, bool useFreshBank); }; // reduce a term to normal form diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 846a4b0926..221720d410 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -28,7 +28,7 @@ namespace UnificationAlgorithms { class HOLUnification::HigherOrderUnifiersIt: public IteratorCore { public: HigherOrderUnifiersIt(RobSubstitutionTL* subst) : - _returnInitial(false), _used(false), _subst(subst){ + _returnInitial(false), _used(false), _depth(0), _subst(subst){ ASS(!_subst->bdIsRecording()); _subst->bdRecord(_initData); @@ -54,37 +54,189 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorebdDone(); if(_returnInitial){ _initData.backtrack(); + } else { + BacktrackData bd; + _bdStack->push(bd); } } ~HigherOrderUnifiersIt() { CALL("HOLUnification::HigherOrderUnifiersIt::~HigherOrderUnifiersIt"); + // remove initial unification pairs + // and leave substitution in the state it was in before iterator started + _initData.backtrack(); ASS(_unifPairs.isEmpty()); } + bool solved() { + CALL("HOLUnification::HigherOrderUnifiersIt::solved"); + + static unsigned depth = env.options->higherOrderUnifDepth(); + + SkipList::RefIterator it(_unifPairs); + return _depth == depth || !it.hasNext() || it.next().flexFlex(); + } + + bool backtrack() { + CALL("HOLUnification::HigherOrderUnifiersIt::backtrack"); + + bool success = false; + while(!_bdStack->isEmpty() && !success){ + _depth--; + _bdStack->pop().backtrack(); + // if there are alterntative bindings available stop bracktracking + success = !_bindings->top().isEmpty(); + } + return success; + } + + void applyBindingToPairs(){ + CALL("HOLUnification::HigherOrderUnifiersIt::applyBindingToPairs"); + + Stack temp; + while(!_unifPairs.isEmpty()){ + HOLConstraint pair = popFromUnifPairs(_bdStack->top()); + TermList lhs = pair.lhs(); + TermList rhs = pair.rhs(); + temp.push(HOLConstraint(lhs.whnfDeref(_subst), rhs.whnfDeref(_subst))); + } + + while(!temp.isEmpty()){ + addToUnifPairs(temp.pop(), _bdStack->top()); + } + } + bool hasNext() { CALL("HOLUnification::HigherOrderUnifiersIt::hasNext"); - if(_returnInitial){ - if(!_used){ - _used = true; - return _used; - } + if(_returnInitial && !_used){ + _used = true; + return true; + } else if(_returnInitial){ return false; } - //dummy - return true; + bool forward = !solved() || backtrack(); + while(forward && !solved()){ + auto con = popFromUnifPairs(_bdStack->top()); + + TermList lhs = con.lhs(); + TermList rhs = con.rhs(); + TermList lhsHead = con.lhsHead(); + TermList rhsHead = con.rhsHead(); + + ASS(!lhsHead.isVar() || !rhsHead.isVar()); // otherwise we would be solved + + ApplicativeHelper::normaliseLambdaPrefixes(lhs,rhs); + + if(lhsHead == rhsHead){ + ASS(con.rigidRigid()); + // TODO deal with sorts? + + TermStack lhsArgs; + TermStack rhsArgs; + ApplicativeHelper::getHeadAndArgs(lhs, lhsHead, lhsArgs); + ApplicativeHelper::getHeadAndArgs(rhs, rhsHead, rhsArgs); + ASS(lhsArgs.size() == rhsArgs.size()); // size must be same due to normalisation of prefixes above + + for(unsigned i = 0; i < lhsArgs.size(); i++){ + auto t1 = lhsArgs[i].whnfDeref(_subst); + auto t2 = rhsArgs[i].whnfDeref(_subst); + addToUnifPairs(HOLConstraint(t1,t2), _bdStack->top()); + } + + } else if(con.flexRigid()){ + TermList flexTerm = lhsHead.isVar() ? lhs : rhs; + TermList rigidTerm = lhsHead.isVar() ? rhs : lhs; + TermList flexHead = lhsHead.isVar() ? lhsHead : rhsHead; + + + if(_bdStack->size() != _bindings->size()){ + ASS(_bindings->size() + 1 == _bdStack->size() ); + // reached here not via a backtrack. Need to add new bindings to bindings + + // oracle calls. no point calling oracles if we reach here via a backtracl + // they must have already failed + BacktrackData tempBD; + _subst->bdRecord(tempBD); + auto res = HOLUnification::fixpointUnify(flexTerm, rigidTerm, _subst); + _subst->bdDone(); + + if(res == OracleResult::OUT_OF_FRAGMENT){ + tempBD.backtrack(); + // TODO pattern oracle + // TODO solid oracle? + } else if (res == OracleResult::SUCCESS){ + tempBD.commitTo(_bdStack->top()); + tempBD.drop(); + continue; + } else { + forward = backtrack(); + continue; + } + + TermStack projAndImitBindings; + ApplicativeHelper::getProjAndImitBindings(flexTerm, rigidTerm, projAndImitBindings); + backtrackablePush(*_bindings,projAndImitBindings,_bdStack->top()); + } + + _depth++; + addToUnifPairs(con, _bdStack->top()); // add back to pairs with old data + BacktrackData bd; + _bdStack->push(bd); // reached a branch point + con = popFromUnifPairs(_bdStack->top()); // remove from pairs on new data + + ASS(_bindings->top().size()); + TermList binding = _bindings->top().pop(); + + _subst->bdRecord(bd); + _subst->bind(flexHead, binding); + _subst->bdDone(); + + applyBindingToPairs(); + + } else { + // clash + forward = backtrack(); + } + } + + return forward; } RobSubstitutionTL* next() { CALL("HOLUnification::HigherOrderUnifiersIt::next"); + if(!_returnInitial){ + // turn remaining unification pairs into standard constraints + // these can either be the flex-flex pairs, or if depth limit reached + // these can include other pairs as well + BacktrackData& bd = _bdStack->top(); + _subst->bdRecord(bd); + while(!_unifPairs.isEmpty()){ + HOLConstraint con = popFromUnifPairs(bd); + UnificationConstraint c(con.lhs(), con.rhs()); + _subst->pushConstraint(c); + } + _subst->bdDone(); + } + return _subst; } + + HOLConstraint popFromUnifPairs(BacktrackData& bd){ + CALL("HigherOrderUnifiersIt::popFromUnifPairs"); + + auto con = _unifPairs.pop(); + bd.addClosure([&](){ _unifPairs.insert(con); }); + return con; + } void addToUnifPairs(HOLConstraint con, BacktrackData& bd){ CALL("HigherOrderUnifiersIt::addToUnifPairs"); @@ -139,8 +291,11 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCore _unifPairs; + Recycled> _bdStack; + Recycled> _bindings; RobSubstitutionTL* _subst; }; @@ -156,13 +311,7 @@ SubstIterator HOLUnification::unifiers(TermList t1, TermList t2, RobSubstitution unifyFirstOrderStructure(t1,t2,splittable,sub); - unsigned depth = env.options->higherOrderUnifDepth(); - - if(!depth){ - return pvi(getSingletonIterator(sub)); - } else { - return vi(new HigherOrderUnifiersIt(sub)); - } + return vi(new HigherOrderUnifiersIt(sub)); } SubstIterator HOLUnification::postprocess(RobSubstitutionTL* sub) @@ -173,15 +322,7 @@ SubstIterator HOLUnification::postprocess(RobSubstitutionTL* sub) // but it is slighly involved and I am not sure that it is worth it. // will leave for now. - unsigned depth = env.options->higherOrderUnifDepth(); - - if(!depth || sub->emptyConstraints()){ - // if depth == 0, then we are unifying via dedicated inferences - // if there are no constraints, then first-order unification sufficed - return pvi(getSingletonIterator(sub)); - } else { - return vi(new HigherOrderUnifiersIt(sub)); - } + return vi(new HigherOrderUnifiersIt(sub)); } bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) @@ -199,7 +340,9 @@ bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittab HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermList t, RobSubstitutionTL* sub) { CALL("HOLUnification::fixpointUnify"); - ASS(var.isVar()); + + // TODO what about if it is an eta-expanded var? Is that possible here? + if(!var.isVar()) return OracleResult::OUT_OF_FRAGMENT; struct TermListFP { TermList t; diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index 80a7e7cac2..4272720289 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -52,7 +52,7 @@ class HOLUnification { OUT_OF_FRAGMENT=3 }; - OracleResult fixpointUnify(TermList var, TermList t, RobSubstitutionTL* sub); + static OracleResult fixpointUnify(TermList var, TermList t, RobSubstitutionTL* sub); using UnificationConstraint = UnificationConstraint; @@ -75,6 +75,9 @@ class HOLUnification { bool rigidRigid() const { return _t1head.isTerm() && _t2head.isTerm(); } bool flexRigid() const { return (_t1head.isVar() && !_t2head.isVar()) || (_t2head.isVar() && !_t1head.isVar()); } + TermList lhsHead() const { return _t1head; } + TermList rhsHead() const { return _t2head; } + TermList sort() const { CALL("HOLConstraint::sort()"); ASS(lhs().isTerm() || rhs().isTerm()); From d25dc504f4cd5a4863ff9d2f78ba7e2e10a9ae13 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 11 May 2023 13:56:41 +0100 Subject: [PATCH 065/210] various bug fixes. HOL unification seems to be working at the moment. To start on HOL matching --- Inferences/ImitateProject.cpp | 6 +- Inferences/NegativeExt.cpp | 4 +- Kernel/ApplicativeHelper.cpp | 10 ++-- Kernel/HOLUnification.cpp | 61 ++++++++++++-------- Kernel/RobSubstitution.cpp | 4 ++ Kernel/Term.cpp | 12 +++- Kernel/Term.hpp | 2 + Saturation/SaturationAlgorithm.cpp | 5 +- Shell/Options.cpp | 2 +- UnitTests/tUnificationWithAbstraction.cpp | 70 ++++++++++++++--------- 10 files changed, 114 insertions(+), 62 deletions(-) diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp index 5c01331579..7f5c115ec6 100644 --- a/Inferences/ImitateProject.cpp +++ b/Inferences/ImitateProject.cpp @@ -54,7 +54,9 @@ struct ImitateProject::CanImitateAndProject bool operator()(Literal* l) { ASS(l->isEquality()); - return l->isFlexRigid() && !l->polarity() && !SortHelper::getEqualityArgumentSort(l).isArrowSort(); + return l->isFlexRigid() && !l->polarity(); + // TODO decide whether to keep check below (see NegExt) + /*&& !SortHelper::getEqualityArgumentSort(l).isArrowSort()*/; } }; @@ -131,7 +133,7 @@ struct ImitateProject::ResultFn // some inefficiency below as we iterate the term twice. Once in // getProjAndImitBindings and again in the head() call below. - // However, it keeps the code cleaner, and I doubt that the penaly is high + // However, it keeps the code cleaner, and I doubt that the penalty is high TermList headFlex = flexTerm.head(); TermList imitpb = bindings[0]; diff --git a/Inferences/NegativeExt.cpp b/Inferences/NegativeExt.cpp index bc9d85fed0..6fa724686f 100644 --- a/Inferences/NegativeExt.cpp +++ b/Inferences/NegativeExt.cpp @@ -53,8 +53,8 @@ using namespace Saturation; struct NegativeExt::IsNegativeEqualityFn { - bool operator()(Literal* l) - { return l->isEquality() && !l->isPositive(); } + bool operator()(Literal* l) // TODO decide whether to keep final check (see ImitateProject) + { return l->isEquality() && !l->isPositive() && l->isRigidRigid(); } }; struct NegativeExt::ResultFn diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index adeaa1c426..11b8f2387c 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -87,7 +87,7 @@ TermList WHNFDeref::transformSubterm(TermList t) while(ApplicativeHelper::canHeadReduce(newHead, args)){ headDereffed = false; - t = RedexReducer().reduce(head, args); + t = RedexReducer().reduce(newHead, args); if(t.isLambdaTerm()) break; ApplicativeHelper::getHeadSortAndArgs(t, head, sort, args); newHead = _sub->derefBound(head); @@ -714,14 +714,14 @@ void ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigid { CALL("ApplicativeHelper::getProjAndImitBindings/1"); - getProjAndImitBindings(flexTerm,rigidTerm,bindings,0,false); + getProjAndImitBindings(flexTerm,rigidTerm,bindings,0,true); } void ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings, unsigned freshvar) { CALL("ApplicativeHelper::getProjAndImitBindings/2"); - getProjAndImitBindings(flexTerm,rigidTerm,bindings,freshvar,true); + getProjAndImitBindings(flexTerm,rigidTerm,bindings,freshvar,false); } void ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings, @@ -774,7 +774,7 @@ void ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigid TermList ApplicativeHelper::createGeneralBinding(TermList head, TermStack& sorts){ CALL("ApplicativeHelper::createGeneralBinding/1"); - return createGeneralBinding(0,head,sorts,false,true); + return createGeneralBinding(0,head,sorts,true,true); } TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList head, TermStack& sorts, bool surround) @@ -801,7 +801,7 @@ TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList hea } while(!argSorts.isEmpty()){ - TermList fVar(++freshVar, useFreshBank ? FRESH_BANK : false); + TermList fVar = useFreshBank ? TermList(freshVar++, VarBank::FRESH_BANK) : TermList(++freshVar, false); TermList varSort = AtomicSort::arrowSort(sorts, argSorts.pop()); args.push(app(varSort, fVar, indices)); } diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 221720d410..deae6359ec 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -29,10 +29,11 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorebdIsRecording()); + CALL("HOLUnification::HigherOrderUnifiersIt::HigherOrderUnifiersIt"); + _subst->bdRecord(_initData); - // move constraints from to priority queue + // move constraints from subst to priority queue // will be undone when hasNext() return false while(!_subst->emptyConstraints()){ auto con = _subst->popConstraint(); @@ -63,24 +64,23 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorepush(bd); + _bindings->push(TermStack()); } } ~HigherOrderUnifiersIt() { CALL("HOLUnification::HigherOrderUnifiersIt::~HigherOrderUnifiersIt"); - // remove initial unification pairs - // and leave substitution in the state it was in before iterator started - _initData.backtrack(); - ASS(_unifPairs.isEmpty()); } + friend std::ostream& operator<<(std::ostream& out, HigherOrderUnifiersIt const& self) + { return out << "Backtrack depth " << self._bdStack->size() << "\nBindings " << + *self._bindings << "\nCurr subst " << *self._subst << "\nUnif pairs " << self._unifPairs; } + bool solved() { CALL("HOLUnification::HigherOrderUnifiersIt::solved"); - static unsigned depth = env.options->higherOrderUnifDepth(); - SkipList::RefIterator it(_unifPairs); - return _depth == depth || !it.hasNext() || it.next().flexFlex(); + return !it.hasNext() || it.next().flexFlex(); } bool backtrack() { @@ -115,15 +115,26 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorehigherOrderUnifDepth(); + + if(_returnInitial || (_depth == depth && !_used) || (solved() && !_used)) + { return !_used; } + + _used = false; + + // the logic here is really convoluted and should be cleaned up + // the main complexity is due to the depth limit + // Once the limit is reached, we continue popping constraints until + // we reach a flexRigid pair and then stop and return + // The next time we call hasNext, the system will be in a solved state + // if next() has been called in between, since next clears all unif + // pairs. Hence a backtrack will take place bool forward = !solved() || backtrack(); while(forward && !solved()){ + if(_unifPairs.top().flexRigid() && _depth == depth) + { break; } + auto con = popFromUnifPairs(_bdStack->top()); TermList lhs = con.lhs(); @@ -156,9 +167,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoresize() != _bindings->size()){ - ASS(_bindings->size() + 1 == _bdStack->size() ); + if(_bdStack->size() == _bindings->size()){ // reached here not via a backtrack. Need to add new bindings to bindings // oracle calls. no point calling oracles if we reach here via a backtracl @@ -190,12 +199,11 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); // add back to pairs with old data BacktrackData bd; _bdStack->push(bd); // reached a branch point - con = popFromUnifPairs(_bdStack->top()); // remove from pairs on new data ASS(_bindings->top().size()); TermList binding = _bindings->top().pop(); - _subst->bdRecord(bd); + _subst->bdRecord(_bdStack->top()); _subst->bind(flexHead, binding); _subst->bdDone(); @@ -207,6 +215,13 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorebdDone(); } - + _used = true; return _subst; } @@ -234,7 +249,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCore::match(TermSpecOrList base, T ASS(!mismatch) } + if(mismatch) { + toDo.reset(); + } + bdDone(); if(mismatch) { diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index fc43cb324e..13ccb7fa0b 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -2326,7 +2326,7 @@ bool Literal::isFlexRigid() const ASS(isEquality()); auto check = [](TermList head1, TermList term1, TermList head2){ - // only one side has a variable head, and that side isn't is a variable + // only one side has a variable head, and that side isn't a variable return head1.isVar() && !term1.isVar() && !head2.isVar(); }; @@ -2338,6 +2338,16 @@ bool Literal::isFlexRigid() const return check(lhsHead, lhs, rhsHead) || check(rhsHead, rhs, lhsHead); } +bool Literal::isRigidRigid() const +{ + CALL("Literal::isRigidRigid"); + ASS(isEquality()); + + TermList lhs = *nthArgument(0); + TermList rhs = *nthArgument(1); + return !polarity() && lhs.head().isTerm() && rhs.head().isTerm(); +} + #endif /** create a new term and copy from t the relevant part of t's content */ diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 8cf212bd66..f931091261 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -90,6 +90,7 @@ enum ArgumentOrderVals { AO_INCOMPARABLE=6, }; +// TODO change to enum class enum VarBank { DEFAULT_BANK=0, QUERY_BANK=1, @@ -1205,6 +1206,7 @@ class Literal #if VHOL bool isFlexFlex() const; bool isFlexRigid() const; + bool isRigidRigid() const; #endif /** true if positive */ diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index a1ba4ebc02..4ed771188a 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1580,7 +1580,10 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if(prb.higherOrder()){ gie->addFront(new ArgCong()); gie->addFront(new NegativeExt());//TODO add option - gie->addFront(new ImitateProject()); + if(!env.options->higherOrderUnifDepth()){ + // only add when we are not carrying out higher-order unification + gie->addFront(new ImitateProject()); + } } if(prb.hasFOOL() && diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 2147a4327f..54e9caa956 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1767,7 +1767,7 @@ void Options::init() _superposition.description= "Control superposition. Turning off this core inference leads to an incomplete calculus on equational problems."; _lookup.insert(&_superposition); - _higherOrderUnifDepth = UnsignedOptionValue("hol_unif_depth","hud",0); + _higherOrderUnifDepth = UnsignedOptionValue("hol_unif_depth","hud",2); _higherOrderUnifDepth.description = "Set the maximum depth (in terms of projextions and imitations) that higher-order unification can descend to. Once limit is reached, remaining pairs are retunred as constraints."; _higherOrderUnifDepth.addProblemConstraint(hasHigherOrder()); _higherOrderUnifDepth.addHardConstraint(lessThan(5u)); diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 2d281a6209..d18bf17a2e 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -129,7 +129,7 @@ template void checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Stack expected, F unifFun) { CALL("checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Stack expected, F unifFun)") - + Stack is; for (auto qr : iterTraits(unifFun(index, term))) { is.push(TermUnificationResultSpec { @@ -786,15 +786,24 @@ TEST_FUN(higher_order2) DECL_HOL_VAR(x, 0, arrow(srt, srt)) DECL_HOL_VAR(x2, 1, arrow(srt, arrow(srt, srt))) DECL_HOL_VAR(x3, 2, srt) + DECL_HOL_VAR(z, 3, srt) index->insert(ap(x, a), 0, 0); + auto id = toDBs(lam(z, z)); + auto conFun = toDBs(lam(z, a)); + checkHigherOrderTermMatches(*index, a, Stack{ TermUnificationResultSpec { .querySigma = a, - .resultSigma = ap(x,a), - .constraints = {a != ap(x,a) } }, + .resultSigma = ap(id,a), + .constraints = Stack{} }, + + TermUnificationResultSpec + { .querySigma = a, + .resultSigma = ap(conFun,a), + .constraints = Stack{} }, }); @@ -868,12 +877,6 @@ TEST_FUN(higher_order4) index->insert(t, 0, 0); checkHigherOrderTermMatches(*index, ap(ap(f, x), ap(x,a)), Stack{ - - TermUnificationResultSpec - { .querySigma = ap(ap(f, g), ap(g,a)), - .resultSigma = ap(ap(f, g), a), - .constraints = { ap(g, a) != a } }, - }); } @@ -900,11 +903,6 @@ TEST_FUN(higher_order5) checkHigherOrderTermMatches(*index, ap(ap(f, x), ap(x,a)), Stack{ - TermUnificationResultSpec - { .querySigma = ap(ap(f, g), ap(g,a)), - .resultSigma = ap(ap(f, g), a), - .constraints = { ap(g, a) != a } }, - }); } @@ -972,20 +970,26 @@ TEST_FUN(higher_order8) env.options->set("pretty_hol_printing","pretty"); env.options->set("func_ext", "abstraction"); + env.options->set("print_var_banks", "true"); auto index = getTermIndex(); DECL_DEFAULT_SORT_VARS DECL_SORT(srt) DECL_CONST(a, srt) - DECL_CONST(g, arrow(srt,srt)) - DECL_HOL_VAR(x0, 0, arrow(srt,srt)) - DECL_HOL_VAR(x1, 1, arrow(srt,srt)) - DECL_HOL_VAR(x2, 2, arrow(srt,srt)) + DECL_CONST(g, arrow(srt,srt)) DECL_HOL_VAR(x, 10, arrow(srt,srt)) DECL_HOL_VAR(z, 11, arrow(srt,srt)) + DECL_HOL_VAR(z2, 12, srt) + DECL_HOL_VAR(z3, 13, srt) + + auto id = toDBs(lam(z2, z2)); + auto conFun = toDBs(lam(z2, a)); + + auto b1 = toDBs(lam(z3, ap(g, ap(id, z3)))); + auto b2 = toDBs(lam(z3, ap(g, ap(conFun, z3)))); index->insert(ap(x,a), 0, 0); index->insert(ap(z,a), 0, 0); @@ -996,18 +1000,33 @@ TEST_FUN(higher_order8) TermUnificationResultSpec { .querySigma = ap(g,a), - .resultSigma = ap(x2,a), - .constraints = { ap(g,a) != ap(x2,a) } }, + .resultSigma = ap(b1,a), + .constraints = Stack{ } }, + + TermUnificationResultSpec + { .querySigma = ap(g,a), + .resultSigma = ap(b2,a), + .constraints = Stack{ } }, + + TermUnificationResultSpec + { .querySigma = ap(g,a), + .resultSigma = ap(b1,a), + .constraints = Stack{ } }, + + TermUnificationResultSpec + { .querySigma = ap(g,a), + .resultSigma = ap(b2,a), + .constraints = Stack{ } }, TermUnificationResultSpec { .querySigma = ap(g,a), - .resultSigma = ap(x1,a), - .constraints = { ap(g,a) != ap(x1,a) } }, + .resultSigma = ap(g,ap(id,a)), //really irritating variable renaming... + .constraints = Stack{ } }, TermUnificationResultSpec { .querySigma = ap(g,a), - .resultSigma = ap(g,ap(x0,a)), //really irritating variable renaming... - .constraints = { a != ap(x0,a) } }, + .resultSigma = ap(g,ap(conFun,a)), //really irritating variable renaming... + .constraints = Stack{ } }, }); } @@ -1076,9 +1095,6 @@ TEST_FUN(higher_order8) #endif -static const int NORM_QUERY_BANK=2; -// static const int NORM_RESULT_BANK=3; - Option runRobUnify(TermList a, TermList b, Options::UnificationWithAbstraction opt, bool fixedPointIteration) { Kernel::UnificationAlgorithms::AbstractingUnification au(MismatchHandler(opt), fixedPointIteration); From 8b62141d668604a923f348e7c7693a03ada90fc8 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 12 May 2023 11:31:51 +0100 Subject: [PATCH 066/210] changes to support higher-order (lambda-free) matching. WIP --- CMakeLists.txt | 4 +- Indexing/LiteralSubstitutionTree.cpp | 2 +- Indexing/LiteralSubstitutionTree.hpp | 9 +--- Indexing/SubstitutionTree.hpp | 24 +++++---- Indexing/TermSubstitutionTree.hpp | 11 ++-- Kernel/HOLMatching.cpp | 54 +++++++++++++++++++ Kernel/HOLMatching.hpp | 77 ++++++++++++++++++++++++++++ Kernel/HOLUnification.cpp | 28 +++++++--- Kernel/HOLUnification.hpp | 2 + Kernel/MismatchHandler.cpp | 14 ++--- Kernel/MismatchHandler.hpp | 4 ++ Kernel/RobSubstitution.cpp | 40 ++++++++++----- Kernel/RobSubstitution.hpp | 44 +++++++++++++++- 13 files changed, 255 insertions(+), 58 deletions(-) create mode 100644 Kernel/HOLMatching.cpp create mode 100644 Kernel/HOLMatching.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 99c527a783..78d27a144f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -234,6 +234,7 @@ set(VAMPIRE_KERNEL_SOURCES Kernel/Renaming.cpp Kernel/RobSubstitution.cpp Kernel/HOLUnification.cpp + Kernel/HOLMatching.cpp Kernel/MismatchHandler.cpp Kernel/Signature.cpp Kernel/SortHelper.cpp @@ -284,7 +285,8 @@ set(VAMPIRE_KERNEL_SOURCES Kernel/RCClauseStack.hpp Kernel/Renaming.hpp Kernel/RobSubstitution.hpp - Kernel/HOLUnification.hpp + Kernel/HOLUnification.hpp + Kernel/HOLMatching.hpp Kernel/MismatchHandler.hpp Kernel/Signature.hpp Kernel/SortHelper.hpp diff --git a/Indexing/LiteralSubstitutionTree.cpp b/Indexing/LiteralSubstitutionTree.cpp index d0e4e0d972..4b5abe032d 100644 --- a/Indexing/LiteralSubstitutionTree.cpp +++ b/Indexing/LiteralSubstitutionTree.cpp @@ -36,7 +36,7 @@ LiteralSubstitutionTree::LiteralSubstitutionTree() { } SLQueryResultIterator LiteralSubstitutionTree::getUnifications(Literal* lit, bool complementary, bool retrieveSubstitutions) -{ return getResultIterator>(lit, complementary, retrieveSubstitutions); } +{ return getResultIterator>(lit, complementary, retrieveSubstitutions); } SLQueryResultIterator LiteralSubstitutionTree::getGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions) { return getResultIterator(lit, complementary, retrieveSubstitutions); } diff --git a/Indexing/LiteralSubstitutionTree.hpp b/Indexing/LiteralSubstitutionTree.hpp index 7e8ffc1934..8ef6afcff0 100644 --- a/Indexing/LiteralSubstitutionTree.hpp +++ b/Indexing/LiteralSubstitutionTree.hpp @@ -38,7 +38,6 @@ class LiteralSubstitutionTree using Leaf = SubstitutionTree::Leaf; using AbstractingAlgo = UnificationAlgorithms::AbstractingUnification; using RobAlgo = UnificationAlgorithms::RobUnification; - using HOLAlgo = UnificationAlgorithms::HOLUnification; public: CLASS_NAME(LiteralSubstitutionTree); @@ -91,12 +90,6 @@ class LiteralSubstitutionTree )); } - //auto postproUwa(Literal* lit, bool complementary, Options::UnificationWithAbstraction uwa) - //{ return pvi(iterTraits(getResultIterator>(lit, complementary, /* retrieveSubstitutions */ true, MismatchHandler(uwa))) - // .filterMap([](LQueryRes r) - // { return r.unifier.fixedPointIteration().map([&](AbstractingUnifier* unif) { return lQueryRes(r.literal, r.clause, unif); }); })); } - - public: @@ -105,7 +98,7 @@ class LiteralSubstitutionTree static auto uwa = env.options->unificationWithAbstraction(); static bool fixedPointIteration = env.options->unificationWithAbstractionFixedPointIteration(); - return getResultIterator>(lit, complementary, /* retrieveSubstitutions */ true, MismatchHandler(uwa), fixedPointIteration); + return getResultIterator>(lit, complementary, /* retrieveSubstitutions */ true, MismatchHandler(uwa), fixedPointIteration); } friend std::ostream& operator<<(std::ostream& out, LiteralSubstitutionTree const& self) diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 4829266c2a..85516f7e16 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -1220,7 +1220,7 @@ class SubstitutionTree // is to template this Iterator with a substitution to allow it to be // use with either RobSubstitutionTL or RobSubstitutionTS (or any other substitution) template - class UnificationsIterator final + class TreeIterator final : public IteratorCore { public: @@ -1229,7 +1229,7 @@ class SubstitutionTree DECL_ELEMENT_TYPE(QueryResultIter); template - UnificationsIterator(SubstitutionTree* parent, Node* root, TermOrLit query, bool retrieveSubstitution, bool reversed, AlgoArgs... args) + TreeIterator(SubstitutionTree* parent, Node* root, TermOrLit query, bool retrieveSubstitution, bool reversed, AlgoArgs... args) : _subst() , _algo(std::move(args)...) , _svStack() @@ -1246,12 +1246,14 @@ class SubstitutionTree #endif { #define DEBUG_QUERY(...) //DBG(__VA_ARGS__) - CALL("SubstitutionTree::UnificationsIterator::UnificationsIterator"); + CALL("SubstitutionTree::UnificationsIterator::TreeIterator"); if(!root) { return; } + _algo.initSub(&*_subst); + query = ToBank(QUERY_BANK).toBank(query); parent->createBindings(query, reversed, @@ -1264,9 +1266,9 @@ class SubstitutionTree } - ~UnificationsIterator() + ~TreeIterator() { - CALL("SubstitutionTree::UnificationsIterator::~UnificationsIterator"); + CALL("SubstitutionTree::UnificationsIterator::~TreeIterator"); if(_clientBDRecording) { _subst->bdDone(); @@ -1281,7 +1283,7 @@ class SubstitutionTree bool hasNext() { - CALL("SubstitutionTree::UnificationsIterator::hasNext"); + CALL("SubstitutionTree::TreeIterator::hasNext"); if(_clientBDRecording) { _subst->bdDone(); @@ -1295,7 +1297,7 @@ class SubstitutionTree QueryResultIter next() { - CALL("SubstitutionTree::UnificationsIterator::next"); + CALL("SubstitutionTree::TreeIterator::next"); while(!_ldIterator.hasNext() && findNextLeaf()) {} ASS(_ldIterator.hasNext()); @@ -1337,7 +1339,7 @@ class SubstitutionTree NodeIterator getNodeIterator(IntermediateNode* n) { - CALL("SubstitutionTree::UnificationsIterator::getNodeIterator"); + CALL("SubstitutionTree::TreeIterator::getNodeIterator"); // TODO rename usesUwa to something more self explanatory if (_algo.usesUwa()) { @@ -1366,7 +1368,7 @@ class SubstitutionTree bool findNextLeaf() { - CALL("SubstitutionTree::UnificationsIterator::findNextLeaf"); + CALL("SubstitutionTree::TreeIterator::findNextLeaf"); if(_nodeIterators->isEmpty()) { //There are no node iterators in the stack, so there's nowhere @@ -1414,7 +1416,7 @@ class SubstitutionTree bool enter(Node* n, BacktrackData& bd) { - CALL("SubstitutionTree::UnificationsIterator::enter"); + CALL("SubstitutionTree::TreeIterator::enter"); bool success=true; bool recording=false; @@ -1483,7 +1485,7 @@ struct SubtitutionTreeConfig -using RobUnificationsIterator = SubstitutionTree::UnificationsIterator; +using RobUnificationsIterator = SubstitutionTree::TreeIterator; } // namespace Indexing diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index 1655011fc5..14d5ce6578 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -118,11 +118,6 @@ class TermSubstitutionTree friend std::ostream& operator<<(std::ostream& out, OutputMultiline const& self) { return out << multiline(*self.self._tree, self.indent); } - //auto postproUwa(TypedTermList t, Options::UnificationWithAbstraction uwa) - //{ return iterTraits(getResultIterator>(t, /* retrieveSubstitutions */ true, MismatchHandler(uwa))) - // .filterMap([](TQueryRes r) - // { return r.unifier.fixedPointIteration().map([&](AbstractingUnifier* unif) { return tQueryRes(r.term, r.literal, r.clause, unif); }); }); } - public: TermQueryResultIterator getInstances(TypedTermList t, bool retrieveSubstitutions) override { return pvi(getResultIterator(t, retrieveSubstitutions)); } @@ -135,18 +130,18 @@ class TermSubstitutionTree static auto uwa = env.options->unificationWithAbstraction(); static bool fixedPointIteration = env.options->unificationWithAbstractionFixedPointIteration(); - return pvi(getResultIterator>(t, true, MismatchHandler(uwa), fixedPointIteration)); + return pvi(getResultIterator>(t, true, MismatchHandler(uwa), fixedPointIteration)); } #if VHOL TermQueryResultIterator getHOLUnifiers(TypedTermList t) final override { - return pvi(getResultIterator>(t, true)); + return pvi(getResultIterator>(t, true)); } #endif TermQueryResultIterator getUnifications(TypedTermList t, bool retrieveSubstitutions) override - { return pvi(getResultIterator>(t, retrieveSubstitutions)); } + { return pvi(getResultIterator>(t, retrieveSubstitutions)); } }; }; diff --git a/Kernel/HOLMatching.cpp b/Kernel/HOLMatching.cpp new file mode 100644 index 0000000000..8573c1f490 --- /dev/null +++ b/Kernel/HOLMatching.cpp @@ -0,0 +1,54 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file RobSubstitution.hpp + * Defines class RobSubstitution. + * + */ + +#if VHOL + +#include "Kernel/HOLMatching.hpp" +#include "Kernel/ApplicativeHelper.hpp" + +namespace Kernel +{ + +namespace UnificationAlgorithms { + +bool HOLInstantiation::match(TermList term, TermList instance, RobSubstitutionTL* sub) +{ + CALL("HOLInstantiation::match"); + + // dummy + return true; +} + +bool HOLInstantiation::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) +{ + CALL("HOLInstantiation::associate"); + + TermList query(specialVar, /* special */ true); + return match(query, node, sub); +} + +bool HOLGeneralisation::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) +{ + CALL("HOLGeneralisation::associate"); + + TermList query(specialVar, /* special */ true); + return HOLInstantiation::match(node, query, sub); +} + +} + +} + +#endif \ No newline at end of file diff --git a/Kernel/HOLMatching.hpp b/Kernel/HOLMatching.hpp new file mode 100644 index 0000000000..478c811eee --- /dev/null +++ b/Kernel/HOLMatching.hpp @@ -0,0 +1,77 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file RobSubstitution.hpp + * Defines class RobSubstitution. + * + */ + +#ifndef __HOLMatching__ +#define __HOLMatching__ + +#if VHOL + +#include "Forwards.hpp" + +#include "Term.hpp" +#include "Lib/Hash.hpp" +#include "Lib/DHMap.hpp" +#include "Lib/Metaiterators.hpp" +#include "Lib/Environment.hpp" +#include "Lib/Backtrackable.hpp" +#include "Lib/Recycled.hpp" + +#include "Kernel/RobSubstitution.hpp" +#include "Kernel/SortHelper.hpp" +#include "Kernel/Signature.hpp" + +namespace Kernel +{ + +using namespace Indexing; + +namespace UnificationAlgorithms { + + +class HOLInstantiation { +public: + + static bool match(TermList term, TermList instance, RobSubstitutionTL* sub); + + void initSub(RobSubstitutionTL* sub) const { sub->setOutputIndex(VarBank::RESULT_BANK); } + + bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub); + + SubstIterator postprocess(RobSubstitutionTL* sub) + { return pvi(getSingletonIterator(sub)); } + + bool usesUwa() const { return false; } +}; + +class HOLGeneralisation { +public: + + void initSub(RobSubstitutionTL* sub) const { sub->setOutputIndex(VarBank::QUERY_BANK); } + + bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub); + + SubstIterator postprocess(RobSubstitutionTL* sub) + { return pvi(getSingletonIterator(sub)); } + + bool usesUwa() const { return false; } +}; + +} + +} + +#endif + +#endif diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index deae6359ec..7fa0498006 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -348,8 +348,6 @@ bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittab return unifyFirstOrderStructure(query, node, splittable, sub); } - -// TODO consider adding a check for loose De Bruijn indices // see E prover code by Petar /TERMS/cte_fixpoint_unif.c #define DEBUG_FP_UNIFY(LVL, ...) if (LVL <= 1) DBG(__VA_ARGS__) HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermList t, RobSubstitutionTL* sub) @@ -362,6 +360,7 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermLis struct TermListFP { TermList t; bool underFlex; + unsigned depth; }; bool tIsLambda = t.whnfDeref(sub).isLambdaTerm(); @@ -375,19 +374,26 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermLis Recycled> todo; - todo->push(TermListFP { .t = t, .underFlex = false }); + todo->push(TermListFP { .t = t, .underFlex = false, .depth = 0, }); while (todo->isNonEmpty()){ auto ts = todo->pop(); auto term = ts.t.whnfDeref(sub); + unsigned d = ts.depth; // TODO consider adding an encountered store similar to first-order occurs check... TermList head; TermStack args; + while(term.isLambdaTerm()){ + term = term.lambdaBody(); + d++; + } + ApplicativeHelper::getHeadAndArgs(term, head, args); + ASS(!head.isLambdaTerm()); if (head.isVar()) { if(head == toFind) { if(ts.underFlex || (tIsLambda && args.size())){ @@ -396,16 +402,24 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermLis return OracleResult::FAILURE; } } - } else if (head.isLambdaTerm()) { - ASS(!args.size()); // if we had args, term wouldnt be in whnf - todo->push(TermListFP { head.lambdaBody(), .underFlex = ts.underFlex} ); } + if(head.deBruijnIndex().isSome()){ + unsigned index = head.deBruijnIndex().unwrap(); + if(index >= d){ + // contains a free index, cannot bind + if(ts.underFlex){ + return OracleResult::OUT_OF_FRAGMENT; + } else { + return OracleResult::FAILURE; + } + } + } bool argsUnderFlex = head.isVar() ? true : ts.underFlex; for(unsigned i = 0; i < args.size(); i++){ - todo->push(TermListFP { args[i], .underFlex = argsUnderFlex} ); + todo->push(TermListFP { args[i], .underFlex = argsUnderFlex, .depth = d, } ); } } diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index 4272720289..442ad62992 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -98,6 +98,8 @@ class HOLUnification { SubstIterator unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck = false); SubstIterator postprocess(RobSubstitutionTL*); + void initSub(RobSubstitutionTL* sub) const { } + // method used to decide whether to return all children of a node during tree // traversal or only the children with same top bool usesUwa() const { return false; } diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index 9ef3a08b1d..40aaf3a1ff 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -82,14 +82,14 @@ class AcIter { TermList next() { ASS(!_todo->isEmpty()); auto t = _todo->pop(); - auto* dt = &_subs->derefBound(t); - while (dt->isTerm() && dt->term()->functor() == _function) { - ASS_EQ(dt->term()->arity(), 2); - _todo->push(dt->term()->termArg(1)); - t = dt->term()->termArg(0); - dt = &_subs->derefBound(t); + auto dt = _subs->derefBound(t); + while (dt.isTerm() && dt.term()->functor() == _function) { + ASS_EQ(dt.term()->arity(), 2); + _todo->push(dt.term()->termArg(1)); + t = dt.term()->termArg(0); + dt = _subs->derefBound(t); } - return *dt; + return dt; } }; diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 04ebeab857..1d3cfb7268 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -149,6 +149,8 @@ class RobUnification { return pvi(getSingletonIterator(sub)); } + void initSub(RobSubstitutionTL* sub) const { } + bool usesUwa() const { return false; } }; @@ -175,6 +177,8 @@ class AbstractingUnification { return unify(query, node, sub); } + void initSub(RobSubstitutionTL* sub) const { } + bool usesUwa() const { return _uwa.mode() != Options::UnificationWithAbstraction::OFF; } }; diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index d7319a881f..dae483ba44 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -98,8 +98,14 @@ void RobSubstitution::denormalize(const Renaming& Renaming::Item itm=nit.next(); TermSpecOrList normal(itm.second, normBank); TermSpecOrList denormalized(itm.first, denormBank); - ASS(!_bank.find(denormalized)); - bind(denormalized,normal); + + if (denormBank == _outputIndex) { + ASS(!_bank.find(normal)); + bind(normal, denormalized); + } else { + ASS(!_bank.find(denormalized)); + bind(denormalized,normal); + } } } @@ -148,7 +154,7 @@ RobSubstitution::getSpecialVarTop(unsigned special * to which @b t belongs. */ template -TermSpecOrList const& RobSubstitution::derefBound(TermSpecOrList const& t_) const +TermSpecOrList RobSubstitution::derefBound(TermSpecOrList const& t_) const { CALL("RobSubstitution::derefBound"); @@ -169,13 +175,16 @@ TermSpecOrList const& RobSubstitution::derefBound( } /** - * If @b v is a bound variable then return the term or root variable - * it is bound to. Otherwise, return the next unbound variable in the - * OUTPUT_BANK. This effectively names unbound variables apart from - * any variables in the range of bound variables. + * If @b is bound return the root variable / term it is bound to. + * If _outputIndex == UNBOUND_INDEX (default behaviour), return the next + * unbound variable in the UNBOUND_INDEX. This effectively names unbound + * variables apart from any variables in the range of bound variables. + * If _outputIndex != UNBOUND_INDEX, (i.e. it has been set to something + * else using setOutputIndex), the root variable must be of the + * _outputIndex and is returned as is, otherwise we fail on an exception. */ template -TermSpecOrList const& RobSubstitution::deref(TermSpecOrList v) const +TermSpecOrList RobSubstitution::deref(TermSpecOrList v) const { CALL("RobSubstitution::deref"); ASS(v.isVar()); @@ -183,9 +192,14 @@ TermSpecOrList const& RobSubstitution::deref(TermS for(;;) { auto binding = _bank.find(v); if(binding.isNone()) { - const_cast(*this).bind(v, getUnboundVar()); - return _bank.get(v); - } else if(binding->isOutputVar() || binding->isTerm()) { + if(isDefault(_outputIndex)){ + const_cast(*this).bind(v, getUnboundVar()); + return _bank.get(v); + } else { + ASS_REP(v.bank() == _outputIndex, "variable bound index different from _outputIndex. This probably means you either called the wrong operations (e.g. unify) after using setOutputIndex, or you are trying to apply the substitution to a variable that was not bound by this substitution (e.g. by calling RobSubstitution::match or so)") + return v; + } + } else if(binding->isTerm() || binding->bank() == _outputIndex) { return binding.unwrap(); } v = binding.unwrap(); @@ -216,7 +230,7 @@ TermSpecOrList RobSubstitution::root(TermSpecOrLis for(;;) { auto binding = _bank.find(v); - if(binding.isNone() || binding->isOutputVar() || binding->isTerm()) { + if(binding.isNone() || binding->isTerm() || binding->bank() == _outputIndex) { return v; } v = binding.unwrap(); @@ -539,7 +553,7 @@ TermList RobSubstitution::apply(TermSpecOrList trm, if (orig.term.isVar()) { ASS(!orig.term.isOutputVar()) auto var = deref(orig.term); - ASS(var.isVar() && var.isOutputVar()); + ASS(var.isVar() && var.bank() == _outputIndex); tout = TermList(var.var(), DEFAULT_BANK); } else { const Term* origT = orig.term.term(); diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 84ab378c74..fdcb95e975 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -72,6 +72,7 @@ struct TermSpec { // for backwards compatibility TermList trm; int index; + int bank() const { return index; } bool isVar() const { return trm.isVar(); } bool isSpecialVar() const { return trm.isSpecialVar(); } bool isOrdinaryVar() const { return trm.isOrdinaryVar(); } @@ -172,6 +173,8 @@ using namespace Lib; namespace UnificationAlgorithms { class AbstractingUnification; class HOLUnification; + class HOLInstantiation; + class HOLGeneralisation; class RobUnification; } @@ -181,6 +184,8 @@ class RobSubstitution { friend class UnificationAlgorithms::AbstractingUnification; friend class UnificationAlgorithms::HOLUnification; + friend class UnificationAlgorithms::HOLInstantiation; + friend class UnificationAlgorithms::HOLGeneralisation; friend class UnificationConstraint; using Constraint = UnificationConstraint; @@ -194,6 +199,21 @@ class RobSubstitution RobSubstitution() : _nextUnboundAvailable(0) {} virtual ~RobSubstitution() = default; + /* When a `RobSubstitution` is applied to a Term by default the variables in the resulting + * Term will be in a new variable index, that starts mapping the first occurring + * variable in the output to X0, the second one to X1, .... + * In some cases this behaviour should be changed. For example if we a variables sigma such that + * `(s)sigma = t` using `RobSubstitution::match` we want that the variables are not assigned to a new + * index but to the same one as `t`. Therefore this function lets you set the output index of the + * substitution. + * + * Be aware that this is not possible when: + * - applying the substitution to variables that are not in the output index, that were not bound in the + * substitution (i.e. part of generalization operations, etc.) + * - computing unifications + */ + void setOutputIndex(VarBankOrInt idx) { _outputIndex = idx; } + bool unify(TermSpecOrList t1, TermSpecOrList t2); bool match(TermSpecOrList base, TermSpecOrList instance); @@ -207,6 +227,7 @@ class RobSubstitution _bank.reset(); _constr->reset(); _nextUnboundAvailable=0; + // reset oupt index??? } Recycled constraints(){ return _constr->literals(*this); } @@ -225,12 +246,13 @@ class RobSubstitution virtual TermSpecOrList getUnboundVar() const = 0; virtual TermSpecOrList getLitArg(Literal* lit, unsigned idx, VarBankOrInt bank) const = 0; virtual TermSpecOrList getLitSort(Literal* lit, VarBankOrInt bank) const = 0; + virtual bool isDefault(VarBankOrInt bank) const = 0; // functions are needed by so many other classes that it is // easier to just make them public rather than adding other // classes as friends - TermSpecOrList const& deref(TermSpecOrList v) const; - TermSpecOrList const& derefBound(TermSpecOrList const& v) const; + TermSpecOrList deref(TermSpecOrList v) const; + TermSpecOrList derefBound(TermSpecOrList const& v) const; #if VDEBUG /** @@ -254,6 +276,8 @@ class RobSubstitution bool sameTermContent(TermSpecOrList t1, TermSpecOrList t2); void bind(const TermSpecOrList& v, TermSpecOrList b); + VarBankOrInt _outputIndex; + template VirtualIterator getAssocIterator(RobSubst* subst, TermSpecOrList l1, TermSpecOrList s1, TermSpecOrList l2, TermSpecOrList s2, bool complementary); @@ -332,6 +356,11 @@ class RobSubstitutionTL : public RobSubstitution friend class UnificationConstraint; public: + + RobSubstitutionTL() { + _outputIndex = VarBank::OUTPUT_BANK; + } + SubstIterator matches(Literal* base, Literal* instance, bool complementary); SubstIterator unifiers(Literal* l1, Literal* l2, bool complementary); @@ -371,6 +400,9 @@ class RobSubstitutionTL : public RobSubstitution virtual TermList getLitSort(Literal* lit, VarBank bank) const override { ASS(lit->isTwoVarEquality()); return lit->twoVarEqSort(); } + virtual bool isDefault(VarBank bank) const override + { return bank == VarBank::OUTPUT_BANK; } + struct ToRobTermList; }; @@ -380,6 +412,11 @@ class RobSubstitutionTS : public RobSubstitution friend class UnificationConstraint; public: + + RobSubstitutionTS() { + _outputIndex = TermSpec::UNBOUND_INDEX; + } + bool unify(TermList t1, int idx1, TermList t2, int idx2); bool match(TermList t1, int idx1, TermList t2, int idx2); @@ -406,6 +443,9 @@ class RobSubstitutionTS : public RobSubstitution virtual TermSpec getLitSort(Literal* lit, int b) const override { ASS(lit->isTwoVarEquality()); return TermSpec(lit->twoVarEqSort(),b); } + virtual bool isDefault(int bank) const override + { return bank == TermSpec::UNBOUND_INDEX; } + struct ToRobTermSpec; }; From ec23eb61ab72a694e4a938bfbc8ae190471726f1 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Mon, 15 May 2023 10:53:36 +0100 Subject: [PATCH 067/210] lambda-free matching now implemented. more unit tests need to be written --- CMakeLists.txt | 1 + Forwards.hpp | 6 + Indexing/HOLSubstitutionTree.cpp | 6 +- Indexing/HOLSubstitutionTree.hpp | 18 +- Indexing/IndexManager.cpp | 41 +++- Indexing/SubstitutionTree.cpp | 2 +- Indexing/SubstitutionTree.hpp | 10 +- Indexing/TermIndex.hpp | 15 +- Indexing/TermIndexingStructure.hpp | 14 +- Indexing/TermSubstitutionTree.cpp | 27 ++- Indexing/TermSubstitutionTree.hpp | 52 +++-- Inferences/BackwardDemodulation.cpp | 7 +- Inferences/ForwardDemodulation.cpp | 66 +++++-- Kernel/ApplicativeHelper.cpp | 2 +- Kernel/HOLMatching.cpp | 96 ++++++++- Kernel/HOLMatching.hpp | 4 +- Kernel/RobSubstitution.cpp | 12 +- Kernel/Term.cpp | 32 ++- Kernel/Term.hpp | 1 + UnitTests/tHOLMatching.cpp | 231 ++++++++++++++++++++++ UnitTests/tInduction.cpp | 4 +- UnitTests/tUnificationWithAbstraction.cpp | 23 ++- 22 files changed, 572 insertions(+), 98 deletions(-) create mode 100644 UnitTests/tHOLMatching.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 78d27a144f..85106b488c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -717,6 +717,7 @@ set(UNIT_TESTS UnitTests/tDHMap.cpp UnitTests/tQuotientE.cpp UnitTests/tUnificationWithAbstraction.cpp + UnitTests/tHOLMatching.cpp UnitTests/tGaussianElimination.cpp UnitTests/tPushUnaryMinus.cpp UnitTests/tArithmeticSubtermGeneralization.cpp diff --git a/Forwards.hpp b/Forwards.hpp index 3f6c1bad69..f99ebabadd 100644 --- a/Forwards.hpp +++ b/Forwards.hpp @@ -154,6 +154,12 @@ class ResultSubstitution; typedef Lib::SmartPtr ResultSubstitutionSP; //typedef Lib::VirtualIterator SubstSPIterator; +enum class SplittingAlgo { NONE +#if VHOL + , HOL_UNIF, HOL_MATCH +#endif + }; + }; namespace Saturation diff --git a/Indexing/HOLSubstitutionTree.cpp b/Indexing/HOLSubstitutionTree.cpp index fe3ce568fb..e102491d18 100644 --- a/Indexing/HOLSubstitutionTree.cpp +++ b/Indexing/HOLSubstitutionTree.cpp @@ -264,8 +264,8 @@ void HOLSubstitutionTree::higherOrderInsert(HOLBindingMap& svBindings,LeafData l toProcess.push(SubtermPair(l->nthArgument(0), true, r->nthArgument(0), true)); toProcess.push(SubtermPair(l->nthArgument(1), true, r->nthArgument(1), true)); toProcess.push(SubtermPair(l->nthArgument(2), true, r->nthArgument(2), true)); - toProcess.push(SubtermPair(l->nthArgument(3), AH::splittable(lhs->nthArg(3)), - r->nthArgument(3), AH::splittable(rhs->nthArg(3)))); + toProcess.push(SubtermPair(l->nthArgument(3), _splittable(lhs->nthArg(3), false), + r->nthArgument(3), _splittable(rhs->nthArg(3), false))); } else { for (unsigned i = 0; i < l->arity(); i++) { toProcess.push(SubtermPair(l->nthArgument(i), true, r->nthArgument(i), true)); @@ -373,7 +373,7 @@ void HOLSubstitutionTree::higherOrderRemove(HOLBindingMap& svBindings, LeafData subterms.push(std::make_pair((*l)[0], Subterm((*r)[0], true))); subterms.push(std::make_pair((*l)[1], Subterm((*r)[1], true))); subterms.push(std::make_pair((*l)[2], Subterm((*r)[2], true))); - subterms.push(std::make_pair((*l)[3], Subterm((*r)[3], AH::splittable((*r)[3])))); + subterms.push(std::make_pair((*l)[3], Subterm((*r)[3], _splittable((*r)[3], false)))); } else { ASS(l->arity() == r->arity()); for (unsigned i = 0; i < l->arity(); i++) { diff --git a/Indexing/HOLSubstitutionTree.hpp b/Indexing/HOLSubstitutionTree.hpp index 4eeb2a8677..1834f55495 100644 --- a/Indexing/HOLSubstitutionTree.hpp +++ b/Indexing/HOLSubstitutionTree.hpp @@ -31,8 +31,14 @@ namespace Indexing { class HOLSubstitutionTree : public SubstitutionTree { + using SplittableType = std::function; public: + CLASS_NAME(HOLSubstitutionTree); + USE_ALLOCATOR(HOLSubstitutionTree); + + HOLSubstitutionTree(SplittableType f) : SubstitutionTree(), _splittable(f) {} + class Subterm { TermList _subterm; bool _splittable; @@ -80,6 +86,8 @@ class HOLSubstitutionTree typedef DHMap HOLBindingMap; typedef ApplicativeHelper AH; + SplittableType _splittable; + public: @@ -111,7 +119,7 @@ class HOLSubstitutionTree template void createHOLBindings(TypedTermList term, bool reversed, BindingFunction bindSpecialVar) { - bindSpecialVar(0, Subterm(term, AH::splittable(term, true))); + bindSpecialVar(0, Subterm(term, _splittable(term, true))); bindSpecialVar(1, Subterm(term.sort(),true)); } @@ -125,11 +133,11 @@ class HOLSubstitutionTree TermList l1 = *lit->nthArgument(1); if (reversed) { - bindSpecialVar(1,Subterm(l0, AH::splittable(l0, true)) ); - bindSpecialVar(0,Subterm(l1, AH::splittable(l1, true)) ); + bindSpecialVar(1,Subterm(l0, _splittable(l0, true)) ); + bindSpecialVar(0,Subterm(l1, _splittable(l1, true)) ); } else { - bindSpecialVar(0,Subterm(l0, AH::splittable(l0, true)) ); - bindSpecialVar(1,Subterm(l1, AH::splittable(l1, true)) ); + bindSpecialVar(0,Subterm(l0, _splittable(l0, true)) ); + bindSpecialVar(1,Subterm(l1, _splittable(l1, true)) ); } auto sort = SortHelper::getEqualityArgumentSort(lit); diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 2a761cd2bf..63a3f01957 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -136,28 +136,46 @@ Index* IndexManager::create(IndexType t) break; case SUPERPOSITION_SUBTERM_SUBST_TREE: - res = new SuperpositionSubtermIndex(new TermSubstitutionTree(/* extra */ false), _alg->getOrdering()); + res = +#if VHOL + env.property->higherOrder() ? + new SuperpositionSubtermIndex(new TermSubstitutionTree(SplittingAlgo::HOL_UNIF), _alg->getOrdering()) : +#endif + new SuperpositionSubtermIndex(new TermSubstitutionTree(), _alg->getOrdering()); isGenerating = true; break; case SUPERPOSITION_LHS_SUBST_TREE: - res = new SuperpositionLHSIndex(new TermSubstitutionTree(/* extra */ false), _alg->getOrdering(), _alg->getOptions()); + res = +#if VHOL + env.property->higherOrder() ? + new SuperpositionLHSIndex(new TermSubstitutionTree(SplittingAlgo::HOL_UNIF), _alg->getOrdering(), _alg->getOptions()) : +#endif + new SuperpositionLHSIndex(new TermSubstitutionTree(), _alg->getOrdering(), _alg->getOptions()); isGenerating = true; break; #if VHOL - case SKOLEMISING_FORMULA_INDEX: - res = new SkolemisingFormulaIndex(new TermSubstitutionTree(/* extra */ true)); + case SKOLEMISING_FORMULA_INDEX: { + auto tis = new TermSubstitutionTree(); + tis->useExtra(); + res = new SkolemisingFormulaIndex(tis); isGenerating = false; break; + } #endif case ACYCLICITY_INDEX: - res = new AcyclicityIndex(new TermSubstitutionTree( false)); + res = new AcyclicityIndex(new TermSubstitutionTree()); isGenerating = true; break; case DEMODULATION_SUBTERM_SUBST_TREE: { - auto tis=new TermSubstitutionTree(/* extra */ false); + auto tis= +#if VHOL + env.property->higherOrder() ? + new TermSubstitutionTree(SplittingAlgo::HOL_MATCH) : +#endif + new TermSubstitutionTree(); #if VHOL if (env.property->higherOrder()) { res=new DemodulationSubtermIndex(tis); @@ -177,7 +195,12 @@ Index* IndexManager::create(IndexType t) break; case DEMODULATION_LHS_SUBST_TREE: - res = new DemodulationLHSIndex(new TermSubstitutionTree(/* extra */ false), _alg->getOrdering(), _alg->getOptions()); + res = +#if VHOL + env.property->higherOrder() ? + new DemodulationLHSIndex(new TermSubstitutionTree(SplittingAlgo::HOL_MATCH), _alg->getOrdering(), _alg->getOptions()) : +#endif + new DemodulationLHSIndex(new TermSubstitutionTree(), _alg->getOrdering(), _alg->getOptions()); isGenerating = false; break; @@ -212,12 +235,12 @@ Index* IndexManager::create(IndexType t) break; case INDUCTION_TERM_INDEX: - res = new InductionTermIndex(new TermSubstitutionTree(/* extra */ false)); + res = new InductionTermIndex(new TermSubstitutionTree()); isGenerating = true; break; case STRUCT_INDUCTION_TERM_INDEX: - res = new StructInductionTermIndex(new TermSubstitutionTree(/* extra */ false)); + res = new StructInductionTermIndex(new TermSubstitutionTree()); isGenerating = true; break; diff --git a/Indexing/SubstitutionTree.cpp b/Indexing/SubstitutionTree.cpp index 5ba0430fda..8c848ac20b 100644 --- a/Indexing/SubstitutionTree.cpp +++ b/Indexing/SubstitutionTree.cpp @@ -632,7 +632,7 @@ bool SubstitutionTree::LeafIterator::hasNext() void SubstitutionTree::Leaf::output(std::ostream& out, bool multiline, int indent) const { - out << this->term << + out << this->term << " Leaf " << (this->splittable() ? "" : " {NS}"); } void SubstitutionTree::IntermediateNode::output(std::ostream& out, bool multiline, int indent) const diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 85516f7e16..20268f8720 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -38,8 +38,12 @@ #include "Lib/Recycled.hpp" #include "Kernel/BottomUpEvaluation/TypedTermList.hpp" +#if VHOL + #include "Kernel/HOLUnification.hpp" + #include "Kernel/HOLMatching.hpp" +#endif + #include "Kernel/RobSubstitution.hpp" -#include "Kernel/HOLUnification.hpp" #include "Kernel/Renaming.hpp" #include "Kernel/Clause.hpp" #include "Kernel/SortHelper.hpp" @@ -124,8 +128,6 @@ class SubstitutionTree { public: - static constexpr int QRS_QUERY_BANK = 0; - static constexpr int QRS_RESULT_BANK = 1; CLASS_NAME(SubstitutionTree); USE_ALLOCATOR(SubstitutionTree); @@ -1301,7 +1303,7 @@ class SubstitutionTree while(!_ldIterator.hasNext() && findNextLeaf()) {} ASS(_ldIterator.hasNext()); - + ASS(!_clientBDRecording); auto ld = _ldIterator.next(); diff --git a/Indexing/TermIndex.hpp b/Indexing/TermIndex.hpp index 3119a67a61..9f61112daa 100644 --- a/Indexing/TermIndex.hpp +++ b/Indexing/TermIndex.hpp @@ -37,17 +37,22 @@ class TermIndex TermQueryResultIterator getUwa(TypedTermList t) { return _is->getUwa(t); } -#if VHOL - TermQueryResultIterator getHOLUnifiers(TypedTermList t) - { return _is->getHOLUnifiers(t); } -#endif - TermQueryResultIterator getGeneralizations(TypedTermList t, bool retrieveSubstitutions = true) { return _is->getGeneralizations(t, retrieveSubstitutions); } TermQueryResultIterator getInstances(TypedTermList t, bool retrieveSubstitutions = true) { return _is->getInstances(t, retrieveSubstitutions); } +#if VHOL + TermQueryResultIterator getHOLUnifiers(TypedTermList t) + { return _is->getHOLUnifiers(t); } + + TermQueryResultIterator getHOLInstances(TypedTermList t) + { return _is->getHOLInstances(t); } + + TermQueryResultIterator getHOLGeneralizations(TypedTermList t) + { return _is->getHOLGeneralizations(t); } +#endif friend std::ostream& operator<<(std::ostream& out, TermIndex const& self) { return out << *self._is; } diff --git a/Indexing/TermIndexingStructure.hpp b/Indexing/TermIndexingStructure.hpp index ecb336395c..5b512ef605 100644 --- a/Indexing/TermIndexingStructure.hpp +++ b/Indexing/TermIndexingStructure.hpp @@ -35,16 +35,20 @@ class TermIndexingStructure { bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } virtual TermQueryResultIterator getUwa(TypedTermList t) = 0; -#if VHOL - virtual TermQueryResultIterator getHOLUnifiers(TypedTermList t) - { NOT_IMPLEMENTED; } -#endif - virtual TermQueryResultIterator getGeneralizations(TypedTermList t, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } virtual TermQueryResultIterator getInstances(TypedTermList t, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } +#if VHOL + virtual TermQueryResultIterator getHOLUnifiers(TypedTermList t) + { NOT_IMPLEMENTED; } + virtual TermQueryResultIterator getHOLInstances(TypedTermList t) + { NOT_IMPLEMENTED; } + virtual TermQueryResultIterator getHOLGeneralizations(TypedTermList t) + { NOT_IMPLEMENTED; } +#endif + virtual bool generalizationExists(TermList t) { NOT_IMPLEMENTED; } #if VDEBUG diff --git a/Indexing/TermSubstitutionTree.cpp b/Indexing/TermSubstitutionTree.cpp index 0b66c872d5..2b85a34172 100644 --- a/Indexing/TermSubstitutionTree.cpp +++ b/Indexing/TermSubstitutionTree.cpp @@ -15,6 +15,7 @@ #include "Lib/Environment.hpp" #include "Lib/Metaiterators.hpp" #include "Kernel/Term.hpp" +#include "Kernel/ApplicativeHelper.hpp" #include "TermSubstitutionTree.hpp" #if VHOL @@ -28,13 +29,27 @@ using namespace Lib; using namespace Kernel; -TermSubstitutionTree::TermSubstitutionTree(bool extra) -: _extra(extra) +TermSubstitutionTree::TermSubstitutionTree(SplittingAlgo algo) #if VHOL - ,_tree(env.property->higherOrder() ? new HOLSubstitutionTree() : new SubstitutionTree()) -#else - ,_tree(new SubstitutionTree()) + : _extra(false) #endif -{ } +{ + switch(algo){ + case SplittingAlgo::NONE: + _tree.reset(new SubstitutionTree()); + break; +#if VHOL + case SplittingAlgo::HOL_UNIF: + _tree.reset(new HOLSubstitutionTree(ApplicativeHelper::splittable)); + break; + case SplittingAlgo::HOL_MATCH: + _tree.reset(new HOLSubstitutionTree([](TermList t, bool b = false){ + return !t.isLambdaTerm(); + } )); + break; +#endif + } + +} } // namespace Indexing diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index 14d5ce6578..e20ecaae9f 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -52,23 +52,15 @@ class TermSubstitutionTree using FastGeneralizationsIterator = SubstitutionTree::FastGeneralizationsIterator; #if VHOL using HOLAlgo = UnificationAlgorithms::HOLUnification; + using HOLInstAlgo = UnificationAlgorithms::HOLInstantiation; + using HOLGenAlgo = UnificationAlgorithms::HOLGeneralisation; #endif public: CLASS_NAME(TermSubstitutionTree); USE_ALLOCATOR(TermSubstitutionTree); - /* - * The extra flag is a higher-order concern. it is set to true when - * we require the term query result to include two terms, the result term - * and another. - * - * The main use case is to store a different term in the leaf to the one indexed - * in the tree. This is used for example in Skolemisation on the fly where we - * store Terms of type $o (formulas) in the tree, but in the leaf we store - * the skolem terms used to witness them (to facilitate the reuse of Skolems) - */ - explicit TermSubstitutionTree(bool extra); + explicit TermSubstitutionTree(SplittingAlgo algo = SplittingAlgo::NONE); void handle(TypedTermList t, Literal* lit, Clause* cls, bool adding) { handleTerm(t, LeafData(cls, lit, t), adding); } @@ -94,6 +86,10 @@ class TermSubstitutionTree virtual void output(std::ostream& out) const final override { out << *this; } +#if VHOL + void useExtra(){ _extra = true; } +#endif + private: void handleTerm(TypedTermList tt, LeafData ld, bool insert) @@ -105,12 +101,26 @@ class TermSubstitutionTree return iterTraits(_tree->iterator(query, retrieveSubstitutions, /* reversed */ false, std::move(args)...)) .map([this](auto qr) { return tQueryRes( - _extra ? qr.data->extraTerm : qr.data->term, +#if VHOL + _extra ? qr.data->extraTerm : +#endif + qr.data->term, qr.data->literal, qr.data->clause, std::move(qr.unif)); }) ; } - //higher-order concerns +#if VHOL + /* + * The extra flag is a higher-order concern. it is set to true when + * we require the term query result to include two terms, the result term + * and another. + * + * The main use case is to store a different term in the leaf to the one indexed + * in the tree. This is used for example in Skolemisation on the fly where we + * store Terms of type $o (formulas) in the tree, but in the leaf we store + * the skolem terms used to witness them (to facilitate the reuse of Skolems) + */ bool _extra; +#endif unique_ptr _tree; friend std::ostream& operator<<(std::ostream& out, TermSubstitutionTree const& self) @@ -133,15 +143,19 @@ class TermSubstitutionTree return pvi(getResultIterator>(t, true, MismatchHandler(uwa), fixedPointIteration)); } + TermQueryResultIterator getUnifications(TypedTermList t, bool retrieveSubstitutions) override + { return pvi(getResultIterator>(t, retrieveSubstitutions)); } + #if VHOL TermQueryResultIterator getHOLUnifiers(TypedTermList t) final override - { - return pvi(getResultIterator>(t, true)); - } -#endif + { return pvi(getResultIterator>(t, true)); } - TermQueryResultIterator getUnifications(TypedTermList t, bool retrieveSubstitutions) override - { return pvi(getResultIterator>(t, retrieveSubstitutions)); } + TermQueryResultIterator getHOLInstances(TypedTermList t) final override + { return pvi(getResultIterator>(t, true)); } + + TermQueryResultIterator getHOLGeneralizations(TypedTermList t) final override + { return pvi(getResultIterator>(t, true)); } +#endif }; }; diff --git a/Inferences/BackwardDemodulation.cpp b/Inferences/BackwardDemodulation.cpp index 4a92b43985..45aba4245f 100644 --- a/Inferences/BackwardDemodulation.cpp +++ b/Inferences/BackwardDemodulation.cpp @@ -86,7 +86,12 @@ struct BackwardDemodulation::RewritableClausesFn VirtualIterator > operator() (TermList lhs) { TermList sort = SortHelper::getTermSort(lhs, _lit); - return pvi( pushPairIntoRightIterator(lhs, _index->getInstances(TypedTermList(lhs,sort), true)) ); + return pvi( pushPairIntoRightIterator(lhs, +#if VHOL + env.property->higherOrder() ? + _index->getHOLInstances(TypedTermList(lhs,sort)) : +#endif + _index->getInstances(TypedTermList(lhs,sort), true)) ); } private: DemodulationSubtermIndex* _index; diff --git a/Inferences/ForwardDemodulation.cpp b/Inferences/ForwardDemodulation.cpp index e382184757..2f7a420882 100644 --- a/Inferences/ForwardDemodulation.cpp +++ b/Inferences/ForwardDemodulation.cpp @@ -58,7 +58,11 @@ void ForwardDemodulation::attach(SaturationAlgorithm* salg) CALL("ForwardDemodulation::attach"); ForwardSimplificationEngine::attach(salg); _index=static_cast( - _salg->getIndexManager()->request(DEMODULATION_LHS_CODE_TREE) ); +#if VHOL + env.property->higherOrder() ? + _salg->getIndexManager()->request(DEMODULATION_LHS_SUBST_TREE) : +#endif + _salg->getIndexManager()->request(DEMODULATION_LHS_CODE_TREE) ); _preorderedOnly=getOptions().forwardDemodulation()==Options::Demodulation::PREORDERED; _encompassing = getOptions().demodulationEncompassment(); @@ -69,7 +73,11 @@ void ForwardDemodulation::detach() { CALL("ForwardDemodulation::detach"); _index=0; - _salg->getIndexManager()->release(DEMODULATION_LHS_CODE_TREE); +#if VHOL + env.property->higherOrder() ? + _salg->getIndexManager()->release(DEMODULATION_LHS_SUBST_TREE) : +#endif + _salg->getIndexManager()->release(DEMODULATION_LHS_CODE_TREE); ForwardSimplificationEngine::detach(); } @@ -111,7 +119,13 @@ bool ForwardDemodulation::perform(Clause* cl, Clause*& replacem toplevelCheck &= lit->isPositive() && (cLen == 1); } - TermQueryResultIterator git=_index->getGeneralizations(TypedTermList(trm.term()), true); + TermQueryResultIterator git= +#if VHOL + env.property->higherOrder() ? + _index->getHOLGeneralizations(TypedTermList(trm.term())) : +#endif + _index->getGeneralizations(TypedTermList(trm.term()), true); + while(git.hasNext()) { TermQueryResult qr=git.next(); ASS_EQ(qr.clause->length(),1); @@ -120,22 +134,31 @@ bool ForwardDemodulation::perform(Clause* cl, Clause*& replacem continue; } - // to deal with polymorphic matching - // Ideally, we would like to extend the substitution - // returned by the index to carry out the sort match. - // However, ForwardDemodulation uses a CodeTree as its - // indexing mechanism, and it is not clear how to extend - // the substitution returned by a code tree. static RobSubstitutionTS subst; bool resultTermIsVar = qr.term.isVar(); - if(resultTermIsVar){ - TermList querySort = SortHelper::getTermSort(trm, lit); - TermList eqSort = SortHelper::getEqualityArgumentSort(qr.literal); - subst.reset(); - if(!subst.match(eqSort, 0, querySort, 1)){ - continue; +#if VHOL + // in higher-order case, we use a substitution tree for + // index which does sort checking internally + if(!env.property->higherOrder()){ +#endif + // to deal with polymorphic matching + // Ideally, we would like to extend the substitution + // returned by the index to carry out the sort match. + // However, ForwardDemodulation uses a CodeTree as its + // indexing mechanism, and it is not clear how to extend + // the substitution returned by a code tree. + + if(resultTermIsVar){ + TermList querySort = SortHelper::getTermSort(trm, lit); + TermList eqSort = SortHelper::getEqualityArgumentSort(qr.literal); + subst.reset(); + if(!subst.match(eqSort, 0, querySort, 1)){ + continue; + } } +#if VHOL } +#endif TermList rhs=EqHelper::getOtherEqualitySide(qr.literal,qr.term); TermList rhsS; @@ -144,6 +167,7 @@ bool ForwardDemodulation::perform(Clause* cl, Clause*& replacem //When we apply substitution to the rhs, we get a term, that is //a variant of the term we'd like to get, as new variables are //produced in the substitution application. + ASS(false); // we don't expect to reach here TermList lhsSBadVars = subs->applyToResult(qr.term); TermList rhsSBadVars = subs->applyToResult(rhs); Renaming rNorm, qNorm, qDenorm; @@ -155,10 +179,16 @@ bool ForwardDemodulation::perform(Clause* cl, Clause*& replacem } else { rhsS = subs->applyToBoundResult(rhs); } - if(resultTermIsVar){ - rhsS = subst.apply(rhsS, 0); +#if VHOL + if(!env.property->higherOrder()){ +#endif + if(resultTermIsVar){ + rhsS = subst.apply(rhsS, 0); + } +#if VHOL } - +#endif + Ordering::Result argOrder = ordering.getEqualityArgumentOrder(qr.literal); bool preordered = argOrder==Ordering::LESS || argOrder==Ordering::GREATER; #if VDEBUG diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 11b8f2387c..2f942e0ade 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -643,7 +643,7 @@ bool ApplicativeHelper::isBool(TermList t){ } bool ApplicativeHelper::splittable(TermList t, bool topLevel){ - CALL("ApplicativeHelper::splittable"); + CALL("ApplicativeHelper::splittable1"); if(t.isVar()) return true; diff --git a/Kernel/HOLMatching.cpp b/Kernel/HOLMatching.cpp index 8573c1f490..72fef983c9 100644 --- a/Kernel/HOLMatching.cpp +++ b/Kernel/HOLMatching.cpp @@ -23,12 +23,102 @@ namespace Kernel namespace UnificationAlgorithms { -bool HOLInstantiation::match(TermList term, TermList instance, RobSubstitutionTL* sub) +bool HOLInstantiation::match(TermList base, TermList instance, RobSubstitutionTL* sub) { CALL("HOLInstantiation::match"); - // dummy - return true; +#define DEBUG_MATCH(lvl, ...) if (lvl < 2) DBG("match: ", __VA_ARGS__) + if(sub->sameTermContent(base,instance)) { + return true; + } + + bool mismatch=false; + BacktrackData localBD; + sub->bdRecord(localBD); + + static Stack toDo(64); + ASS(toDo.isEmpty()); + toDo.push(Constraint(base, instance)); + + // add encountered store?? + + // Iteratively resolve matching pairs in toDo + while (toDo.isNonEmpty()) { + auto x = toDo.pop(); + TermList bt = x.lhs(); + TermList it = x.rhs(); + DEBUG_MATCH(1, "next pair: ", tie(bt, it)) + + if(bt.isSpecialVar()) { + auto binding = sub->_bank.find(bt); + if(binding) { + bt = binding.unwrap(); + toDo.push(Constraint(bt,it)); + continue; + } else { + sub->bind(bt, it); + } + } else if(it.isSpecialVar()) { + auto binding = sub->_bank.find(it); + if(binding) { + it = binding.unwrap(); + toDo.push(Constraint(bt,it)); + continue; + } else { + sub->bind(it, bt); + } + } else { + ApplicativeHelper::normaliseLambdaPrefixes(bt,it); + + if (bt.isVar()){ + auto binding = sub->_bank.find(bt); + + if(binding) { + auto b = binding.unwrap(); + if(!TermList::equals(b, it)) + { + mismatch=true; + break; + } + } else { + if(it.containsLooseIndex()){ + mismatch = true; + break; + } + sub->bind(bt, it); + } + } else if (it.isVar()) { + mismatch=true; + break; + } else if (bt.term()->functor() == it.term()->functor()) { + for (unsigned i = 0; i < bt.term()->arity(); i++) { + toDo.push(Constraint(bt.nthArg(i), it.nthArg(i))); + } + } else { + mismatch = true; + break; + } + } + + ASS(!mismatch) + } + + if(mismatch) { + toDo.reset(); + } + + sub->bdDone(); + + if(mismatch) { + localBD.backtrack(); + } else { + if(sub->bdIsRecording()) { + sub->bdCommit(localBD); + } + localBD.drop(); + } + + return !mismatch; } bool HOLInstantiation::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) diff --git a/Kernel/HOLMatching.hpp b/Kernel/HOLMatching.hpp index 478c811eee..2bdd3588b5 100644 --- a/Kernel/HOLMatching.hpp +++ b/Kernel/HOLMatching.hpp @@ -43,7 +43,9 @@ namespace UnificationAlgorithms { class HOLInstantiation { public: - static bool match(TermList term, TermList instance, RobSubstitutionTL* sub); + using Constraint = UnificationConstraint; + + static bool match(TermList base, TermList instance, RobSubstitutionTL* sub); void initSub(RobSubstitutionTL* sub) const { sub->setOutputIndex(VarBank::RESULT_BANK); } diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index dae483ba44..daca4fdc2d 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -196,6 +196,9 @@ TermSpecOrList RobSubstitution::deref(TermSpecOrLi const_cast(*this).bind(v, getUnboundVar()); return _bank.get(v); } else { + cout << *this << endl; + cout << "v " << v << " index " << v.bank() << endl; + cout << "output bank " << _outputIndex << endl; ASS_REP(v.bank() == _outputIndex, "variable bound index different from _outputIndex. This probably means you either called the wrong operations (e.g. unify) after using setOutputIndex, or you are trying to apply the substitution to a variable that was not bound by this substitution (e.g. by calling RobSubstitution::match or so)") return v; } @@ -415,6 +418,7 @@ bool RobSubstitution::match(TermSpecOrList base, T { CALL("RobSubstitution::match(TermSpec...)"); +#define DEBUG_MATCH(lvl, ...) if (lvl < 0) DBG("match: ", __VA_ARGS__) if(sameTermContent(base,instance)) { return true; } @@ -434,13 +438,11 @@ bool RobSubstitution::match(TermSpecOrList base, T auto x = toDo.pop(); TermSpecOrList bt = x.lhs(); TermSpecOrList it = x.rhs(); - DEBUG_UNIFY(1, "next pair: ", tie(bt, it)) + DEBUG_MATCH(1, "next pair: ", tie(bt, it)) // If they have the same content then skip // (note that sameTermContent is best-effort) - if (sameTermContent(bt,it)) { - - } else if(bt.isSpecialVar()) { + if(bt.isSpecialVar()) { auto binding = _bank.find(bt); if(binding) { bt = binding.unwrap(); @@ -474,7 +476,7 @@ bool RobSubstitution::match(TermSpecOrList base, T } else if (it.isVar()) { mismatch=true; break; - } else if (bt.isTerm() && it.isTerm() && bt.term()->functor() == it.term()->functor()) { + } else if (bt.term()->functor() == it.term()->functor()) { for (unsigned i = 0; i < bt.term()->arity(); i++) { toDo.push(Constraint(bt.nthArg(i), it.nthArg(i))); } diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 13ccb7fa0b..ced170337a 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -75,7 +75,7 @@ void Term::destroy () { CALL("Term::destroy"); ASS(CHECK_LEAKS || ! shared()); - + size_t sz = sizeof(Term)+_arity*sizeof(TermList)+getPreDataSize(); void* mem = this; mem = reinterpret_cast(reinterpret_cast(mem)-getPreDataSize()); @@ -648,6 +648,36 @@ bool Term::isPlaceholder() const { return !isSort() && !isLiteral() && !isSpecial() && env.signature->isPlaceholder(_functor); } +bool TermList::containsLooseIndex() const { + CALL("TermList::containsLooseIndex()"); + + struct TermListWD { + TermList t; + unsigned depth; + }; + + Stack toDo; + toDo.push( TermListWD { .t = *this, .depth = 0, }); + + while(!toDo.isEmpty()){ + auto item = toDo.pop(); + unsigned dep = item.depth; + if(item.t.deBruijnIndex().isSome()){ + unsigned idx = item.t.deBruijnIndex().unwrap(); + if(idx >= dep) + { return true; } + } + if(item.t.isLambdaTerm()){ + toDo.push(TermListWD { .t = item.t.lambdaBody(), .depth = dep + 1, } ); + } + if(item.t.isApplication()){ + toDo.push(TermListWD { .t = item.t.lhs(), .depth = dep, } ); + toDo.push(TermListWD { .t = item.t.rhs(), .depth = dep, } ); + } + } + return false; +} + Option TermList::deBruijnIndex() const { CALL("TermList::deBruijnIndex"); return isVar() ? Option() : term()->deBruijnIndex(); diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index f931091261..39a5415db7 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -261,6 +261,7 @@ class TermList { bool isImp() const; bool isEquals() const; bool isPlaceholder() const; + bool containsLooseIndex() const; Option deBruijnIndex() const; TermList lhs() const; TermList rhs() const; diff --git a/UnitTests/tHOLMatching.cpp b/UnitTests/tHOLMatching.cpp new file mode 100644 index 0000000000..193b422968 --- /dev/null +++ b/UnitTests/tHOLMatching.cpp @@ -0,0 +1,231 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +#if VHOL + +#include "Forwards.hpp" +#include "Indexing/SubstitutionTree.hpp" +#include "Lib/Environment.hpp" + +#include "Shell/Options.hpp" +#include "Test/TestUtils.hpp" + +#include "Kernel/Unit.hpp" +#include "Kernel/Clause.hpp" +#include "Kernel/Inference.hpp" +#include "Kernel/Problem.hpp" +#include "Kernel/Signature.hpp" +#include "Kernel/Term.hpp" +#include "Kernel/OperatorType.hpp" +#include "Kernel/SortHelper.hpp" +#include "Kernel/RobSubstitution.hpp" +#include "Kernel/MismatchHandler.hpp" + +#include "Indexing/Index.hpp" +#include "Indexing/LiteralSubstitutionTree.hpp" +#include "Indexing/LiteralIndex.hpp" +#include "Indexing/TermSubstitutionTree.hpp" +#include "Indexing/TermIndex.hpp" +#include "Shell/LambdaConversion.hpp" + +#include "Test/UnitTesting.hpp" +#include "Test/SyntaxSugar.hpp" + +#include + + +using namespace Kernel; +using namespace Indexing; + +#define TODO ASSERTION_VIOLATION_REP("TODO") + +TypedTermList toDeBrs(TermList t){ + CALL("toDeBrs"); + ASS(!t.isVar()); + + auto converted = LambdaConversion().convertLambda(t); + auto sort = SortHelper::getResultSort(converted.term()); + return TypedTermList(converted, sort); +} + +Clause* unt(Literal* lit) +{ + return clause({ lit }); +} + +unique_ptr getIndexTerm() +{ return std::make_unique(SplittingAlgo::HOL_MATCH); } + +auto getIndexLiteral() +{ return std::make_unique(); } + +template +struct MatchingResultSpec { + TermOrLit querySigma; + TermOrLit resultSigma; + + friend bool operator==(MatchingResultSpec const& l, MatchingResultSpec const& r) + { + return Test::TestUtils::eqModAC(l.querySigma, r.querySigma) + && Test::TestUtils::eqModAC(l.resultSigma, r.resultSigma); + } + + friend std::ostream& operator<<(std::ostream& out, MatchingResultSpec const& self) + { + return out << "{ querySigma = " << Test::pretty(self.querySigma) << ", resultSigma = " << Test::pretty(self.resultSigma); + } +}; + +using TermMatchingResultSpec = MatchingResultSpec; +using LiteralMatchingResultSpec = MatchingResultSpec; + +template +void checkLiteralMatches(LiteralSubstitutionTree& index, Literal* lit, Stack expected, F unifFun) +{ + Stack is; + for (auto qr : iterTraits(unifFun(index, lit)) ) { + is.push(TermMatchingResultSpec { + .querySigma = qr.unifier->apply(lit, QUERY_BANK), + .resultSigma = qr.unifier->apply(qr.literal, RESULT_BANK) + }); + } + if (Test::TestUtils::permEq(is, expected, [](auto& l, auto& r) { return l == r; })) { + cout << "[ OK ] " << *lit << endl; + } else { + cout << "[ FAIL ] " << *lit << endl; + cout << "tree: " << multiline(index, 1) << endl; + cout << "query: " << *lit << endl; + + cout << "is:" << endl; + for (auto& x : is) + cout << " " << x << endl; + + cout << "expected:" << endl; + for (auto& x : expected) + cout << " " << x << endl; + + exit(-1); + } + // cout << endl; +} + +void checkTermMatches(TermSubstitutionTree& index, TypedTermList term, Stack expected, bool instances) +{ + CALL("checkTermMatchesWithUnifFun(TermSubstitutionTree& index, TermList term, Stack expected, bool instances)") + + auto it = iterTraits(instances ? index.getHOLInstances(term) : index.getHOLGeneralizations(term) ); + + Stack is; + for (auto qr : it) { + is.push(TermMatchingResultSpec { + .querySigma = instances ? qr.unifier->applyTo(term, QUERY_BANK) : term, + .resultSigma = instances ? qr.term : qr.unifier->applyTo(qr.term, RESULT_BANK) + }); + } + if (Test::TestUtils::permEq(is, expected, [](auto& l, auto& r) { return l == r; })) { + cout << "[ OK ] " << term << endl; + } else { + cout << "[ FAIL ] " << term << endl; + + cout << "tree: " << multiline(index, 1) << endl; + cout << "query: " << term << endl; + + cout << "is:" << endl; + for (auto& x : is) + cout << " " << x << endl; + + cout << "expected:" << endl; + for (auto& x : expected) + cout << " " << x << endl; + + exit(-1); + } + // cout << endl; +} + +void checkTermInstances(TermSubstitutionTree& index, TypedTermList term, Stack expected) +{ + checkTermMatches(index, term, expected, true); +} + +void checkTermGeneralizations(TermSubstitutionTree& index, TypedTermList term, Stack expected) +{ + checkTermMatches(index, term, expected,false); +} + + +struct IndTest { + unique_ptr index; + Stack insert; + TermSugar query; + Stack expected; + bool instantiation; + + void run() { + CALL("IndexTest::run") + + env.options->set("pretty_hol_printing","pretty"); + + DECL_PRED(dummy, Stack()) + for (auto x : this->insert) { + index->insert(x, dummy(), unt(dummy())); + } + + if(instantiation){ + checkTermInstances(*this->index, TypedTermList(this->query, this->query.sort()),this->expected); + } else { + checkTermGeneralizations(*this->index, TypedTermList(this->query, this->query.sort()),this->expected); + } + } +}; + + +#define HOL_SUGAR \ + __ALLOW_UNUSED( \ + DECL_SORT(srt) \ + DECL_DEFAULT_VARS \ + DECL_DEFAULT_SORT_VARS \ + DECL_HOL_VAR(x0, 0, srt) \ + DECL_HOL_VAR(x1, 1, srt) \ + DECL_HOL_VAR(x2, 2, arrow(srt,srt)) \ + DECL_HOL_VAR(x3, 3, arrow(srt,srt)) \ + DECL_CONST(a,srt) \ + DECL_CONST(b,srt) \ + DECL_CONST(f,arrow(srt,srt)) \ + DECL_CONST(g,arrow(srt,srt)) \ + ) \ + + +#define RUN_TEST(name, sugar, ...) \ + TEST_FUN(name) { \ + __ALLOW_UNUSED(sugar) \ + __VA_ARGS__.run(); \ + } \ + +RUN_TEST(hol_matching_inst_01, + HOL_SUGAR, + IndTest { + .index = getIndexTerm(), + .insert = { + toDeBrs(lam(x1, ap(f, x1))), + }, + .query = x2, + .instantiation = true, + .expected = { + + TermMatchingResultSpec + { .querySigma = f, + .resultSigma = toDeBrs(lam(x1, ap(f, x1))) + } + + }, + }) + + +#endif \ No newline at end of file diff --git a/UnitTests/tInduction.cpp b/UnitTests/tInduction.cpp index 4a7b9c57b6..eefe70a758 100644 --- a/UnitTests/tInduction.cpp +++ b/UnitTests/tInduction.cpp @@ -35,11 +35,11 @@ LiteralIndex* comparisonIndex() { } TermIndex* intInductionIndex() { - return new InductionTermIndex(new TermSubstitutionTree(/* extra */ false)); + return new InductionTermIndex(new TermSubstitutionTree()); } TermIndex* structInductionIndex() { - return new StructInductionTermIndex(new TermSubstitutionTree(/* extra */ false)); + return new StructInductionTermIndex(new TermSubstitutionTree()); } Stack getIndices() { diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index d18bf17a2e..e7b81f0aa3 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -60,9 +60,14 @@ Clause* unit(Literal* lit) unique_ptr getTermIndex() { - return std::make_unique(/* extra */ false); + return std::make_unique(); } +#if VHOL + unique_ptr getHOLTermIndex() + { return std::make_unique(SplittingAlgo::HOL_UNIF); } +#endif + auto getLiteralIndex() { return std::make_unique(); } @@ -727,7 +732,7 @@ TEST_FUN(higher_order) env.options->set("pretty_hol_printing","pretty"); env.options->set("func_ext", "abstraction"); - auto index = getTermIndex(); + auto index = getHOLTermIndex(); index->insert(ap(f,a), 0, 0); @@ -777,7 +782,7 @@ TEST_FUN(higher_order2) env.options->set("pretty_hol_printing","pretty"); env.options->set("func_ext", "abstraction"); - auto index = getTermIndex(); + auto index = getHOLTermIndex(); DECL_DEFAULT_SORT_VARS DECL_SORT(srt) @@ -831,7 +836,7 @@ TEST_FUN(higher_order3) env.options->set("pretty_hol_printing","pretty"); env.options->set("func_ext", "abstraction"); - auto index = getTermIndex(); + auto index = getHOLTermIndex(); DECL_DEFAULT_SORT_VARS DECL_SORT(srt) @@ -861,7 +866,7 @@ TEST_FUN(higher_order4) env.options->set("pretty_hol_printing","pretty"); env.options->set("func_ext", "abstraction"); - auto index = getTermIndex(); + auto index = getHOLTermIndex(); DECL_DEFAULT_SORT_VARS DECL_SORT(srt) @@ -886,7 +891,7 @@ TEST_FUN(higher_order5) env.options->set("pretty_hol_printing","pretty"); env.options->set("func_ext", "abstraction"); - auto index = getTermIndex(); + auto index = getHOLTermIndex(); DECL_DEFAULT_SORT_VARS DECL_SORT(srt) @@ -913,7 +918,7 @@ TEST_FUN(higher_order6) env.options->set("pretty_hol_printing","pretty"); env.options->set("func_ext", "abstraction"); - auto index = getTermIndex(); + auto index = getHOLTermIndex(); DECL_DEFAULT_SORT_VARS DECL_SORT(srt) @@ -946,7 +951,7 @@ TEST_FUN(higher_order7) env.options->set("pretty_hol_printing","pretty"); env.options->set("func_ext", "abstraction"); - auto index = getTermIndex(); + auto index = getHOLTermIndex(); DECL_DEFAULT_SORT_VARS DECL_SORT(srt) @@ -971,7 +976,7 @@ TEST_FUN(higher_order8) env.options->set("pretty_hol_printing","pretty"); env.options->set("func_ext", "abstraction"); env.options->set("print_var_banks", "true"); - auto index = getTermIndex(); + auto index = getHOLTermIndex(); DECL_DEFAULT_SORT_VARS DECL_SORT(srt) From 4fbe7a153c261832d68ed11a8bd6fab312f12f59 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 16 May 2023 16:14:58 +0100 Subject: [PATCH 068/210] was atempting complex matching procedure. going to revert, but committing first in case I ever want to revive --- Indexing/TermSubstitutionTree.cpp | 2 +- Kernel/HOLMatching.cpp | 86 ++++++++++++++++++++++--------- Kernel/HOLUnification.cpp | 2 +- UnitTests/tHOLMatching.cpp | 22 +++++++- 4 files changed, 84 insertions(+), 28 deletions(-) diff --git a/Indexing/TermSubstitutionTree.cpp b/Indexing/TermSubstitutionTree.cpp index 2b85a34172..39a60afe26 100644 --- a/Indexing/TermSubstitutionTree.cpp +++ b/Indexing/TermSubstitutionTree.cpp @@ -44,7 +44,7 @@ TermSubstitutionTree::TermSubstitutionTree(SplittingAlgo algo) break; case SplittingAlgo::HOL_MATCH: _tree.reset(new HOLSubstitutionTree([](TermList t, bool b = false){ - return !t.isLambdaTerm(); + return !t.isLambdaTerm() && !t.head().isVar(); } )); break; #endif diff --git a/Kernel/HOLMatching.cpp b/Kernel/HOLMatching.cpp index 72fef983c9..b55ff866f3 100644 --- a/Kernel/HOLMatching.cpp +++ b/Kernel/HOLMatching.cpp @@ -67,42 +67,78 @@ bool HOLInstantiation::match(TermList base, TermList instance, RobSubstitutionTL } else { sub->bind(it, bt); } - } else { - ApplicativeHelper::normaliseLambdaPrefixes(bt,it); - - if (bt.isVar()){ - auto binding = sub->_bank.find(bt); - - if(binding) { - auto b = binding.unwrap(); - if(!TermList::equals(b, it)) - { - mismatch=true; - break; + } else if (bt.isVar()){ + auto binding = sub->_bank.find(bt); + + if(binding) { + auto b = binding.unwrap(); + if(!TermList::equals(b, it)) + { + mismatch=true; + break; + } + } else { + if(it.containsLooseIndex()){ + mismatch = true; + break; + } + sub->bind(bt, it); + } + } else if (it.isVar()) { + mismatch=true; + break; + } else if(it.term()->functor() == bt.term()->functor()) { + + if(bt.isApplication()){ + TermList head; + TermStack args; + ApplicativeHelper::getHeadAndArgs(bt, head, args); + + bool modified = false; + + while(head.isVar()){ + auto binding = sub->_bank.find(head); + if(binding.isSome() && binding->isLambdaTerm()){ + ASS(binding->term()->shared()); + if(binding->term()->ground()){ + modified = true; + bt = RedexReducer().reduce(*binding, args); + } else { + mismatch = true; + goto after_loop; + } + } - } else { - if(it.containsLooseIndex()){ - mismatch = true; + if(bt.isApplication()){ + ApplicativeHelper::getHeadAndArgs(bt, head, args); + } else { break; } - sub->bind(bt, it); } - } else if (it.isVar()) { - mismatch=true; - break; - } else if (bt.term()->functor() == it.term()->functor()) { - for (unsigned i = 0; i < bt.term()->arity(); i++) { - toDo.push(Constraint(bt.nthArg(i), it.nthArg(i))); + + + if(modified){ + toDo.push(Constraint(bt,it)); + continue; } - } else { - mismatch = true; - break; + } + + + for (unsigned i = 0; i < bt.term()->arity(); i++) { + toDo.push(Constraint(bt.nthArg(i), it.nthArg(i))); + } + } else { + // head mismatch, can't match + mismatch = true; + break; } ASS(!mismatch) } +after_loop: + if(mismatch) { toDo.reset(); } diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 7fa0498006..b95d01a55b 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -508,7 +508,7 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool spl if(res == OracleResult::OUT_OF_FRAGMENT) sub->pushConstraint(UnificationConstraint(dt2, dt1)); - } else if(dt1.isTerm() && dt2.isTerm() && dt1.term()->functor() == dt2.term()->functor()) { + } else if(dt1.term()->functor() == dt2.term()->functor()) { if(dt1.isApplication()){ ASS(dt2.isApplication()); diff --git a/UnitTests/tHOLMatching.cpp b/UnitTests/tHOLMatching.cpp index 193b422968..16721dc62d 100644 --- a/UnitTests/tHOLMatching.cpp +++ b/UnitTests/tHOLMatching.cpp @@ -199,6 +199,7 @@ struct IndTest { DECL_CONST(b,srt) \ DECL_CONST(f,arrow(srt,srt)) \ DECL_CONST(g,arrow(srt,srt)) \ + DECL_CONST(h,arrow(srt,arrow(arrow(srt,srt),srt))) \ ) \ @@ -220,12 +221,31 @@ RUN_TEST(hol_matching_inst_01, .expected = { TermMatchingResultSpec - { .querySigma = f, + { .querySigma = toDeBrs(lam(x1, ap(f, x1))), .resultSigma = toDeBrs(lam(x1, ap(f, x1))) } }, }) +RUN_TEST(hol_matching_inst_02, + HOL_SUGAR, + IndTest { + .index = getIndexTerm(), + .insert = { + toDeBrs(ap(ap(h, a), lam(x1,x1))), + }, + .query = ap(ap(h, ap(x2,a)), x2), + .instantiation = true, + .expected = { + + TermMatchingResultSpec + { .querySigma = toDeBrs(ap(ap(h, ap(lam(x1, x1),a)), lam(x1,x1))), + .resultSigma = toDeBrs(ap(ap(h, a), lam(x1, x1))) + } + + }, + }) + #endif \ No newline at end of file From e6f17cc553a6dbfc0368fa754afaf5c7425c589b Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 16 May 2023 16:15:15 +0100 Subject: [PATCH 069/210] reverting matching algo Revert "was atempting complex matching procedure. going to revert, but committing first in case I ever want to revive" This reverts commit 4fbe7a153c261832d68ed11a8bd6fab312f12f59. --- Indexing/TermSubstitutionTree.cpp | 2 +- Kernel/HOLMatching.cpp | 86 +++++++++---------------------- Kernel/HOLUnification.cpp | 2 +- UnitTests/tHOLMatching.cpp | 22 +------- 4 files changed, 28 insertions(+), 84 deletions(-) diff --git a/Indexing/TermSubstitutionTree.cpp b/Indexing/TermSubstitutionTree.cpp index 39a60afe26..2b85a34172 100644 --- a/Indexing/TermSubstitutionTree.cpp +++ b/Indexing/TermSubstitutionTree.cpp @@ -44,7 +44,7 @@ TermSubstitutionTree::TermSubstitutionTree(SplittingAlgo algo) break; case SplittingAlgo::HOL_MATCH: _tree.reset(new HOLSubstitutionTree([](TermList t, bool b = false){ - return !t.isLambdaTerm() && !t.head().isVar(); + return !t.isLambdaTerm(); } )); break; #endif diff --git a/Kernel/HOLMatching.cpp b/Kernel/HOLMatching.cpp index b55ff866f3..72fef983c9 100644 --- a/Kernel/HOLMatching.cpp +++ b/Kernel/HOLMatching.cpp @@ -67,78 +67,42 @@ bool HOLInstantiation::match(TermList base, TermList instance, RobSubstitutionTL } else { sub->bind(it, bt); } - } else if (bt.isVar()){ - auto binding = sub->_bank.find(bt); - - if(binding) { - auto b = binding.unwrap(); - if(!TermList::equals(b, it)) - { - mismatch=true; - break; - } - } else { - if(it.containsLooseIndex()){ - mismatch = true; - break; - } - sub->bind(bt, it); - } - } else if (it.isVar()) { - mismatch=true; - break; - } else if(it.term()->functor() == bt.term()->functor()) { - - if(bt.isApplication()){ - TermList head; - TermStack args; - ApplicativeHelper::getHeadAndArgs(bt, head, args); - - bool modified = false; - - while(head.isVar()){ - auto binding = sub->_bank.find(head); - if(binding.isSome() && binding->isLambdaTerm()){ - ASS(binding->term()->shared()); - if(binding->term()->ground()){ - modified = true; - bt = RedexReducer().reduce(*binding, args); - } else { - mismatch = true; - goto after_loop; - } - + } else { + ApplicativeHelper::normaliseLambdaPrefixes(bt,it); + + if (bt.isVar()){ + auto binding = sub->_bank.find(bt); + + if(binding) { + auto b = binding.unwrap(); + if(!TermList::equals(b, it)) + { + mismatch=true; + break; } - if(bt.isApplication()){ - ApplicativeHelper::getHeadAndArgs(bt, head, args); - } else { + } else { + if(it.containsLooseIndex()){ + mismatch = true; break; } + sub->bind(bt, it); } - - - if(modified){ - toDo.push(Constraint(bt,it)); - continue; + } else if (it.isVar()) { + mismatch=true; + break; + } else if (bt.term()->functor() == it.term()->functor()) { + for (unsigned i = 0; i < bt.term()->arity(); i++) { + toDo.push(Constraint(bt.nthArg(i), it.nthArg(i))); } - - } - - - for (unsigned i = 0; i < bt.term()->arity(); i++) { - toDo.push(Constraint(bt.nthArg(i), it.nthArg(i))); + } else { + mismatch = true; + break; } - } else { - // head mismatch, can't match - mismatch = true; - break; } ASS(!mismatch) } -after_loop: - if(mismatch) { toDo.reset(); } diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index b95d01a55b..7fa0498006 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -508,7 +508,7 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool spl if(res == OracleResult::OUT_OF_FRAGMENT) sub->pushConstraint(UnificationConstraint(dt2, dt1)); - } else if(dt1.term()->functor() == dt2.term()->functor()) { + } else if(dt1.isTerm() && dt2.isTerm() && dt1.term()->functor() == dt2.term()->functor()) { if(dt1.isApplication()){ ASS(dt2.isApplication()); diff --git a/UnitTests/tHOLMatching.cpp b/UnitTests/tHOLMatching.cpp index 16721dc62d..193b422968 100644 --- a/UnitTests/tHOLMatching.cpp +++ b/UnitTests/tHOLMatching.cpp @@ -199,7 +199,6 @@ struct IndTest { DECL_CONST(b,srt) \ DECL_CONST(f,arrow(srt,srt)) \ DECL_CONST(g,arrow(srt,srt)) \ - DECL_CONST(h,arrow(srt,arrow(arrow(srt,srt),srt))) \ ) \ @@ -221,31 +220,12 @@ RUN_TEST(hol_matching_inst_01, .expected = { TermMatchingResultSpec - { .querySigma = toDeBrs(lam(x1, ap(f, x1))), + { .querySigma = f, .resultSigma = toDeBrs(lam(x1, ap(f, x1))) } }, }) -RUN_TEST(hol_matching_inst_02, - HOL_SUGAR, - IndTest { - .index = getIndexTerm(), - .insert = { - toDeBrs(ap(ap(h, a), lam(x1,x1))), - }, - .query = ap(ap(h, ap(x2,a)), x2), - .instantiation = true, - .expected = { - - TermMatchingResultSpec - { .querySigma = toDeBrs(ap(ap(h, ap(lam(x1, x1),a)), lam(x1,x1))), - .resultSigma = toDeBrs(ap(ap(h, a), lam(x1, x1))) - } - - }, - }) - #endif \ No newline at end of file From ed0e2a9487d318cfe8cdcd279e7f5f20695676e6 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 17 May 2023 12:48:59 +0100 Subject: [PATCH 070/210] adding literal matching and updating various subsumption inferences. these are untested as yet --- Indexing/IndexManager.cpp | 53 +++++++++++++++++++-------- Indexing/IndexManager.hpp | 1 - Indexing/LiteralIndex.hpp | 12 ++++++ Indexing/LiteralIndexingStructure.hpp | 9 +++++ Indexing/LiteralSubstitutionTree.cpp | 35 +++++++++++++++--- Indexing/LiteralSubstitutionTree.hpp | 28 +++++++++----- Inferences/CNFOnTheFly.cpp | 2 +- Kernel/Matcher.hpp | 46 ++++++++++++++--------- Saturation/SaturationAlgorithm.cpp | 11 ++---- UnitTests/tHOLMatching.cpp | 39 ++++++++++++++++++++ 10 files changed, 179 insertions(+), 57 deletions(-) diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 63a3f01957..83b5a0e14a 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -118,14 +118,28 @@ Index* IndexManager::create(IndexType t) res = new BinaryResolutionIndex(new LiteralSubstitutionTree()); isGenerating = true; break; - case BACKWARD_SUBSUMPTION_SUBST_TREE: - res = new BackwardSubsumptionIndex(new LiteralSubstitutionTree()); + case BACKWARD_SUBSUMPTION_SUBST_TREE: { + auto lst = +#if VHOL + env.property->higherOrder() ? + new LiteralSubstitutionTree(SplittingAlgo::HOL_MATCH) : +#endif + new LiteralSubstitutionTree(); + res = new BackwardSubsumptionIndex(lst); isGenerating = false; break; - case FW_SUBSUMPTION_UNIT_CLAUSE_SUBST_TREE: - res = new UnitClauseLiteralIndex(new LiteralSubstitutionTree()); + } + case FW_SUBSUMPTION_UNIT_CLAUSE_SUBST_TREE: { + auto lst = +#if VHOL + env.property->higherOrder() ? + new LiteralSubstitutionTree(SplittingAlgo::HOL_MATCH) : +#endif + new LiteralSubstitutionTree(); + res = new UnitClauseLiteralIndex(lst); isGenerating = false; break; + } case URR_UNIT_CLAUSE_SUBST_TREE: res = new UnitClauseLiteralIndex(new LiteralSubstitutionTree()); isGenerating = true; @@ -156,7 +170,7 @@ Index* IndexManager::create(IndexType t) #if VHOL case SKOLEMISING_FORMULA_INDEX: { - auto tis = new TermSubstitutionTree(); + auto tis = new TermSubstitutionTree(SplittingAlgo::HOL_MATCH); tis->useExtra(); res = new SkolemisingFormulaIndex(tis); isGenerating = false; @@ -173,7 +187,7 @@ Index* IndexManager::create(IndexType t) auto tis= #if VHOL env.property->higherOrder() ? - new TermSubstitutionTree(SplittingAlgo::HOL_MATCH) : + new TermSubstitutionTree(SplittingAlgo::HOL_MATCH) : #endif new TermSubstitutionTree(); #if VHOL @@ -204,20 +218,29 @@ Index* IndexManager::create(IndexType t) isGenerating = false; break; - case FW_SUBSUMPTION_CODE_TREE: - res = new CodeTreeSubsumptionIndex(); - isGenerating = false; - break; - - case FW_SUBSUMPTION_SUBST_TREE: - res = new FwSubsSimplifyingLiteralIndex(new LiteralSubstitutionTree()); + case FW_SUBSUMPTION_SUBST_TREE: { + auto lst = +#if VHOL + env.property->higherOrder() ? + new LiteralSubstitutionTree(SplittingAlgo::HOL_MATCH) : +#endif + new LiteralSubstitutionTree(); + res = new FwSubsSimplifyingLiteralIndex(lst); isGenerating = false; break; + } - case FSD_SUBST_TREE: - res = new FSDLiteralIndex(new LiteralSubstitutionTree()); + case FSD_SUBST_TREE: { + auto lst = +#if VHOL + env.property->higherOrder() ? + new LiteralSubstitutionTree(SplittingAlgo::HOL_MATCH) : +#endif + new LiteralSubstitutionTree(); + res = new FSDLiteralIndex(lst); isGenerating = false; break; + } case REWRITE_RULE_SUBST_TREE: res = new RewriteRuleIndex(new LiteralSubstitutionTree(), _alg->getOrdering()); diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index 30b400c1ba..1ef9202910 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -46,7 +46,6 @@ enum IndexType { DEMODULATION_LHS_CODE_TREE, DEMODULATION_LHS_SUBST_TREE, - FW_SUBSUMPTION_CODE_TREE, FW_SUBSUMPTION_SUBST_TREE, BW_SUBSUMPTION_SUBST_TREE, diff --git a/Indexing/LiteralIndex.hpp b/Indexing/LiteralIndex.hpp index 9be6595019..96ab090436 100644 --- a/Indexing/LiteralIndex.hpp +++ b/Indexing/LiteralIndex.hpp @@ -47,6 +47,18 @@ class LiteralIndex SLQueryResultIterator getInstances(Literal* lit, bool complementary, bool retrieveSubstitutions = true); +#if VHOL + + SLQueryResultIterator getHOLInstances(Literal* lit, + bool complementary, bool retrieveSubstitutions = true) + { return _is->getHOLInstances(lit, complementary, retrieveSubstitutions); } + + SLQueryResultIterator getHOLGeneralizations(Literal* lit, + bool complementary, bool retrieveSubstitutions = true) + { return _is->getHOLGeneralizations(lit, complementary, retrieveSubstitutions); } + +#endif + size_t getUnificationCount(Literal* lit, bool complementary); diff --git a/Indexing/LiteralIndexingStructure.hpp b/Indexing/LiteralIndexingStructure.hpp index 42cf5e9252..183add9374 100644 --- a/Indexing/LiteralIndexingStructure.hpp +++ b/Indexing/LiteralIndexingStructure.hpp @@ -44,6 +44,15 @@ class LiteralIndexingStructure { virtual SLQueryResultIterator getVariants(Literal* lit, bool complementary, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } +#if VHOL + virtual SLQueryResultIterator getHOLGeneralizations(Literal* lit, + bool complementary, bool retrieveSubstitutions = true) + { NOT_IMPLEMENTED; } + virtual SLQueryResultIterator getHOLInstances(Literal* lit, + bool complementary, bool retrieveSubstitutions = true) + { NOT_IMPLEMENTED; } +#endif + virtual size_t getUnificationCount(Literal* lit, bool complementary) { CALL("LiteralIndexingStructure::getUnificationCount"); diff --git a/Indexing/LiteralSubstitutionTree.cpp b/Indexing/LiteralSubstitutionTree.cpp index 4b5abe032d..b8da7c5caf 100644 --- a/Indexing/LiteralSubstitutionTree.cpp +++ b/Indexing/LiteralSubstitutionTree.cpp @@ -14,6 +14,7 @@ #include "Forwards.hpp" #include "Indexing/SubstitutionTree.hpp" +#include "Indexing/HOLSubstitutionTree.hpp" #include "Kernel/MismatchHandler.hpp" #include "Lib/Environment.hpp" #include "Lib/Metaiterators.hpp" @@ -23,6 +24,7 @@ #include "Kernel/SortHelper.hpp" #include "Kernel/Term.hpp" #include "Kernel/TermIterators.hpp" +#include "Kernel/ApplicativeHelper.hpp" #include "Shell/Statistics.hpp" @@ -31,8 +33,8 @@ namespace Indexing { -LiteralSubstitutionTree::LiteralSubstitutionTree() -: _trees(env.signature->predicates() * 2) +LiteralSubstitutionTree::LiteralSubstitutionTree(SplittingAlgo algo) +: _algo(algo), _trees(env.signature->predicates() * 2) { } SLQueryResultIterator LiteralSubstitutionTree::getUnifications(Literal* lit, bool complementary, bool retrieveSubstitutions) @@ -44,12 +46,19 @@ SLQueryResultIterator LiteralSubstitutionTree::getGeneralizations(Literal* lit, SLQueryResultIterator LiteralSubstitutionTree::getInstances(Literal* lit, bool complementary, bool retrieveSubstitutions) { return getResultIterator(lit, complementary, retrieveSubstitutions); } +#if VHOL + SLQueryResultIterator LiteralSubstitutionTree::getHOLInstances(Literal* lit, bool complementary, bool retrieveSubstitutions) + { return getResultIterator>(lit, complementary, retrieveSubstitutions); } + + SLQueryResultIterator LiteralSubstitutionTree::getHOLGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions) + { return getResultIterator>(lit, complementary, retrieveSubstitutions); } +#endif SLQueryResultIterator LiteralSubstitutionTree::getVariants(Literal* query, bool complementary, bool retrieveSubstitutions) { CALL("LiteralSubstitutionTree::getVariants"); - return pvi(iterTraits(getTree(query, complementary).getVariants(query, retrieveSubstitutions)) + return pvi(iterTraits(getTree(query, complementary)->getVariants(query, retrieveSubstitutions)) .map([](auto qr) { return SLQueryResult(qr.data->literal, qr.data->clause, qr.unif); })); } @@ -60,17 +69,31 @@ SLQueryResultIterator LiteralSubstitutionTree::getAll() return pvi( iterTraits(getRangeIterator((unsigned long)0, _trees.size())) - .flatMap([this](auto i) { return LeafIterator(&_trees[i]); }) + .flatMap([this](auto i) { return LeafIterator(_trees[i]); }) .flatMap([](Leaf* l) { return l->allChildren(); }) .map([](auto ld) { return SLQueryResult(ld->literal, ld->clause, ResultSubstitutionSP()); }) ); } -SubstitutionTree& LiteralSubstitutionTree::getTree(Literal* lit, bool complementary) +SubstitutionTree* LiteralSubstitutionTree::getTree(Literal* lit, bool complementary) { auto idx = complementary ? lit->header() : lit->complementaryHeader(); while (idx >= _trees.size()) { - _trees.push(SubstitutionTree()); + switch(_algo){ + case SplittingAlgo::NONE: + _trees.push(new SubstitutionTree()); + break; + #if VHOL + case SplittingAlgo::HOL_UNIF: + _trees.push(new HOLSubstitutionTree(ApplicativeHelper::splittable)); + break; + case SplittingAlgo::HOL_MATCH: + _trees.push(new HOLSubstitutionTree([](TermList t, bool b = false){ + return !t.isLambdaTerm(); + } )); + break; + #endif + } } return _trees[idx]; } diff --git a/Indexing/LiteralSubstitutionTree.hpp b/Indexing/LiteralSubstitutionTree.hpp index 8ef6afcff0..31966379fd 100644 --- a/Indexing/LiteralSubstitutionTree.hpp +++ b/Indexing/LiteralSubstitutionTree.hpp @@ -38,23 +38,32 @@ class LiteralSubstitutionTree using Leaf = SubstitutionTree::Leaf; using AbstractingAlgo = UnificationAlgorithms::AbstractingUnification; using RobAlgo = UnificationAlgorithms::RobUnification; +#if VHOL + using HOLInstAlgo = UnificationAlgorithms::HOLInstantiation; + using HOLGenAlgo = UnificationAlgorithms::HOLGeneralisation; +#endif public: CLASS_NAME(LiteralSubstitutionTree); USE_ALLOCATOR(LiteralSubstitutionTree); - LiteralSubstitutionTree(); + LiteralSubstitutionTree(SplittingAlgo algo = SplittingAlgo::NONE); void insert(Literal* lit, Clause* cls) override { handleLiteral(lit, cls, /* insert */ true); } void remove(Literal* lit, Clause* cls) override { handleLiteral(lit, cls, /* insert */ false); } SLQueryResultIterator getAll() final override; void handleLiteral(Literal* lit, Clause* cls, bool insert) - { getTree(lit, /* complementary */ false).handle(lit, SubstitutionTree::LeafData(cls, lit), insert); } + { getTree(lit, /* complementary */ false)->handle(lit, SubstitutionTree::LeafData(cls, lit), insert); } SLQueryResultIterator getUnifications(Literal* lit, bool complementary, bool retrieveSubstitutions) final override; //TODO add getHOL required for subsumption +#if VHOL + SLQueryResultIterator getHOLInstances(Literal* lit, bool complementary, bool retrieveSubstitutions) final override; + SLQueryResultIterator getHOLGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions) final override; +#endif + SLQueryResultIterator getGeneralizations(Literal* lit, bool complementary, bool retrieveSubstitutions) final override; SLQueryResultIterator getInstances(Literal* lit, bool complementary, bool retrieveSubstitutions) final override; SLQueryResultIterator getVariants(Literal* lit, bool complementary, bool retrieveSubstitutions) final override; @@ -74,7 +83,7 @@ class LiteralSubstitutionTree CALL("LiteralSubstitutionTree::getResultIterator"); auto iter = [=](bool reversed) - { return iterTraits(getTree(lit, complementary).template iterator(lit, retrieveSubstitutions, reversed, args...)) ; }; + { return iterTraits(getTree(lit, complementary)->template iterator(lit, retrieveSubstitutions, reversed, args...)) ; }; auto filterResults = [=](auto it) { return pvi( @@ -106,7 +115,7 @@ class LiteralSubstitutionTree int i = 0; out << "{ "; for (auto& t : self._trees) { - if (!t.isEmpty()) { + if (!t->isEmpty()) { auto f = env.signature->getPredicate(idxToFunctor(i)); if (idxIsNegative(i)) out << "~"; out << *f << "(" << t << "), "; @@ -120,10 +129,10 @@ class LiteralSubstitutionTree int i = 0; out << "{ " << endl; for (auto& t : self.self._trees) { - if (!t.isEmpty()) { + if (!t->isEmpty()) { auto f = env.signature->getPredicate(idxToFunctor(i)); OutputMultiline::outputIndent(out, self.indent); - out << (idxIsNegative(i) ? "~" : " ") << *f << "(" << multiline(t, self.indent + 1) << ")" << endl; + out << (idxIsNegative(i) ? "~" : " ") << *f << "(" << multiline(*t, self.indent + 1) << ")" << endl; } i++; } @@ -132,7 +141,7 @@ class LiteralSubstitutionTree private: - SubstitutionTree& getTree(Literal* lit, bool complementary); + SubstitutionTree* getTree(Literal* lit, bool complementary); // static auto createSLQueryResult(SubstitutionTree::QueryResult> r) // { return lQueryRes(r.data->literal, r.data->clause, *r.unif); } @@ -140,8 +149,9 @@ class LiteralSubstitutionTree // static auto createSLQueryResult(SubstitutionTree::QueryResult> r) // { return SLQueryResult(r.data->literal, r.data->clause, ResultSubstitutionSP((ResultSubstitution*)&*r.unif.unwrapOrElse([](){return RobSubstitutionSP();}))); } - - Stack _trees; + SplittingAlgo _algo; + // stack destructor will destroy trees + Stack _trees; }; }; diff --git a/Inferences/CNFOnTheFly.cpp b/Inferences/CNFOnTheFly.cpp index f6a8b27548..f6714fa42f 100644 --- a/Inferences/CNFOnTheFly.cpp +++ b/Inferences/CNFOnTheFly.cpp @@ -560,7 +560,7 @@ ClauseIterator produceClauses(Clause* c, bool generating, SkolemisingFormulaInde ASS(term.isTerm()); bool newTermCreated = false; if(index){ - auto results = index->getGeneralizations(TypedTermList(term.term()), true); + auto results = index->getHOLGeneralizations(TypedTermList(term.term())); if(results.hasNext()){ TermQueryResult tqr = results.next(); TermList skolemTerm = tqr.term; diff --git a/Kernel/Matcher.hpp b/Kernel/Matcher.hpp index ff6d4dac7e..ec74e16fb7 100644 --- a/Kernel/Matcher.hpp +++ b/Kernel/Matcher.hpp @@ -242,19 +242,27 @@ class Matcher bool matchReversedArgs(Literal* base, Literal* instance); typedef DHMap BindingMap; + /** MapBinder is currently the only higher-order safe binder */ struct MapBinder { MapBinder(Matcher& parent) : _parent(parent) {} bool bind(unsigned var, TermList term) { +#if VHOL + if(env.property->higherOrder()){ + if(term.isLambdaTerm() || term.containsLooseIndex()){ + return false; + } + } +#endif TermList* aux; if(_map.getValuePtr(var,aux,term)) { - if(_parent.bdIsRecording()) { - _parent.bdAdd(new BindingBacktrackObject(this,var)); - } - return true; + if(_parent.bdIsRecording()) { + _parent.bdAdd(new BindingBacktrackObject(this,var)); + } + return true; } else { - return *aux==term; + return *aux==term; } } void specVar(unsigned var, TermList term) @@ -308,6 +316,10 @@ bool MatchingUtils::matchReversedArgs(Literal* base, Literal* instance, Binder& * Matches two terms, using @b binder to store and check bindings * of base variables. * + * Function is safe for higher-order use if binder is higher-order safe. + * That is, binder never binds a variable to a term containing loose + * (unbound) indices. + * * See MatchingUtils::match for a description of @b binder. */ template @@ -348,30 +360,30 @@ bool MatchingUtils::matchArgs(Term* base, Term* instance, Binder& binder) binder.specVar(it->var(), *bt); } else if(bt->isTerm()) { if(!it->isTerm()) { - return false; + return false; } Term* s = bt->term(); Term* t = it->term(); if(s->functor()!=t->functor()) { - return false; + return false; } if(bt->term()->shared() && it->term()->shared()) { - if(bt->term()->ground() && *bt!=*it) { - return false; - } - if(s->weight() > t->weight()) { - return false; - } + if(bt->term()->ground() && *bt!=*it) { + return false; + } + if(s->weight() > t->weight()) { + return false; + } } if(s->arity() > 0) { - bt = s->args(); - it = t->args(); - continue; + bt = s->args(); + it = t->args(); + continue; } } else { ASS(bt->isOrdinaryVar()); if(!binder.bind(bt->var(), *it)) { - return false; + return false; } } if(subterms.isEmpty()) { diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 4ed771188a..57769dbb17 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1732,14 +1732,9 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const } } if (opt.forwardSubsumption()) { - if (opt.forwardSubsumptionResolution()) { - //res->addForwardSimplifierToFront(new CTFwSubsAndRes(true)); - res->addForwardSimplifierToFront(new ForwardSubsumptionAndResolution(true)); - } - else { - //res->addForwardSimplifierToFront(new CTFwSubsAndRes(false)); - res->addForwardSimplifierToFront(new ForwardSubsumptionAndResolution(false)); - } + //res->addForwardSimplifierToFront(new CTFwSubsAndRes(true)); + bool withResolution = opt.forwardSubsumptionResolution(); + res->addForwardSimplifierToFront(new ForwardSubsumptionAndResolution(withResolution)); } else if (opt.forwardSubsumptionResolution()) { USER_ERROR("Forward subsumption resolution requires forward subsumption to be enabled."); diff --git a/UnitTests/tHOLMatching.cpp b/UnitTests/tHOLMatching.cpp index 193b422968..f31ec23a53 100644 --- a/UnitTests/tHOLMatching.cpp +++ b/UnitTests/tHOLMatching.cpp @@ -195,10 +195,12 @@ struct IndTest { DECL_HOL_VAR(x1, 1, srt) \ DECL_HOL_VAR(x2, 2, arrow(srt,srt)) \ DECL_HOL_VAR(x3, 3, arrow(srt,srt)) \ + DECL_HOL_VAR(x4, 3, arrow(arrow(srt, srt),arrow(srt,srt))) \ DECL_CONST(a,srt) \ DECL_CONST(b,srt) \ DECL_CONST(f,arrow(srt,srt)) \ DECL_CONST(g,arrow(srt,srt)) \ + DECL_CONST(h,arrow(arrow(srt, srt),arrow(srt,srt))) \ ) \ @@ -227,5 +229,42 @@ RUN_TEST(hol_matching_inst_01, }, }) +RUN_TEST(hol_matching_inst_02, + HOL_SUGAR, + IndTest { + .index = getIndexTerm(), + .insert = { + ap(x2,a), + }, + .query = ap(f,a), + .instantiation = false, + .expected = { + + TermMatchingResultSpec + { .querySigma = ap(f,a), + .resultSigma = ap(f,a) + } + + }, + }) + +RUN_TEST(hol_matching_inst_03, + HOL_SUGAR, + IndTest { + .index = getIndexTerm(), + .insert = { + toDeBrs(ap(ap(x4,lam(x0,x0)), a)), + }, + .query = toDeBrs(ap(ap(h,lam(x0,x0)), a)), + .instantiation = false, + .expected = { + + TermMatchingResultSpec + { .querySigma = toDeBrs(ap(ap(h,lam(x0,x0)), a)), + .resultSigma = toDeBrs(ap(ap(h,lam(x0,x0)), a)) + } + + }, + }) #endif \ No newline at end of file From ff7e7877ab9cd01f70017824196f26ebc5d62425 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 19 May 2023 10:55:01 +0100 Subject: [PATCH 071/210] fixing HOL matching. Need to test subsumption still --- Inferences/Choice.cpp | 2 +- Kernel/HOLMatching.cpp | 102 +-------------------- Kernel/HOLMatching.hpp | 17 ++-- Kernel/Matcher.cpp | 176 ------------------------------------ Kernel/Matcher.hpp | 73 ++------------- Kernel/RobSubstitution.cpp | 181 +++++++++++++++---------------------- Kernel/RobSubstitution.hpp | 11 +-- Kernel/Term.cpp | 6 +- UnitTests/tHOLMatching.cpp | 90 +++++++++++++++++- 9 files changed, 184 insertions(+), 474 deletions(-) diff --git a/Inferences/Choice.cpp b/Inferences/Choice.cpp index 86b532a253..cbb0ff2128 100644 --- a/Inferences/Choice.cpp +++ b/Inferences/Choice.cpp @@ -183,7 +183,7 @@ struct Choice::IsChoiceTerm static RobSubstitutionTL subst; subst.reset(); return ((head.isVar() || env.signature->isChoiceOperator(head.term()->functor())) && - subst.match(sort,headSort)); + subst.match(sort,headSort,VarBank::QUERY_BANK)); } return false; } diff --git a/Kernel/HOLMatching.cpp b/Kernel/HOLMatching.cpp index 72fef983c9..29bfb8ae89 100644 --- a/Kernel/HOLMatching.cpp +++ b/Kernel/HOLMatching.cpp @@ -23,110 +23,12 @@ namespace Kernel namespace UnificationAlgorithms { -bool HOLInstantiation::match(TermList base, TermList instance, RobSubstitutionTL* sub) -{ - CALL("HOLInstantiation::match"); - -#define DEBUG_MATCH(lvl, ...) if (lvl < 2) DBG("match: ", __VA_ARGS__) - if(sub->sameTermContent(base,instance)) { - return true; - } - - bool mismatch=false; - BacktrackData localBD; - sub->bdRecord(localBD); - - static Stack toDo(64); - ASS(toDo.isEmpty()); - toDo.push(Constraint(base, instance)); - - // add encountered store?? - - // Iteratively resolve matching pairs in toDo - while (toDo.isNonEmpty()) { - auto x = toDo.pop(); - TermList bt = x.lhs(); - TermList it = x.rhs(); - DEBUG_MATCH(1, "next pair: ", tie(bt, it)) - - if(bt.isSpecialVar()) { - auto binding = sub->_bank.find(bt); - if(binding) { - bt = binding.unwrap(); - toDo.push(Constraint(bt,it)); - continue; - } else { - sub->bind(bt, it); - } - } else if(it.isSpecialVar()) { - auto binding = sub->_bank.find(it); - if(binding) { - it = binding.unwrap(); - toDo.push(Constraint(bt,it)); - continue; - } else { - sub->bind(it, bt); - } - } else { - ApplicativeHelper::normaliseLambdaPrefixes(bt,it); - - if (bt.isVar()){ - auto binding = sub->_bank.find(bt); - - if(binding) { - auto b = binding.unwrap(); - if(!TermList::equals(b, it)) - { - mismatch=true; - break; - } - } else { - if(it.containsLooseIndex()){ - mismatch = true; - break; - } - sub->bind(bt, it); - } - } else if (it.isVar()) { - mismatch=true; - break; - } else if (bt.term()->functor() == it.term()->functor()) { - for (unsigned i = 0; i < bt.term()->arity(); i++) { - toDo.push(Constraint(bt.nthArg(i), it.nthArg(i))); - } - } else { - mismatch = true; - break; - } - } - - ASS(!mismatch) - } - - if(mismatch) { - toDo.reset(); - } - - sub->bdDone(); - - if(mismatch) { - localBD.backtrack(); - } else { - if(sub->bdIsRecording()) { - sub->bdCommit(localBD); - } - localBD.drop(); - } - - return !mismatch; -} - bool HOLInstantiation::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) { CALL("HOLInstantiation::associate"); TermList query(specialVar, /* special */ true); - return match(query, node, sub); + return match(query, node, sub, VarBank::QUERY_BANK); } bool HOLGeneralisation::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) @@ -134,7 +36,7 @@ bool HOLGeneralisation::associate(unsigned specialVar, TermList node, bool split CALL("HOLGeneralisation::associate"); TermList query(specialVar, /* special */ true); - return HOLInstantiation::match(node, query, sub); + return HOLInstantiation::match(node, query, sub, VarBank::NORM_RESULT_BANK); } } diff --git a/Kernel/HOLMatching.hpp b/Kernel/HOLMatching.hpp index 2bdd3588b5..03fa1b3a33 100644 --- a/Kernel/HOLMatching.hpp +++ b/Kernel/HOLMatching.hpp @@ -21,16 +21,9 @@ #include "Forwards.hpp" #include "Term.hpp" -#include "Lib/Hash.hpp" -#include "Lib/DHMap.hpp" -#include "Lib/Metaiterators.hpp" -#include "Lib/Environment.hpp" -#include "Lib/Backtrackable.hpp" -#include "Lib/Recycled.hpp" #include "Kernel/RobSubstitution.hpp" -#include "Kernel/SortHelper.hpp" -#include "Kernel/Signature.hpp" + namespace Kernel { @@ -40,12 +33,18 @@ using namespace Indexing; namespace UnificationAlgorithms { +/** At the moment, the classes below don't contain much + * logic and could easily be moved in HOLUnification. + * However, I am keeping them as separate classes in case + * I ever add pattern matching in the future which will probably require + * big changes */ class HOLInstantiation { public: using Constraint = UnificationConstraint; - static bool match(TermList base, TermList instance, RobSubstitutionTL* sub); + static bool match(TermList base, TermList instance, RobSubstitutionTL* sub, VarBank baseBank) + { return sub->match(base, instance, baseBank); } void initSub(RobSubstitutionTL* sub) const { sub->setOutputIndex(VarBank::RESULT_BANK); } diff --git a/Kernel/Matcher.cpp b/Kernel/Matcher.cpp index dccf5bf97b..3bf1557226 100644 --- a/Kernel/Matcher.cpp +++ b/Kernel/Matcher.cpp @@ -261,182 +261,6 @@ bool MatchingUtils::matchTerms(TermList base, TermList instance) } -//////////////// FastMatchIterator //////////////////// - -void OCMatchIterator::init(Literal* base, Literal* inst, bool complementary) -{ - CALL("FastMatchIterator::init"); - - //TODO we don't seem to use this iterator anywhere, so - //have not updated to polymorphism - if(!Literal::headersMatch(base, inst, complementary)) { - _finished=true; - return; - } - _finished=false; - _firstMatchDone=false; - _base=base; - _inst=inst; -} - -bool OCMatchIterator::tryNextMatch() -{ - CALL("FastMatchIterator::tryNextMatch"); - - if(_finished) { - return false; - } - bool success=false; - if(!_firstMatchDone) { - _firstMatchDone=true; - if(!_base->commutative()) { - _finished=true; - } - reset(); - success=tryDirectMatch(); - } - - if(!success && !_finished) { - ASS(_base->commutative()); - _finished=true; - - reset(); - success=tryReversedMatch(); - } - return success; -} - -void OCMatchIterator::reset() -{ - CALL("FastMatchIterator::reset"); - - _bindings.reset(); - _bound.reset(); -} - -bool OCMatchIterator::tryDirectMatch() -{ - CALL("FastMatchIterator::tryDirectMatch"); - - bool res=MatchingUtils::matchArgs(_base, _inst, *this); - res&=occursCheck(); - return res; -} - -bool OCMatchIterator::tryReversedMatch() -{ - CALL("FastMatchIterator::tryReversedMatch"); - ASS(_base->commutative()); - ASS(_inst->commutative()); - - bool res=MatchingUtils::matchTerms(*_base->nthArgument(0), *_inst->nthArgument(1), *this); - if(res) { - res=MatchingUtils::matchTerms(*_base->nthArgument(1), *_inst->nthArgument(0), *this); - } - res&=occursCheck(); - return res; -} - -bool OCMatchIterator::occursCheck() -{ - CALL("OCMatchIterator::occursCheck"); - - static DHMap statuses; - static Stack toDo; - statuses.reset(); - toDo.reset(); - BoundStack::Iterator bit(_bound); - while(bit.hasNext()) { - unsigned var0=bit.next(); - OCStatus* pst0; - if(!statuses.getValuePtr(var0, pst0)) { - ASS_EQ(*pst0, CHECKED); - continue; - } - - *pst0=ENQUEUED; - toDo.push(var0); - - while(toDo.isNonEmpty()) { - int task=toDo.pop(); - if(task==-1) { - unsigned var=toDo.pop(); - ASS_EQ(statuses.get(var), TRAVERSING); - statuses.set(var, CHECKED); - continue; - } - - unsigned var=task; - - ASS_EQ(statuses.get(var), ENQUEUED); - statuses.set(var, TRAVERSING); - - //this schedules the update of the state to CHECKED - toDo.push(var); - toDo.push(-1); - - TermList tgt; - if(!_bindings.find(var, tgt)) { - continue; - } -// if(tgt.isVar()) { -// int tvar=tgt.var(); -// if(varhigherOrder()){ + if(term.containsLooseIndex()){ + return false; + } + } +#endif return _map.getValuePtr(var,aux,term) || *aux==term; } void specVar(unsigned var, TermList term) @@ -167,62 +175,6 @@ class MatchingUtils }; -/** - * Class of objects that iterate over matches between two literals that - * may share variables (therefore it has to perform occurs check). - */ -class OCMatchIterator -{ -public: - void init(Literal* base, Literal* inst, bool complementary); - - bool tryNextMatch(); - - TermList apply(unsigned var); - TermList apply(TermList t); - Literal* apply(Literal* lit); - -private: - - void reset(); - - bool tryDirectMatch(); - bool tryReversedMatch(); - - enum OCStatus { - ENQUEUED, - TRAVERSING, - CHECKED - }; - bool occursCheck(); - - - bool bind(unsigned var, TermList term) - { - TermList* binding; - - if(_bindings.getValuePtr(var,binding,term)) { - _bound.push(var); - return true; - } - return *binding==term; - } - void specVar(unsigned var, TermList term) - { ASSERTION_VIOLATION; } - - - typedef DHMap BindingMap; - typedef Stack BoundStack; - - BindingMap _bindings; - BoundStack _bound; - bool _finished; - bool _firstMatchDone; - Literal* _base; - Literal* _inst; - - friend class MatchingUtils; -}; class Matcher : public Backtrackable @@ -247,14 +199,7 @@ class Matcher { MapBinder(Matcher& parent) : _parent(parent) {} bool bind(unsigned var, TermList term) - { -#if VHOL - if(env.property->higherOrder()){ - if(term.isLambdaTerm() || term.containsLooseIndex()){ - return false; - } - } -#endif + { TermList* aux; if(_map.getValuePtr(var,aux,term)) { if(_parent.bdIsRecording()) { diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index daca4fdc2d..13da093140 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -307,7 +307,7 @@ bool RobSubstitutionTS::match(TermList t1, int idx1, TermList t2, int idx2) { CALL("RobSubstitution::match/1"); - return RobSubstitution::match(TermSpec(t1,idx1), TermSpec(t2,idx2)); + return RobSubstitution::match(TermSpec(t1,idx1), TermSpec(t2,idx2), idx1); } template @@ -414,14 +414,13 @@ bool RobSubstitution::unify(TermSpecOrList t1, Ter * this behavior allows easy instance retrieval.) */ template -bool RobSubstitution::match(TermSpecOrList base, TermSpecOrList instance) +bool RobSubstitution::match(TermSpecOrList base, TermSpecOrList instance, VarBankOrInt baseBank) { CALL("RobSubstitution::match(TermSpec...)"); -#define DEBUG_MATCH(lvl, ...) if (lvl < 0) DBG("match: ", __VA_ARGS__) - if(sameTermContent(base,instance)) { - return true; - } +#define DEBUG_MATCH(lvl, ...) if (lvl < 2) DBG("match: ", __VA_ARGS__) + + if(sameTermContent(base,instance)) { return true; } bool mismatch=false; BacktrackData localBD; @@ -431,7 +430,29 @@ bool RobSubstitution::match(TermSpecOrList base, T ASS(toDo.isEmpty()); toDo.push(Constraint(base, instance)); - // add encountered store?? + auto quickTests = [](TermList bt, TermList it){ + if(bt.isTerm() && bt.term()->shared() && it.isTerm() && it.term()->shared()){ + if(bt.term()->ground()){ return bt == it; } + return bt.term()->weight() <= it.term()->weight(); + } + return true; + }; + + auto canBind = [&](TermSpecOrList t) + { return t.isVar() && t.bank() == baseBank; }; + + auto dealWithSpec = [&](TermSpecOrList spec, TermSpecOrList term, bool instance){ + auto binding = _bank.find(spec); + if(binding) { + TermSpecOrList t = binding.unwrap(); + toDo.push(instance ? Constraint(term,t) : Constraint(t,term)); + } else { + bind(spec, term); + } + }; + + auto canCompare = [](TermSpecOrList t) + { return !t.isSpecialVar() && (t.isVar() || t.term()->shared()); }; // Iteratively resolve matching pairs in toDo while (toDo.isNonEmpty()) { @@ -439,41 +460,44 @@ bool RobSubstitution::match(TermSpecOrList base, T TermSpecOrList bt = x.lhs(); TermSpecOrList it = x.rhs(); DEBUG_MATCH(1, "next pair: ", tie(bt, it)) - // If they have the same content then skip - // (note that sameTermContent is best-effort) + + if(!quickTests(bt,it)){ + DEBUG_MATCH(1, "Rejected by quick tests") + mismatch = true; + break; + } if(bt.isSpecialVar()) { - auto binding = _bank.find(bt); - if(binding) { - bt = binding.unwrap(); - toDo.push(Constraint(bt,it)); - continue; - } else { - bind(bt, it); - } + dealWithSpec(bt, it, false); } else if(it.isSpecialVar()) { - auto binding = _bank.find(it); - if(binding) { - it = binding.unwrap(); - toDo.push(Constraint(bt,it)); - continue; - } else { - bind(it, bt); - } - } else if (bt.isVar()) { + dealWithSpec(it, bt, true); + } else if(canBind(bt)) { auto binding = _bank.find(bt); if(binding) { auto b = binding.unwrap(); - if(!TermSpecOrList::equals(b, it)) + if(canCompare(b) && canCompare(it)) { - mismatch=true; - break; + if(!TermSpecOrList::equals(b, it)){ + mismatch=true; + break; + } + } else { + toDo.push(Constraint(b,it)); } } else { +#if VHOL + if(env.property->higherOrder()){ + if(it.containsLooseIndex()){ + mismatch=true; + break; + } + } +#endif bind(bt, it); } - } else if (it.isVar()) { + } else if (it.isVar() || bt.isVar()) { + ASS(!canBind(it) && !canBind(bt)); mismatch=true; break; } else if (bt.term()->functor() == it.term()->functor()) { @@ -611,46 +635,6 @@ struct RobSubstitutionTS::ToRobTermSpec { return static_cast(r); } }; -/** - * Return iterator on matching substitutions of @b l1 and @b l2. - * - * For guides on use of the iterator, see the documentation of - * RobSubstitution::AssocIterator. - */ -SubstIterator RobSubstitutionTL::matches(Literal* base, Literal* instance, bool complementary) -{ - if( !Literal::headersMatch(base,instance,complementary) ) { - return SubstIterator::getEmpty(); - } - - TermList s1 = base->isEquality() ? SortHelper::getEqualityArgumentSort(base) : TermList(0,false); - TermList s2 = instance->isEquality() ? SortHelper::getEqualityArgumentSort(instance) : TermList(0,false); - - TermList t1 = TermList(base); - TermList t2 = TermList(instance); - - auto it = RobSubstitution::getAssocIterator(this, t1 ,s1, t2, s2, complementary); - - return pvi(getMappingIterator(it, ToRobTermList())); -} - -SubstIteratorTS RobSubstitutionTS::matches(Literal* base, int idx1, Literal* instance, int idx2, bool complementary) -{ - if( !Literal::headersMatch(base,instance,complementary) ) { - return SubstIteratorTS::getEmpty(); - } - - TermSpec s1(base->isEquality() ? SortHelper::getEqualityArgumentSort(base) : TermList(0,false), idx1); - TermSpec s2(instance->isEquality() ? SortHelper::getEqualityArgumentSort(instance) : TermList(0,false), idx2); - - TermSpec t1(TermList(base), idx1); - TermSpec t2(TermList(instance), idx2); - - auto it = RobSubstitution::getAssocIterator(this, t1, s1, t2, s2, complementary); - - return pvi(getMappingIterator(it, ToRobTermSpec())); -} - /** * Return iterator on unifying substitutions of @b l1 and @b l2. * @@ -670,7 +654,7 @@ SubstIterator RobSubstitutionTL::unifiers(Literal* l1, Literal* l2, bool complem TermList t1 = TermList(l1); TermList t2 = TermList(l2); - auto it = RobSubstitution::getAssocIterator(this, t1,s1,t2,s2, complementary); + auto it = RobSubstitution::getAssocIterator(this, t1,s1,t2,s2, complementary); return pvi(getMappingIterator(it, ToRobTermList())); } @@ -687,28 +671,11 @@ SubstIteratorTS RobSubstitutionTS::unifiers(Literal* l1, int idx1, Literal* l2, TermSpec t1(TermList(l1), idx1); TermSpec t2(TermList(l2), idx2); - auto it = RobSubstitution::getAssocIterator(this, t1, s1, t2, s2, complementary); + auto it = RobSubstitution::getAssocIterator(this, t1, s1, t2, s2, complementary); return pvi(getMappingIterator(it, ToRobTermSpec())); } -template -template -VirtualIterator*> -RobSubstitution::getAssocIterator(RobSubst* subst, - TermSpecOrList l1, TermSpecOrList s1, TermSpecOrList l2, TermSpecOrList s2, bool complementary) -{ - CALL("RobSubstitution::getAssocIterator"); - - if( !l1.term()->commutative() ) { - return pvi( getContextualIterator(getSingletonIterator(subst), - AssocContext(l1, l2)) ); - } else { - return vi( - new AssocIterator(subst, l1, s1, l2, s2)); - } -} - template class UnificationConstraint; template class UnificationConstraint; @@ -719,7 +686,6 @@ template class RobSubstitution; template class RobSubstitution; template -template struct RobSubstitution::AssocContext { AssocContext(TermSpecOrList l1, TermSpecOrList l2) @@ -727,7 +693,7 @@ struct RobSubstitution::AssocContext bool enter(RobSubst* subst) { subst->bdRecord(_bdata); - bool res=Fn::associate(subst, _l1, _l2); + bool res=subst->unify(_l1, _l2); if(!res) { subst->bdDone(); ASS(_bdata.isEmpty()); @@ -778,7 +744,6 @@ struct RobSubstitution::AssocContext * [1] associate means either match or unify */ template -template class RobSubstitution::AssocIterator: public IteratorCore { public: AssocIterator(RobSubst* subst, @@ -816,7 +781,7 @@ class RobSubstitution::AssocIterator: public Iterat backtrack(_bdataMain); } else if (_isEq) { _subst->bdRecord(_bdataEqAssoc); - if (!Fn::associate(_subst, _s1, _s2)) { + if (!_subst->unify(_s1, _s2)) { backtrack(_bdataEqAssoc); // this might not be necessary _state = FINISHED; return false; @@ -827,7 +792,7 @@ class RobSubstitution::AssocIterator: public Iterat switch (_state) { case NEXT_STRAIGHT: - if (Fn::associate(_subst, _l1, _l2)) { + if (_subst->unify(_l1, _l2)) { _state = NEXT_REVERSED; break; } @@ -837,8 +802,8 @@ class RobSubstitution::AssocIterator: public Iterat TermSpecOrList t12 = _l1.nthArg(1); TermSpecOrList t21 = _l2.nthArg(0); TermSpecOrList t22 = _l2.nthArg(1); - if (Fn::associate(_subst, t11, t22)) { - if (Fn::associate(_subst, t12, t21)) { + if (_subst->unify(t11, t22)) { + if (_subst->unify(t12, t21)) { _state = NEXT_CLEANUP; break; } @@ -901,18 +866,20 @@ class RobSubstitution::AssocIterator: public Iterat }; template -struct RobSubstitution::MatchingFn { - - static bool associate(RobSubst* subst, TermSpecOrList l1, TermSpecOrList l2) - { return subst->match(l1,l2); } -}; - -template -struct RobSubstitution::UnificationFn { +VirtualIterator*> +RobSubstitution::getAssocIterator(RobSubst* subst, + TermSpecOrList l1, TermSpecOrList s1, TermSpecOrList l2, TermSpecOrList s2, bool complementary) +{ + CALL("RobSubstitution::getAssocIterator"); - static bool associate(RobSubst* subst, TermSpecOrList l1, TermSpecOrList l2) - { return subst->unify(l1,l2); } -}; + if( !l1.term()->commutative() ) { + return pvi( getContextualIterator(getSingletonIterator(subst), + AssocContext(l1, l2)) ); + } else { + return vi( + new AssocIterator(subst, l1, s1, l2, s2)); + } +} } // namespace Kernel diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index fdcb95e975..ad84014428 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -78,6 +78,7 @@ struct TermSpec { // for backwards compatibility bool isOrdinaryVar() const { return trm.isOrdinaryVar(); } bool isTerm() const { return trm.isTerm(); } bool isOutputVar() const { return isVar() && index == UNBOUND_INDEX; } + bool containsLooseIndex() const { return trm.containsLooseIndex(); } bool onBank() const { return true; } // always on a bank unsigned var() const { ASS(trm.isVar()); return trm.var(); } const Term* term() const { ASS(isTerm()); return trm.term(); } @@ -215,7 +216,7 @@ class RobSubstitution void setOutputIndex(VarBankOrInt idx) { _outputIndex = idx; } bool unify(TermSpecOrList t1, TermSpecOrList t2); - bool match(TermSpecOrList base, TermSpecOrList instance); + bool match(TermSpecOrList base, TermSpecOrList instance, VarBankOrInt baseBank); void denormalize(const Renaming& normalizer, VarBankOrInt normBank, VarBankOrInt denormBank); bool isUnbound(unsigned var, VarBankOrInt bank) const @@ -278,18 +279,12 @@ class RobSubstitution VarBankOrInt _outputIndex; - template VirtualIterator getAssocIterator(RobSubst* subst, TermSpecOrList l1, TermSpecOrList s1, TermSpecOrList l2, TermSpecOrList s2, bool complementary); - template struct AssocContext; - template class AssocIterator; - struct MatchingFn; - struct UnificationFn; - private: RobSubstitution(const RobSubstitution& obj) = delete; RobSubstitution& operator=(const RobSubstitution& obj) = delete; @@ -361,7 +356,6 @@ class RobSubstitutionTL : public RobSubstitution _outputIndex = VarBank::OUTPUT_BANK; } - SubstIterator matches(Literal* base, Literal* instance, bool complementary); SubstIterator unifiers(Literal* l1, Literal* l2, bool complementary); Literal* apply(Literal* lit, VarBank bank) const @@ -420,7 +414,6 @@ class RobSubstitutionTS : public RobSubstitution bool unify(TermList t1, int idx1, TermList t2, int idx2); bool match(TermList t1, int idx1, TermList t2, int idx2); - SubstIteratorTS matches(Literal* base, int l1idx, Literal* instance, int l2idx, bool complementary); SubstIteratorTS unifiers(Literal* l1, int l1idx, Literal* l2, int l2idx, bool complementary); Literal* apply(Literal* lit, int index) const diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index ced170337a..864ff2c199 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -2279,14 +2279,14 @@ Literal* Literal::createEquality (bool polarity, TermList arg1, TermList arg2, T ASS_REP(arg2.isVar(), arg2.toString()); return createVariableEquality(polarity, arg1, arg2, sort); } - ASS(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, srt2)); + ASS(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, srt2, VarBank::DEFAULT_BANK)); } else { - ASS_REP2(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, srt1), sort.toString(), srt1.toString()); + ASS_REP2(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, srt1, VarBank::DEFAULT_BANK), sort.toString(), srt1.toString()); #if VDEBUG if (SortHelper::tryGetResultSort(arg2, srt2)) { checkSortSubst.reset(); - ASS_REP2(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, srt2), sort.toString(), arg2.toString() + " : " + srt2.toString()); + ASS_REP2(env.sharing->isWellSortednessCheckingDisabled() || checkSortSubst.match(sort, srt2, VarBank::DEFAULT_BANK), sort.toString(), arg2.toString() + " : " + srt2.toString()); } #endif } diff --git a/UnitTests/tHOLMatching.cpp b/UnitTests/tHOLMatching.cpp index f31ec23a53..c11314d4f2 100644 --- a/UnitTests/tHOLMatching.cpp +++ b/UnitTests/tHOLMatching.cpp @@ -170,6 +170,9 @@ struct IndTest { void run() { CALL("IndexTest::run") + env.property->forceHigherOrder(); + // if printing causes a crash, set this to raw + // crash happens when attempting to print a loose De Bruijn index env.options->set("pretty_hol_printing","pretty"); DECL_PRED(dummy, Stack()) @@ -193,14 +196,16 @@ struct IndTest { DECL_DEFAULT_SORT_VARS \ DECL_HOL_VAR(x0, 0, srt) \ DECL_HOL_VAR(x1, 1, srt) \ + DECL_HOL_VAR(y0, 5, srt) \ DECL_HOL_VAR(x2, 2, arrow(srt,srt)) \ DECL_HOL_VAR(x3, 3, arrow(srt,srt)) \ - DECL_HOL_VAR(x4, 3, arrow(arrow(srt, srt),arrow(srt,srt))) \ + DECL_HOL_VAR(x4, 4, arrow(arrow(srt, srt),arrow(srt,srt))) \ DECL_CONST(a,srt) \ DECL_CONST(b,srt) \ DECL_CONST(f,arrow(srt,srt)) \ DECL_CONST(g,arrow(srt,srt)) \ DECL_CONST(h,arrow(arrow(srt, srt),arrow(srt,srt))) \ + DECL_CONST(k,arrow(srt,arrow(srt,srt))) \ ) \ @@ -210,7 +215,7 @@ struct IndTest { __VA_ARGS__.run(); \ } \ -RUN_TEST(hol_matching_inst_01, +RUN_TEST(hol_matching_01, HOL_SUGAR, IndTest { .index = getIndexTerm(), @@ -222,14 +227,14 @@ RUN_TEST(hol_matching_inst_01, .expected = { TermMatchingResultSpec - { .querySigma = f, + { .querySigma = toDeBrs(lam(x1, ap(f, x1))), .resultSigma = toDeBrs(lam(x1, ap(f, x1))) } }, }) -RUN_TEST(hol_matching_inst_02, +RUN_TEST(hol_matching_02, HOL_SUGAR, IndTest { .index = getIndexTerm(), @@ -248,7 +253,7 @@ RUN_TEST(hol_matching_inst_02, }, }) -RUN_TEST(hol_matching_inst_03, +RUN_TEST(hol_matching_03, HOL_SUGAR, IndTest { .index = getIndexTerm(), @@ -267,4 +272,79 @@ RUN_TEST(hol_matching_inst_03, }, }) +RUN_TEST(hol_matching_04, + HOL_SUGAR, + IndTest { + .index = getIndexTerm(), + .insert = { + toDeBrs(lam(x0, lam(x1, x0))), + }, + .query = toDeBrs(lam(x0, lam(x1, x0))), + .instantiation = false, + .expected = { + + TermMatchingResultSpec + { .querySigma = toDeBrs(lam(x0, lam(x1, x0))), + .resultSigma = toDeBrs(lam(x0, lam(x1, x0))) + } + + }, + }) + +RUN_TEST(hol_matching_05, + HOL_SUGAR, + IndTest { + .index = getIndexTerm(), + .insert = { + toDeBrs(lam(x0, lam(x1, x0))), + }, + .query = toDeBrs(lam(x0, lam(x1, x1))), + .instantiation = false, + .expected = Stack{}, + }) + +RUN_TEST(hol_matching_06, + HOL_SUGAR, + IndTest { + .index = getIndexTerm(), + .insert = { + toDeBrs(lam(x0, lam(x1, x0))), + }, + .query = toDeBrs(lam(x0, lam(x1, y0))), + .instantiation = true, + .expected = Stack{}, + }) + +RUN_TEST(hol_matching_07, + HOL_SUGAR, + IndTest { + .index = getIndexTerm(), + .insert = { + ap(ap(k,a),b), + ap(ap(k,b),b), + }, + .query = ap(ap(k,x0),x0), + .instantiation = true, + .expected = { + + TermMatchingResultSpec + { .querySigma = ap(ap(k,b),b), + .resultSigma = ap(ap(k,b),b) + } + + }, + }) + +RUN_TEST(hol_matching_08, + HOL_SUGAR, + IndTest { + .index = getIndexTerm(), + .insert = { + ap(ap(k,a),b), + }, + .query = ap(ap(k,ap(f, x0)),x0), + .instantiation = true, + .expected = Stack{}, + }) + #endif \ No newline at end of file From 6b9e3bcc10115efe862ff09ad30527c00820a040 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 23 May 2023 11:13:35 +0100 Subject: [PATCH 072/210] fixing HOL unification. WIP. Problem with constraints that contain loose bound vars --- .../BackwardSubsumptionDemodulation.cpp | 7 +- Inferences/BackwardSubsumptionResolution.cpp | 133 ++++++++++-------- Inferences/EqualityFactoring.cpp | 8 +- Inferences/EqualityResolution.cpp | 18 ++- Inferences/ForwardLiteralRewriting.cpp | 12 +- .../ForwardSubsumptionAndResolution.cpp | 28 +++- Inferences/ForwardSubsumptionDemodulation.cpp | 14 +- Inferences/ImitateProject.cpp | 23 +-- Inferences/PrimitiveInstantiation.cpp | 3 +- Inferences/SLQueryBackwardSubsumption.cpp | 60 ++++---- Kernel/ApplicativeHelper.cpp | 67 +++------ Kernel/ApplicativeHelper.hpp | 16 +-- Kernel/HOLUnification.cpp | 122 ++++++++++------ Kernel/HOLUnification.hpp | 13 +- Kernel/RobSubstitution.hpp | 9 +- Kernel/Term.cpp | 25 ++-- Shell/Options.cpp | 2 +- UnitTests/tHOLMatching.cpp | 27 ++++ UnitTests/tUnificationWithAbstraction.cpp | 23 +-- 19 files changed, 367 insertions(+), 243 deletions(-) diff --git a/Inferences/BackwardSubsumptionDemodulation.cpp b/Inferences/BackwardSubsumptionDemodulation.cpp index 2ebfac5556..50f08c6f38 100644 --- a/Inferences/BackwardSubsumptionDemodulation.cpp +++ b/Inferences/BackwardSubsumptionDemodulation.cpp @@ -192,7 +192,12 @@ void BackwardSubsumptionDemodulation::performWithQueryLit(Clause* sideCl, Litera bool mustPredActive = false; unsigned mustPred; - SLQueryResultIterator rit = _index->getInstances(candidateQueryLit, false, false); + SLQueryResultIterator rit = +#if VHOL + env.property->higherOrder() ? + _index->getHOLInstances(candidateQueryLit, false, false) : +#endif + _index->getInstances(candidateQueryLit, false, false); while (rit.hasNext()) { SLQueryResult qr = rit.next(); Clause* candidate = qr.clause; diff --git a/Inferences/BackwardSubsumptionResolution.cpp b/Inferences/BackwardSubsumptionResolution.cpp index 50c9732bee..caf12f9fff 100644 --- a/Inferences/BackwardSubsumptionResolution.cpp +++ b/Inferences/BackwardSubsumptionResolution.cpp @@ -110,12 +110,17 @@ void BackwardSubsumptionResolution::perform(Clause* cl, if(clen==1) { List* simplRes=0; - SLQueryResultIterator rit=_index->getInstances( (*cl)[0], true, false); + SLQueryResultIterator rit= +#if VHOL + env.property->higherOrder() ? + _index->getHOLInstances( (*cl)[0], true, false) : +#endif + _index->getInstances( (*cl)[0], true, false); while(rit.hasNext()) { SLQueryResult qr=rit.next(); if(!checkedClauses.insert(qr.clause)) { - continue; + continue; } Clause* resCl=ForwardSubsumptionAndResolution::generateSubsumptionResolutionClause(qr.clause, qr.literal, cl); @@ -157,7 +162,12 @@ void BackwardSubsumptionResolution::perform(Clause* cl, List* simplRes=0; - SLQueryResultIterator rit=_index->getInstances( lmLit, true, false); + SLQueryResultIterator rit= +#if VHOL + env.property->higherOrder() ? + _index->getHOLInstances( lmLit, true, false) : +#endif + _index->getInstances( lmLit, true, false); while(rit.hasNext()) { SLQueryResult qr=rit.next(); Clause* icl=qr.clause; @@ -178,9 +188,9 @@ void BackwardSubsumptionResolution::perform(Clause* cl, if(!mustPredInit) { mustPred=lmHeader; for(unsigned bi=0;biheader(); if(pred!=lmHeader && (mustPred==lmHeader || pred>mustPred)) { mustPred=pred; @@ -191,11 +201,11 @@ void BackwardSubsumptionResolution::perform(Clause* cl, for(unsigned ii=0;iiheader(); if(pred==mustPred) { - haveMustPred=true; + haveMustPred=true; } } if(!haveMustPred) { @@ -209,9 +219,9 @@ void BackwardSubsumptionResolution::perform(Clause* cl, basePredsInit=true; basePreds.reset(); for(unsigned bi=0;biheader(); basePreds.insert(pred); } @@ -221,17 +231,17 @@ void BackwardSubsumptionResolution::perform(Clause* cl, for(unsigned ii=0;iiheader(); if(!basePreds.find(pred)) { - if(allowedMisses==0) { - fail=true; - break; - } - else { - allowedMisses--; - } + if(allowedMisses==0) { + fail=true; + break; + } + else { + allowedMisses--; + } } } if(fail) { @@ -245,15 +255,15 @@ void BackwardSubsumptionResolution::perform(Clause* cl, LiteralList::push(qr.literal, matchedLits[lmIndex]); for(unsigned bi=0;bigetInstances( lmLit, false, false); + rit= +#if VHOL + env.property->higherOrder() ? + _index->getHOLInstances( lmLit, false, false) : +#endif + _index->getInstances( lmLit, false, false); while(rit.hasNext()) { SLQueryResult qr=rit.next(); Clause* icl=qr.clause; @@ -302,9 +317,9 @@ void BackwardSubsumptionResolution::perform(Clause* cl, if(!mustPredInit) { mustPred=lmPred; for(unsigned bi=0;bifunctor(); if(pred!=lmPred && (mustPred==lmPred || pred>mustPred)) { mustPred=pred; @@ -315,11 +330,11 @@ void BackwardSubsumptionResolution::perform(Clause* cl, for(unsigned ii=0;iifunctor(); if(pred==mustPred) { - haveMustPred=true; + haveMustPred=true; } } if(!haveMustPred) { @@ -333,9 +348,9 @@ void BackwardSubsumptionResolution::perform(Clause* cl, basePredsInit=true; basePreds.reset(); for(unsigned bi=0;biheader(); basePreds.insert(pred); } @@ -346,20 +361,20 @@ void BackwardSubsumptionResolution::perform(Clause* cl, for(unsigned ii=0;iiheader(); if(!haveNeg && basePreds.find(pred^1)) { - haveNeg=true; + haveNeg=true; } if(!basePreds.find(pred)) { - if(allowedMisses==0) { - fail=true; - break; - } - else { - allowedMisses--; - } + if(allowedMisses==0) { + fail=true; + break; + } + else { + allowedMisses--; + } } } if(fail || !haveNeg) { @@ -372,13 +387,13 @@ void BackwardSubsumptionResolution::perform(Clause* cl, Literal* resolvedLit=0; for(unsigned bi=0;bi subst; - // TODO, do we need to reset? + subst->reset(); if (!subst->unify(srt, SortHelper::getEqualityArgumentSort(fLit))) { return ClauseIterator::getEmpty(); @@ -202,10 +202,6 @@ ClauseIterator EqualityFactoring::generateClauses(Clause* premise) { CALL("EqualityFactoring::generateClauses"); -#if VHOL - static bool usingHOL = env.property->higherOrder(); -#endif - if(premise->length()<=1) { return ClauseIterator::getEmpty(); } @@ -223,7 +219,7 @@ ClauseIterator EqualityFactoring::generateClauses(Clause* premise) Ordering& ord = _salg->getOrdering(); #if VHOL - if(usingHOL){ + if(env.property->higherOrder()){ return pvi(getMapAndFlattenIterator(it4, ResultFn(premise, afterCheck, ord))); } #endif diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index 6ecc2ded2b..2ab04f6e49 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -61,7 +61,8 @@ struct EqualityResolution::IsNegativeEqualityFn #if VHOL // no point trying to resolve two terms of functional sort // instead, let negExt grow both sides and then resolve... - && !SortHelper::getEqualityArgumentSort(l).isArrowSort(); + // for first part of condition see comments in NegExt and ImitateProject + && (l->isFlexRigid() || !SortHelper::getEqualityArgumentSort(l).isArrowSort()) #endif ; } @@ -91,16 +92,29 @@ struct EqualityResolution::ResultFn ASS(lit->isNegative()); Recycled sub; + sub->reset(); Recycled results; TermList arg0 = *lit->nthArgument(0); TermList arg1 = *lit->nthArgument(1); - auto substs = _algo.unifiers(arg0, arg1, &*sub, /* no top level constraints */ true); + bool check = true; +#if VHOL + if(env.property->higherOrder()){ + ASS(!lit->isFlexFlex()); // should never select flex flex literals + unsigned depth = env.options->higherOrderUnifDepth(); + check = check && (depth == 0 || !lit->isFlexRigid()); + } +#endif + + auto substs = _algo.unifiers(arg0, arg1, &*sub, /* no top level constraints */ check); while(substs.hasNext()){ RobSubstitutionTL* sub = substs.next(); + cout << "HERE" << endl; + cout << *sub << endl; + auto constraints = sub->constraints(); unsigned newLen=_cLen - 1 + constraints->length(); diff --git a/Inferences/ForwardLiteralRewriting.cpp b/Inferences/ForwardLiteralRewriting.cpp index 0025b8d14b..d602ee22a0 100644 --- a/Inferences/ForwardLiteralRewriting.cpp +++ b/Inferences/ForwardLiteralRewriting.cpp @@ -67,7 +67,7 @@ bool ForwardLiteralRewriting::perform(Clause* cl, Clause*& replacement, ClauseIt } if(cl==qr.clause || cl==counterpart) { - continue; + continue; } Literal* rhs0 = (qr.literal==(*qr.clause)[0]) ? (*qr.clause)[1] : (*qr.clause)[0]; @@ -82,7 +82,7 @@ bool ForwardLiteralRewriting::perform(Clause* cl, Clause*& replacement, ClauseIt Literal* rhsS = subs->applyToBoundResult(rhs); if(ordering.compare(lit, rhsS)!=Ordering::GREATER) { - continue; + continue; } Clause* premise=lit->isNegative() ? qr.clause : counterpart; @@ -105,10 +105,10 @@ bool ForwardLiteralRewriting::perform(Clause* cl, Clause*& replacement, ClauseIt unsigned next=1; for(unsigned i=0;igetGeneralizations((*cl)[li], false, false); + SLQueryResultIterator rit = +#if VHOL + env.property->higherOrder() ? + _unitIndex->getHOLGeneralizations((*cl)[li], false, false) : +#endif + _unitIndex->getGeneralizations((*cl)[li], false, false); while (rit.hasNext()) { Clause *premise = rit.next().clause; if (ColorHelper::compatible(cl->color(), premise->color())) { @@ -250,7 +255,12 @@ bool ForwardSubsumptionAndResolution::perform(Clause *cl, Clause *&replacement, LiteralMiniIndex miniIndex(cl); for (unsigned li = 0; li < clen; li++) { - SLQueryResultIterator rit = _fwIndex->getGeneralizations((*cl)[li], false, false); + SLQueryResultIterator rit = +#if VHOL + env.property->higherOrder() ? + _fwIndex->getHOLGeneralizations((*cl)[li], false, false) : +#endif + _fwIndex->getGeneralizations((*cl)[li], false, false); while (rit.hasNext()) { SLQueryResult res = rit.next(); Clause *mcl = res.clause; @@ -287,7 +297,12 @@ bool ForwardSubsumptionAndResolution::perform(Clause *cl, Clause *&replacement, for (unsigned li = 0; li < clen; li++) { Literal *resLit = (*cl)[li]; - SLQueryResultIterator rit = _unitIndex->getGeneralizations(resLit, true, false); + SLQueryResultIterator rit = +#if VHOL + env.property->higherOrder() ? + _unitIndex->getHOLGeneralizations(resLit, true, false) : +#endif + _unitIndex->getGeneralizations(resLit, true, false); while (rit.hasNext()) { Clause *mcl = rit.next().clause; if (ColorHelper::compatible(cl->color(), mcl->color())) { @@ -323,7 +338,12 @@ bool ForwardSubsumptionAndResolution::perform(Clause *cl, Clause *&replacement, for (unsigned li = 0; li < clen; li++) { Literal *resLit = (*cl)[li]; //resolved literal - SLQueryResultIterator rit = _fwIndex->getGeneralizations(resLit, true, false); + SLQueryResultIterator rit = +#if VHOL + env.property->higherOrder() ? + _fwIndex->getHOLGeneralizations(resLit, true, false) : +#endif + _fwIndex->getGeneralizations(resLit, true, false); while (rit.hasNext()) { SLQueryResult res = rit.next(); Clause *mcl = res.clause; diff --git a/Inferences/ForwardSubsumptionDemodulation.cpp b/Inferences/ForwardSubsumptionDemodulation.cpp index 60c1e9c8ee..8f75f365d1 100644 --- a/Inferences/ForwardSubsumptionDemodulation.cpp +++ b/Inferences/ForwardSubsumptionDemodulation.cpp @@ -99,7 +99,12 @@ bool ForwardSubsumptionDemodulation::perform(Clause* cl, Clause*& replacement, C // Subsumption by unit clauses if (_doSubsumption) { for (unsigned sqli = 0; sqli < cl->length(); ++sqli) { - SLQueryResultIterator rit = _unitIndex->getGeneralizations((*cl)[sqli], false, false); + SLQueryResultIterator rit = +#if VHOL + env.property->higherOrder() ? + _unitIndex->getHOLGeneralizations((*cl)[sqli], false, false) : +#endif + _unitIndex->getGeneralizations((*cl)[sqli], false, false); while (rit.hasNext()) { Clause* premise = rit.next().clause; @@ -129,7 +134,12 @@ bool ForwardSubsumptionDemodulation::perform(Clause* cl, Clause*& replacement, C /** * Step 1: find candidate clauses for subsumption */ - SLQueryResultIterator rit = _index->getGeneralizations(subsQueryLit, false, false); + SLQueryResultIterator rit = +#if VHOL + env.property->higherOrder() ? + _index->getHOLGeneralizations(subsQueryLit, false, false) : +#endif + _index->getGeneralizations(subsQueryLit, false, false); while (rit.hasNext()) { SLQueryResult res = rit.next(); Clause* mcl = res.clause; // left premise of FSD diff --git a/Inferences/ImitateProject.cpp b/Inferences/ImitateProject.cpp index 7f5c115ec6..319217c20f 100644 --- a/Inferences/ImitateProject.cpp +++ b/Inferences/ImitateProject.cpp @@ -100,7 +100,7 @@ struct ImitateProject::ResultFn ResultFn(Clause* cl) - : _cl(cl), _cLen(cl->length()), _maxVar(cl->maxVar()) {} + : _cl(cl), _cLen(cl->length()), _maxVar(TermList(cl->maxVar(), false)) {} ClauseIterator operator() (Literal* lit) { CALL("ImitateProject::ResultFn::operator()"); @@ -128,23 +128,24 @@ struct ImitateProject::ResultFn } TermStack bindings; - AH::getProjAndImitBindings(flexTerm,rigidTerm,bindings,_maxVar); - ASS(bindings.size()) // must have at least an imitation binding + bool imitFound = AH::getProjAndImitBindings(flexTerm,rigidTerm,bindings,_maxVar); // some inefficiency below as we iterate the term twice. Once in // getProjAndImitBindings and again in the head() call below. // However, it keeps the code cleaner, and I doubt that the penalty is high TermList headFlex = flexTerm.head(); - TermList imitpb = bindings[0]; + if(imitFound){ + TermList imitpb = bindings[0]; - _subst.bind(headFlex.var(), imitpb); - Clause* res = createRes(InferenceRule::IMITATE); + _subst.bind(headFlex.var(), imitpb); + Clause* res = createRes(InferenceRule::IMITATE); - if(env.options->proofExtra()==Options::ProofExtra::FULL){ - addProofExtraString(res, lit, headFlex, imitpb); - } + if(env.options->proofExtra()==Options::ProofExtra::FULL){ + addProofExtraString(res, lit, headFlex, imitpb); + } - results.push(res); + results.push(res); + } // projections for(unsigned i = 1; i < bindings.size(); i++){ @@ -169,7 +170,7 @@ struct ImitateProject::ResultFn Substitution _subst; Clause* _cl; unsigned _cLen; - unsigned _maxVar; + TermList _maxVar; }; ClauseIterator ImitateProject::generateClauses(Clause* premise) diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index 532f924ba5..49e7718378 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -156,7 +156,6 @@ struct PrimitiveInstantiation::ResultFn TermStack sortsFlex; //sorts of arguments of flex head AH::getHeadAndArgs(flexTerm, headFlex, argsFlex); - ASS(argsFlex.size()); // Flex side is not a variable AH::getArgSorts(flexTerm, sortsFlex); // if any amongst a1 ... an is of sort $o, project that @@ -211,7 +210,7 @@ struct PrimitiveInstantiation::ResultFn // bind head variable to all general bindings produced using heads in _heads for(unsigned i =0; i < _heads.size(); i++){ _subst.reset(); - unsigned fVar = _freshVar; + TermList fVar(_freshVar,false); bool surround = (!_heads[i].isEquals() || !include_not_eq); TermList gb = AH::createGeneralBinding(fVar,_heads[i],sortsFlex,surround); diff --git a/Inferences/SLQueryBackwardSubsumption.cpp b/Inferences/SLQueryBackwardSubsumption.cpp index 6218fd117b..9db2a71d42 100644 --- a/Inferences/SLQueryBackwardSubsumption.cpp +++ b/Inferences/SLQueryBackwardSubsumption.cpp @@ -115,7 +115,12 @@ void SLQueryBackwardSubsumption::perform(Clause* cl, } if(clen==1) { - SLQueryResultIterator rit=_index->getInstances( (*cl)[0], false, false); + SLQueryResultIterator rit= +#if VHOL + env.property->higherOrder() ? + _index->getHOLInstances( (*cl)[0], false, false) : +#endif + _index->getInstances( (*cl)[0], false, false); ClauseIterator subsumedClauses=getUniquePersistentIterator( getFilteredIterator( getMappingIterator(rit,ClauseExtractorFn()), @@ -157,7 +162,12 @@ void SLQueryBackwardSubsumption::perform(Clause* cl, static DHSet checkedClauses; checkedClauses.reset(); - SLQueryResultIterator rit=_index->getInstances( (*cl)[lmIndex], false, false); + SLQueryResultIterator rit= +#if VHOL + env.property->higherOrder() ? + _index->getHOLInstances( (*cl)[lmIndex], false, false) : +#endif + _index->getInstances( (*cl)[lmIndex], false, false); while(rit.hasNext()) { SLQueryResult qr=rit.next(); Clause* icl=qr.clause; @@ -180,9 +190,9 @@ void SLQueryBackwardSubsumption::perform(Clause* cl, //contain an existing literal header after the loop mustPred=0; for(unsigned bi=0;biheader(); if(pred>mustPred) { mustPred=pred; @@ -193,11 +203,11 @@ void SLQueryBackwardSubsumption::perform(Clause* cl, for(unsigned ii=0;iiheader(); if(pred==mustPred) { - haveMustPred=true; + haveMustPred=true; } } if(!haveMustPred) { @@ -211,9 +221,9 @@ void SLQueryBackwardSubsumption::perform(Clause* cl, basePredsInit=true; basePreds.reset(); for(unsigned bi=0;biheader(); basePreds.insert(pred); } @@ -223,17 +233,17 @@ void SLQueryBackwardSubsumption::perform(Clause* cl, for(unsigned ii=0;iiheader(); if(!basePreds.find(pred)) { - if(allowedMisses==0) { - fail=true; - break; - } - else { - allowedMisses--; - } + if(allowedMisses==0) { + fail=true; + break; + } + else { + allowedMisses--; + } } } if(fail) { @@ -247,15 +257,15 @@ void SLQueryBackwardSubsumption::perform(Clause* cl, LiteralList::push(qr.literal, matchedLits[lmIndex]); for(unsigned bi=0;bi fVar.var() ? var : fVar; + bindings.push(pb); + } // projections for(unsigned i = 0; i < argsFlex.size(); i++){ @@ -762,30 +751,16 @@ void ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigid TermList dbi = getDeBruijnIndex(i, sortsFlex[i]); - TermList pb = useFreshBank ? - createGeneralBinding(dbi,sortsFlex) : - createGeneralBinding(fVar,dbi,sortsFlex); - + TermList pb = createGeneralBinding(fVar,dbi,sortsFlex); + fVar = var.var() > fVar.var() ? var : fVar; bindings.push(pb); } + return imit; } -TermList ApplicativeHelper::createGeneralBinding(TermList head, TermStack& sorts){ - CALL("ApplicativeHelper::createGeneralBinding/1"); - - return createGeneralBinding(0,head,sorts,true,true); -} - -TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList head, TermStack& sorts, bool surround) -{ - CALL("ApplicativeHelper::createGeneralBinding/2"); - - return createGeneralBinding(freshVar,head,sorts,surround,false); -} - -TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList head, - TermStack& sorts, bool surround, bool useFreshBank){ +TermList ApplicativeHelper::createGeneralBinding(TermList& freshVar, TermList head, + TermStack& sorts, bool surround){ CALL("ApplicativeHelper::createGeneralBinding/3"); ASS(head.isTerm()); // in the future may wish to reconsider this assertion @@ -793,6 +768,11 @@ TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList hea TermStack argSorts; TermStack indices; + auto getNextFreshVar = [&](){ + freshVar = TermList(freshVar.var() + 1, freshVar.bank()); + return freshVar; + }; + TermList headSort = SortHelper::getResultSort(head.term()); getArgSorts(headSort, argSorts); @@ -801,9 +781,8 @@ TermList ApplicativeHelper::createGeneralBinding(unsigned freshVar, TermList hea } while(!argSorts.isEmpty()){ - TermList fVar = useFreshBank ? TermList(freshVar++, VarBank::FRESH_BANK) : TermList(++freshVar, false); TermList varSort = AtomicSort::arrowSort(sorts, argSorts.pop()); - args.push(app(varSort, fVar, indices)); + args.push(app(varSort, getNextFreshVar(), indices)); } TermList pb = app(head, args); diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 915f5b2975..df6659b716 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -77,11 +77,10 @@ class ApplicativeHelper { static void normaliseLambdaPrefixes(TermList& t1, TermList& t2); - static void getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings); - static void getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings, unsigned freshvar); - - static TermList createGeneralBinding(TermList head, TermStack& sorts); - static TermList createGeneralBinding(unsigned freshVar, TermList head, TermStack& sorts, bool surround = true); + static bool getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings, TermList& freshVar); + // creates a general binding of the form head (FV1 db1 ... dbn) (FV2 db1 ... dbn) ... + // if surround is set to true, the general binding is surround by n lambdas + static TermList createGeneralBinding(TermList& freshVar, TermList head, TermStack& sorts, bool surround = true); static TermList surroundWithLambdas(TermList t, TermStack& sorts); static TermList top(); @@ -93,13 +92,6 @@ class ApplicativeHelper { static TermList equality(TermList sort); static TermList pi(TermList sort); static TermList sigma(TermList sort); - -private: - - static void getProjAndImitBindings(TermList flexTerm, TermList rigidTerm, TermStack& bindings, unsigned freshvar, bool useFreshBank); - // creates a general binding of the form head (FV1 db1 ... dbn) (FV2 db1 ... dbn) ... - // if surround is set to true, the general binding is surround by n lambdas - static TermList createGeneralBinding(unsigned freshVar, TermList head, TermStack& sorts, bool surround, bool useFreshBank); }; // reduce a term to normal form diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 7fa0498006..eee382c37f 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -27,8 +27,9 @@ namespace UnificationAlgorithms { class HOLUnification::HigherOrderUnifiersIt: public IteratorCore { public: - HigherOrderUnifiersIt(RobSubstitutionTL* subst) : - _returnInitial(false), _used(false), _depth(0), _subst(subst){ + HigherOrderUnifiersIt(RobSubstitutionTL* subst, bool funcExt) : + _returnInitial(false), _used(false), _depth(0), + _freshVar(0, VarBank::FRESH_BANK), _subst(subst){ CALL("HOLUnification::HigherOrderUnifiersIt::HigherOrderUnifiersIt"); _subst->bdRecord(_initData); @@ -42,12 +43,12 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoresize() == _bindings->size()){ // reached here not via a backtrack. Need to add new bindings to bindings - // oracle calls. no point calling oracles if we reach here via a backtracl + // oracle calls. no point calling oracles if we reach here via a backtrack // they must have already failed BacktrackData tempBD; _subst->bdRecord(tempBD); @@ -191,8 +194,11 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); + BacktrackData& bd = _bdStack->top(); + bd.addClosure([this, fv = _freshVar](){ _freshVar = fv; }); + + ApplicativeHelper::getProjAndImitBindings(flexTerm, rigidTerm, projAndImitBindings, _freshVar); + backtrackablePush(*_bindings,projAndImitBindings,bd); } _depth++; @@ -203,6 +209,8 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop().size()); TermList binding = _bindings->top().pop(); + cout << "binding " << flexHead << " -> " << binding << endl; + _subst->bdRecord(_bdStack->top()); _subst->bind(flexHead, binding); _subst->bdDone(); @@ -311,6 +319,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCore _unifPairs; Recycled> _bdStack; Recycled> _bindings; + TermList _freshVar; RobSubstitutionTL* _subst; }; @@ -318,15 +327,31 @@ SubstIterator HOLUnification::unifiers(TermList t1, TermList t2, RobSubstitution { CALL("HOLUnification::unifiers"); - bool splittable = true; - if(!ApplicativeHelper::splittable(t1) || !ApplicativeHelper::splittable(t2)){ - if(topLevelCheck) return SubstIterator::getEmpty(); - splittable = false; - } + bool topLevelConstraint = false; - unifyFirstOrderStructure(t1,t2,splittable,sub); + if(sub->sameTermContent(t1,t2)) return pvi(getSingletonIterator(sub)); + + if(t1.isVar() || t2.isVar()){ + auto var = t1.isVar() ? t1 : t2; + auto otherTerm = var == t1 ? t2 : t1; + auto res = fixpointUnify(var,otherTerm,sub); + if(res == OracleResult::SUCCESS) return pvi(getSingletonIterator(sub)); + if(res == OracleResult::FAILURE) return SubstIterator::getEmpty(); + if(res == OracleResult::OUT_OF_FRAGMENT){ + if(topLevelCheck) return SubstIterator::getEmpty(); + topLevelConstraint = true; + } + } else { + if(!ApplicativeHelper::splittable(t1, true) || !ApplicativeHelper::splittable(t2, true)){ + if(topLevelCheck) return SubstIterator::getEmpty(); + topLevelConstraint = true; + } + } - return vi(new HigherOrderUnifiersIt(sub)); + if(unifyFirstOrderStructure(t1,t2,topLevelConstraint,sub)){ + return vi(new HigherOrderUnifiersIt(sub, _funcExt)); + } + return SubstIterator::getEmpty(); } SubstIterator HOLUnification::postprocess(RobSubstitutionTL* sub) @@ -337,15 +362,42 @@ SubstIterator HOLUnification::postprocess(RobSubstitutionTL* sub) // but it is slighly involved and I am not sure that it is worth it. // will leave for now. - return vi(new HigherOrderUnifiersIt(sub)); + return vi(new HigherOrderUnifiersIt(sub, _funcExt)); } bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) { CALL("HOLUnification::associate"); + bool topLevel = specialVar == 0; // hacky, works because we alywas by *0 to top level term, but very flaky solution tbh + TermList query(specialVar, /* special */ true); - return unifyFirstOrderStructure(query, node, splittable, sub); + + query = sub->derefBound(query); + + TermList queryHead = sub->derefBound(query.head()); + TermList nodeHead = sub->derefBound(node.head()); + + ASS(splittable || !node.isVar()); + + // dereferencing above can turn a non-splittable term into a + // splittable one + bool nodeNotSplittable = false; + if(!splittable){ + auto sort = SortHelper::getResultSort(node.term()); + if(sortCheck(sort,topLevel) || nodeHead.isVar() || nodeHead.isLambdaTerm()){ + nodeNotSplittable = true; + } + } + + // Node term and query term must have the same type. Hence we do not + // check type of query. We can rely on the nodeNotSplittable check + bool queryNotSplittable = + !query.isVar() && (queryHead.isVar() || queryHead.isLambdaTerm()); + + bool topLevelConstraint = nodeNotSplittable || queryNotSplittable; + + return unifyFirstOrderStructure(query, node, topLevelConstraint, sub); } // see E prover code by Petar /TERMS/cte_fixpoint_unif.c @@ -429,45 +481,32 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermLis } -#define DEBUG_UNIFY(LVL, ...) if (LVL <= 2) DBG(__VA_ARGS__) -bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool splittable, RobSubstitutionTL* sub) +#define DEBUG_UNIFY(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) +bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool topLevelCon, RobSubstitutionTL* sub) { CALL("HOLUnification::unifyFirstOrderStructure"); - DEBUG_UNIFY(1, ".unify(", t1, ",", t2, (splittable ? "" : "{NS}"), ")") + DEBUG_UNIFY(1, ".unify(", t1, ",", t2, ")") if(sub->sameTermContent(t1,t2)) { return true; } auto impl = [&]() -> bool { - ASS(t1.isSpecialVar()); - t1 = sub->derefBound(t1); - if( (t1.isTerm() && t1.term()->isSort()) || (t2.isTerm() && t2.term()->isSort()) ) { + ASS(!topLevelCon); return sub->unify(t1,t2); // sorts can be unified by standard algo } - TermList t1head = sub->derefBound(t1.head()); - TermList t2head = sub->derefBound(t2.head()); - - ASS(!splittable || !t2.isVar()) - - bool t2NotSplittable = !splittable && - (SortHelper::getResultSort(t2.term()).isArrowSort() || - SortHelper::getResultSort(t2.term()).isOrdinaryVar() || - t2head.isVar() || - t2head.isLambdaTerm()); - - // Node term and query term must have the same type. Hence we do not - // check type of query. We can rely on the t2NotSplittable check - if(!t1.isVar() && (t1head.isVar() || t1head.isLambdaTerm() || t2NotSplittable)) { + if(topLevelCon) { // create top level constraint + DEBUG_UNIFY(1, "Adding top level constraint") sub->pushConstraint(UnificationConstraint(t1, t2)); return true; } + Recycled> toDo; toDo->push(UnificationConstraint(t1, t2)); @@ -482,12 +521,6 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool spl } }; - auto sortCheck = [](auto& t) { - return - env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION && - (t.isOrdinaryVar() || t.isArrowSort() || t.isBoolSort()); - }; - while (toDo->isNonEmpty()) { auto x = toDo->pop(); TermList dt1 = sub->derefBound(x.lhs()); @@ -496,7 +529,7 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool spl if (sub->sameTermContent(dt1, dt2)) { // do nothing - } else if(dt1.isVar()) { + } else if(dt1.isVar()) { // TODO Special vars??? auto res = fixpointUnify(dt1, dt2, sub); if(res == OracleResult::FAILURE) return false; if(res == OracleResult::OUT_OF_FRAGMENT) @@ -508,7 +541,7 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool spl if(res == OracleResult::OUT_OF_FRAGMENT) sub->pushConstraint(UnificationConstraint(dt2, dt1)); - } else if(dt1.isTerm() && dt2.isTerm() && dt1.term()->functor() == dt2.term()->functor()) { + } else if(dt1.term()->functor() == dt2.term()->functor()) { if(dt1.isApplication()){ ASS(dt2.isApplication()); @@ -540,6 +573,7 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool spl } } else { + DEBUG_UNIFY(1, "Head symbol clash") // head symbol clash at first-order position // can be no unifier fail return false; diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index 442ad62992..06207ade69 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -42,7 +42,9 @@ namespace UnificationAlgorithms { class HOLUnification { - bool unifyFirstOrderStructure(TermList t1, TermList t2, bool splittable, RobSubstitutionTL* sub); + bool _funcExt; + + bool unifyFirstOrderStructure(TermList t1, TermList t2, bool topLevelCon, RobSubstitutionTL* sub); // TODO if we implement solid fragment, this will not work... enum OracleResult @@ -89,10 +91,17 @@ class HOLUnification { UnificationConstraint constraint() { return UnificationConstraint(lhs(),rhs()); } }; + inline bool sortCheck(TermList sort, bool topLevel = false){ + CALL("HOLUnification::sortCheck"); + return + _funcExt && + (sort.isOrdinaryVar() || sort.isArrowSort() || (sort.isBoolSort() && !topLevel)); + } + class HigherOrderUnifiersIt; public: - HOLUnification() { } + HOLUnification() : _funcExt( env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) { } bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub); SubstIterator unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck = false); diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index ad84014428..05c894bf9a 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -228,7 +228,7 @@ class RobSubstitution _bank.reset(); _constr->reset(); _nextUnboundAvailable=0; - // reset oupt index??? + resetOutputIndex(); } Recycled constraints(){ return _constr->literals(*this); } @@ -248,6 +248,7 @@ class RobSubstitution virtual TermSpecOrList getLitArg(Literal* lit, unsigned idx, VarBankOrInt bank) const = 0; virtual TermSpecOrList getLitSort(Literal* lit, VarBankOrInt bank) const = 0; virtual bool isDefault(VarBankOrInt bank) const = 0; + virtual void resetOutputIndex() = 0; // functions are needed by so many other classes that it is // easier to just make them public rather than adding other @@ -397,6 +398,9 @@ class RobSubstitutionTL : public RobSubstitution virtual bool isDefault(VarBank bank) const override { return bank == VarBank::OUTPUT_BANK; } + virtual void resetOutputIndex() override + { _outputIndex = VarBank::OUTPUT_BANK; } + struct ToRobTermList; }; @@ -439,6 +443,9 @@ class RobSubstitutionTS : public RobSubstitution virtual bool isDefault(int bank) const override { return bank == TermSpec::UNBOUND_INDEX; } + virtual void resetOutputIndex() override + { _outputIndex = TermSpec::UNBOUND_INDEX; } + struct ToRobTermSpec; }; diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 864ff2c199..e863fcfa60 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -1184,13 +1184,14 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const } }; - auto findVar = [](int index, IndexVarStack& st){ + auto findVar = [](int index, IndexVarStack& st, unsigned& var){ for(unsigned i=0; i < st.size(); i++){ if(st[i].first == index){ - return st[i].second; + var = st[i].second; + return true; } } - ASSERTION_VIOLATION; + return false; }; ASS(!isLiteral()); @@ -1256,8 +1257,12 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const return res; } if(deBruijnIndex().isSome() && !db){ - unsigned var = findVar(deBruijnIndex().unwrap(), st); - return (pretty ? "y" : "Y") + Int::toString(var); + unsigned var; + if(findVar(deBruijnIndex().unwrap(), st, var)){ + return (pretty ? "y" : "Y") + Int::toString(var); + } else { + return "db" + Int::toString(deBruijnIndex().unwrap()); + } } TermList head; @@ -2355,17 +2360,13 @@ bool Literal::isFlexRigid() const CALL("Literal::isFlexRigid"); ASS(isEquality()); - auto check = [](TermList head1, TermList term1, TermList head2){ - // only one side has a variable head, and that side isn't a variable - return head1.isVar() && !term1.isVar() && !head2.isVar(); - }; - TermList lhs = *nthArgument(0); TermList rhs = *nthArgument(1); TermList lhsHead = lhs.head(); TermList rhsHead = rhs.head(); - return check(lhsHead, lhs, rhsHead) || check(rhsHead, rhs, lhsHead); + return (lhsHead.isVar() && !rhsHead.isVar()) || + (rhsHead.isVar() && !lhsHead.isVar()); } bool Literal::isRigidRigid() const @@ -2375,7 +2376,7 @@ bool Literal::isRigidRigid() const TermList lhs = *nthArgument(0); TermList rhs = *nthArgument(1); - return !polarity() && lhs.head().isTerm() && rhs.head().isTerm(); + return lhs.head().isTerm() && rhs.head().isTerm(); } #endif diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 54e9caa956..00ec43908f 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1770,7 +1770,7 @@ void Options::init() _higherOrderUnifDepth = UnsignedOptionValue("hol_unif_depth","hud",2); _higherOrderUnifDepth.description = "Set the maximum depth (in terms of projextions and imitations) that higher-order unification can descend to. Once limit is reached, remaining pairs are retunred as constraints."; _higherOrderUnifDepth.addProblemConstraint(hasHigherOrder()); - _higherOrderUnifDepth.addHardConstraint(lessThan(5u)); + _higherOrderUnifDepth.addHardConstraint(lessThan(10u)); _lookup.insert(&_higherOrderUnifDepth); _higherOrderUnifDepth.tag(OptionTag::HIGHER_ORDER); diff --git a/UnitTests/tHOLMatching.cpp b/UnitTests/tHOLMatching.cpp index c11314d4f2..8f5f2d68c4 100644 --- a/UnitTests/tHOLMatching.cpp +++ b/UnitTests/tHOLMatching.cpp @@ -202,6 +202,7 @@ struct IndTest { DECL_HOL_VAR(x4, 4, arrow(arrow(srt, srt),arrow(srt,srt))) \ DECL_CONST(a,srt) \ DECL_CONST(b,srt) \ + DECL_CONST(c,srt) \ DECL_CONST(f,arrow(srt,srt)) \ DECL_CONST(g,arrow(srt,srt)) \ DECL_CONST(h,arrow(arrow(srt, srt),arrow(srt,srt))) \ @@ -234,6 +235,32 @@ RUN_TEST(hol_matching_01, }, }) +RUN_TEST(hol_matching_09, + HOL_SUGAR, + IndTest { + .index = getIndexTerm(), + .insert = { + ap(ap(k, ap(g, a) ), ap(g,a) ), + ap(ap(k, ap(g, c) ), ap(g,b) ), + ap(ap(k, x1 ), x1 ), + }, + .query = ap(ap(k, x0 ), x0 ), + .instantiation = true, + .expected = { + + TermMatchingResultSpec + { .querySigma = ap(ap(k, ap(g, a) ), ap(g,a) ), + .resultSigma = ap(ap(k, ap(g, a) ), ap(g,a) ) + } , + + TermMatchingResultSpec + { .querySigma = ap(ap(k, x1 ), x1 ), + .resultSigma = ap(ap(k, x1 ), x1 ) + } + + }, + }) + RUN_TEST(hol_matching_02, HOL_SUGAR, IndTest { diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index e7b81f0aa3..72656ce0c3 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -788,10 +788,15 @@ TEST_FUN(higher_order2) DECL_SORT(srt) DECL_CONST(a, srt) - DECL_HOL_VAR(x, 0, arrow(srt, srt)) - DECL_HOL_VAR(x2, 1, arrow(srt, arrow(srt, srt))) - DECL_HOL_VAR(x3, 2, srt) + DECL_HOL_VAR(x, 9, arrow(srt, srt)) + DECL_HOL_VAR(x2, 10, arrow(srt, arrow(srt, srt))) + DECL_HOL_VAR(x3, 11, srt) DECL_HOL_VAR(z, 3, srt) + DECL_HOL_VAR(x4, 0, srt) + DECL_HOL_VAR(x5, 1, arrow(srt, srt)) + DECL_HOL_VAR(x6, 2, srt) + DECL_HOL_VAR(x7, 3, arrow(srt, arrow(srt, srt))) + DECL_HOL_VAR(x8, 4, srt) index->insert(ap(x, a), 0, 0); @@ -817,14 +822,14 @@ TEST_FUN(higher_order2) checkHigherOrderTermMatches(*index, x3, Stack{ TermUnificationResultSpec - { .querySigma = ap(ap(x2, a), x3), - .resultSigma = ap(ap(x2, a), x3), - .constraints = Stack{} }, + { .querySigma = x6, + .resultSigma = ap(ap(x7, a), x8), + .constraints = {x6 != ap(ap(x7, a), x8)} }, TermUnificationResultSpec - { .querySigma = ap(x,a), - .resultSigma = ap(x,a), - .constraints = Stack{ } }, + { .querySigma = x4, + .resultSigma = ap(x5,a), + .constraints = {x4 != ap(x5,a) } }, }); From 48d71d28a1db2b776365a015d781aefc9d9dfcdb Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 24 May 2023 13:36:56 +0100 Subject: [PATCH 073/210] bug fixing --- Inferences/EqualityResolution.cpp | 1 - Kernel/ApplicativeHelper.cpp | 142 ++++++++++++++++------ Kernel/ApplicativeHelper.hpp | 6 +- Kernel/HOLUnification.cpp | 41 +++++-- Kernel/Term.cpp | 6 + Kernel/Term.hpp | 3 +- UnitTests/tUnificationWithAbstraction.cpp | 56 +++++++++ 7 files changed, 205 insertions(+), 50 deletions(-) diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index 2ab04f6e49..8156e44713 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -112,7 +112,6 @@ struct EqualityResolution::ResultFn while(substs.hasNext()){ RobSubstitutionTL* sub = substs.next(); - cout << "HERE" << endl; cout << *sub << endl; auto constraints = sub->constraints(); diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 9d2d6eba32..6902163efe 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -108,7 +108,7 @@ bool WHNFDeref::exploreSubterms(TermList orig, TermList newTerm) { CALL("WHNFDeref::exploreSubterms"); - return newTerm.isLambdaTerm() && newTerm.term()->hasRedex(); + return newTerm.isLambdaTerm(); } TermList EtaNormaliser::normalise(TermList t) @@ -192,9 +192,7 @@ bool EtaNormaliser::exploreSubterms(TermList orig, TermList newTerm) { CALL("EtaNormaliser::exploreSubterms"); - while(newTerm.isLambdaTerm()){ - newTerm = newTerm.lambdaBody(); - } + newTerm = ApplicativeHelper::matrix(newTerm); if(newTerm.isVar() || !newTerm.term()->hasLambda()) return false; return true; } @@ -466,6 +464,16 @@ TermList ApplicativeHelper::lambda(TermList varSort, TermList term) return lambda(varSort, termSort, term); } +TermList ApplicativeHelper::matrix(TermList t) +{ + CALL("ApplicativeHelper::matrix"); + + while(t.isLambdaTerm()){ + t = t.lambdaBody(); + } + return t; +} + TermList ApplicativeHelper::getDeBruijnIndex(int index, TermList sort) { @@ -548,9 +556,7 @@ void ApplicativeHelper::getHeadSortAndArgs(TermList term, TermList& head, if(!args.isEmpty()){ args.reset(); } - while(term.isLambdaTerm()){ - term = term.lambdaBody(); - } + term = matrix(term); while(term.isApplication()){ args.push(term.rhs()); @@ -563,6 +569,17 @@ void ApplicativeHelper::getHeadSortAndArgs(TermList term, TermList& head, head = term; } +void ApplicativeHelper::getLambdaPrefSorts(TermList t, TermStack& sorts) +{ + CALL("ApplicativeHelper::getLambdaPrefSorts"); + + while(t.isLambdaTerm()){ + sorts.push(*t.term()->nthArgument(0)); + t = t.lambdaBody(); + } + +} + void ApplicativeHelper::getArgSorts(TermList t, TermStack& sorts) { CALL("ApplicativeHelper::getArgSorts"); @@ -572,6 +589,8 @@ void ApplicativeHelper::getArgSorts(TermList t, TermStack& sorts) t = t.result(); } + t = matrix(t); + while(t.isApplication()){ sorts.push(*t.term()->nthArgument(0)); t = t.lhs(); @@ -585,9 +604,7 @@ void ApplicativeHelper::getHeadAndArgs(TermList term, TermList& head, TermStack& if(!args.isEmpty()){ args.reset(); } - while(term.isLambdaTerm()){ - term = term.lambdaBody(); - } + term = matrix(term); while(term.isApplication()){ args.push(term.rhs()); @@ -675,38 +692,89 @@ bool ApplicativeHelper::canHeadReduce(TermList const& head, TermStack const& arg return head.isLambdaTerm() && args.size(); } +bool ApplicativeHelper::isEtaExpandedVar(TermList t, TermList& var){ + CALL("ApplicativeHelper::isEtaExpandedVar"); + + // TODO code sharing with Eta reducer above + TermList body = t; + unsigned l = 0; // number of lambda binders + while(body.isLambdaTerm()){ + l++; + body = body.lambdaBody(); + } + + unsigned n = 0; // number of De bruijn indices at end of term + while(body.isApplication()){ + auto dbIndex = body.rhs().deBruijnIndex(); + if(!dbIndex.isSome() || dbIndex.unwrap() != n) + { break; } + body = body.lhs(); + n++; + } + + var = body; + return n == l && var.isVar(); +} + + void ApplicativeHelper::normaliseLambdaPrefixes(TermList& t1, TermList& t2) { CALL("ApplicativeHelper::normaliseLambdaPrefixes"); - auto pruneAndExpand = [](TermList& s1, TermList& s2){ - ASS(s1.isLambdaTerm() && !s2.isLambdaTerm()); - - TermList sort = SortHelper::getResultSort(s1.term()); - int n = 0; - while(s1.isLambdaTerm()){ - s1 = s1.lambdaBody(); - n++; - } - - s2 = TermShifter().shift(s2,n); // shift free indices up by n - for(unsigned i = 0; i < n; i++){ - s2 = app(sort,s2,getDeBruijnIndex(n - 1 - i, sort.domain())); + if(t1.isVar() && t2.isVar()) return; + TermList nonVar = t1.isVar() ? t2 : t1; + TermList sort = SortHelper::getResultSort(nonVar.term()); + + auto etaExpand = [](TermList t, TermList sort, TermStack& sorts, unsigned n, unsigned m){ + TermStack sorts1; // sorts of new prefix + + for(int i = n - 1; i >= (int)m; i--){ + ASS(sort.isArrowSort()); + auto s = sort.domain(); + auto dbIndex = getDeBruijnIndex((unsigned)i,s); + t = app(sort, t, dbIndex); sort = sort.result(); + sorts1.push(s); + } + + while(!sorts.isEmpty()){ + t = lambda(sorts.pop(), t); } - }; - while(t1.isLambdaTerm() && t2.isLambdaTerm()){ - t1 = t1.lambdaBody(); - t2 = t2.lambdaBody(); + while(!sorts1.isEmpty()){ + t = lambda(sorts1.pop(), t); + } + return t; + }; + + unsigned m = 0; + unsigned n = 0; + TermList t1c = t1; + TermList t2c = t2; + TermList t1s = sort; + TermList t2s = sort; + TermStack prefSorts1; + TermStack prefSorts2; + + while(t1c.isLambdaTerm()){ + t1c = t1c.lambdaBody(); + prefSorts1.push(t1s.domain()); + t1s = t1s.result(); + m++; } - if(t1.isLambdaTerm()){ - pruneAndExpand(t1,t2); - } else if(t2.isLambdaTerm()){ - pruneAndExpand(t2,t1); + while(t2c.isLambdaTerm()){ + t2c = t2c.lambdaBody(); + prefSorts2.push(t2s.domain()); + t2s = t2s.result(); + n++; } + if(m > n) + t2 = etaExpand(t2c, t2s, prefSorts2, m, n); + + if(n > m) + t1 = etaExpand(t1c, t1s, prefSorts1, n, m); } @@ -718,7 +786,7 @@ bool ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigid ASS(bindings.isEmpty()); // since term is rigid, cannot be a variable - TermList sort = SortHelper::getResultSort(rigidTerm.term()); + TermList sort = SortHelper::getResultSort(matrix(rigidTerm).term()).finalResult(); TermList headRigid = rigidTerm.head(); TermList headFlex; TermStack argsFlex; @@ -789,13 +857,17 @@ TermList ApplicativeHelper::createGeneralBinding(TermList& freshVar, TermList he return surround ? surroundWithLambdas(pb, sorts) : pb; } -TermList ApplicativeHelper::surroundWithLambdas(TermList t, TermStack& sorts) +TermList ApplicativeHelper::surroundWithLambdas(TermList t, TermStack& sorts, bool fromTop) { CALL("ApplicativeHelper::surroundWithLambdas"); ASS(t.isTerm()); - for(int i = 0; i < sorts.size(); i++){ - t = lambda(sorts[i], t); + if(!fromTop){ // TODO fromTop is very hacky. See if can merge these two into one loop + for(int i = 0; i < sorts.size(); i++) + { t = lambda(sorts[i], t); } + } else { + for(int i = sorts.size() - 1; i >= 0; i--) + { t = lambda(sorts[i], t); } } return t; } diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index df6659b716..ef0b791a74 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -41,6 +41,8 @@ class ApplicativeHelper { static TermList lambda(TermList varSort, TermList termSort, TermList term); static TermList lambda(TermList varSort, TermList term); + static TermList matrix(TermList t); + static TermList getDeBruijnIndex(int index, TermList sort); static TermList placeholder(TermList sort); @@ -62,6 +64,7 @@ class ApplicativeHelper { static TermList lhsSort(TermList t); static TermList rhsSort(TermList t); + static void getLambdaPrefSorts(TermList t, TermStack& sorts); static void getArgSorts(TermList t, TermStack& sorts); static Signature::Proxy getProxy(const TermList& t); @@ -74,6 +77,7 @@ class ApplicativeHelper { static bool isTrue(TermList term); static bool isFalse(TermList term); static bool canHeadReduce(const TermList& head, const TermStack& args); + static bool isEtaExpandedVar(TermList t, TermList& var); static void normaliseLambdaPrefixes(TermList& t1, TermList& t2); @@ -82,7 +86,7 @@ class ApplicativeHelper { // if surround is set to true, the general binding is surround by n lambdas static TermList createGeneralBinding(TermList& freshVar, TermList head, TermStack& sorts, bool surround = true); - static TermList surroundWithLambdas(TermList t, TermStack& sorts); + static TermList surroundWithLambdas(TermList t, TermStack& sorts, bool fromTop = false); static TermList top(); static TermList bottom(); static TermList conj(); diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index eee382c37f..825e3d5be1 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -27,6 +27,9 @@ namespace UnificationAlgorithms { class HOLUnification::HigherOrderUnifiersIt: public IteratorCore { public: + + using AH = ApplicativeHelper; + HigherOrderUnifiersIt(RobSubstitutionTL* subst, bool funcExt) : _returnInitial(false), _used(false), _depth(0), _freshVar(0, VarBank::FRESH_BANK), _subst(subst){ @@ -146,22 +149,27 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); } @@ -187,7 +195,8 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); tempBD.drop(); - continue; + applyBindingToPairs(); + continue; // TODO apply new binding to pairs...??? } else { forward = backtrack(); continue; @@ -197,7 +206,14 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop(); bd.addClosure([this, fv = _freshVar](){ _freshVar = fv; }); - ApplicativeHelper::getProjAndImitBindings(flexTerm, rigidTerm, projAndImitBindings, _freshVar); + AH::getProjAndImitBindings(flexTerm, rigidTerm, projAndImitBindings, _freshVar); + + if(projAndImitBindings.isEmpty()){ + // no bindings for this pair of terms + forward = backtrack(); + continue; + } + backtrackablePush(*_bindings,projAndImitBindings,bd); } @@ -209,8 +225,6 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop().size()); TermList binding = _bindings->top().pop(); - cout << "binding " << flexHead << " -> " << binding << endl; - _subst->bdRecord(_bdStack->top()); _subst->bind(flexHead, binding); _subst->bdDone(); @@ -406,8 +420,11 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermLis { CALL("HOLUnification::fixpointUnify"); - // TODO what about if it is an eta-expanded var? Is that possible here? - if(!var.isVar()) return OracleResult::OUT_OF_FRAGMENT; + TermList v; + // var can be an eta expanded var due to the normalisation of lambda prefixes + // that takes place in iterator above + if(!var.isEtaExpandedVar(v)) return OracleResult::OUT_OF_FRAGMENT; + var = v; // set var to its eta-reduced variant struct TermListFP { TermList t; diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index e863fcfa60..5f59e45ff6 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -516,6 +516,12 @@ bool Term::isLambdaTerm() const { return !isSort() && !isLiteral() && !isSpecial() && env.signature->isLamFun(_functor); } +bool TermList::isEtaExpandedVar(TermList& var) const { + CALL("TermList::isEtaExpandedVar"); + + return ApplicativeHelper::isEtaExpandedVar(*this, var); +} + bool TermList::isRedex() { CALL("TermList::isRedex"); diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 39a5415db7..d990fdc177 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -249,7 +249,8 @@ class TermList { #if VHOL bool isApplication() const; - bool isLambdaTerm() const; + bool isLambdaTerm() const; + bool isEtaExpandedVar(TermList& var) const; bool isRedex(); bool isNot() const; bool isSigma() const; diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index 72656ce0c3..defa32ca79 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -1041,6 +1041,62 @@ TEST_FUN(higher_order8) }); } +TEST_FUN(higher_order9) +{ + env.property->forceHigherOrder(); + + env.options->set("pretty_hol_printing","pretty"); + env.options->set("func_ext", "abstraction"); + env.options->set("print_var_banks", "true"); + env.options->set("hol_unif_depth", "9"); + auto index = getHOLTermIndex(); + + DECL_DEFAULT_SORT_VARS + DECL_SORT(srt) + + DECL_CONST(a, srt) + DECL_CONST(b, srt) + DECL_CONST(g, arrow(srt,arrow(srt, srt))) + + DECL_HOL_VAR(x, 10, arrow(srt,arrow(srt, srt))) + + DECL_HOL_VAR(x0, 0, srt) + DECL_HOL_VAR(x1, 1, srt) + DECL_HOL_VAR(x2, 2, srt) + DECL_HOL_VAR(x3, 3, srt) + + index->insert(ap(ap(g,a),b), 0, 0); + + auto b1 = toDBs(lam(x0, lam(x1, ap(ap(g, ap(ap(lam(x2, lam(x3, x3)), x0), x1) ), ap(ap(lam(x2, lam(x3, x2)), x0), x1) ) ))); + auto b2 = toDBs(lam(x0, lam(x1, ap(ap(g, ap(ap(lam(x2, lam(x3, a)), x0), x1) ), ap(ap(lam(x2, lam(x3, x2)), x0), x1) ) ))); + auto b3 = toDBs(lam(x0, lam(x1, ap(ap(g, ap(ap(lam(x2, lam(x3, x3)), x0), x1) ), ap(ap(lam(x2, lam(x3, b)), x0), x1) ) ))); + auto b4 = toDBs(lam(x0, lam(x1, ap(ap(g, ap(ap(lam(x2, lam(x3, a)), x0), x1) ), ap(ap(lam(x2, lam(x3, b)), x0), x1) ) ))); + + checkHigherOrderTermMatches(*index, ap(ap(x,b),a), Stack{ + + TermUnificationResultSpec + { .querySigma = ap(ap(b1,b),a), + .resultSigma = ap(ap(g,a),b), + .constraints = Stack{ } }, + + TermUnificationResultSpec + { .querySigma = ap(ap(b2,b),a), + .resultSigma = ap(ap(g,a),b), + .constraints = Stack{ } }, + + TermUnificationResultSpec + { .querySigma = ap(ap(b3,b),a), + .resultSigma = ap(ap(g,a),b), + .constraints = Stack{ } }, + + TermUnificationResultSpec + { .querySigma = ap(ap(b4,b),a), + .resultSigma = ap(ap(g,a),b), + .constraints = Stack{ } }, + + }); +} + // AYB not a real test, but if run with debugging info // in HOLSubstitutionTree, very useful for ensuring // that insertions and deletions are taking place correctly From 667239a768433c361ad6d5f315e29886d152cbb2 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 24 May 2023 23:02:40 +0100 Subject: [PATCH 074/210] changes to support compiling with GCC and to remove debug output --- Inferences/EqualityResolution.cpp | 2 -- Kernel/HOLUnification.cpp | 4 ++-- Kernel/MismatchHandler.cpp | 8 ++++---- Kernel/MismatchHandler.hpp | 18 +++++++++--------- Kernel/RobSubstitution.cpp | 6 +++--- Kernel/RobSubstitution.hpp | 10 +++++----- 6 files changed, 23 insertions(+), 25 deletions(-) diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index 8156e44713..b46b538df6 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -112,8 +112,6 @@ struct EqualityResolution::ResultFn while(substs.hasNext()){ RobSubstitutionTL* sub = substs.next(); - cout << *sub << endl; - auto constraints = sub->constraints(); unsigned newLen=_cLen - 1 + constraints->length(); diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 825e3d5be1..c985885add 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -126,7 +126,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCore MismatchHandler::tryAbstract(RobSubst }) //create non-shared? .unwrap(); }; auto diffConstr = [&]() - { return UnificationConstraint(sum(diff1), sum(diff2)); }; + { return UnifConstraint(sum(diff1), sum(diff2)); }; auto functors = [](auto& diff) { return arrayIter(diff).map([](auto& f) { return f.term()->functor(); }); }; @@ -182,10 +182,10 @@ Option MismatchHandler::tryAbstract(RobSubst return some(AbstractionResult(NeverEqual{})); } else if (_mode == Uwa::AC2 && diff1.size() == 1 && diff1[0].isVar()) { - return some(AbstractionResult(EqualIf().unify(UnificationConstraint(diff1[0], sum(diff2))))); + return some(AbstractionResult(EqualIf().unify(UnifConstraint(diff1[0], sum(diff2))))); } else if (_mode == Uwa::AC2 && diff2.size() == 1 && diff2[0].isVar()) { - return some(AbstractionResult(EqualIf().unify(UnificationConstraint(diff2[0], sum(diff1))))); + return some(AbstractionResult(EqualIf().unify(UnifConstraint(diff2[0], sum(diff1))))); } else if (concatIters(arrayIter(diff1), arrayIter(diff2)).any([](auto& x) { return x.isVar(); })) { return some(AbstractionResult(EqualIf().constr(diffConstr()))); @@ -201,7 +201,7 @@ Option MismatchHandler::tryAbstract(RobSubst auto abs = canAbstract(t1, t2); DEBUG("canAbstract(", t1, ",", t2, ") = ", abs); return someIf(abs, [&](){ - return AbstractionResult(EqualIf().constr(UnificationConstraint(t1, t2))); + return AbstractionResult(EqualIf().constr(UnifConstraint(t1, t2))); }); } } diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index 1d3cfb7268..da135b705c 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -40,11 +40,11 @@ class MismatchHandler final MismatchHandler(Shell::Options::UnificationWithAbstraction mode) : _mode(mode) {} - using UnificationConstraint = UnificationConstraint; + using UnifConstraint = UnificationConstraint; struct EqualIf { - Recycled> _unify; - Recycled> _constr; + Recycled> _unify; + Recycled> _constr; EqualIf() : _unify(), _constr() {} @@ -59,9 +59,9 @@ class MismatchHandler final template - EqualIf constr(UnificationConstraint constr, As... constrs) && + EqualIf constr(UnifConstraint constr, As... constrs) && { - unsigned constexpr len = TypeList::Size>::val; + unsigned constexpr len = TypeList::Size>::val; _constr->reserve(len); __push(*_constr, std::move(constr), std::move(constrs)...); return std::move(*this); @@ -69,9 +69,9 @@ class MismatchHandler final template - EqualIf unify(UnificationConstraint unify, As... unifys) && + EqualIf unify(UnifConstraint unify, As... unifys) && { - unsigned constexpr len = TypeList::Size>::val; + unsigned constexpr len = TypeList::Size>::val; _unify->reserve(len); __push(*_unify, std::move(unify), std::move(unifys)...); return std::move(*this); @@ -80,10 +80,10 @@ class MismatchHandler final friend std::ostream& operator<<(std::ostream& out, EqualIf const& self) { return out << "EqualIf(unify: " << self._unify << ", constr: " << self._constr << ")"; } private: - void __push(Stack& s) + void __push(Stack& s) { } template - void __push(Stack& s, UnificationConstraint c, As... as) + void __push(Stack& s, UnifConstraint c, As... as) { s.push(std::move(c)); __push(s, std::move(as)...); } }; diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 13da093140..199344669a 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -60,7 +60,7 @@ UnificationConstraintStack::pop(Option -Recycled> UnificationConstraintStack::literals(RobSubstitution& s) +Recycled> UnificationConstraintStack::literals(RobSubst& s) { Recycled> out; out->reserve(_cont.size()); @@ -69,7 +69,7 @@ Recycled> UnificationConstraintStack -Option UnificationConstraint::toLiteral(RobSubstitution& s) +Option UnificationConstraint::toLiteral(RobSubst& s) { auto t1 = s.apply(_t1); auto t2 = s.apply(_t2); @@ -418,7 +418,7 @@ bool RobSubstitution::match(TermSpecOrList base, T { CALL("RobSubstitution::match(TermSpec...)"); -#define DEBUG_MATCH(lvl, ...) if (lvl < 2) DBG("match: ", __VA_ARGS__) +#define DEBUG_MATCH(lvl, ...) if (lvl < 0) DBG("match: ", __VA_ARGS__) if(sameTermContent(base,instance)) { return true; } diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 05c894bf9a..71554df2a0 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -105,7 +105,7 @@ class UnificationConstraint TermSpecOrList _t2; using Constraint = UnificationConstraint; - using RobSubstitution = RobSubstitution; + using RobSubst = RobSubstitution; public: // TODO get rid of default constr UnificationConstraint() {} @@ -122,7 +122,7 @@ class UnificationConstraint : _t1(t1), _t2(t2) {} - Option toLiteral(RobSubstitution& s); + Option toLiteral(RobSubst& s); TermSpecOrList const& lhs() const { return _t1; } TermSpecOrList const& rhs() const { return _t2; } @@ -136,7 +136,7 @@ template class UnificationConstraintStack { using Constraint = UnificationConstraint; - using RobSubstitution = RobSubstitution; + using RobSubst = RobSubstitution; Stack _cont; public: @@ -150,9 +150,9 @@ class UnificationConstraintStack { return iterTraits(_cont.iter()); } // only require these functions for termlists ... - Recycled> literals(RobSubstitution& s); + Recycled> literals(RobSubst& s); - auto literalIter(RobSubstitution& s) + auto literalIter(RobSubst& s) { return iterTraits(_cont.iter()) .filterMap([&](auto& c) { return c.toLiteral(s); }); } From b021c1db1734da8700313d29f80ba5234fe242c3 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 24 May 2023 23:07:11 +0100 Subject: [PATCH 075/210] further update to support GCC --- Kernel/HOLUnification.cpp | 20 ++++++++++---------- Kernel/HOLUnification.hpp | 8 ++++---- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index c985885add..034680bc41 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -258,7 +258,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorebdRecord(bd); while(!_unifPairs.isEmpty()){ HOLConstraint con = popFromUnifPairs(bd); - UnificationConstraint c(con.lhs(), con.rhs()); + UnifConstraint c(con.lhs(), con.rhs()); _subst->pushConstraint(c); } _subst->bdDone(); @@ -519,17 +519,17 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool top if(topLevelCon) { // create top level constraint DEBUG_UNIFY(1, "Adding top level constraint") - sub->pushConstraint(UnificationConstraint(t1, t2)); + sub->pushConstraint(UnifConstraint(t1, t2)); return true; } - Recycled> toDo; - toDo->push(UnificationConstraint(t1, t2)); + Recycled> toDo; + toDo->push(UnifConstraint(t1, t2)); // Save encountered unification pairs to avoid // recomputing their unification - Recycled> encountered; + Recycled> encountered; auto pushTodo = [&](auto pair) { if (!encountered->find(pair)) { @@ -550,13 +550,13 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool top auto res = fixpointUnify(dt1, dt2, sub); if(res == OracleResult::FAILURE) return false; if(res == OracleResult::OUT_OF_FRAGMENT) - sub->pushConstraint(UnificationConstraint(dt1, dt2)); + sub->pushConstraint(UnifConstraint(dt1, dt2)); } else if(dt2.isVar()) { auto res = fixpointUnify(dt2, dt1, sub); if(res == OracleResult::FAILURE) return false; if(res == OracleResult::OUT_OF_FRAGMENT) - sub->pushConstraint(UnificationConstraint(dt2, dt1)); + sub->pushConstraint(UnifConstraint(dt2, dt1)); } else if(dt1.term()->functor() == dt2.term()->functor()) { @@ -569,7 +569,7 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool top TermList dt1t2head = sub->derefBound(dt1t2.head()); TermList dt2t2head = sub->derefBound(dt2t2.head()); - pushTodo(UnificationConstraint(dt1.term()->termArg(0), dt2.term()->termArg(0))); + pushTodo(UnifConstraint(dt1.term()->termArg(0), dt2.term()->termArg(0))); // Not sure the logic below is right. Things get very complicated because // the sorts can be special variables. I think what we have below is an @@ -577,9 +577,9 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool top if(!dt1t2.isVar() && !dt2t2.isVar() && // if either is a variable let fixpoint unification decide whether to create a constraint or to bind (sortCheck(dt1s1) || dt1t2head.isVar() || dt1t2head.isLambdaTerm() || sortCheck(dt2s1) || dt2t2head.isVar() || dt2t2head.isLambdaTerm() )) { - sub->pushConstraint(UnificationConstraint(dt1t2, dt2t2)); + sub->pushConstraint(UnifConstraint(dt1t2, dt2t2)); } else { - pushTodo(UnificationConstraint(dt1t2, dt2t2)); + pushTodo(UnifConstraint(dt1t2, dt2t2)); } } else { for (unsigned i = 0; i < dt1.term()->arity(); i++) { diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index 06207ade69..4c7f7141ec 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -56,9 +56,9 @@ class HOLUnification { static OracleResult fixpointUnify(TermList var, TermList t, RobSubstitutionTL* sub); - using UnificationConstraint = UnificationConstraint; + using UnifConstraint = UnificationConstraint; - class HOLConstraint : public UnificationConstraint + class HOLConstraint : public UnifConstraint { private: TermList _t1head; @@ -66,7 +66,7 @@ class HOLUnification { public: HOLConstraint(){} // dummy constructor required for use in SkipList - HOLConstraint(TermList t1, TermList t2) : UnificationConstraint(t1,t2), + HOLConstraint(TermList t1, TermList t2) : UnifConstraint(t1,t2), _t1head(t1.head()), _t2head(t2.head()) { ASS(!_t1head.isLambdaTerm() && !_t2head.isLambdaTerm()); // terms must be in whnf } @@ -88,7 +88,7 @@ class HOLUnification { return SortHelper::getResultSort(rhs().term()); } - UnificationConstraint constraint() { return UnificationConstraint(lhs(),rhs()); } + UnifConstraint constraint() { return UnifConstraint(lhs(),rhs()); } }; inline bool sortCheck(TermList sort, bool topLevel = false){ From 0b6e53296e950c6404003e778a3e5e5c4d2fdbb0 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 24 May 2023 23:13:10 +0100 Subject: [PATCH 076/210] more GCC induced changes --- Kernel/ApplicativeHelper.cpp | 4 ++-- Kernel/RobSubstitution.cpp | 2 +- UnitTests/tHOLMatching.cpp | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 6902163efe..7d9f69e0ff 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -844,7 +844,7 @@ TermList ApplicativeHelper::createGeneralBinding(TermList& freshVar, TermList he TermList headSort = SortHelper::getResultSort(head.term()); getArgSorts(headSort, argSorts); - for(int i = 0; i < sorts.size(); i++){ + for(unsigned i = 0; i < sorts.size(); i++){ indices.push(getDeBruijnIndex(i, sorts[i])); } @@ -863,7 +863,7 @@ TermList ApplicativeHelper::surroundWithLambdas(TermList t, TermStack& sorts, bo ASS(t.isTerm()); if(!fromTop){ // TODO fromTop is very hacky. See if can merge these two into one loop - for(int i = 0; i < sorts.size(); i++) + for(unsigned i = 0; i < sorts.size(); i++) { t = lambda(sorts[i], t); } } else { for(int i = sorts.size() - 1; i >= 0; i--) diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 199344669a..1836c1c491 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -552,7 +552,7 @@ Literal* RobSubstitution::apply(Literal* lit, VarB return lit; } - int arity = lit->arity(); + unsigned arity = lit->arity(); ts.ensure(arity); for (unsigned i = 0; i < arity; i++) { ts[i]=apply(getLitArg(lit,i,bank),bank); diff --git a/UnitTests/tHOLMatching.cpp b/UnitTests/tHOLMatching.cpp index 8f5f2d68c4..9a5ba4a0f7 100644 --- a/UnitTests/tHOLMatching.cpp +++ b/UnitTests/tHOLMatching.cpp @@ -224,7 +224,6 @@ RUN_TEST(hol_matching_01, toDeBrs(lam(x1, ap(f, x1))), }, .query = x2, - .instantiation = true, .expected = { TermMatchingResultSpec @@ -233,6 +232,7 @@ RUN_TEST(hol_matching_01, } }, + .instantiation = true, }) RUN_TEST(hol_matching_09, @@ -245,7 +245,6 @@ RUN_TEST(hol_matching_09, ap(ap(k, x1 ), x1 ), }, .query = ap(ap(k, x0 ), x0 ), - .instantiation = true, .expected = { TermMatchingResultSpec @@ -259,6 +258,7 @@ RUN_TEST(hol_matching_09, } }, + .instantiation = true, }) RUN_TEST(hol_matching_02, @@ -269,7 +269,6 @@ RUN_TEST(hol_matching_02, ap(x2,a), }, .query = ap(f,a), - .instantiation = false, .expected = { TermMatchingResultSpec @@ -278,6 +277,7 @@ RUN_TEST(hol_matching_02, } }, + .instantiation = false, }) RUN_TEST(hol_matching_03, @@ -288,7 +288,6 @@ RUN_TEST(hol_matching_03, toDeBrs(ap(ap(x4,lam(x0,x0)), a)), }, .query = toDeBrs(ap(ap(h,lam(x0,x0)), a)), - .instantiation = false, .expected = { TermMatchingResultSpec @@ -297,6 +296,7 @@ RUN_TEST(hol_matching_03, } }, + .instantiation = false, }) RUN_TEST(hol_matching_04, @@ -307,7 +307,6 @@ RUN_TEST(hol_matching_04, toDeBrs(lam(x0, lam(x1, x0))), }, .query = toDeBrs(lam(x0, lam(x1, x0))), - .instantiation = false, .expected = { TermMatchingResultSpec @@ -316,6 +315,7 @@ RUN_TEST(hol_matching_04, } }, + .instantiation = false, }) RUN_TEST(hol_matching_05, @@ -326,8 +326,8 @@ RUN_TEST(hol_matching_05, toDeBrs(lam(x0, lam(x1, x0))), }, .query = toDeBrs(lam(x0, lam(x1, x1))), - .instantiation = false, .expected = Stack{}, + .instantiation = false, }) RUN_TEST(hol_matching_06, @@ -338,8 +338,8 @@ RUN_TEST(hol_matching_06, toDeBrs(lam(x0, lam(x1, x0))), }, .query = toDeBrs(lam(x0, lam(x1, y0))), - .instantiation = true, .expected = Stack{}, + .instantiation = true, }) RUN_TEST(hol_matching_07, @@ -351,7 +351,6 @@ RUN_TEST(hol_matching_07, ap(ap(k,b),b), }, .query = ap(ap(k,x0),x0), - .instantiation = true, .expected = { TermMatchingResultSpec @@ -360,6 +359,7 @@ RUN_TEST(hol_matching_07, } }, + .instantiation = true, }) RUN_TEST(hol_matching_08, @@ -370,8 +370,8 @@ RUN_TEST(hol_matching_08, ap(ap(k,a),b), }, .query = ap(ap(k,ap(f, x0)),x0), - .instantiation = true, .expected = Stack{}, + .instantiation = true, }) #endif \ No newline at end of file From 89a61d74746d70cbb764cda06e1016d2b6763a3e Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 26 May 2023 00:22:04 +0100 Subject: [PATCH 077/210] bug fixing, but many remain --- Forwards.hpp | 2 +- Indexing/HOLSubstitutionTree.cpp | 11 +- Indexing/HOLSubstitutionTree.hpp | 12 +- Indexing/IndexManager.cpp | 14 +- Indexing/LiteralSubstitutionTree.cpp | 5 +- Indexing/ResultSubstitution.cpp | 2 + Indexing/SubstitutionTree.cpp | 23 +- Indexing/SubstitutionTree.hpp | 37 ++- Indexing/TermSubstitutionTree.cpp | 5 +- Indexing/TermSubstitutionTree.hpp | 15 +- Inferences/Superposition.cpp | 4 + Kernel/ApplicativeHelper.cpp | 25 +- Kernel/HOLMatching.cpp | 4 +- Kernel/HOLMatching.hpp | 8 +- Kernel/HOLUnification.cpp | 287 ++++++++-------------- Kernel/HOLUnification.hpp | 29 ++- Kernel/MismatchHandler.cpp | 2 +- Kernel/MismatchHandler.hpp | 10 +- Kernel/RobSubstitution.cpp | 11 +- Kernel/RobSubstitution.hpp | 1 + Kernel/Term.cpp | 2 +- Kernel/TermTransformer.cpp | 8 +- Saturation/Splitter.cpp | 6 +- UnitTests/tUnificationWithAbstraction.cpp | 14 +- 24 files changed, 264 insertions(+), 273 deletions(-) diff --git a/Forwards.hpp b/Forwards.hpp index f99ebabadd..468974116f 100644 --- a/Forwards.hpp +++ b/Forwards.hpp @@ -156,7 +156,7 @@ typedef Lib::SmartPtr ResultSubstitutionSP; enum class SplittingAlgo { NONE #if VHOL - , HOL_UNIF, HOL_MATCH + , HOL_MATCH #endif }; diff --git a/Indexing/HOLSubstitutionTree.cpp b/Indexing/HOLSubstitutionTree.cpp index e102491d18..38e81cac61 100644 --- a/Indexing/HOLSubstitutionTree.cpp +++ b/Indexing/HOLSubstitutionTree.cpp @@ -242,7 +242,10 @@ void HOLSubstitutionTree::higherOrderInsert(HOLBindingMap& svBindings,LeafData l // an == check on possibly non-shared terms, // but that is what existing code does if(*lhs == *rhs){ - } else if(pair.lhsTop() == pair.rhsTop()){ + } else if(!lhs->isVar() && !rhs->isVar() && pair.lhsTop() == pair.rhsTop()){ + // we can have two vars which are not == but have the same top + // since the top() function does take into accoutn whether one variable is + // special. Might be worth changing this TODO // same top different content ASS(!lhs->isVar() && !rhs->isVar()); @@ -264,8 +267,8 @@ void HOLSubstitutionTree::higherOrderInsert(HOLBindingMap& svBindings,LeafData l toProcess.push(SubtermPair(l->nthArgument(0), true, r->nthArgument(0), true)); toProcess.push(SubtermPair(l->nthArgument(1), true, r->nthArgument(1), true)); toProcess.push(SubtermPair(l->nthArgument(2), true, r->nthArgument(2), true)); - toProcess.push(SubtermPair(l->nthArgument(3), _splittable(lhs->nthArg(3), false), - r->nthArgument(3), _splittable(rhs->nthArg(3), false))); + toProcess.push(SubtermPair(l->nthArgument(3), _splittable(lhs->nthArg(3)), + r->nthArgument(3), _splittable(rhs->nthArg(3)))); } else { for (unsigned i = 0; i < l->arity(); i++) { toProcess.push(SubtermPair(l->nthArgument(i), true, r->nthArgument(i), true)); @@ -373,7 +376,7 @@ void HOLSubstitutionTree::higherOrderRemove(HOLBindingMap& svBindings, LeafData subterms.push(std::make_pair((*l)[0], Subterm((*r)[0], true))); subterms.push(std::make_pair((*l)[1], Subterm((*r)[1], true))); subterms.push(std::make_pair((*l)[2], Subterm((*r)[2], true))); - subterms.push(std::make_pair((*l)[3], Subterm((*r)[3], _splittable((*r)[3], false)))); + subterms.push(std::make_pair((*l)[3], Subterm((*r)[3], _splittable((*r)[3])))); } else { ASS(l->arity() == r->arity()); for (unsigned i = 0; i < l->arity(); i++) { diff --git a/Indexing/HOLSubstitutionTree.hpp b/Indexing/HOLSubstitutionTree.hpp index 1834f55495..eecff526b4 100644 --- a/Indexing/HOLSubstitutionTree.hpp +++ b/Indexing/HOLSubstitutionTree.hpp @@ -31,7 +31,7 @@ namespace Indexing { class HOLSubstitutionTree : public SubstitutionTree { - using SplittableType = std::function; + using SplittableType = std::function; public: CLASS_NAME(HOLSubstitutionTree); @@ -119,7 +119,7 @@ class HOLSubstitutionTree template void createHOLBindings(TypedTermList term, bool reversed, BindingFunction bindSpecialVar) { - bindSpecialVar(0, Subterm(term, _splittable(term, true))); + bindSpecialVar(0, Subterm(term, _splittable(term))); bindSpecialVar(1, Subterm(term.sort(),true)); } @@ -133,11 +133,11 @@ class HOLSubstitutionTree TermList l1 = *lit->nthArgument(1); if (reversed) { - bindSpecialVar(1,Subterm(l0, _splittable(l0, true)) ); - bindSpecialVar(0,Subterm(l1, _splittable(l1, true)) ); + bindSpecialVar(1,Subterm(l0, _splittable(l0)) ); + bindSpecialVar(0,Subterm(l1, _splittable(l1)) ); } else { - bindSpecialVar(0,Subterm(l0, _splittable(l0, true)) ); - bindSpecialVar(1,Subterm(l1, _splittable(l1, true)) ); + bindSpecialVar(0,Subterm(l0, _splittable(l0)) ); + bindSpecialVar(1,Subterm(l1, _splittable(l1)) ); } auto sort = SortHelper::getEqualityArgumentSort(lit); diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 83b5a0e14a..216d1ab95b 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -150,21 +150,11 @@ Index* IndexManager::create(IndexType t) break; case SUPERPOSITION_SUBTERM_SUBST_TREE: - res = -#if VHOL - env.property->higherOrder() ? - new SuperpositionSubtermIndex(new TermSubstitutionTree(SplittingAlgo::HOL_UNIF), _alg->getOrdering()) : -#endif - new SuperpositionSubtermIndex(new TermSubstitutionTree(), _alg->getOrdering()); + res = new SuperpositionSubtermIndex(new TermSubstitutionTree(), _alg->getOrdering()); isGenerating = true; break; case SUPERPOSITION_LHS_SUBST_TREE: - res = -#if VHOL - env.property->higherOrder() ? - new SuperpositionLHSIndex(new TermSubstitutionTree(SplittingAlgo::HOL_UNIF), _alg->getOrdering(), _alg->getOptions()) : -#endif - new SuperpositionLHSIndex(new TermSubstitutionTree(), _alg->getOrdering(), _alg->getOptions()); + res = new SuperpositionLHSIndex(new TermSubstitutionTree(), _alg->getOrdering(), _alg->getOptions()); isGenerating = true; break; diff --git a/Indexing/LiteralSubstitutionTree.cpp b/Indexing/LiteralSubstitutionTree.cpp index b8da7c5caf..5009bbd307 100644 --- a/Indexing/LiteralSubstitutionTree.cpp +++ b/Indexing/LiteralSubstitutionTree.cpp @@ -84,11 +84,8 @@ SubstitutionTree* LiteralSubstitutionTree::getTree(Literal* lit, bool complement _trees.push(new SubstitutionTree()); break; #if VHOL - case SplittingAlgo::HOL_UNIF: - _trees.push(new HOLSubstitutionTree(ApplicativeHelper::splittable)); - break; case SplittingAlgo::HOL_MATCH: - _trees.push(new HOLSubstitutionTree([](TermList t, bool b = false){ + _trees.push(new HOLSubstitutionTree([](TermList t){ return !t.isLambdaTerm(); } )); break; diff --git a/Indexing/ResultSubstitution.cpp b/Indexing/ResultSubstitution.cpp index 7c398df104..923d0a1887 100644 --- a/Indexing/ResultSubstitution.cpp +++ b/Indexing/ResultSubstitution.cpp @@ -56,6 +56,8 @@ class RSProxy /** return iterator over constraints */ virtual Recycled getConstraints() override { return _subst->constraints(); } + virtual bool isIdentityOnQueryWhenResultBound() override { return _subst->outputBank() == _queryBank;} + virtual bool isIdentityOnResultWhenQueryBound() override { return _subst->outputBank() == _resultBank;} private: RobSubstitutionTL* _subst; diff --git a/Indexing/SubstitutionTree.cpp b/Indexing/SubstitutionTree.cpp index 8c848ac20b..e707227983 100644 --- a/Indexing/SubstitutionTree.cpp +++ b/Indexing/SubstitutionTree.cpp @@ -471,9 +471,8 @@ SubstitutionTree::Leaf* SubstitutionTree::findLeaf(Node* root, BindingMap& svBin } node=*child; - TermList s = node->term; - ASS(TermList::sameTop(s,t)); + ASS_REP2(TermList::sameTop(s,t), s, t); if(s==t) { continue; @@ -492,27 +491,27 @@ SubstitutionTree::Leaf* SubstitutionTree::findLeaf(Node* root, BindingMap& svBin TermList* tt = subterms.pop(); ss = subterms.pop(); if (tt->next()->isEmpty()) { - ASS(ss->next()->isEmpty()); + ASS(ss->next()->isEmpty()); } else { - subterms.push(ss->next()); - subterms.push(tt->next()); + subterms.push(ss->next()); + subterms.push(tt->next()); } if (*ss==*tt) { - continue; + continue; } if (ss->isSpecialVar()) { - svBindings.set(ss->var(),*tt); - continue; + svBindings.set(ss->var(),*tt); + continue; } if(ss->isVar() || tt->isVar() || ss->term()->functor()!=tt->term()->functor()) { - return 0; + return 0; } ss = ss->term()->args(); if (! ss->isEmpty()) { - ASS(! tt->term()->args()->isEmpty()); - subterms.push(ss); - subterms.push(tt->term()->args()); + ASS(! tt->term()->args()->isEmpty()); + subterms.push(ss); + subterms.push(tt->term()->args()); } } } diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 20268f8720..5f16e52d05 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -408,9 +408,13 @@ class SubstitutionTree struct IsPtrToVarNodeFn { bool operator()(Node** n) - { + { // treat non-splittable nodes like variable nodes - return (*n)->term.isVar() || !(*n)->splittable(); + return (*n)->term.isVar() || !(*n)->splittable() +#if VHOL + || (*n)->term.isPlaceholder() // treat placeholders exactly like variables +#endif + ; } }; @@ -556,7 +560,16 @@ class SubstitutionTree if(t2.var()) { return GREATER; } - +#if VHOL + if(env.property->higherOrder() && t1.functor() && t2.functor()){ + // always put placeholder directly after variables in SkipList + // so that IsPtrToVarNodeFn return true for placehodlers as well + bool t1IsPlaceholder = env.signature->isPlaceholder(*t1.functor()); + bool t2IsPlaceholder = env.signature->isPlaceholder(*t2.functor()); + if(t1IsPlaceholder && !t2IsPlaceholder) return LESS; + if(t2IsPlaceholder && !t1IsPlaceholder) return GREATER; + } +#endif if(t1.id()) { if(t2.id()) { return Int::compare(*t1.id(), *t2.id()); @@ -627,7 +640,6 @@ class SubstitutionTree void setSort(TypedTermList const& term, LeafData& ld) { - ASS(ld.term == term); ld.sort = term.sort(); } @@ -725,10 +737,19 @@ class SubstitutionTree Query normQuery; if (retrieveSubstitutions) { + ASS(false); + // TODO this is not safe at the moment + // the use of embedded banks is causing issues here. + // Luckily, we only call this from one place currently ClauseVariantIndex + // which doesn't need to retrive the substittuio renaming->_query->normalizeVariables(query); normQuery = renaming->_query->apply(query); } else { - normQuery = Renaming::normalize(query); + // put onto norm result bank, so that terms + // f (x0 / 0) and f (x0 / 3) don't fail an == check for + // syntactic equality + // Long term need to bring back the TermSpec based + normQuery = Renaming::normalize(query, NORM_RESULT_BANK); } Recycled svBindings; @@ -1330,7 +1351,7 @@ class SubstitutionTree // the single unifier into an iterator // For UWA, if fixed point iteration has been chosen, this is carried out // For HOL, a set of HOL unifiers are returned - SubstIterator substs = _algo.postprocess(&*_subst); + SubstIterator substs = _algo.postprocess(&*_subst, ld->term, ld->sort); return pvi(iterTraits(substs).map([ld](RobSubstitutionTL* subst){ return QueryResult(ld, ResultSubstitution::fromSubstitution(subst,QUERY_BANK,RESULT_BANK)); @@ -1352,7 +1373,7 @@ class SubstitutionTree // TermList qt = _abstractingUnifier.subs().getSpecialVarTop(specVar); // TODO should this function really be part of algo? auto top = _subst->getSpecialVarTop(specVar); - if(top.var() || top.id()) { + if(top.var() || top.id() || env.signature->isPlaceholder(*top.functor())) { return n->allChildren(); } else { Node** match=n->childByTop(top, false); @@ -1426,7 +1447,7 @@ class SubstitutionTree //n is proper node, not a root recording=true; _subst->bdRecord(bd); - success = _algo.associate(_svStack->top(),n->term,n->splittable(),&*_subst); + success = _algo.associate(_svStack->top(),n->term,&*_subst); } if(success) { if(n->isLeaf()) { diff --git a/Indexing/TermSubstitutionTree.cpp b/Indexing/TermSubstitutionTree.cpp index 2b85a34172..4e43ecadbf 100644 --- a/Indexing/TermSubstitutionTree.cpp +++ b/Indexing/TermSubstitutionTree.cpp @@ -39,11 +39,8 @@ TermSubstitutionTree::TermSubstitutionTree(SplittingAlgo algo) _tree.reset(new SubstitutionTree()); break; #if VHOL - case SplittingAlgo::HOL_UNIF: - _tree.reset(new HOLSubstitutionTree(ApplicativeHelper::splittable)); - break; case SplittingAlgo::HOL_MATCH: - _tree.reset(new HOLSubstitutionTree([](TermList t, bool b = false){ + _tree.reset(new HOLSubstitutionTree([](TermList t){ return !t.isLambdaTerm(); } )); break; diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index e20ecaae9f..a360746c9a 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -92,8 +92,14 @@ class TermSubstitutionTree private: - void handleTerm(TypedTermList tt, LeafData ld, bool insert) - { _tree->handle(tt, ld, insert); } + void handleTerm(TypedTermList tt, LeafData ld, bool insert){ +#if VHOL + if(env.property->higherOrder()){ + // replace higher-order terms with placeholder constants + tt = TypedTermList(ToPlaceholders().replace(tt), tt.sort()); + } +#endif + _tree->handle(tt, ld, insert); } template auto getResultIterator(TypedTermList query, bool retrieveSubstitutions, Args... args) @@ -148,7 +154,10 @@ class TermSubstitutionTree #if VHOL TermQueryResultIterator getHOLUnifiers(TypedTermList t) final override - { return pvi(getResultIterator>(t, true)); } + { + TypedTermList tp = TypedTermList(ToPlaceholders().replace(t), t.sort()); + return pvi(getResultIterator>(tp, true, t)); + } TermQueryResultIterator getHOLInstances(TypedTermList t) final override { return pvi(getResultIterator>(t, true)); } diff --git a/Inferences/Superposition.cpp b/Inferences/Superposition.cpp index d0bf8c84f9..105637ebbc 100644 --- a/Inferences/Superposition.cpp +++ b/Inferences/Superposition.cpp @@ -400,7 +400,11 @@ Clause* Superposition::performSuperposition( #if VDEBUG if(!hasConstraints){ +#if VHOL + ASS_EQ(rwTermS.betaEtaNF(),eqLHSS.betaEtaNF()); +#else ASS_EQ(rwTermS,eqLHSS); +#endif } #endif diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 7d9f69e0ff..8412dbabfc 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -785,6 +785,29 @@ bool ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigid ASS(bindings.isEmpty()); + // if flexTerm is of form X t1 t2 : i > i and t1 : int and t2 : tau + // this function will fill stack with [i, tau, int] + // Very inelegant at the moment, need to rewrite TODO + auto getFlexHeadSorts = [](TermList flexTerm, TermStack& sorts, TermList rigidTermSort){ + TermList matrixSort; + if(flexTerm.isVar()){ + matrixSort = rigidTermSort; + } else { + matrixSort = SortHelper::getResultSort(flexTerm.term()); + while(flexTerm.isLambdaTerm()){ + matrixSort = *flexTerm.term()->nthArgument(1); + flexTerm = flexTerm.lambdaBody(); + } + } + + TermStack temp; + getArgSorts(matrixSort,temp); + while(!temp.isEmpty()){ + sorts.push(temp.pop()); + } + getArgSorts(flexTerm,sorts); + }; + // since term is rigid, cannot be a variable TermList sort = SortHelper::getResultSort(matrix(rigidTerm).term()).finalResult(); TermList headRigid = rigidTerm.head(); @@ -793,7 +816,7 @@ bool ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigid TermStack sortsFlex; //sorts of arguments of flex head getHeadAndArgs(flexTerm, headFlex, argsFlex); - getArgSorts(flexTerm, sortsFlex); + getFlexHeadSorts(flexTerm, sortsFlex, SortHelper::getResultSort(rigidTerm.term())); TermList pb; TermList var = fVar; diff --git a/Kernel/HOLMatching.cpp b/Kernel/HOLMatching.cpp index 29bfb8ae89..bb7261ea01 100644 --- a/Kernel/HOLMatching.cpp +++ b/Kernel/HOLMatching.cpp @@ -23,7 +23,7 @@ namespace Kernel namespace UnificationAlgorithms { -bool HOLInstantiation::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) +bool HOLInstantiation::associate(unsigned specialVar, TermList node, RobSubstitutionTL* sub) { CALL("HOLInstantiation::associate"); @@ -31,7 +31,7 @@ bool HOLInstantiation::associate(unsigned specialVar, TermList node, bool splitt return match(query, node, sub, VarBank::QUERY_BANK); } -bool HOLGeneralisation::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) +bool HOLGeneralisation::associate(unsigned specialVar, TermList node, RobSubstitutionTL* sub) { CALL("HOLGeneralisation::associate"); diff --git a/Kernel/HOLMatching.hpp b/Kernel/HOLMatching.hpp index 03fa1b3a33..dee3b40128 100644 --- a/Kernel/HOLMatching.hpp +++ b/Kernel/HOLMatching.hpp @@ -48,9 +48,9 @@ class HOLInstantiation { void initSub(RobSubstitutionTL* sub) const { sub->setOutputIndex(VarBank::RESULT_BANK); } - bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub); + bool associate(unsigned specialVar, TermList node, RobSubstitutionTL* sub); - SubstIterator postprocess(RobSubstitutionTL* sub) + SubstIterator postprocess(RobSubstitutionTL* sub, TermList t, TermList sort) { return pvi(getSingletonIterator(sub)); } bool usesUwa() const { return false; } @@ -61,9 +61,9 @@ class HOLGeneralisation { void initSub(RobSubstitutionTL* sub) const { sub->setOutputIndex(VarBank::QUERY_BANK); } - bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub); + bool associate(unsigned specialVar, TermList node, RobSubstitutionTL* sub); - SubstIterator postprocess(RobSubstitutionTL* sub) + SubstIterator postprocess(RobSubstitutionTL* sub, TermList t, TermList sort) { return pvi(getSingletonIterator(sub)); } bool usesUwa() const { return false; } diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 034680bc41..3403b38797 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -25,51 +25,26 @@ namespace Kernel namespace UnificationAlgorithms { +#define DEBUG_ITERATOR(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) class HOLUnification::HigherOrderUnifiersIt: public IteratorCore { public: using AH = ApplicativeHelper; - HigherOrderUnifiersIt(RobSubstitutionTL* subst, bool funcExt) : - _returnInitial(false), _used(false), _depth(0), + HigherOrderUnifiersIt(TermList t1, TermList t2, RobSubstitutionTL* subst, bool funcExt) : + _used(false), _topLevel(true), _funcExt(funcExt), _depth(0), _freshVar(0, VarBank::FRESH_BANK), _subst(subst){ CALL("HOLUnification::HigherOrderUnifiersIt::HigherOrderUnifiersIt"); - _subst->bdRecord(_initData); - - // move constraints from subst to priority queue - // will be undone when hasNext() return false - while(!_subst->emptyConstraints()){ - auto con = _subst->popConstraint(); - TermList lhs = con.lhs(); - TermList rhs = con.rhs(); - lhs = lhs.whnfDeref(_subst); - rhs = rhs.whnfDeref(_subst); - auto higherOrderCon = HOLConstraint(lhs,rhs); - if(higherOrderCon.rigidRigid() && funcExt){ - // if one of the pairs is rigid rigid and is of functional sort - // don't do any higher-order unification. Instead let functional extensionality - // inferences such as ArgCong and NegExt do their thing - TermList sort = higherOrderCon.sort(); - if(sort.isArrowSort() || sort.isOrdinaryVar() || sort.isBoolSort()){ - _returnInitial = true; - break; - } - } - addToUnifPairs(higherOrderCon,_initData); + if(!trySolveTrivialPair(t1,t2)){ + _unifPairs.insert(HOLConstraint(t1,t2)); } - if(solved()) // already in solved state, just return _subst - _returnInitial = true; + DEBUG_ITERATOR(1, "starting iterator with\n ", *this) - _subst->bdDone(); - if(_returnInitial){ - _initData.backtrack(); - } else { - BacktrackData bd; - _bdStack->push(bd); - _bindings->push(TermStack()); - } + BacktrackData bd; + _bdStack->push(bd); + _bindings->push(TermStack()); } ~HigherOrderUnifiersIt() { @@ -87,6 +62,17 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorebind(t1, t2); + return true; + } + return false; + } + bool backtrack() { CALL("HOLUnification::HigherOrderUnifiersIt::backtrack"); @@ -121,12 +107,12 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorehigherOrderUnifDepth(); - if(_returnInitial || (_depth == depth && !_used) || (solved() && !_used)) - { return !_used; } + if(solved() && !_used) + { return true; } _used = false; - //cout << *this << endl; + DEBUG_ITERATOR(1, "has next called with\n ", *this) // the logic here is really convoluted and should be cleaned up // the main complexity is due to the depth limit @@ -140,9 +126,11 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); + DEBUG_ITERATOR(2, "Next pair\n ", con) + TermList lhs = con.lhs(); TermList rhs = con.rhs(); TermList lhsHead = con.lhsHead(); @@ -153,6 +141,16 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); + break; + } + } + if(lhsHead == rhsHead){ ASS(con.rigidRigid()); // TODO deal with sorts? @@ -167,10 +165,13 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); + if(!t2.isVar()) t2 = AH::surroundWithLambdas(t2, sorts, true); + + if(!trySolveTrivialPair(t1,t2)){ + addToUnifPairs(HOLConstraint(t1,t2), _bdStack->top()); + } } } else if(con.flexRigid()){ @@ -235,13 +236,8 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop(); - _subst->bdRecord(bd); - while(!_unifPairs.isEmpty()){ - HOLConstraint con = popFromUnifPairs(bd); - UnifConstraint c(con.lhs(), con.rhs()); - _subst->pushConstraint(c); - } - _subst->bdDone(); + // turn remaining unification pairs into standard constraints + // these can either be the flex-flex pairs, or if depth limit reached + // these can include other pairs as well + BacktrackData& bd = _bdStack->top(); + _subst->bdRecord(bd); + while(!_unifPairs.isEmpty()){ + HOLConstraint con = popFromUnifPairs(bd); + UnifConstraint c(con.lhs(), con.rhs()); + _subst->pushConstraint(c); } + _subst->bdDone(); _used = true; return _subst; } @@ -326,10 +320,10 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCore _unifPairs; Recycled> _bdStack; Recycled> _bindings; @@ -341,77 +335,53 @@ SubstIterator HOLUnification::unifiers(TermList t1, TermList t2, RobSubstitution { CALL("HOLUnification::unifiers"); - bool topLevelConstraint = false; if(sub->sameTermContent(t1,t2)) return pvi(getSingletonIterator(sub)); - if(t1.isVar() || t2.isVar()){ - auto var = t1.isVar() ? t1 : t2; - auto otherTerm = var == t1 ? t2 : t1; - auto res = fixpointUnify(var,otherTerm,sub); - if(res == OracleResult::SUCCESS) return pvi(getSingletonIterator(sub)); - if(res == OracleResult::FAILURE) return SubstIterator::getEmpty(); - if(res == OracleResult::OUT_OF_FRAGMENT){ - if(topLevelCheck) return SubstIterator::getEmpty(); - topLevelConstraint = true; - } - } else { - if(!ApplicativeHelper::splittable(t1, true) || !ApplicativeHelper::splittable(t2, true)){ - if(topLevelCheck) return SubstIterator::getEmpty(); - topLevelConstraint = true; + if(topLevelCheck){ + // if topLevelCheck is set, we want to check that we + // don't return a constraint of the form t1 != t2 + if(t1.isVar() || t2.isVar()){ + auto var = t1.isVar() ? t1 : t2; + auto otherTerm = var == t1 ? t2 : t1; + auto res = fixpointUnify(var,otherTerm,sub); + if(res == OracleResult::SUCCESS) return pvi(getSingletonIterator(sub)); + if(res == OracleResult::FAILURE) return SubstIterator::getEmpty(); + if(res == OracleResult::OUT_OF_FRAGMENT) return SubstIterator::getEmpty(); + } else { + if(!ApplicativeHelper::splittable(t1, true) || !ApplicativeHelper::splittable(t2, true)){ + return SubstIterator::getEmpty(); + } } } - if(unifyFirstOrderStructure(t1,t2,topLevelConstraint,sub)){ - return vi(new HigherOrderUnifiersIt(sub, _funcExt)); - } - return SubstIterator::getEmpty(); + return vi(new HigherOrderUnifiersIt(t1, t2, sub, _funcExt)); } -SubstIterator HOLUnification::postprocess(RobSubstitutionTL* sub) +SubstIterator HOLUnification::postprocess(RobSubstitutionTL* sub, TermList t, TermList sort) { CALL("HOLUnification::postprocess"); - - // We could carry out a fix point iteration here - // but it is slighly involved and I am not sure that it is worth it. - // will leave for now. - return vi(new HigherOrderUnifiersIt(sub, _funcExt)); + // ignore the sub that has been passed in, since + // that contains substitutions formed during tree traversal which + // are not helpful here (but cannot be erased either!) + static RobSubstitutionTL subst; + subst.reset(); + + TypedTermList res = ToBank(RESULT_BANK).toBank(TypedTermList(t,sort)); + + // this unification must pass, otherwise we wouldn't have reached a leaf + // however, we are forced to recompute it here with the new substitution (not ideal) + ALWAYS(sub->unify(_origQuerySort,res.sort())); + return unifiers(_origQuery, res, &subst, false); } -bool HOLUnification::associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) +bool HOLUnification::associate(unsigned specialVar, TermList node, RobSubstitutionTL* sub) { CALL("HOLUnification::associate"); - bool topLevel = specialVar == 0; // hacky, works because we alywas by *0 to top level term, but very flaky solution tbh - TermList query(specialVar, /* special */ true); - - query = sub->derefBound(query); - - TermList queryHead = sub->derefBound(query.head()); - TermList nodeHead = sub->derefBound(node.head()); - - ASS(splittable || !node.isVar()); - - // dereferencing above can turn a non-splittable term into a - // splittable one - bool nodeNotSplittable = false; - if(!splittable){ - auto sort = SortHelper::getResultSort(node.term()); - if(sortCheck(sort,topLevel) || nodeHead.isVar() || nodeHead.isLambdaTerm()){ - nodeNotSplittable = true; - } - } - - // Node term and query term must have the same type. Hence we do not - // check type of query. We can rely on the nodeNotSplittable check - bool queryNotSplittable = - !query.isVar() && (queryHead.isVar() || queryHead.isLambdaTerm()); - - bool topLevelConstraint = nodeNotSplittable || queryNotSplittable; - - return unifyFirstOrderStructure(query, node, topLevelConstraint, sub); + return unifyWithPlaceholders(query, node, sub); } // see E prover code by Petar /TERMS/cte_fixpoint_unif.c @@ -499,31 +469,19 @@ HOLUnification::OracleResult HOLUnification::fixpointUnify(TermList var, TermLis #define DEBUG_UNIFY(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) -bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool topLevelCon, RobSubstitutionTL* sub) +bool HOLUnification::unifyWithPlaceholders(TermList t1, TermList t2, RobSubstitutionTL* sub) { - CALL("HOLUnification::unifyFirstOrderStructure"); + CALL("HOLUnification::unifyWithPlaceholders"); + + // TODO deal with the case where both terms are fully first-order... DEBUG_UNIFY(1, ".unify(", t1, ",", t2, ")") - if(sub->sameTermContent(t1,t2)) { + if(t1 == t2) { return true; } auto impl = [&]() -> bool { - if( (t1.isTerm() && t1.term()->isSort()) || - (t2.isTerm() && t2.term()->isSort()) ) { - ASS(!topLevelCon); - return sub->unify(t1,t2); // sorts can be unified by standard algo - } - - if(topLevelCon) { - // create top level constraint - DEBUG_UNIFY(1, "Adding top level constraint") - sub->pushConstraint(UnifConstraint(t1, t2)); - return true; - } - - Recycled> toDo; toDo->push(UnifConstraint(t1, t2)); @@ -532,67 +490,32 @@ bool HOLUnification::unifyFirstOrderStructure(TermList t1, TermList t2, bool top Recycled> encountered; auto pushTodo = [&](auto pair) { - if (!encountered->find(pair)) { - encountered->insert(pair); - toDo->push(pair); - } + if (!encountered->find(pair)) { + encountered->insert(pair.clone()); + toDo->push(std::move(pair)); + } }; while (toDo->isNonEmpty()) { auto x = toDo->pop(); - TermList dt1 = sub->derefBound(x.lhs()); - TermList dt2 = sub->derefBound(x.rhs()); + auto dt1 = sub->derefBound(x.lhs()); + auto dt2 = sub->derefBound(x.rhs()); DEBUG_UNIFY(2, ".unify(", dt1, ",", dt2, ")") - if (sub->sameTermContent(dt1, dt2)) { + if (dt1 == dt2 || dt1.isPlaceholder() || dt2.isPlaceholder()) { // do nothing - } else if(dt1.isVar()) { // TODO Special vars??? - auto res = fixpointUnify(dt1, dt2, sub); - if(res == OracleResult::FAILURE) return false; - if(res == OracleResult::OUT_OF_FRAGMENT) - sub->pushConstraint(UnifConstraint(dt1, dt2)); - - } else if(dt2.isVar()) { - auto res = fixpointUnify(dt2, dt1, sub); - if(res == OracleResult::FAILURE) return false; - if(res == OracleResult::OUT_OF_FRAGMENT) - sub->pushConstraint(UnifConstraint(dt2, dt1)); - - } else if(dt1.term()->functor() == dt2.term()->functor()) { + // we want unification to pass in these cases + } else if(dt1.isVar() && !sub->occurs(dt1, dt2)) { + sub->bind(dt1, dt2); + } else if(dt2.isVar() && !sub->occurs(dt2, dt1)) { + sub->bind(dt2, dt1); + } else if(dt1.isTerm() && dt2.isTerm() && dt1.term()->functor() == dt2.term()->functor()) { - if(dt1.isApplication()){ - ASS(dt2.isApplication()); - TermList dt1s1 = dt1.term()->typeArg(0); - TermList dt2s1 = dt2.term()->typeArg(0); - TermList dt1t2 = dt1.term()->termArg(1); - TermList dt2t2 = dt2.term()->termArg(1); - TermList dt1t2head = sub->derefBound(dt1t2.head()); - TermList dt2t2head = sub->derefBound(dt2t2.head()); - - pushTodo(UnifConstraint(dt1.term()->termArg(0), dt2.term()->termArg(0))); - - // Not sure the logic below is right. Things get very complicated because - // the sorts can be special variables. I think what we have below is an - // over approximation, but I am not 100% - if(!dt1t2.isVar() && !dt2t2.isVar() && // if either is a variable let fixpoint unification decide whether to create a constraint or to bind - (sortCheck(dt1s1) || dt1t2head.isVar() || dt1t2head.isLambdaTerm() || - sortCheck(dt2s1) || dt2t2head.isVar() || dt2t2head.isLambdaTerm() )) { - sub->pushConstraint(UnifConstraint(dt1t2, dt2t2)); - } else { - pushTodo(UnifConstraint(dt1t2, dt2t2)); - } - } else { - for (unsigned i = 0; i < dt1.term()->arity(); i++) { - // must be a sort - bool unifySort = sub->unify(dt1.nthArg(i), dt2.nthArg(i)); - if(!unifySort) return false; // failed sort unification - } + for (unsigned i = 0; i < dt1.term()->arity(); i++) { + pushTodo(UnifConstraint(dt1.nthArg(i), dt2.nthArg(i))); } } else { - DEBUG_UNIFY(1, "Head symbol clash") - // head symbol clash at first-order position - // can be no unifier fail return false; } } diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index 4c7f7141ec..9a158a2b51 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -8,8 +8,8 @@ * and in the source directory */ /** - * @file RobSubstitution.hpp - * Defines class RobSubstitution. + * @file HOLUnification.hpp + * Defines class HOLUnification. * */ @@ -28,7 +28,7 @@ #include "Lib/Backtrackable.hpp" #include "Lib/Recycled.hpp" -#include "Kernel/RobSubstitution.hpp" +#include "Kernel/ApplicativeHelper.hpp" #include "Kernel/SortHelper.hpp" #include "Kernel/Signature.hpp" @@ -41,10 +41,14 @@ namespace UnificationAlgorithms { class HOLUnification { - + // when this class is used for tree unification the field + // below holds the original query before higher-order subterms have + // been replaced by placeholders + TermList _origQuery; + TermList _origQuerySort; bool _funcExt; - bool unifyFirstOrderStructure(TermList t1, TermList t2, bool topLevelCon, RobSubstitutionTL* sub); + bool unifyWithPlaceholders(TermList t1, TermList t2, RobSubstitutionTL* sub); // TODO if we implement solid fragment, this will not work... enum OracleResult @@ -101,11 +105,20 @@ class HOLUnification { class HigherOrderUnifiersIt; public: - HOLUnification() : _funcExt( env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) { } - bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub); + HOLUnification() : _funcExt( env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) + {} + + HOLUnification(TypedTermList query) : + _funcExt( env.options->functionExtensionality() == Options::FunctionExtensionality::ABSTRACTION) { + TypedTermList t = ToBank(QUERY_BANK).toBank(query); + _origQuery = t; + _origQuerySort = t.sort(); + } + + bool associate(unsigned specialVar, TermList node, RobSubstitutionTL* sub); SubstIterator unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck = false); - SubstIterator postprocess(RobSubstitutionTL*); + SubstIterator postprocess(RobSubstitutionTL*, TermList t, TermList sort); void initSub(RobSubstitutionTL* sub) const { } diff --git a/Kernel/MismatchHandler.cpp b/Kernel/MismatchHandler.cpp index c08226b681..bf5cc6daa1 100644 --- a/Kernel/MismatchHandler.cpp +++ b/Kernel/MismatchHandler.cpp @@ -271,7 +271,7 @@ SubstIterator AbstractingUnification::unifiers(TermList t1, TermList t2, RobSubs return success ? pvi(getSingletonIterator(sub)) : SubstIterator::getEmpty(); } -SubstIterator AbstractingUnification::postprocess(RobSubstitutionTL* sub) +SubstIterator AbstractingUnification::postprocess(RobSubstitutionTL* sub, TermList t, TermList sort) { CALL("AbstractingUnification::postprocess"); diff --git a/Kernel/MismatchHandler.hpp b/Kernel/MismatchHandler.hpp index da135b705c..8b339f271a 100644 --- a/Kernel/MismatchHandler.hpp +++ b/Kernel/MismatchHandler.hpp @@ -122,7 +122,7 @@ class RobUnification { public: // to be used for tree calls - bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) + bool associate(unsigned specialVar, TermList node, RobSubstitutionTL* sub) { CALL("RobUnification::associate"); TermList query(specialVar, /* special */ true); @@ -141,8 +141,8 @@ class RobUnification { } // function is called when in the leaf of a substitution tree - // during unification. t is the term stored in the leaf - SubstIterator postprocess(RobSubstitutionTL* sub){ + // during unification. t is the term stored in the leaf, sort is its sort + SubstIterator postprocess(RobSubstitutionTL* sub, TermList t, TermList sort){ CALL("RobUnification::postprocess"); // sub is a unifier of query and leaf term t, return it @@ -167,9 +167,9 @@ class AbstractingUnification { bool unify(TermList l, TermList r, bool& progress, RobSubstitutionTL* sub); bool fixedPointIteration(RobSubstitutionTL* sub); SubstIterator unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck = false); - SubstIterator postprocess(RobSubstitutionTL* sub); + SubstIterator postprocess(RobSubstitutionTL* sub, TermList t, TermList sort); - bool associate(unsigned specialVar, TermList node, bool splittable, RobSubstitutionTL* sub) + bool associate(unsigned specialVar, TermList node, RobSubstitutionTL* sub) { CALL("AbstractingUnification::associate"); diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 1836c1c491..c85cf45b05 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -41,6 +41,8 @@ const int TermSpec::UNBOUND_INDEX=-1; template void UnificationConstraintStack::add(Constraint c, Option bd) { + CALL("UnificationConstraintStack::add"); + if (bd) { backtrackablePush(_cont, std::move(c), *bd); } else { @@ -52,6 +54,8 @@ template UnificationConstraint UnificationConstraintStack::pop(Option bd) { + CALL("UnificationConstraintStack::pop"); + auto old = _cont.pop(); if (bd) { bd->addClosure([this, old = old.clone()]() mutable { _cont.push(std::move(old)); }); @@ -62,6 +66,8 @@ UnificationConstraintStack::pop(Option Recycled> UnificationConstraintStack::literals(RobSubst& s) { + CALL("UnificationConstraintStack::literals"); + Recycled> out; out->reserve(_cont.size()); out->loadFromIterator(literalIter(s)); @@ -71,6 +77,8 @@ Recycled> UnificationConstraintStack Option UnificationConstraint::toLiteral(RobSubst& s) { + CALL("UnificationConstraint::toLiteral"); + auto t1 = s.apply(_t1); auto t2 = s.apply(_t2); @@ -196,9 +204,6 @@ TermSpecOrList RobSubstitution::deref(TermSpecOrLi const_cast(*this).bind(v, getUnboundVar()); return _bank.get(v); } else { - cout << *this << endl; - cout << "v " << v << " index " << v.bank() << endl; - cout << "output bank " << _outputIndex << endl; ASS_REP(v.bank() == _outputIndex, "variable bound index different from _outputIndex. This probably means you either called the wrong operations (e.g. unify) after using setOutputIndex, or you are trying to apply the substitution to a variable that was not bound by this substitution (e.g. by calling RobSubstitution::match or so)") return v; } diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 71554df2a0..b01bdbeae4 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -269,6 +269,7 @@ class RobSubstitution RobSubstitution(RobSubstitution&& obj) = default; RobSubstitution& operator=(RobSubstitution&& obj) = default; + VarBankOrInt outputBank() const { return _outputIndex; } protected: typedef DHMap BankType; diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 5f59e45ff6..b1371d2186 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -183,7 +183,7 @@ bool TermList::isFreeVariable(unsigned var) const bool TermList::sameTop(TermList ss,TermList tt) { if (ss.isVar()) { - return ss==tt; + return tt.isVar() && ss.var()==tt.var();//ignoring bank, is this safe???? } if (tt.isVar()) { return false; diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index f0157e51c3..38744f915b 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -281,8 +281,12 @@ TypedTermList ToBank::toBank(TypedTermList term){ TermList sort = term.sort(); - return(TypedTermList(term.isVar() ? transformSubterm(term) : transform(term), - sort.isVar() ? transformSubterm(sort) : transform(sort) )); + if(term.isTerm()){ + return TypedTermList(transform(term).term()); + } else { + return TypedTermList(transformSubterm(term), + sort.isVar() ? transformSubterm(sort) : transform(sort)); + } } TermList ToBank::transformSubterm(TermList t) { diff --git a/Saturation/Splitter.cpp b/Saturation/Splitter.cpp index 4001b374cc..11fd718ff2 100644 --- a/Saturation/Splitter.cpp +++ b/Saturation/Splitter.cpp @@ -1523,8 +1523,8 @@ void Splitter::onClauseReduction(Clause* cl, ClauseIterator premises, Clause* re } } SplitSet* diff=unionAll->subtract(cl->splits()); - - ASS(allSplitLevelsActive(diff)); + + ASS_REP2(allSplitLevelsActive(diff), cl->toString(), replacement->toString()); if(diff->isEmpty()) { // unconditionally reduced @@ -1612,7 +1612,7 @@ void Splitter::onNewClause(Clause* cl) cl->updateColor(color); } - ASS(allSplitLevelsActive(cl->splits())); + ASS_REP(allSplitLevelsActive(cl->splits()), cl->toString() ); } /** diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index defa32ca79..e2f36566fc 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -64,8 +64,9 @@ unique_ptr getTermIndex() } #if VHOL + // same as normal index now. should remove TODO unique_ptr getHOLTermIndex() - { return std::make_unique(SplittingAlgo::HOL_UNIF); } + { return std::make_unique(); } #endif auto getLiteralIndex() @@ -794,9 +795,8 @@ TEST_FUN(higher_order2) DECL_HOL_VAR(z, 3, srt) DECL_HOL_VAR(x4, 0, srt) DECL_HOL_VAR(x5, 1, arrow(srt, srt)) - DECL_HOL_VAR(x6, 2, srt) - DECL_HOL_VAR(x7, 3, arrow(srt, arrow(srt, srt))) - DECL_HOL_VAR(x8, 4, srt) + DECL_HOL_VAR(x7, 1, arrow(srt, arrow(srt, srt))) + DECL_HOL_VAR(x8, 2, srt) index->insert(ap(x, a), 0, 0); @@ -822,9 +822,9 @@ TEST_FUN(higher_order2) checkHigherOrderTermMatches(*index, x3, Stack{ TermUnificationResultSpec - { .querySigma = x6, + { .querySigma = x4, .resultSigma = ap(ap(x7, a), x8), - .constraints = {x6 != ap(ap(x7, a), x8)} }, + .constraints = {x4 != ap(ap(x7, a), x8)} }, TermUnificationResultSpec { .querySigma = x4, @@ -860,7 +860,7 @@ TEST_FUN(higher_order3) TermUnificationResultSpec { .querySigma = ap(f,a), .resultSigma = toDBs(ap(f, lam(x, ap(a, x)))), - .constraints = Stack{ a != lamTerm } }, + .constraints = Stack{ } }, }); } From b99a767f32ed42a9714a09e5f1e651dd38ac6760 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 26 May 2023 14:43:42 +0100 Subject: [PATCH 078/210] bug fixing - bugs remain --- Indexing/SubstitutionTree.cpp | 2 +- Kernel/ApplicativeHelper.cpp | 19 +++++++++++-------- Kernel/Term.cpp | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Indexing/SubstitutionTree.cpp b/Indexing/SubstitutionTree.cpp index e707227983..b2bb70cb7a 100644 --- a/Indexing/SubstitutionTree.cpp +++ b/Indexing/SubstitutionTree.cpp @@ -135,7 +135,7 @@ struct BindingComparator */ void SubstitutionTree::insert(BindingMap& svBindings, LeafData ld) { -#define DEBUG_INSERT(...) // DBG(__VA_ARGS__) +#define DEBUG_INSERT(...) // DBG(__VA_ARGS__) CALL("SubstitutionTree::insert"); ASS_EQ(_iterCnt,0); auto pnode = &_root; diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 8412dbabfc..2c93294b6a 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -725,10 +725,12 @@ void ApplicativeHelper::normaliseLambdaPrefixes(TermList& t1, TermList& t2) TermList nonVar = t1.isVar() ? t2 : t1; TermList sort = SortHelper::getResultSort(nonVar.term()); - auto etaExpand = [](TermList t, TermList sort, TermStack& sorts, unsigned n, unsigned m){ + auto etaExpand = [](TermList t, TermList sort, TermStack& sorts, unsigned n){ TermStack sorts1; // sorts of new prefix - for(int i = n - 1; i >= (int)m; i--){ + TermShifter().shift(t,n); // lift loose indices by n + + for(int i = n - 1; i >= 0; i--){ // append De Bruijn indices ASS(sort.isArrowSort()); auto s = sort.domain(); auto dbIndex = getDeBruijnIndex((unsigned)i,s); @@ -737,13 +739,14 @@ void ApplicativeHelper::normaliseLambdaPrefixes(TermList& t1, TermList& t2) sorts1.push(s); } - while(!sorts.isEmpty()){ - t = lambda(sorts.pop(), t); + while(!sorts1.isEmpty()){ // wrap in new lambdas + t = lambda(sorts1.pop(), t); } - while(!sorts1.isEmpty()){ - t = lambda(sorts1.pop(), t); + while(!sorts.isEmpty()){ // wrap in original lambdas + t = lambda(sorts.pop(), t); } + return t; }; @@ -771,10 +774,10 @@ void ApplicativeHelper::normaliseLambdaPrefixes(TermList& t1, TermList& t2) } if(m > n) - t2 = etaExpand(t2c, t2s, prefSorts2, m, n); + t2 = etaExpand(t2c, t2s, prefSorts2, m - n); if(n > m) - t1 = etaExpand(t1c, t1s, prefSorts1, n, m); + t1 = etaExpand(t1c, t1s, prefSorts1, n - m); } diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index b1371d2186..d49fa684c5 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -183,7 +183,7 @@ bool TermList::isFreeVariable(unsigned var) const bool TermList::sameTop(TermList ss,TermList tt) { if (ss.isVar()) { - return tt.isVar() && ss.var()==tt.var();//ignoring bank, is this safe???? + return ss == tt; } if (tt.isVar()) { return false; From f817290cf212a55136e04dc191becea5a022ed61 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 26 May 2023 14:44:08 +0100 Subject: [PATCH 079/210] bug fixing missed from previous commit --- Kernel/HOLUnification.cpp | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 3403b38797..eba96a3252 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -25,14 +25,14 @@ namespace Kernel namespace UnificationAlgorithms { -#define DEBUG_ITERATOR(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) +#define DEBUG_ITERATOR(LVL, ...) if (LVL <= 2) DBG(__VA_ARGS__) class HOLUnification::HigherOrderUnifiersIt: public IteratorCore { public: using AH = ApplicativeHelper; HigherOrderUnifiersIt(TermList t1, TermList t2, RobSubstitutionTL* subst, bool funcExt) : - _used(false), _topLevel(true), _funcExt(funcExt), _depth(0), + _used(false), _solved(false), _topLevel(true), _funcExt(funcExt), _depth(0), _freshVar(0, VarBank::FRESH_BANK), _subst(subst){ CALL("HOLUnification::HigherOrderUnifiersIt::HigherOrderUnifiersIt"); @@ -67,7 +67,9 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorebdRecord(_bdStack->top()); _subst->bind(t1, t2); + _subst->bdDone(); return true; } return false; @@ -107,9 +109,12 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorehigherOrderUnifDepth(); - if(solved() && !_used) + if((_solved || solved()) && !_used) // the solved() check ensures that when we start with a flex-flex we return true straight away { return true; } + if(_subst->bdIsRecording()) + _subst->bdDone(); + _used = false; DEBUG_ITERATOR(1, "has next called with\n ", *this) @@ -139,7 +144,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop(); - _subst->bdRecord(bd); + if(!_subst->bdIsRecording()){ + _subst->bdRecord(bd); + } while(!_unifPairs.isEmpty()){ + ASS(_subst->bdIsRecording()); HOLConstraint con = popFromUnifPairs(bd); - UnifConstraint c(con.lhs(), con.rhs()); - _subst->pushConstraint(c); + if(!trySolveTrivialPair(con.lhs(), con.rhs())){ // through head reduction a pair can become trivial + UnifConstraint c(con.lhs(), con.rhs()); + _subst->pushConstraint(c); + } } - _subst->bdDone(); + cout << "RETURNING" << endl; + cout << *this << endl; + // don't stop recording here + // instead, let RObSubstitution do its free variable renaming + // on top member of BdStack, so that it is undone by a call to bactrack() _used = true; + _solved = false; return _subst; } @@ -321,6 +338,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCore Date: Sat, 27 May 2023 01:33:57 +0100 Subject: [PATCH 080/210] further bug fixes - some bugs remain --- Kernel/ApplicativeHelper.cpp | 21 ++++++++++++++++++--- Kernel/ApplicativeHelper.hpp | 1 + Kernel/HOLUnification.cpp | 12 ++++++------ 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 2c93294b6a..9364f5a762 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -885,15 +885,30 @@ TermList ApplicativeHelper::createGeneralBinding(TermList& freshVar, TermList he TermList ApplicativeHelper::surroundWithLambdas(TermList t, TermStack& sorts, bool fromTop) { - CALL("ApplicativeHelper::surroundWithLambdas"); + CALL("ApplicativeHelper::surroundWithLambdas/1"); ASS(t.isTerm()); + TermList sort = SortHelper::getResultSort(t.term()); + return surroundWithLambdas(t, sorts, sort, fromTop); +} + + +TermList ApplicativeHelper::surroundWithLambdas(TermList t, TermStack& sorts, TermList sort, bool fromTop) +{ + CALL("ApplicativeHelper::surroundWithLambdas/2"); + if(!fromTop){ // TODO fromTop is very hacky. See if can merge these two into one loop for(unsigned i = 0; i < sorts.size(); i++) - { t = lambda(sorts[i], t); } + { + t = lambda(sorts[i], sort, t); + sort = AtomicSort::arrowSort(sorts[i], sort); + } } else { for(int i = sorts.size() - 1; i >= 0; i--) - { t = lambda(sorts[i], t); } + { + t = lambda(sorts[i], sort, t); + sort = AtomicSort::arrowSort(sorts[i], sort); + } } return t; } diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index ef0b791a74..9b768f0066 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -87,6 +87,7 @@ class ApplicativeHelper { static TermList createGeneralBinding(TermList& freshVar, TermList head, TermStack& sorts, bool surround = true); static TermList surroundWithLambdas(TermList t, TermStack& sorts, bool fromTop = false); + static TermList surroundWithLambdas(TermList t, TermStack& sorts, TermList sort, bool fromTop = false); static TermList top(); static TermList bottom(); static TermList conj(); diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index eba96a3252..9cbfac2940 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -25,7 +25,7 @@ namespace Kernel namespace UnificationAlgorithms { -#define DEBUG_ITERATOR(LVL, ...) if (LVL <= 2) DBG(__VA_ARGS__) +#define DEBUG_ITERATOR(LVL, ...) if (LVL <= 0) DBG(__VA_ARGS__) class HOLUnification::HigherOrderUnifiersIt: public IteratorCore { public: @@ -161,18 +161,20 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); @@ -268,8 +270,6 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorepushConstraint(c); } } - cout << "RETURNING" << endl; - cout << *this << endl; // don't stop recording here // instead, let RObSubstitution do its free variable renaming // on top member of BdStack, so that it is undone by a call to bactrack() From 3ab23408d926721df30c193f1fe21bf0c5b797e0 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 28 May 2023 00:33:38 +0100 Subject: [PATCH 081/210] bug fix --- Indexing/SubstitutionTree.hpp | 7 +++++++ Kernel/HOLUnification.cpp | 8 ++++---- Kernel/Term.hpp | 2 +- Saturation/Splitter.cpp | 4 ++-- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 5f16e52d05..1568cff3f3 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -168,6 +168,13 @@ class SubstitutionTree bool operator==(const LeafData& o) { return clause==o.clause && literal==o.literal && term==o.term; } + friend std::ostream& operator<<(std::ostream& out, LeafData const& self) + { out << "term " << self.term << " : " << self.sort << "\n" << + "literal " << self.literal->toString() << "\n" << + "clause " << self.clause->toString(); + return out; + } + Clause* clause; Literal* literal; TermList term; diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 9cbfac2940..b5375219bb 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -36,15 +36,15 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorepush(bd); + _bindings->push(TermStack()); + if(!trySolveTrivialPair(t1,t2)){ _unifPairs.insert(HOLConstraint(t1,t2)); } DEBUG_ITERATOR(1, "starting iterator with\n ", *this) - - BacktrackData bd; - _bdStack->push(bd); - _bindings->push(TermStack()); } ~HigherOrderUnifiersIt() { diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index d990fdc177..f98591186c 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -214,7 +214,7 @@ class TermList { } /** make the term empty (so that isEmpty() returns true) */ inline void makeEmpty() - { _var.tag = FUN; } + { _content = FUN; } /** make the term into a reference */ inline void setTerm(Term* t) { _term = t; ASS_EQ(tag(), REF); } diff --git a/Saturation/Splitter.cpp b/Saturation/Splitter.cpp index 11fd718ff2..eea2223551 100644 --- a/Saturation/Splitter.cpp +++ b/Saturation/Splitter.cpp @@ -1523,8 +1523,8 @@ void Splitter::onClauseReduction(Clause* cl, ClauseIterator premises, Clause* re } } SplitSet* diff=unionAll->subtract(cl->splits()); - - ASS_REP2(allSplitLevelsActive(diff), cl->toString(), replacement->toString()); + + ASS_REP(allSplitLevelsActive(diff), cl->toString()); if(diff->isEmpty()) { // unconditionally reduced From f81bc28ac890bdbb01333bf4f702bb7fb81a86b9 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 28 May 2023 01:18:48 +0100 Subject: [PATCH 082/210] bug fix --- Indexing/IndexManager.cpp | 2 +- Indexing/TermIndex.cpp | 2 +- Inferences/BackwardDemodulation.cpp | 2 +- Inferences/ForwardDemodulation.cpp | 2 +- Kernel/TermIterators.cpp | 14 ++++++++------ Kernel/TermIterators.hpp | 12 ++++++++++-- 6 files changed, 22 insertions(+), 12 deletions(-) diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 216d1ab95b..69575f8e29 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -182,7 +182,7 @@ Index* IndexManager::create(IndexType t) new TermSubstitutionTree(); #if VHOL if (env.property->higherOrder()) { - res=new DemodulationSubtermIndex(tis); + res=new DemodulationSubtermIndex(tis); } else { #endif res=new DemodulationSubtermIndex(tis); diff --git a/Indexing/TermIndex.cpp b/Indexing/TermIndex.cpp index 43edb140ac..9ca4c3ea51 100644 --- a/Indexing/TermIndex.cpp +++ b/Indexing/TermIndex.cpp @@ -117,7 +117,7 @@ void DemodulationSubtermIndex::handleClause(Clause* c, bool add } #if VHOL -template class DemodulationSubtermIndex; +template class DemodulationSubtermIndex; #endif template class DemodulationSubtermIndex; diff --git a/Inferences/BackwardDemodulation.cpp b/Inferences/BackwardDemodulation.cpp index 45aba4245f..9d2e14c6bf 100644 --- a/Inferences/BackwardDemodulation.cpp +++ b/Inferences/BackwardDemodulation.cpp @@ -273,7 +273,7 @@ void BackwardDemodulation::perform(Clause* cl, } #if VHOL -template class BackwardDemodulation; +template class BackwardDemodulation; #endif template class BackwardDemodulation; diff --git a/Inferences/ForwardDemodulation.cpp b/Inferences/ForwardDemodulation.cpp index 2f7a420882..4bd4eed979 100644 --- a/Inferences/ForwardDemodulation.cpp +++ b/Inferences/ForwardDemodulation.cpp @@ -284,7 +284,7 @@ bool ForwardDemodulation::perform(Clause* cl, Clause*& replacem } #if VHOL -template class ForwardDemodulation; +template class ForwardDemodulation; #endif template class ForwardDemodulation; diff --git a/Kernel/TermIterators.cpp b/Kernel/TermIterators.cpp index 6569be7545..e0d957a8f4 100644 --- a/Kernel/TermIterators.cpp +++ b/Kernel/TermIterators.cpp @@ -254,12 +254,14 @@ Term* FirstOrderSubtermIt::next() TermList head; args.reset(); Term* t = _stack.pop(); - AH::getHeadAndArgs(t, head, args); - if(!head.isLambdaTerm()){ - for(unsigned i = 0; i < args.size(); i++){ - if(!args[i].isVar()){ - _added++; - _stack.push(args[i].term()); + if(!t->isLambdaTerm() || _goInsideLambdas){ + AH::getHeadAndArgs(t, head, args); + if(!head.isLambdaTerm()){ + for(unsigned i = 0; i < args.size(); i++){ + if(!args[i].isVar() && !args[i].containsLooseIndex()){ + _added++; + _stack.push(args[i].term()); + } } } } diff --git a/Kernel/TermIterators.hpp b/Kernel/TermIterators.hpp index f17a586333..06d98cf6af 100644 --- a/Kernel/TermIterators.hpp +++ b/Kernel/TermIterators.hpp @@ -359,8 +359,8 @@ class FirstOrderSubtermIt : public IteratorCore { public: - FirstOrderSubtermIt(Term* term, bool includeSelf=false) - : _stack(8), _added(0) + FirstOrderSubtermIt(Term* term, bool includeSelf=false, bool goInsideLambdas=false) + : _stack(8), _added(0), _goInsideLambdas(goInsideLambdas) { CALL("FirstOrderSubtermIt::FirstOrderSubtermIt"); @@ -384,6 +384,14 @@ class FirstOrderSubtermIt private: Stack _stack; int _added; + bool _goInsideLambdas; +}; + +class DemodulationSubtermIt +: public FirstOrderSubtermIt +{ +public: + DemodulationSubtermIt(Term* t) : FirstOrderSubtermIt(t, false, true) {} }; /* From ef32bc1ae919335901d45646c88bb4918fd483f1 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 28 May 2023 01:19:29 +0100 Subject: [PATCH 083/210] bug fix (missed from last commit) --- Saturation/SaturationAlgorithm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 57769dbb17..537663420d 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1715,7 +1715,7 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const case Options::Demodulation::PREORDERED: #if VHOL if(prb.higherOrder()){ - res->addForwardSimplifierToFront(new ForwardDemodulation()); + res->addForwardSimplifierToFront(new ForwardDemodulation()); } else { #endif res->addForwardSimplifierToFront(new ForwardDemodulation()); @@ -1747,7 +1747,7 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const case Options::Demodulation::PREORDERED: #if VHOL if(prb.higherOrder()){ - res->addBackwardSimplifierToFront(new BackwardDemodulation()); + res->addBackwardSimplifierToFront(new BackwardDemodulation()); } else { #endif res->addBackwardSimplifierToFront(new BackwardDemodulation()); From f4251b75cc90075563a091f27bff65393720372e Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 28 May 2023 17:19:19 +0100 Subject: [PATCH 084/210] bug fix --- Kernel/ApplicativeHelper.cpp | 2 +- Kernel/TermIterators.cpp | 13 ++++++++++++- Kernel/TermTransformer.hpp | 1 + Shell/Options.hpp | 2 ++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 9364f5a762..8e15d89305 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -728,7 +728,7 @@ void ApplicativeHelper::normaliseLambdaPrefixes(TermList& t1, TermList& t2) auto etaExpand = [](TermList t, TermList sort, TermStack& sorts, unsigned n){ TermStack sorts1; // sorts of new prefix - TermShifter().shift(t,n); // lift loose indices by n + t = TermShifter().shift(t,n); // lift loose indices by n for(int i = n - 1; i >= 0; i--){ // append De Bruijn indices ASS(sort.isArrowSort()); diff --git a/Kernel/TermIterators.cpp b/Kernel/TermIterators.cpp index e0d957a8f4..d40073ea0f 100644 --- a/Kernel/TermIterators.cpp +++ b/Kernel/TermIterators.cpp @@ -258,6 +258,11 @@ Term* FirstOrderSubtermIt::next() AH::getHeadAndArgs(t, head, args); if(!head.isLambdaTerm()){ for(unsigned i = 0; i < args.size(); i++){ + // TODO logic below is wrong + // (not as complete as possible, but not unsound) + // A term that contains loose indices may still + // have subterms that don't have loose indices + // Moreover, we do not explore the body of a lambda currently if(!args[i].isVar() && !args[i].containsLooseIndex()){ _added++; _stack.push(args[i].term()); @@ -288,8 +293,14 @@ bool BooleanSubtermIt::hasNext() TermList head; while(!_stack.isEmpty()){ Term* t = _stack.pop(); + if(t->isLambdaTerm()) { + // Beware of the loose indices! + // We could strengthen the iterator by returning subterms + // underneath lambdas that don't contain loose indices + continue; + } AH::getHeadAndArgs(t, head, args); - if(SortHelper::getResultSort(t) == AtomicSort::boolSort() && !AH::isBool(head)){ + if(SortHelper::getResultSort(t).isBoolSort() && !AH::isBool(head)){ _next = TermList(t); _used = false; } diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index 9bbed3866d..65902301a5 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -79,6 +79,7 @@ class TermTransformer { class SubtermReplacer : public TermTransformer { public: SubtermReplacer(TermList what, TermList by) : _what(what), _by(by) { + ASS(what.isVar() || by.isVar() || SortHelper::getResultSort(what.term()) == SortHelper::getResultSort(by.term())); dontTransformSorts(); } diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 3370cce1e4..3929b4aec7 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2414,6 +2414,7 @@ bool _hard; bool addProxyAxioms() const { return _addProxyAxioms.actualValue; } bool choiceAxiom() const { return _choiceAxiom.actualValue; } bool injectivityReasoning() const { return _injectivity.actualValue; } + // TODO doesn't do anyhting currently bool pragmatic() const { return _pragmatic.actualValue; } bool choiceReasoning() const { return _choiceReasoning.actualValue; } bool prioritiseClausesProducedByLongReduction() const { return _priortyToLongReducts.actualValue; } @@ -2427,6 +2428,7 @@ bool _hard; bool cases() const { return _cases.actualValue; } bool newTautologyDel() const { return _newTautologyDel.actualValue; } bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } + // TODO doesn't do anyhting currently bool complexVarCondition() const { return _complexVarCondition.actualValue; } HPrinting holPrinting() const { return _holPrinting.actualValue; } void setHolPrinting(HPrinting setting) { _holPrinting.actualValue = setting; } From 2fab088df154512fbc4d4770f2c1de61a7ce4793 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 28 May 2023 22:34:18 +0100 Subject: [PATCH 085/210] bug fixes --- Forwards.hpp | 1 + Indexing/LiteralSubstitutionTree.cpp | 2 ++ Indexing/TermSubstitutionTree.cpp | 4 +++- Indexing/TermSubstitutionTree.hpp | 5 +++-- Kernel/HOLUnification.cpp | 1 + 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Forwards.hpp b/Forwards.hpp index 468974116f..3e9e517cdd 100644 --- a/Forwards.hpp +++ b/Forwards.hpp @@ -157,6 +157,7 @@ typedef Lib::SmartPtr ResultSubstitutionSP; enum class SplittingAlgo { NONE #if VHOL , HOL_MATCH + , HOL_UNIF #endif }; diff --git a/Indexing/LiteralSubstitutionTree.cpp b/Indexing/LiteralSubstitutionTree.cpp index 5009bbd307..21b2e2d69e 100644 --- a/Indexing/LiteralSubstitutionTree.cpp +++ b/Indexing/LiteralSubstitutionTree.cpp @@ -84,6 +84,8 @@ SubstitutionTree* LiteralSubstitutionTree::getTree(Literal* lit, bool complement _trees.push(new SubstitutionTree()); break; #if VHOL + case SplittingAlgo::HOL_UNIF: + break; case SplittingAlgo::HOL_MATCH: _trees.push(new HOLSubstitutionTree([](TermList t){ return !t.isLambdaTerm(); diff --git a/Indexing/TermSubstitutionTree.cpp b/Indexing/TermSubstitutionTree.cpp index 4e43ecadbf..5154bfa1ff 100644 --- a/Indexing/TermSubstitutionTree.cpp +++ b/Indexing/TermSubstitutionTree.cpp @@ -31,7 +31,7 @@ using namespace Kernel; TermSubstitutionTree::TermSubstitutionTree(SplittingAlgo algo) #if VHOL - : _extra(false) + : _algo(algo), _extra(false) #endif { switch(algo){ @@ -39,6 +39,8 @@ TermSubstitutionTree::TermSubstitutionTree(SplittingAlgo algo) _tree.reset(new SubstitutionTree()); break; #if VHOL + case SplittingAlgo::HOL_UNIF: + break; case SplittingAlgo::HOL_MATCH: _tree.reset(new HOLSubstitutionTree([](TermList t){ return !t.isLambdaTerm(); diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index a360746c9a..e652eb8e40 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -94,9 +94,9 @@ class TermSubstitutionTree void handleTerm(TypedTermList tt, LeafData ld, bool insert){ #if VHOL - if(env.property->higherOrder()){ + if(env.property->higherOrder() && _algo == SplittingAlgo::HOL_UNIF){ // replace higher-order terms with placeholder constants - tt = TypedTermList(ToPlaceholders().replace(tt), tt.sort()); + tt = TypedTermList(ToPlaceholders().replace(tt), tt.sort()); } #endif _tree->handle(tt, ld, insert); } @@ -127,6 +127,7 @@ class TermSubstitutionTree */ bool _extra; #endif + SplittingAlgo _algo; unique_ptr _tree; friend std::ostream& operator<<(std::ostream& out, TermSubstitutionTree const& self) diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index b5375219bb..42fa4b7a84 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -70,6 +70,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorebdRecord(_bdStack->top()); _subst->bind(t1, t2); _subst->bdDone(); + applyBindingToPairs(); return true; } return false; From c68c9c8e54e2f75ded3bbd3d91324dcb882ab4cb Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Mon, 29 May 2023 11:57:03 +0100 Subject: [PATCH 086/210] bug fixing --- Indexing/TermSubstitutionTree.cpp | 2 +- Inferences/PrimitiveInstantiation.cpp | 13 ++++++++++--- Kernel/HOLUnification.cpp | 8 +++++--- Kernel/Term.cpp | 20 ++++++++++---------- Kernel/TermIterators.cpp | 3 +++ 5 files changed, 29 insertions(+), 17 deletions(-) diff --git a/Indexing/TermSubstitutionTree.cpp b/Indexing/TermSubstitutionTree.cpp index 5154bfa1ff..3355031536 100644 --- a/Indexing/TermSubstitutionTree.cpp +++ b/Indexing/TermSubstitutionTree.cpp @@ -31,7 +31,7 @@ using namespace Kernel; TermSubstitutionTree::TermSubstitutionTree(SplittingAlgo algo) #if VHOL - : _algo(algo), _extra(false) + : _extra(false), _algo(algo) #endif { switch(algo){ diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index 49e7718378..2d064f18c6 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -86,6 +86,8 @@ struct PrimitiveInstantiation::ResultFn case Options::PISet::NOT: _heads.push(AH::neg()); break; + // Equality and Pi and Sigma introduce polymorphism + // into monomorphic problem... case Options::PISet::NOT_EQ_NOT_EQ: _heads.push(AH::neg()); _heads.push(AH::equality(sortVar)); @@ -158,6 +160,11 @@ struct PrimitiveInstantiation::ResultFn AH::getHeadAndArgs(flexTerm, headFlex, argsFlex); AH::getArgSorts(flexTerm, sortsFlex); + if(!argsFlex.size()){ + // TODO do we really want to do this? + return ClauseIterator::getEmpty(); + } + // if any amongst a1 ... an is of sort $o, project that // argument to the top for(unsigned i =0; i < sortsFlex.size() && pragmatic; i++){ @@ -213,10 +220,10 @@ struct PrimitiveInstantiation::ResultFn TermList fVar(_freshVar,false); bool surround = (!_heads[i].isEquals() || !include_not_eq); - TermList gb = AH::createGeneralBinding(fVar,_heads[i],sortsFlex,surround); - gb = surround ? gb : AH::surroundWithLambdas(gb, sortsFlex); // TODO looks dodgy + TermList gb = AH::createGeneralBinding(fVar,_heads[i],sortsFlex,surround); + TermList gb2 = surround ? gb : AH::surroundWithLambdas(gb, sortsFlex); - _subst.bind(headFlex.var(), gb); + _subst.bind(headFlex.var(), gb2); results.push(createRes()); if(!surround){ diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 42fa4b7a84..85f7062646 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -141,9 +141,11 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoreunify(_origQuerySort,res.sort())); + ALWAYS(subst.unify(_origQuerySort,res.sort())); return unifiers(_origQuery, res, &subst, false); } diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index d49fa684c5..8340c4d9fb 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -543,7 +543,7 @@ bool TermList::isNot() const { bool Term::isNot() const { CALL("Term::isNot"); - return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::NOT; + return !isSort() && !isLiteral() && !isSpecial() && env.signature->getFunction(_functor)->proxy() == Signature::NOT; } bool TermList::isSigma() const { @@ -555,7 +555,7 @@ bool TermList::isSigma() const { bool Term::isSigma() const { CALL("Term::isSigma"); - return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::SIGMA; + return !isSort() && !isLiteral() && !isSpecial() && env.signature->getFunction(_functor)->proxy() == Signature::SIGMA; } bool TermList::isPi() const { @@ -567,7 +567,7 @@ bool TermList::isPi() const { bool Term::isPi() const { CALL("Term::isPi"); - return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::PI; + return !isSort() && !isLiteral() && !isSpecial() && env.signature->getFunction(_functor)->proxy() == Signature::PI; } bool TermList::isIff() const { @@ -579,7 +579,7 @@ bool TermList::isIff() const { bool Term::isIff() const { CALL("Term::isIff"); - return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::IFF; + return !isSort() && !isLiteral() && !isSpecial() && env.signature->getFunction(_functor)->proxy() == Signature::IFF; } bool TermList::isAnd() const { @@ -591,7 +591,7 @@ bool TermList::isAnd() const { bool Term::isAnd() const { CALL("Term::isAnd"); - return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::AND; + return !isSort() && !isLiteral() && !isSpecial() && env.signature->getFunction(_functor)->proxy() == Signature::AND; } bool TermList::isOr() const { @@ -603,7 +603,7 @@ bool TermList::isOr() const { bool Term::isOr() const { CALL("Term::isOr"); - return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::OR; + return !isSort() && !isLiteral() && !isSpecial() && env.signature->getFunction(_functor)->proxy() == Signature::OR; } bool TermList::isXOr() const { @@ -615,7 +615,7 @@ bool TermList::isXOr() const { bool Term::isXOr() const { CALL("Term::isXOr"); - return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::XOR; + return !isSort() && !isLiteral() && !isSpecial() && env.signature->getFunction(_functor)->proxy() == Signature::XOR; } bool TermList::isImp() const { @@ -627,7 +627,7 @@ bool TermList::isImp() const { bool Term::isImp() const { CALL("Term::isImp"); - return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::IMP; + return !isSort() && !isLiteral() && !isSpecial() && env.signature->getFunction(_functor)->proxy() == Signature::IMP; } bool TermList::isEquals() const { @@ -639,7 +639,7 @@ bool TermList::isEquals() const { bool Term::isEquals() const { CALL("Term::isEquals"); - return !isSort() && env.signature->getFunction(_functor)->proxy() == Signature::EQUALS; + return !isSort() && !isLiteral() && !isSpecial() && env.signature->getFunction(_functor)->proxy() == Signature::EQUALS; } bool TermList::isPlaceholder() const { @@ -691,7 +691,7 @@ Option TermList::deBruijnIndex() const { Option Term::deBruijnIndex() const { CALL("Term::deBruijnIndex"); - return isSort() || isLiteral() ? Option() : env.signature->getFunction(_functor)->dbIndex(); + return isSort() || isLiteral() || isSpecial() ? Option() : env.signature->getFunction(_functor)->dbIndex(); } #endif diff --git a/Kernel/TermIterators.cpp b/Kernel/TermIterators.cpp index d40073ea0f..906b6871c2 100644 --- a/Kernel/TermIterators.cpp +++ b/Kernel/TermIterators.cpp @@ -264,6 +264,9 @@ Term* FirstOrderSubtermIt::next() // have subterms that don't have loose indices // Moreover, we do not explore the body of a lambda currently if(!args[i].isVar() && !args[i].containsLooseIndex()){ + // demodulating a term that contains a loose index + // is sound, but it may not maintain completeness + // depending on the ordering _added++; _stack.push(args[i].term()); } From 000ebb24395ebeb686d7d3a338debd5a4b69c210 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 30 May 2023 01:11:07 +0100 Subject: [PATCH 087/210] polymorhpic higher-order unification - bugs remain --- Indexing/TermSharing.cpp | 17 ++++--- Inferences/PrimitiveInstantiation.cpp | 4 +- Kernel/ApplicativeHelper.cpp | 44 +++++++++++++++++ Kernel/ApplicativeHelper.hpp | 18 +++++++ Kernel/HOLUnification.cpp | 70 +++++++++++++++++++-------- Kernel/HOLUnification.hpp | 1 + Kernel/Term.cpp | 2 +- Kernel/Term.hpp | 12 ++--- Kernel/TermTransformer.cpp | 4 +- Kernel/TermTransformer.hpp | 5 +- Saturation/SaturationAlgorithm.cpp | 32 +++++++++++- UnitTests/tBetaReduction.cpp | 4 ++ 12 files changed, 169 insertions(+), 44 deletions(-) diff --git a/Indexing/TermSharing.cpp b/Indexing/TermSharing.cpp index 2f0f828934..9616d1b2f7 100644 --- a/Indexing/TermSharing.cpp +++ b/Indexing/TermSharing.cpp @@ -121,7 +121,7 @@ Term* TermSharing::insert(Term* t) if (s == t) { unsigned weight = 1; unsigned vars = 0; - bool hasTermVar = false; + bool hasSortVar = false; bool hasInterpretedConstants=t->arity()==0 && env.signature->getFunction(t->functor())->interpreted(); #if VHOL @@ -136,8 +136,8 @@ Term* TermSharing::insert(Term* t) TermList* tt = t->nthArgument(i); if (tt->isVar()) { ASS(tt->isOrdinaryVar()); - if(i >= typeArity){ - hasTermVar = true; + if(i < typeArity){ + hasSortVar = true; } vars++; weight += 1; @@ -150,7 +150,7 @@ Term* TermSharing::insert(Term* t) vars += r->numVarOccs(); weight += r->weight(); - hasTermVar |= r->hasTermVar(); + hasSortVar |= r->hasSortVar(); #if VHOL hasDBIndex = hasDBIndex ? true : r->hasDBIndex(); hasRedex = hasRedex ? true : r->hasRedex(); @@ -166,7 +166,7 @@ Term* TermSharing::insert(Term* t) t->setId(_totalTerms); t->setNumVarOccs(vars); t->setWeight(weight); - t->setHasTermVar(hasTermVar); + t->setHasSortVar(hasSortVar); if (env.colorUsed) { Color fcolor = env.signature->getFunction(t->functor())->color(); @@ -185,9 +185,9 @@ Term* TermSharing::insert(Term* t) //poly function works for mono as well, but is slow //it is fine to use for debug ASS_REP(_wellSortednessCheckingDisabled || SortHelper::areImmediateSortsValidPoly(t), t->toString()); - if (!_poly && !SortHelper::areImmediateSortsValidMono(t) && !_wellSortednessCheckingDisabled){ + if (!_wellSortednessCheckingDisabled && !_poly && !SortHelper::areImmediateSortsValidMono(t)){ USER_ERROR("Immediate (shared) subterms of term/literal "+t->toString()+" have different types/not well-typed!"); - } else if (_poly && !SortHelper::areImmediateSortsValidPoly(t) && !_wellSortednessCheckingDisabled){ + } else if (!_wellSortednessCheckingDisabled && _poly && !SortHelper::areImmediateSortsValidPoly(t)){ USER_ERROR("Immediate (shared) subterms of term/literal "+t->toString()+" have different types/not well-typed!"); } } @@ -214,10 +214,12 @@ AtomicSort* TermSharing::insert(AtomicSort* sort) } unsigned weight = 1; unsigned vars = 0; + bool hasSortVar = false; for (TermList* tt = sort->args(); ! tt->isEmpty(); tt = tt->next()) { if (tt->isVar()) { ASS(tt->isOrdinaryVar()); + hasSortVar = true; vars++; weight += 1; } @@ -235,6 +237,7 @@ AtomicSort* TermSharing::insert(AtomicSort* sort) sort->setId(_totalSorts); sort->setNumVarOccs(vars); sort->setWeight(weight); + sort->setHasSortVar(hasSortVar); _totalSorts++; diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index 2d064f18c6..a8b4de3f06 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -160,10 +160,10 @@ struct PrimitiveInstantiation::ResultFn AH::getHeadAndArgs(flexTerm, headFlex, argsFlex); AH::getArgSorts(flexTerm, sortsFlex); - if(!argsFlex.size()){ + /*if(!argsFlex.size()){ // TODO do we really want to do this? return ClauseIterator::getEmpty(); - } + }*/ // if any amongst a1 ... an is of sort $o, project that // argument to the top diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 8e15d89305..db539a6aa0 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -315,6 +315,50 @@ bool TermShifter::exploreSubterms(TermList orig, TermList newTerm) return false; } +TermList SortDeref::deref(TermList term) +{ + CALL("SortDeref::deref"); + + // assume term var here + if(term.isVar() || !term.term()->hasSortVar()) return term; + return transform(term); +} + +TermList SortDeref::transformSubterm(TermList t) +{ + CALL("ortDeref::transformSubterm"); + + if(t.isVar() && _positions.top() < _typeArities.top()){ + t = _sub->derefBound(t); + } + unsigned pos = _positions.pop(); + _positions.push(pos + 1); + return t; +} + +void SortDeref::onTermEntry(Term* t){ + CALL("SortDeref::onTermEntry"); + + _typeArities.push(t->isSort() ? t->arity() : t->numTypeArguments()); + _positions.push(0); +} + +void SortDeref::onTermExit(Term* t){ + CALL("ortDeref::onTermExit"); + + _typeArities.pop(); + _positions.pop(); +} + +bool SortDeref::exploreSubterms(TermList orig, TermList newTerm) +{ + CALL("SortDeref::exploreSubterms"); + + ASS(newTerm.isTerm()); + + return newTerm.term()->hasSortVar(); +} + TermList ToPlaceholders::replace(TermList term) { CALL("ToPlaceholders::replace"); diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 9b768f0066..7e0241d34a 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -198,6 +198,24 @@ class TermShifter : public TermTransformer int _minFreeIndex; }; +class SortDeref : public TermTransformer +{ +public: + SortDeref(RobSubstitutionTL* sub) : _sub(sub) {} + + TermList deref(TermList term); + TermList transformSubterm(TermList t) override; + void onTermEntry(Term* t) override; + void onTermExit(Term* t) override; + bool exploreSubterms(TermList orig, TermList newTerm) override; + +private: + RobSubstitutionTL* _sub; + Stack _typeArities; + Stack _positions; +}; + + // replaces higher-order subterms (subterms with variable heads e.g., X a b & // lambda terms) with a special polymorphic constant we call a "placeholder". // Depending on the mode functional and Boolean subterms may also be replaced diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 85f7062646..aaa5d0e66c 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -18,6 +18,8 @@ #include "Kernel/HOLUnification.hpp" #include "Kernel/ApplicativeHelper.hpp" +#include "Indexing/TermSharing.hpp" + #include "Lib/SkipList.hpp" namespace Kernel @@ -31,6 +33,13 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorepush(TermStack()); if(!trySolveTrivialPair(t1,t2)){ - _unifPairs.insert(HOLConstraint(t1,t2)); + _unifPairs.insert(HOLConstraint(applyTypeSub(t1),applyTypeSub(t2))); } DEBUG_ITERATOR(1, "starting iterator with\n ", *this) @@ -134,7 +143,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); - + DEBUG_ITERATOR(2, "Next pair\n ", con) TermList lhs = con.lhs(); @@ -143,11 +152,9 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorefunctor() == rhsHead.term()->functor()){ + // unify type + for(unsigned j = 0; j < lhsHead.term()->arity(); j++){ + BacktrackData tempBD; + _subst->bdRecord(tempBD); + bool success = _subst->unify(lhsHead.nthArg(j), rhsHead.nthArg(j)); + _subst->bdDone(); + if(!success){ + tempBD.backtrack(); + forward = backtrack(); + continue; + } else { + tempBD.commitTo(_bdStack->top()); + tempBD.drop(); + } + } TermStack lhsArgs; TermStack argSorts; @@ -174,9 +194,9 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorebdDone(); if(res == OracleResult::OUT_OF_FRAGMENT){ - tempBD.backtrack(); + tempBD.backtrack(); // don't think we need this, as we won't have bound anyhting... // TODO pattern oracle // TODO solid oracle? } else if (res == OracleResult::SUCCESS){ @@ -352,6 +372,24 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCore { +public: + HigherOrderUnifiersItWrapper(TermList t1, TermList s1, TermList t2, TermList s2, bool funcExt) : _subst() + { + // this unification must pass, otherwise we wouldn't have reached a leaf + // however, we are forced to recompute it here with the new substitution (not ideal) + ALWAYS(_subst->unify(s1,s2)); + _inner = vi(new HigherOrderUnifiersIt(t1, t2, &*_subst, funcExt)); + } + + bool hasNext() { return _inner.hasNext(); } + RobSubstitutionTL* next() { return _inner.next(); } + +private: + SubstIterator _inner; + Recycled _subst; +}; + SubstIterator HOLUnification::unifiers(TermList t1, TermList t2, RobSubstitutionTL* sub, bool topLevelCheck) { CALL("HOLUnification::unifiers"); @@ -386,15 +424,9 @@ SubstIterator HOLUnification::postprocess(RobSubstitutionTL* sub, TermList t, Te // ignore the sub that has been passed in, since // that contains substitutions formed during tree traversal which // are not helpful here (but cannot be erased either!) - static RobSubstitutionTL subst; - subst.reset(); - TypedTermList res = ToBank(RESULT_BANK).toBank(TypedTermList(t,sort)); - // this unification must pass, otherwise we wouldn't have reached a leaf - // however, we are forced to recompute it here with the new substitution (not ideal) - ALWAYS(subst.unify(_origQuerySort,res.sort())); - return unifiers(_origQuery, res, &subst, false); + return vi(new HigherOrderUnifiersItWrapper(_origQuery, _origQuerySort, res, res.sort(), _funcExt)); } bool HOLUnification::associate(unsigned specialVar, TermList node, RobSubstitutionTL* sub) diff --git a/Kernel/HOLUnification.hpp b/Kernel/HOLUnification.hpp index 9a158a2b51..53727198f5 100644 --- a/Kernel/HOLUnification.hpp +++ b/Kernel/HOLUnification.hpp @@ -103,6 +103,7 @@ class HOLUnification { } class HigherOrderUnifiersIt; + class HigherOrderUnifiersItWrapper; public: diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 8340c4d9fb..2a05027cbe 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -2438,7 +2438,7 @@ Term::Term() throw() _args[0]._info.shared = 0; _args[0]._info.literal = 0; _args[0]._info.sort = 0; - _args[0]._info.hasTermVar = 0; + _args[0]._info.hasSortVar = 0; _args[0]._info.order = 0; _args[0]._info.tag = FUN; _args[0]._info.distinctVars = TERM_DIST_VAR_UNKNOWN; diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index f98591186c..59b5dc579a 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -348,7 +348,7 @@ class TermList { /** true if atomic sort */ unsigned sort : 1; /** true if term contains at least one term var */ - unsigned hasTermVar : 1; + unsigned hasSortVar : 1; #if VHOL /** true if the term contains a De Bruijn index */ unsigned hasDBIndex : 1; @@ -675,10 +675,10 @@ class Term /** True if the term contains a term variable (type variables don't count) * Only applicable to shared terms */ - bool hasTermVar() const + bool hasSortVar() const { ASS(_args[0]._info.shared); - return _args[0]._info.hasTermVar; + return _args[0]._info.hasSortVar; } // ground /** True if the term is shared */ @@ -758,11 +758,11 @@ class Term _vars = v; } // setVars - void setHasTermVar(bool b) + void setHasSortVar(bool b) { CALL("setHasTermVar"); - ASS(shared() && !isSort()); - _args[0]._info.hasTermVar = b; + ASS(shared()); + _args[0]._info.hasSortVar = b; } /** Return the number of variable _occurrences_ */ diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index 38744f915b..c6af5bf51b 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -87,9 +87,7 @@ Term* TermTransformer::transform(Term* term) // We still transform sort and term variables ... // It is difficult to avoid this though - if(tl.isTerm() && - (( tl.term()->isSort() && _dontTransformSorts) || - (!tl.term()->isSort() && _onlyTransformSorts))){ + if(tl.isTerm() && tl.term()->isSort() && _dontTransformSorts){ args.push(tl); continue; } diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index 65902301a5..8021d393e0 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -41,12 +41,10 @@ class TermTransformer { public: TermTransformer() : _sharedResult(true), - _dontTransformSorts(false), - _onlyTransformSorts(false) {} + _dontTransformSorts(false) {} void createNonShared(){ _sharedResult = false; } void dontTransformSorts(){ _dontTransformSorts = true; } - void onltTransformSorts(){ _onlyTransformSorts = true; } virtual ~TermTransformer() {} Term* transform(Term* term); @@ -68,7 +66,6 @@ class TermTransformer { virtual Formula* transform(Formula* f); bool _sharedResult; bool _dontTransformSorts; - bool _onlyTransformSorts; private: template diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 537663420d..0741f0cfba 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1619,13 +1619,31 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(new BinaryResolution()); } if (opt.unitResultingResolution() != Options::URResolution::OFF) { - gie->addFront(new URResolution()); +#if VHOL + if(env.property->higherOrder()){ + // TODO how to output error properly? + // Should we be outputing an error or just dying? + cout << "WARNING: unit resulting resolution is not compatible with higher-order. Ignoring request" << endl; + } else { +#endif + gie->addFront(new URResolution()); +#if VHOL + } +#endif } if (opt.extensionalityResolution() != Options::ExtensionalityResolution::OFF) { gie->addFront(new ExtensionalityResolution()); } if (opt.FOOLParamodulation()) { +#if VHOL + if(env.property->higherOrder()){ + cout << "WARNING: FOOL paramodulation is not compatible with higher-order. Try using Cases or CasesSimp instead. Ignoring request" << endl; + } else { +#endif gie->addFront(new FOOLParamodulation()); +#if VHOL + } +#endif } /*if (opt.injectivityReasoning()) { @@ -1693,7 +1711,17 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const res->addForwardSimplifierToFront(new InnerRewriting()); } if (opt.hyperSuperposition()) { - res->addForwardSimplifierToFront(new HyperSuperposition()); +#if VHOL + if(env.property->higherOrder()){ + // TODO how to output error properly? + // Should we be outputing an error or just dying? + cout << "WARNING: hyper superposition is not compatible with higher-order. Ignoring request" << endl; + } else { +#endif + res->addForwardSimplifierToFront(new HyperSuperposition()); +#if VHOL + } +#endif } if (opt.globalSubsumption()) { res->addForwardSimplifierToFront(new GlobalSubsumption(opt)); diff --git a/UnitTests/tBetaReduction.cpp b/UnitTests/tBetaReduction.cpp index b1f8dd41c6..3d86b2fc75 100644 --- a/UnitTests/tBetaReduction.cpp +++ b/UnitTests/tBetaReduction.cpp @@ -260,8 +260,10 @@ TEST_FUN(fo_subterm_rep1) { DECL_ARROW_SORT(fSrt, {gSrt, srt, srt}) DECL_HOL_VAR(y, 1, gSrt) DECL_HOL_VAR(x, 2, srt) + DECL_HOL_VAR(z, 3, arrow(arrow(srt,srt), srt)) DECL_CONST(f, fSrt) DECL_CONST(g, gSrt) + DECL_CONST(a, arrow(srt,srt)) env.options->setHolPrinting(Options::HPrinting::PRETTY); env.property->forceHigherOrder(); @@ -270,9 +272,11 @@ TEST_FUN(fo_subterm_rep1) { auto t = ap(ap(f,g), ap(y, x)); auto replaced = sr.replace( t ); + auto replaced2 = sr.replace ( ap(z, a)); cout << t << endl; cout << replaced << endl; + cout << replaced2 << endl; } #endif From ae168730bcbf327c25bba6876943faaf0afb7789 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 30 May 2023 01:37:14 +0100 Subject: [PATCH 088/210] bug fix --- Indexing/TermSharing.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Indexing/TermSharing.cpp b/Indexing/TermSharing.cpp index 9616d1b2f7..022b635af2 100644 --- a/Indexing/TermSharing.cpp +++ b/Indexing/TermSharing.cpp @@ -231,6 +231,7 @@ AtomicSort* TermSharing::insert(AtomicSort* sort) vars += r->numVarOccs(); weight += r->weight(); + hasSortVar |= r->hasSortVar(); } } sort->markShared(); From 184753ec78e842ea6c37c7bf3f5bc229a664d484 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 30 May 2023 13:20:56 +0100 Subject: [PATCH 089/210] bug fix --- Kernel/ApplicativeHelper.cpp | 7 +++++-- Kernel/HOLUnification.cpp | 13 ++++++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index db539a6aa0..e3fc6bbaec 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -876,18 +876,21 @@ bool ApplicativeHelper::getProjAndImitBindings(TermList flexTerm, TermList rigid bindings.push(pb); } + ASS(sortsFlex.size() >= argsFlex.size()); + unsigned diff = sortsFlex.size() - argsFlex.size(); + // projections for(unsigned i = 0; i < argsFlex.size(); i++){ // try and project each of the arguments of the flex head in turn TermList arg = argsFlex[i]; - TermList argSort = sortsFlex[i]; + TermList argSort = sortsFlex[i + diff]; // sort wrong, cannot project this arg if(argSort.finalResult() != sort) continue; TermList head = arg.head(); // argument has a rigid head different to that of rhs. no point projecting if(head.isTerm() && head.deBruijnIndex().isNone() && head != headRigid) continue; - TermList dbi = getDeBruijnIndex(i, sortsFlex[i]); + TermList dbi = getDeBruijnIndex(i + diff, sortsFlex[i + diff]); TermList pb = createGeneralBinding(fVar,dbi,sortsFlex); fVar = var.var() > fVar.var() ? var : fVar; diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index aaa5d0e66c..606205a13b 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -156,6 +156,11 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorefunctor() == rhsHead.term()->functor()){ // unify type + bool success = true; for(unsigned j = 0; j < lhsHead.term()->arity(); j++){ BacktrackData tempBD; _subst->bdRecord(tempBD); @@ -176,13 +182,17 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); tempBD.drop(); } } + if(!success){ + continue; + } + TermStack lhsArgs; TermStack argSorts; TermStack rhsArgs; @@ -293,6 +303,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorepushConstraint(c); } } + // don't stop recording here // instead, let RObSubstitution do its free variable renaming // on top member of BdStack, so that it is undone by a call to bactrack() From 75e4af627b858e7c838a50587c5d0ddb7addc105 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 31 May 2023 00:14:00 +0100 Subject: [PATCH 090/210] bug fixing --- Indexing/IndexManager.cpp | 23 +++++-- Indexing/LiteralSubstitutionTree.cpp | 1 + Indexing/TermSubstitutionTree.cpp | 1 + Inferences/PrimitiveInstantiation.cpp | 4 +- Kernel/ApplicativeHelper.cpp | 78 ++++++++++++++--------- Kernel/ApplicativeHelper.hpp | 17 ++--- Kernel/HOLUnification.cpp | 56 ++++++++++------ Kernel/RobSubstitution.hpp | 1 + UnitTests/tBetaReduction.cpp | 21 +++++- UnitTests/tUnificationWithAbstraction.cpp | 6 +- 10 files changed, 137 insertions(+), 71 deletions(-) diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 69575f8e29..216740e88b 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -149,15 +149,28 @@ Index* IndexManager::create(IndexType t) isGenerating = true; break; - case SUPERPOSITION_SUBTERM_SUBST_TREE: - res = new SuperpositionSubtermIndex(new TermSubstitutionTree(), _alg->getOrdering()); + case SUPERPOSITION_SUBTERM_SUBST_TREE:{ + auto tst = +#if VHOL + env.property->higherOrder() ? + new TermSubstitutionTree(SplittingAlgo::HOL_UNIF) : +#endif + new TermSubstitutionTree(); + res = new SuperpositionSubtermIndex(tst, _alg->getOrdering()); isGenerating = true; break; - case SUPERPOSITION_LHS_SUBST_TREE: - res = new SuperpositionLHSIndex(new TermSubstitutionTree(), _alg->getOrdering(), _alg->getOptions()); + } + case SUPERPOSITION_LHS_SUBST_TREE: { + auto tst = +#if VHOL + env.property->higherOrder() ? + new TermSubstitutionTree(SplittingAlgo::HOL_UNIF) : +#endif + new TermSubstitutionTree(); + res = new SuperpositionLHSIndex(tst, _alg->getOrdering(), _alg->getOptions()); isGenerating = true; break; - + } #if VHOL case SKOLEMISING_FORMULA_INDEX: { auto tis = new TermSubstitutionTree(SplittingAlgo::HOL_MATCH); diff --git a/Indexing/LiteralSubstitutionTree.cpp b/Indexing/LiteralSubstitutionTree.cpp index 21b2e2d69e..f21ff41089 100644 --- a/Indexing/LiteralSubstitutionTree.cpp +++ b/Indexing/LiteralSubstitutionTree.cpp @@ -85,6 +85,7 @@ SubstitutionTree* LiteralSubstitutionTree::getTree(Literal* lit, bool complement break; #if VHOL case SplittingAlgo::HOL_UNIF: + ASSERTION_VIOLATION; // currently we don't expect any literal index to use higher-order unif break; case SplittingAlgo::HOL_MATCH: _trees.push(new HOLSubstitutionTree([](TermList t){ diff --git a/Indexing/TermSubstitutionTree.cpp b/Indexing/TermSubstitutionTree.cpp index 3355031536..f79a25e0cc 100644 --- a/Indexing/TermSubstitutionTree.cpp +++ b/Indexing/TermSubstitutionTree.cpp @@ -40,6 +40,7 @@ TermSubstitutionTree::TermSubstitutionTree(SplittingAlgo algo) break; #if VHOL case SplittingAlgo::HOL_UNIF: + _tree.reset(new SubstitutionTree()); break; case SplittingAlgo::HOL_MATCH: _tree.reset(new HOLSubstitutionTree([](TermList t){ diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index a8b4de3f06..2d064f18c6 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -160,10 +160,10 @@ struct PrimitiveInstantiation::ResultFn AH::getHeadAndArgs(flexTerm, headFlex, argsFlex); AH::getArgSorts(flexTerm, sortsFlex); - /*if(!argsFlex.size()){ + if(!argsFlex.size()){ // TODO do we really want to do this? return ClauseIterator::getEmpty(); - }*/ + } // if any amongst a1 ... an is of sort $o, project that // argument to the top diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index e3fc6bbaec..1e57e1b626 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -78,7 +78,8 @@ TermList WHNFDeref::transformSubterm(TermList t) TermStack args; ApplicativeHelper::getHeadSortAndArgs(t, head, sort, args); TermList newHead = _sub->derefBound(head); - + newHead = SortDeref(_sub).deref(newHead); + // if the head is a bound variable, then // either it is bound to a lambda term creating a redex on dereferencing, // or it is not. In the case, it isn't we need to track @@ -91,6 +92,7 @@ TermList WHNFDeref::transformSubterm(TermList t) if(t.isLambdaTerm()) break; ApplicativeHelper::getHeadSortAndArgs(t, head, sort, args); newHead = _sub->derefBound(head); + newHead = SortDeref(_sub).deref(newHead); headDereffed = newHead != head; } @@ -115,9 +117,47 @@ TermList EtaNormaliser::normalise(TermList t) { CALL("EtaNormaliser::normalise"); - _ignoring = false; - t = transformSubterm(t); - return transform(t); + using AH = ApplicativeHelper; + + if(t.isVar() || !t.term()->hasLambda()){ + return t; + } + + if(t.isLambdaTerm()){ + TermStack lambdaSorts; + TermList matrix; + AH::getMatrixAndPrefSorts(t, matrix, lambdaSorts); + + if(matrix.isVar()) return t; // ^^^^^^X can't eta reduce this + + TermList matrixSort = SortHelper::getResultSort(matrix.term()); + TermList reduced = normalise(matrix); + if(reduced != matrix){ + t = AH::surroundWithLambdas(reduced, lambdaSorts, matrixSort, true); + } + + return transformSubterm(t); + } + + // t is not a lambda term + + TermList head; + TermList headSort; + TermStack args; + TermStack argsModified; + AH::getHeadSortAndArgs(t, head, headSort, args); + + bool changed = false; + for(unsigned j = 0; j < args.size(); j++){ + argsModified.push(normalise(args[j])); + changed = changed || (argsModified[j] != args[j]); + } + + if(!changed) return t; + TermList res = AH::app(headSort,head,argsModified); + + + return res; } // uses algorithm for eta-reduction that can be found here: @@ -127,9 +167,6 @@ TermList EtaNormaliser::transformSubterm(TermList t) { CALL("EtaNormaliser::transformSubterm"); - if(_ignoring && t != _awaiting) return t; - if(_ignoring && t == _awaiting) _ignoring = false; - TermList body = t; unsigned l = 0; // number of lambda binders while(body.isLambdaTerm()){ @@ -156,12 +193,6 @@ TermList EtaNormaliser::transformSubterm(TermList t) unsigned k = std::min(l, std::min(n, j)); if(!k){ - // only start awaiting if we are going to explore the - // subterm ... - if(!newBody.isVar() && newBody.term()->hasLambda()){ - _ignoring = true; - _awaiting = newBody; - } return t; } @@ -180,21 +211,8 @@ TermList EtaNormaliser::transformSubterm(TermList t) return newBody; } - if(!newBody.isVar() && newBody.term()->hasLambda()){ - _ignoring = true; - _awaiting = newBody; - } - - return SubtermReplacer(body, newBody).transform(t); -} - -bool EtaNormaliser::exploreSubterms(TermList orig, TermList newTerm) -{ - CALL("EtaNormaliser::exploreSubterms"); - - newTerm = ApplicativeHelper::matrix(newTerm); - if(newTerm.isVar() || !newTerm.term()->hasLambda()) return false; - return true; + TermList res = SubtermReplacer(body, newBody).transform(t); + return res; } TermList RedexReducer::reduce(TermList head, TermStack& args) @@ -613,7 +631,7 @@ void ApplicativeHelper::getHeadSortAndArgs(TermList term, TermList& head, head = term; } -void ApplicativeHelper::getLambdaPrefSorts(TermList t, TermStack& sorts) +void ApplicativeHelper::getMatrixAndPrefSorts(TermList t, TermList& matrix, TermStack& sorts) { CALL("ApplicativeHelper::getLambdaPrefSorts"); @@ -621,7 +639,7 @@ void ApplicativeHelper::getLambdaPrefSorts(TermList t, TermStack& sorts) sorts.push(*t.term()->nthArgument(0)); t = t.lambdaBody(); } - + matrix = t; } void ApplicativeHelper::getArgSorts(TermList t, TermStack& sorts) diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 7e0241d34a..0f5e8b0bc5 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -64,7 +64,7 @@ class ApplicativeHelper { static TermList lhsSort(TermList t); static TermList rhsSort(TermList t); - static void getLambdaPrefSorts(TermList t, TermStack& sorts); + static void getMatrixAndPrefSorts(TermList t, TermList& matrix, TermStack& sorts); static void getArgSorts(TermList t, TermStack& sorts); static Signature::Proxy getProxy(const TermList& t); @@ -120,20 +120,15 @@ class BetaNormaliser : public TermTransformer // reduce to eta short form // normalises top down carrying out parallel eta reductions // for terms such as ^^^.f 2 1 0 -class EtaNormaliser : public TermTransformer +// WARNING Recursing lurks here (even during proof search!) +// This is BAD! However, an (efficient) iterative implementation is tricky, so +// I am leaving for now. +class EtaNormaliser { public: - EtaNormaliser() { - dontTransformSorts(); - } TermList normalise(TermList t); - TermList transformSubterm(TermList t) override; - bool exploreSubterms(TermList orig, TermList newTerm) override; - -private: - bool _ignoring; - TermList _awaiting; + TermList transformSubterm(TermList t); }; // similar to BetaNormaliser, but places a term in WHNF instead diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 606205a13b..d1130d7737 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -98,7 +98,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCore temp; @@ -106,7 +106,11 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoretop()); TermList lhs = pair.lhs(); TermList rhs = pair.rhs(); - temp.push(HOLConstraint(lhs.whnfDeref(_subst), rhs.whnfDeref(_subst))); + if(sort){ + temp.push(HOLConstraint(SortDeref(_subst).deref(lhs), SortDeref(_subst).deref(rhs))); + } else { + temp.push(HOLConstraint(lhs.whnfDeref(_subst), rhs.whnfDeref(_subst))); + } } while(!temp.isEmpty()){ @@ -174,18 +178,22 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorefunctor() == rhsHead.term()->functor()){ // unify type bool success = true; + bool workDone = false; for(unsigned j = 0; j < lhsHead.term()->arity(); j++){ - BacktrackData tempBD; - _subst->bdRecord(tempBD); - bool success = _subst->unify(lhsHead.nthArg(j), rhsHead.nthArg(j)); - _subst->bdDone(); - if(!success){ - tempBD.backtrack(); - forward = backtrack(); - break; - } else { - tempBD.commitTo(_bdStack->top()); - tempBD.drop(); + if(lhsHead.nthArg(j) != rhsHead.nthArg(j)){ + workDone = true; + BacktrackData tempBD; + _subst->bdRecord(tempBD); + success = _subst->unify(lhsHead.nthArg(j), rhsHead.nthArg(j)); + _subst->bdDone(); + if(!success){ + tempBD.backtrack(); + forward = backtrack(); + break; + } else { + tempBD.commitTo(_bdStack->top()); + tempBD.drop(); + } } } @@ -193,20 +201,29 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorebdIsRecording()); HOLConstraint con = popFromUnifPairs(bd); if(!trySolveTrivialPair(con.lhs(), con.rhs())){ // through head reduction a pair can become trivial - UnifConstraint c(con.lhs(), con.rhs()); - _subst->pushConstraint(c); + _subst->pushConstraint(con.constraint()); } } diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index b01bdbeae4..01d2e4f840 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -101,6 +101,7 @@ struct TermSpec { // for backwards compatibility template class UnificationConstraint { +protected: TermSpecOrList _t1; TermSpecOrList _t2; diff --git a/UnitTests/tBetaReduction.cpp b/UnitTests/tBetaReduction.cpp index 3d86b2fc75..2c2aaf9d8d 100644 --- a/UnitTests/tBetaReduction.cpp +++ b/UnitTests/tBetaReduction.cpp @@ -197,7 +197,26 @@ TEST_FUN(eta_reduction05) { ASS_EQ(reduced, tdb); } -TEST_FUN(eta_reduction06) { +TEST_FUN(eta_reduction06) { + env.property->forceHigherOrder(); + env.options->set("pretty_hol_printing","pretty"); + + DECL_SORT(srt) + DECL_HOL_VAR(x, 0, arrow(srt,srt)) + DECL_HOL_VAR(y, 1, srt) + // TODO wierd stuff below... + DECL_CONST(f, arrow(arrow(srt,srt),srt)) + + EtaNormaliser en; + auto t = lam(x, ap(f, lam(y, ap(x,y)))); + auto tdb = toDeBruijnIndices(t); + + auto reduced = en.normalise( tdb ); + + ASS_EQ(reduced, f.sugaredExpr()); +} + +TEST_FUN(eta_reduction07) { DECL_SORT(srt) DECL_HOL_VAR(x, 0, srt) DECL_HOL_VAR(y, 1, srt) diff --git a/UnitTests/tUnificationWithAbstraction.cpp b/UnitTests/tUnificationWithAbstraction.cpp index e2f36566fc..f624d1752a 100644 --- a/UnitTests/tUnificationWithAbstraction.cpp +++ b/UnitTests/tUnificationWithAbstraction.cpp @@ -66,7 +66,7 @@ unique_ptr getTermIndex() #if VHOL // same as normal index now. should remove TODO unique_ptr getHOLTermIndex() - { return std::make_unique(); } + { return std::make_unique(SplittingAlgo::HOL_UNIF); } #endif auto getLiteralIndex() @@ -1002,10 +1002,12 @@ TEST_FUN(higher_order8) auto b2 = toDBs(lam(z3, ap(g, ap(conFun, z3)))); index->insert(ap(x,a), 0, 0); + index->insert(ap(z,a), 0, 0); index->insert(ap(g,ap(z, a)), 0, 0); - + cout << *index << endl; + checkHigherOrderTermMatches(*index, ap(g,a), Stack{ TermUnificationResultSpec From 4559deb13e7d7a2ebab2d68050ca39c0c7a5f4be Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 31 May 2023 01:39:25 +0100 Subject: [PATCH 091/210] we are not (FOOL) complete wihen running with casesSimp --- Shell/Options.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 00ec43908f..76f075b241 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -3474,6 +3474,13 @@ bool Options::complete(const Problem& prb) const return false; } +#if VHOL + if(prb.hasFOOL() && _casesSimp.actualValue){ + // casesSimp is not complete + return false; + } +#endif + Property& prop = *prb.getProperty(); // general properties causing incompleteness From 395f698623c4fee4af9055e34b1bf866ebe54d2d Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 31 May 2023 07:37:23 +0100 Subject: [PATCH 092/210] minor modifications to code --- Saturation/AWPassiveClauseContainer.cpp | 5 +++-- Shell/Options.cpp | 14 +++++++------- Shell/Options.hpp | 12 ++++++------ Shell/TheoryAxioms.cpp | 4 +++- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/Saturation/AWPassiveClauseContainer.cpp b/Saturation/AWPassiveClauseContainer.cpp index ee9835b837..5829e18d1b 100644 --- a/Saturation/AWPassiveClauseContainer.cpp +++ b/Saturation/AWPassiveClauseContainer.cpp @@ -115,7 +115,8 @@ bool WeightQueue::lessThan(Clause* c1,Clause* c2) CALL("WeightQueue::lessThan"); #if VHOL - if(env.options->prioritiseClausesProducedByLongReduction()){ + // TODO revivie this heuristic ... + /*if(env.options->prioritiseClausesProducedByLongReduction()){ if(c1->inference().reductions() < c2->inference().reductions()){ return false; } @@ -123,7 +124,7 @@ bool WeightQueue::lessThan(Clause* c1,Clause* c2) if(c2->inference().reductions() < c1->inference().reductions()){ return true; } - } + }*/ #endif Comparison weightCmp=AWPassiveClauseContainer::compareWeight(c1, c2, _opt); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 76f075b241..fbc16c46d7 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1793,7 +1793,7 @@ void Options::init() _choiceReasoning.onlyUsefulWith(_choiceAxiom.is(equal(false))); //no point having two together _choiceReasoning.tag(OptionTag::HIGHER_ORDER); - _priortyToLongReducts = BoolOptionValue("priority_to_long_reducts","ptlr",false); + /*_priortyToLongReducts = BoolOptionValue("priority_to_long_reducts","ptlr",false); _priortyToLongReducts.description="give priority to clauses produced by lengthy reductions"; _lookup.insert(&_priortyToLongReducts); _priortyToLongReducts.addProblemConstraint(hasHigherOrder()); @@ -1803,13 +1803,13 @@ void Options::init() _injectivity.description="Attempts to identify injective functions and postulates a left-inverse"; _lookup.insert(&_injectivity); _injectivity.addProblemConstraint(hasHigherOrder()); - _injectivity.tag(OptionTag::HIGHER_ORDER); + _injectivity.tag(OptionTag::HIGHER_ORDER);*/ - _pragmatic = BoolOptionValue("pragmatic","prag",false); + /*_pragmatic = BoolOptionValue("pragmatic","prag",false); _pragmatic.description="Modifes various parameters to help Vampire solve 'hard' higher-order"; _lookup.insert(&_pragmatic); _pragmatic.addProblemConstraint(hasHigherOrder()); - _pragmatic.tag(OptionTag::HIGHER_ORDER); + _pragmatic.tag(OptionTag::HIGHER_ORDER);*/ // TODO we have two ways of enabling function extensionality abstraction atm: // this option, and `-uwa`. @@ -1906,20 +1906,20 @@ void Options::init() _lambdaFreeHol.addProblemConstraint(hasHigherOrder()); _lambdaFreeHol.tag(OptionTag::HIGHER_ORDER); - _complexVarCondition = BoolOptionValue("complex_var_cond","cvc",false); + /*_complexVarCondition = BoolOptionValue("complex_var_cond","cvc",false); _complexVarCondition.description= "Use the more complex variable condition provided in the SKIKBO paper.\n" "More terms are comparable with this ordering, but it has worst case" "exponential complexity"; _lookup.insert(&_complexVarCondition); - _complexVarCondition.tag(OptionTag::HIGHER_ORDER); + _complexVarCondition.tag(OptionTag::HIGHER_ORDER);*/ _holPrinting = ChoiceOptionValue("pretty_hol_printing","php",HPrinting::TPTP, {"raw","db","pretty","tptp"}); _holPrinting.description= "Various methods of printing higher-order terms: \n" " -raw : prints the internal representation of terms \n" - " -pretty : converts internal representation to somethign resemblign textbook notation \n" + " -pretty : converts internal representation to something resembling textbook notation \n" " -tptp : matches tptp standards \n" " -db : same as tptp, except that De Bruijn indices printed instead of named variables"; _lookup.insert(&_holPrinting); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 3929b4aec7..5134c6d2e5 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2415,9 +2415,9 @@ bool _hard; bool choiceAxiom() const { return _choiceAxiom.actualValue; } bool injectivityReasoning() const { return _injectivity.actualValue; } // TODO doesn't do anyhting currently - bool pragmatic() const { return _pragmatic.actualValue; } + // bool pragmatic() const { return _pragmatic.actualValue; } bool choiceReasoning() const { return _choiceReasoning.actualValue; } - bool prioritiseClausesProducedByLongReduction() const { return _priortyToLongReducts.actualValue; } + // bool prioritiseClausesProducedByLongReduction() const { return _priortyToLongReducts.actualValue; } FunctionExtensionality functionExtensionality() const { return _functionExtensionality.actualValue; } CNFOnTheFly cnfOnTheFly() const { return _clausificationOnTheFly.actualValue; } PISet piSet() const { return _piSet.actualValue; } @@ -2429,7 +2429,7 @@ bool _hard; bool newTautologyDel() const { return _newTautologyDel.actualValue; } bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } // TODO doesn't do anyhting currently - bool complexVarCondition() const { return _complexVarCondition.actualValue; } + // bool complexVarCondition() const { return _complexVarCondition.actualValue; } HPrinting holPrinting() const { return _holPrinting.actualValue; } void setHolPrinting(HPrinting setting) { _holPrinting.actualValue = setting; } bool superposition() const {return _superposition.actualValue; } @@ -2860,9 +2860,9 @@ bool _hard; BoolOptionValue _addProxyAxioms; BoolOptionValue _choiceAxiom; BoolOptionValue _injectivity; - BoolOptionValue _pragmatic; + // BoolOptionValue _pragmatic; BoolOptionValue _choiceReasoning; - BoolOptionValue _priortyToLongReducts; + // BoolOptionValue _priortyToLongReducts; ChoiceOptionValue _functionExtensionality; ChoiceOptionValue _clausificationOnTheFly; ChoiceOptionValue _piSet; @@ -2874,7 +2874,7 @@ bool _hard; BoolOptionValue _cases; BoolOptionValue _newTautologyDel; BoolOptionValue _lambdaFreeHol; - BoolOptionValue _complexVarCondition; + // BoolOptionValue _complexVarCondition; ChoiceOptionValue _holPrinting; UnsignedOptionValue _higherOrderUnifDepth; #endif diff --git a/Shell/TheoryAxioms.cpp b/Shell/TheoryAxioms.cpp index 563a6bbac0..288e5f7139 100644 --- a/Shell/TheoryAxioms.cpp +++ b/Shell/TheoryAxioms.cpp @@ -1148,7 +1148,9 @@ void TheoryAxioms::applyFOOL() { // Do not add the finite domain axiom if --fool_paradomulation on if (env.options->FOOLParamodulation() #if VHOL - || env.options->cases() || env.options->casesSimp() + || env.options->cases() || env.options->casesSimp() || env.property->higherOrder() + // never want to add these axioms in higher-order. Either deal with Bools using + // cases or using unification with abstraction #endif ) { return; From 57ef2ad8552fbe2df716cbad9e9e391e634de7a7 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 31 May 2023 07:38:27 +0100 Subject: [PATCH 093/210] missed from last commit --- Kernel/Inference.cpp | 4 ++-- Kernel/Inference.hpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Kernel/Inference.cpp b/Kernel/Inference.cpp index c9df4b1972..162f31ca92 100644 --- a/Kernel/Inference.cpp +++ b/Kernel/Inference.cpp @@ -282,9 +282,9 @@ vstring Inference::toString() const if(env.options->addProxyAxioms()){ result += ", pad: " + Int::toString(_proxyAxiomsDescendant); } - if(env.options->prioritiseClausesProducedByLongReduction()){ + /*if(env.options->prioritiseClausesProducedByLongReduction()){ result += ", redLen " + Int::toString(_reductions); - } + }*/ #endif result += ", sl: " + Int::toString(_sineLevel); result += ", age: " + Int::toString(_age); diff --git a/Kernel/Inference.hpp b/Kernel/Inference.hpp index e47f9e186f..8b4cc6770b 100644 --- a/Kernel/Inference.hpp +++ b/Kernel/Inference.hpp @@ -964,8 +964,8 @@ class Inference **/ unsigned char _sineLevel : 8; // updated as the minimum from parents to children - // AYB TODO - /** number of weak reductions in the history of this clause */ + // AYB TODO currently unused + /** number of beta reductions in the history of this clause */ unsigned _reductions : 30; // aligned to 64 bits From d8196467e5a8f08dbbb7cac519ee8ea79d2a34b3 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 1 Jun 2023 14:23:05 +0100 Subject: [PATCH 094/210] bug fixes --- Indexing/IndexManager.cpp | 7 ++++++- Inferences/Choice.cpp | 7 ++++--- Inferences/FastCondensation.cpp | 6 ++++++ Inferences/ForwardLiteralRewriting.cpp | 7 ++++++- Kernel/RobSubstitution.cpp | 12 ++++++++++++ Shell/Options.cpp | 6 +++--- Shell/Options.hpp | 4 ++-- 7 files changed, 39 insertions(+), 10 deletions(-) diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 216740e88b..de4a04b438 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -246,7 +246,12 @@ Index* IndexManager::create(IndexType t) } case REWRITE_RULE_SUBST_TREE: - res = new RewriteRuleIndex(new LiteralSubstitutionTree(), _alg->getOrdering()); + res = +#if VHOL + env.property->higherOrder() ? + new RewriteRuleIndex(new LiteralSubstitutionTree(SplittingAlgo::HOL_MATCH), _alg->getOrdering()) : +#endif + new RewriteRuleIndex(new LiteralSubstitutionTree(), _alg->getOrdering()); isGenerating = false; break; diff --git a/Inferences/Choice.cpp b/Inferences/Choice.cpp index cbb0ff2128..9b0f588b73 100644 --- a/Inferences/Choice.cpp +++ b/Inferences/Choice.cpp @@ -82,7 +82,7 @@ struct Choice::AxiomsIterator { CALL("Choice::AxiomsIterator"); ASS(term.isApplication()); - + _set = term.rhs(); _headSort = AH::lhsSort(term); _resultSort = SortHelper::getResultSort(term.term()); @@ -170,6 +170,7 @@ struct Choice::IsChoiceTerm { bool operator()(Term* t) { + if(t->isLambdaTerm()) return false; TermStack args; TermList head; ApplicativeHelper::getHeadAndArgs(t, head, args); @@ -205,9 +206,9 @@ struct Choice::SubtermsFn ClauseIterator Choice::generateClauses(Clause* premise) { - CALL("PrimitiveInstantiation::generateClauses"); + CALL("Choice::generateClauses"); - //cout << "Choice with " << premise->toString() << endl; + // cout << "Choice with " << premise->toString() << endl; //is this correct? auto it1 = premise->getSelectedLiteralIterator(); diff --git a/Inferences/FastCondensation.cpp b/Inferences/FastCondensation.cpp index a7029a76c6..bc57d98701 100644 --- a/Inferences/FastCondensation.cpp +++ b/Inferences/FastCondensation.cpp @@ -54,6 +54,12 @@ struct FastCondensation::CondensationBinder return term.isVar() && var==term.var(); } +#if VHOL + if(env.property->higherOrder() && term.containsLooseIndex()){ + return false; + } +#endif + TermList* binding; if(bindings.getValuePtr(var,binding,term)) { return true; diff --git a/Inferences/ForwardLiteralRewriting.cpp b/Inferences/ForwardLiteralRewriting.cpp index d602ee22a0..311b9f46ce 100644 --- a/Inferences/ForwardLiteralRewriting.cpp +++ b/Inferences/ForwardLiteralRewriting.cpp @@ -56,7 +56,12 @@ bool ForwardLiteralRewriting::perform(Clause* cl, Clause*& replacement, ClauseIt for(unsigned i=0;igetGeneralizations(lit, lit->isNegative(), true); + SLQueryResultIterator git= +#if VHOL + env.property->higherOrder() ? + _index->getHOLGeneralizations(lit, lit->isNegative(), true) : +#endif + _index->getGeneralizations(lit, lit->isNegative(), true); while(git.hasNext()) { SLQueryResult qr=git.next(); Clause* counterpart=_index->getCounterpart(qr.clause); diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index c85cf45b05..76bc6014de 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -250,6 +250,18 @@ bool RobSubstitution::occurs(TermSpecOrList const& { ASS(toFind_.isVar()); +#if VHOL + // we don't need to dereference any bound variables + // since we should never be binding a variable to a term that contains a loose index + if(env.property->higherOrder()){ + // should never reach here from a tree + // currently we only reach this point by a call to unifiers + // from condensation + ASS(ts_.isVar() || ts_.term()->shared()) + if(ts_.containsLooseIndex()) return false; + } +#endif + TermSpecOrList toFind = root(toFind_); TermSpecOrList ts = derefBound(ts_); if(ts.isVar()) { diff --git a/Shell/Options.cpp b/Shell/Options.cpp index fbc16c46d7..9a8bf14fb1 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1770,7 +1770,7 @@ void Options::init() _higherOrderUnifDepth = UnsignedOptionValue("hol_unif_depth","hud",2); _higherOrderUnifDepth.description = "Set the maximum depth (in terms of projextions and imitations) that higher-order unification can descend to. Once limit is reached, remaining pairs are retunred as constraints."; _higherOrderUnifDepth.addProblemConstraint(hasHigherOrder()); - _higherOrderUnifDepth.addHardConstraint(lessThan(10u)); + _higherOrderUnifDepth.addHardConstraint(lessThan(100u)); _lookup.insert(&_higherOrderUnifDepth); _higherOrderUnifDepth.tag(OptionTag::HIGHER_ORDER); @@ -1803,9 +1803,9 @@ void Options::init() _injectivity.description="Attempts to identify injective functions and postulates a left-inverse"; _lookup.insert(&_injectivity); _injectivity.addProblemConstraint(hasHigherOrder()); - _injectivity.tag(OptionTag::HIGHER_ORDER);*/ + _injectivity.tag(OptionTag::HIGHER_ORDER); - /*_pragmatic = BoolOptionValue("pragmatic","prag",false); + _pragmatic = BoolOptionValue("pragmatic","prag",false); _pragmatic.description="Modifes various parameters to help Vampire solve 'hard' higher-order"; _lookup.insert(&_pragmatic); _pragmatic.addProblemConstraint(hasHigherOrder()); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 5134c6d2e5..d609164936 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2413,7 +2413,7 @@ bool _hard; #if VHOL bool addProxyAxioms() const { return _addProxyAxioms.actualValue; } bool choiceAxiom() const { return _choiceAxiom.actualValue; } - bool injectivityReasoning() const { return _injectivity.actualValue; } + // bool injectivityReasoning() const { return _injectivity.actualValue; } // TODO doesn't do anyhting currently // bool pragmatic() const { return _pragmatic.actualValue; } bool choiceReasoning() const { return _choiceReasoning.actualValue; } @@ -2859,7 +2859,7 @@ bool _hard; //Higher-order options BoolOptionValue _addProxyAxioms; BoolOptionValue _choiceAxiom; - BoolOptionValue _injectivity; + // BoolOptionValue _injectivity; // BoolOptionValue _pragmatic; BoolOptionValue _choiceReasoning; // BoolOptionValue _priortyToLongReducts; From c3f8e4973884152ef4b024c0a30cfcd377f6bb41 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 1 Jun 2023 14:34:35 +0100 Subject: [PATCH 095/210] bug fix --- Kernel/RobSubstitution.cpp | 39 ++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 76bc6014de..82eaa05ca0 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -250,18 +250,6 @@ bool RobSubstitution::occurs(TermSpecOrList const& { ASS(toFind_.isVar()); -#if VHOL - // we don't need to dereference any bound variables - // since we should never be binding a variable to a term that contains a loose index - if(env.property->higherOrder()){ - // should never reach here from a tree - // currently we only reach this point by a call to unifiers - // from condensation - ASS(ts_.isVar() || ts_.term()->shared()) - if(ts_.containsLooseIndex()) return false; - } -#endif - TermSpecOrList toFind = root(toFind_); TermSpecOrList ts = derefBound(ts_); if(ts.isVar()) { @@ -350,6 +338,21 @@ bool RobSubstitution::unify(TermSpecOrList t1, Ter // recomputing their unification Recycled> encountered; +#if VHOL + auto containsLooseIndex = [](TermList t){ + if(env.property->higherOrder()){ + // should never reach here from a tree + // currently we only reach this point by a call to unifiers + // from condensation + ASS(t.isVar() || t.term()->shared()) + // we don't need to dereference any bound variables + // since we should never be binding a variable to a term that contains a loose index + return t.containsLooseIndex(); + } + return false; + }; +#endif + auto pushTodo = [&](auto pair) { // we unify each subterm pair at most once, to avoid worst-case exponential runtimes // in order to safe memory we do ot do this for variables. @@ -381,10 +384,18 @@ bool RobSubstitution::unify(TermSpecOrList t1, Ter // Deal with the case where eithe rare variables // Do an occurs-check and note that the variable // cannot be currently bound as we already dereferenced - } else if(dt1.isVar() && !occurs(dt1, dt2)) { + } else if(dt1.isVar() && !occurs(dt1, dt2) +#if VHOL + && !containsLooseIndex(dt2) +#endif + ) { bind(dt1, dt2); - } else if(dt2.isVar() && !occurs(dt2, dt1)) { + } else if(dt2.isVar() && !occurs(dt2, dt1) +#if VHOL + && !containsLooseIndex(dt1) +#endif + ) { bind(dt2, dt1); } else if(dt1.isTerm() && dt2.isTerm() From 3b0d21fe22d7cd22edea60d2cfbd5dae74ca35cd Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 1 Jun 2023 15:52:59 +0100 Subject: [PATCH 096/210] bug fixes --- Inferences/Choice.cpp | 6 +++--- Inferences/InferenceEngine.cpp | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Inferences/Choice.cpp b/Inferences/Choice.cpp index 9b0f588b73..4ad0f0e0af 100644 --- a/Inferences/Choice.cpp +++ b/Inferences/Choice.cpp @@ -52,7 +52,7 @@ Clause* Choice::createChoiceAxiom(TermList op, TermList set) { CALL("Choice::createChoiceAxiom"); - TermList setSort = SortHelper::getResultSort(op.term()).result(); + TermList setSort = SortHelper::getResultSort(op.term()).domain(); unsigned max = 0; FormulaVarIterator fvi(&set); @@ -84,9 +84,9 @@ struct Choice::AxiomsIterator ASS(term.isApplication()); _set = term.rhs(); + _headSort = AH::lhsSort(term); _resultSort = SortHelper::getResultSort(term.term()); - //cout << "the result sort is " + _resultSort.toString() << endl; DHSet* ops = env.signature->getChoiceOperators(); DHSet::Iterator opsIt(*ops); @@ -208,7 +208,7 @@ ClauseIterator Choice::generateClauses(Clause* premise) { CALL("Choice::generateClauses"); - // cout << "Choice with " << premise->toString() << endl; + cout << "Choice with " << premise->toString() << endl; //is this correct? auto it1 = premise->getSelectedLiteralIterator(); diff --git a/Inferences/InferenceEngine.cpp b/Inferences/InferenceEngine.cpp index 61a0754bae..9380a491ca 100644 --- a/Inferences/InferenceEngine.cpp +++ b/Inferences/InferenceEngine.cpp @@ -318,7 +318,7 @@ bool ChoiceDefinitionISE::isOfFormXY(Literal* lit, TermList& x){ TermList term = AH::isBool(*lit->nthArgument(0)) ? *lit->nthArgument(1) : *lit->nthArgument(0); - ASS(!term.isLambdaTerm()); + if(term.isLambdaTerm()){ return false; } TermStack args; ApplicativeHelper::getHeadAndArgs(term, x, args); @@ -330,7 +330,7 @@ bool ChoiceDefinitionISE::isOfFormXfX(Literal* lit, TermList x, TermList& f){ TermList term = AH::isBool(*lit->nthArgument(0)) ? *lit->nthArgument(1) : *lit->nthArgument(0); - ASS(!term.isLambdaTerm()); + if(term.isLambdaTerm()){ return false; } TermStack args; TermList head; From 81cec72bb4cdb6fa55d167029d8365fcf3fcdf11 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 1 Jun 2023 16:21:43 +0100 Subject: [PATCH 097/210] bug fixes and removing old files --- Indexing/SubstitutionTree.hpp | 6 +- Inferences/Choice.cpp | 2 - Inferences/CombinatorDemodISE.cpp | 117 ---------- Inferences/CombinatorDemodISE.hpp | 58 ----- Inferences/CombinatorNormalisationISE.cpp | 253 ---------------------- Inferences/CombinatorNormalisationISE.hpp | 67 ------ Kernel/RobSubstitution.hpp | 2 + Saturation/SaturationAlgorithm.cpp | 4 +- 8 files changed, 9 insertions(+), 500 deletions(-) delete mode 100644 Inferences/CombinatorDemodISE.cpp delete mode 100644 Inferences/CombinatorDemodISE.hpp delete mode 100644 Inferences/CombinatorNormalisationISE.cpp delete mode 100644 Inferences/CombinatorNormalisationISE.hpp diff --git a/Indexing/SubstitutionTree.hpp b/Indexing/SubstitutionTree.hpp index 1568cff3f3..0cc1f8b1ab 100644 --- a/Indexing/SubstitutionTree.hpp +++ b/Indexing/SubstitutionTree.hpp @@ -1380,7 +1380,11 @@ class SubstitutionTree // TermList qt = _abstractingUnifier.subs().getSpecialVarTop(specVar); // TODO should this function really be part of algo? auto top = _subst->getSpecialVarTop(specVar); - if(top.var() || top.id() || env.signature->isPlaceholder(*top.functor())) { + if(top.var() || top.id() +#if VHOL + || env.signature->isPlaceholder(*top.functor()) +#endif + ) { return n->allChildren(); } else { Node** match=n->childByTop(top, false); diff --git a/Inferences/Choice.cpp b/Inferences/Choice.cpp index 4ad0f0e0af..97f8654eaa 100644 --- a/Inferences/Choice.cpp +++ b/Inferences/Choice.cpp @@ -207,8 +207,6 @@ struct Choice::SubtermsFn ClauseIterator Choice::generateClauses(Clause* premise) { CALL("Choice::generateClauses"); - - cout << "Choice with " << premise->toString() << endl; //is this correct? auto it1 = premise->getSelectedLiteralIterator(); diff --git a/Inferences/CombinatorDemodISE.cpp b/Inferences/CombinatorDemodISE.cpp deleted file mode 100644 index 8a17337319..0000000000 --- a/Inferences/CombinatorDemodISE.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file CombinatorDemodISE.cpp - * Implements class CombinatorDemodISE. - */ - -#include "Lib/Random.hpp" -#include "Lib/Environment.hpp" -#include "Lib/DArray.hpp" -#include "Lib/SmartPtr.hpp" - -#include "Kernel/Term.hpp" -#include "Kernel/Clause.hpp" -#include "Kernel/ApplicativeHelper.hpp" -#include "Kernel/TermIterators.hpp" -#include "Kernel/Inference.hpp" -#include "Kernel/SKIKBO.hpp" -#include "Kernel/SortHelper.hpp" -#include "Shell/Statistics.hpp" -#include "CombinatorDemodISE.hpp" - -using namespace Lib; -using namespace Kernel; -using namespace Inferences; - -typedef ApplicativeHelper AH; - -Clause* CombinatorDemodISE::simplify(Clause* c) -{ - CALL("CombinatorDemodISE::simplify"); - - Literal* newLit; - LiteralStack litStack; - bool modified = false; - - // cout << "into CombinatorDemodISE " + c->toString() << endl; - - unsigned length = 0; - - - for(unsigned i = 0; i < c->length(); i++){ - Literal* lit = (*c)[i]; - ASS(lit->isEquality()); - TermList t0 = *lit->nthArgument(0); - TermList t1 = *lit->nthArgument(1); - - TermList t0r = headNormalForm(t0); - TermList t1r = headNormalForm(t1); - - TermReducer tr; - t0r = tr.transform(t0r); - t1r = tr.transform(t1r); - - length = length + tr.getReductionLen(); - - if((t0r != t0) || (t1r != t1)){ - modified = true; - newLit = Literal::createEquality(lit->polarity(), TermList(t0r), TermList(t1r), SortHelper::getResultSort(t0.term())); - litStack.push(newLit); - } else { - litStack.push(lit); - } - } - - if(!modified){ - return c; - } - - Inference inf = SimplifyingInference1(InferenceRule::COMBINATOR_DEMOD, c); - inf.increaseReductions(length); - Clause* newC = Clause::fromStack(litStack, inf); - /*if(c->number() == 1620){ - cout << "out of CombinatorDemodISE " + newC->toString() << endl; - }*/ - //if(!newC){ cout << "RETURNING NULL CLAUSE" << endl; } - return newC; -} - -TermList TermReducer::transformFirstOrderSubterm(TermList trm) -{ - CALL("TermReducer::transformFirstOrderSubterm"); - - TermList res = CombinatorDemodISE::headNormalForm(trm); - if(res != trm){ - _reducLen++; - } - return res; -} - -TermList CombinatorDemodISE::headNormalForm(TermList t) -{ - CALL("CombinatorDemodISE::headNormalForm"); - - static TermStack args; - TermList head; - - for(;;){ - AH::getHeadAndArgs(t, head, args); - if(AH::isComb(head) && !AH::isUnderApplied(head, args.size())){ - t = SKIKBO::reduce(args, head); - } else { - break; - } - } - return t; -} - - - diff --git a/Inferences/CombinatorDemodISE.hpp b/Inferences/CombinatorDemodISE.hpp deleted file mode 100644 index 8db599a6d8..0000000000 --- a/Inferences/CombinatorDemodISE.hpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file CombinatorDemodISE.hpp - * Defines class CombinatorDemodISE. - */ - - -#ifndef __CombinatorDemodISE__ -#define __CombinatorDemodISE__ - -#include "Forwards.hpp" -#include "InferenceEngine.hpp" -#include "Kernel/TermTransformer.hpp" - -namespace Inferences { - -class TermReducer : public ApplicativeTermTransformer { -public: - TermReducer() : _reducLen(0) { - recurseIntoReplaced(); - dontTransformSorts(); - } - TermList transformFirstOrderSubterm(TermList trm) override; - - // TODO are we calculating reduction length in the best way? - // should we not be counting individual reductions rather than the number - // of separate head normal forms achieved? - unsigned getReductionLen(){ return _reducLen; } - -private: - unsigned _reducLen; -}; - - -class CombinatorDemodISE -: public ImmediateSimplificationEngine -{ -public: - CLASS_NAME(CombinatorDemodISE); - USE_ALLOCATOR(CombinatorDemodISE); - - static TermList headNormalForm(TermList t); - - CombinatorDemodISE(){} - Clause* simplify(Clause* cl); -}; - -}; - -#endif /* __CombinatorDemodISE__ */ diff --git a/Inferences/CombinatorNormalisationISE.cpp b/Inferences/CombinatorNormalisationISE.cpp deleted file mode 100644 index c489738ca2..0000000000 --- a/Inferences/CombinatorNormalisationISE.cpp +++ /dev/null @@ -1,253 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file CombinatorNormalisationISE.cpp - * Implements class CombinatorNormalisationISE. - */ - -#include "Lib/Random.hpp" -#include "Lib/Environment.hpp" -#include "Lib/DArray.hpp" -#include "Lib/SmartPtr.hpp" - -#include "Kernel/Term.hpp" -#include "Kernel/Clause.hpp" -#include "Kernel/ApplicativeHelper.hpp" -#include "Kernel/TermIterators.hpp" -#include "Kernel/Inference.hpp" -#include "Kernel/SKIKBO.hpp" -#include "Kernel/SortHelper.hpp" -#include "Kernel/Signature.hpp" -#include "Shell/Statistics.hpp" -#include "CombinatorNormalisationISE.hpp" - -using namespace Lib; -using namespace Kernel; -using namespace Inferences; - -typedef ApplicativeHelper AH; - -Clause* CombinatorNormalisationISE::simplify(Clause* c) -{ - CALL("CombinatorNormalisationISE::simplify"); - - Literal* newLit; - LiteralStack litStack; - bool modified = false; - - // cout << "into CombinatorNormalisationISE " + c->toString() << endl; - - for(unsigned i = 0; i < c->length(); i++){ - Literal* lit = (*c)[i]; - ASS(lit->isEquality()); - TermList t0 = *lit->nthArgument(0); - TermList t1 = *lit->nthArgument(1); - - // TermTransformer does not transform at the top level hence call below - TermList t0r = replaceWithSmallerCombinator(t0); - TermList t1r = replaceWithSmallerCombinator(t1); - - CombinatorNormaliser cn; - t0r = cn.transform(t0r); - t1r = cn.transform(t1r); - - if((t0r != t0) || (t1r != t1)){ - modified = true; - newLit = Literal::createEquality(lit->polarity(), TermList(t0r), TermList(t1r), SortHelper::getResultSort(t0.term())); - litStack.push(newLit); - } else { - litStack.push(lit); - } - } - - if(!modified){ - return c; - } - - Clause* newC = Clause::fromStack(litStack, SimplifyingInference1(InferenceRule::COMBINATOR_NORMALISE, c)); - - return newC; -} - -TermList CombinatorNormaliser::transformFirstOrderSubterm(TermList trm) -{ - CALL("CombinatorSimplifier::transformSubterm"); - - return CombinatorNormalisationISE::replaceWithSmallerCombinator(trm); -} - -TermList CombinatorNormalisationISE::replaceWithSmallerCombinator(TermList t) -{ - CALL("CombinatorNormalisationISE::replaceWithSmallerCombinator"); - - static TermStack args; - static TermStack args1; - static TermStack args2; - TermList head; - TermList head1; - TermList head2; - - TermList sort; - if(t.isTerm()){ - sort = SortHelper::getResultSort(t.term()); - } - - //cout << "The original term is " + t.toString() << endl; - - AH::getHeadAndArgs(t, head, args); - if(AH::isComb(head) && (args.size() == 1 || args.size() == 2)){ - Signature::Combinator comb = AH::getComb(head); - switch(comb){ - case Signature::S_COMB: { - if(args.size() == 1){ - TermList arg1 = args[0]; - AH::getHeadAndArgs(arg1, head1, args1); - if(args1.size() == 1 && - AH::isComb(head1) && (AH::getComb(head1) == Signature::C_COMB || - AH::getComb(head1) == Signature::S_COMB) && - AH::isComb(args1[0]) && AH::getComb(args1[0]) == Signature::K_COMB){ - //S (C K) = I /\ S (S K) = I - return TermList(Term::create1(env.signature->getCombinator(Signature::I_COMB), AH::getNthArg(sort,1))); - } - if(args1.size() == 2 && - AH::isComb(head1) && AH::getComb(head1) == Signature::B_COMB && - AH::isComb(args1[1]) && AH::getComb(args1[1]) == Signature::K_COMB){ - TermList s1 = AH::getNthArg(SortHelper::getResultSort(head1.term()), 2); - TermList s2 = AH::getNthArg(sort, 1); - return createKTerm(s1, s2, args1[0]); - } - } - if(args.size() == 2){ - TermList arg1 = args[1]; - TermList arg2 = args[0]; - if(AH::isComb(arg1) && AH::getComb(arg1) == Signature::K_COMB){ - return TermList(Term::create1(env.signature->getCombinator(Signature::I_COMB), AH::getNthArg(sort,1))); - } - AH::getHeadAndArgs(arg1, head1, args1); - if(args1.size() == 2 && - AH::isComb(head1) && AH::getComb(head1) == Signature::B_COMB && - AH::isComb(args1[1]) && AH::getComb(args1[1]) == Signature::K_COMB){ - return args1[0]; - } - AH::getHeadAndArgs(arg2, head2, args2); - bool arg2isKY = args2.size() == 1 && AH::isComb(head2) && AH::getComb(head2) == Signature::K_COMB; - bool arg1isKX = args1.size() == 1 && AH::isComb(head1) && AH::getComb(head1) == Signature::K_COMB; - if(arg1isKX){ - if(arg2isKY){ - TermList xSort = AH::getNthArg(SortHelper::getResultSort(head1.term()), 1); - TermList xy = AH::createAppTerm(xSort, args1[0], args2[0]); - TermList s1 = SortHelper::getResultSort(xy.term()); - TermList s2 = AH::getNthArg(sort, 1); - return createKTerm(s1, s2, xy); - } - if(!args2.size() && AH::isComb(head2) && AH::getComb(head2) == Signature::I_COMB){ - return args1[0]; - } - TermList arg1sort = AH::getNthArg(SortHelper::getResultSort(head1.term()),1); - TermList arg2sort = AH::getNthArg(SortHelper::getResultSort(head.term()),2); - return createSCorBTerm(args1[0], arg1sort, args[0], arg2sort, Signature::B_COMB); - } - if(arg2isKY){ - TermList arg1sort = AH::getNthArg(SortHelper::getResultSort(head.term()),1); - TermList arg2sort = AH::getNthArg(SortHelper::getResultSort(head2.term()),1); - return createSCorBTerm(args[1], arg1sort, args2[0], arg2sort, Signature::C_COMB); - } - } - } - break; - case Signature::B_COMB : { - if(args.size() == 1){ - if(AH::isComb(args[0]) && AH::getComb(args[0]) == Signature::I_COMB){ - return TermList(Term::create1(env.signature->getCombinator(Signature::I_COMB), AH::getNthArg(sort,1))); - } - } - if(args.size() == 2){ - if(AH::isComb(args[0]) && AH::getComb(args[0]) == Signature::I_COMB){ - return args[1]; - } - AH::getHeadAndArgs(args[0], head2, args2); - bool arg2isKY = args2.size() == 1 && AH::isComb(head2) && AH::getComb(head2) == Signature::K_COMB; - if(arg2isKY){ - TermList xSort = AH::getNthArg(SortHelper::getResultSort(head.term()), 1); - TermList xy = AH::createAppTerm(xSort, args[1], args2[0]); - TermList s1 = SortHelper::getResultSort(xy.term()); - TermList s2 = AH::getNthArg(sort, 1); - return createKTerm(s1, s2, xy); - } - } - } - break; - case Signature::C_COMB : { - if(args.size() == 1){ - TermList arg1 = args[0]; - AH::getHeadAndArgs(arg1, head1, args1); - if(args1.size() == 1 && - AH::isComb(head1) && AH::getComb(head1) == Signature::C_COMB){ - return args1[0]; //C (C t) = t - } - } - if(args.size() == 2){ - AH::getHeadAndArgs(args[1], head1, args1); - bool arg1isKX = args1.size() == 1 && AH::isComb(head1) && AH::getComb(head1) == Signature::K_COMB; - if(arg1isKX){ - TermList xSort = AH::getNthArg(SortHelper::getResultSort(head1.term()), 1); - TermList xy = AH::createAppTerm(xSort, args1[0], args[0]); - TermList s1 = SortHelper::getResultSort(xy.term()); - TermList s2 = AH::getNthArg(sort, 1); - return createKTerm(s1, s2, xy); - } - } - } - break; - default: {} - - } - } - - return t; -} - -TermList CombinatorNormalisationISE::createKTerm(TermList s1, TermList s2, TermList arg1) -{ - CALL("CombinatorNormalisationISE::createKTerm"); - - unsigned kcomb = env.signature->getCombinator(Signature::K_COMB); - TermList res = TermList(Term::create2(kcomb, s1, s2)); - res = AH::createAppTerm(SortHelper::getResultSort(res.term()), res, arg1); - return res; -} - -TermList CombinatorNormalisationISE::createSCorBTerm(TermList arg1, TermList arg1sort, - TermList arg2, TermList arg2sort, Signature::Combinator comb) -{ - CALL("CombinatorNormalisationISE::createSCorBTerm"); - - TermList s1, s2, s3; - unsigned cb = env.signature->getCombinator(comb); - - if(comb == Signature::S_COMB || comb == Signature::C_COMB){ - //cout << "CCOMB arg1 " + arg1.toString() + " of sort " + arg1sort.toString() << endl; - s1 = AH::getNthArg(arg1sort, 1); - s2 = AH::getNthArg(arg1sort, 2); - s3 = AH::getResultApplieadToNArgs(arg1sort, 2); - } else { - //cout << "BCOMB arg1 " + arg1.toString() + " of sort " + arg1sort.toString() << endl; - s1 = AH::getNthArg(arg2sort, 1); - s2 = AH::getNthArg(arg1sort, 1); - s3 = AH::getResultApplieadToNArgs(arg1sort, 1); - } - - TermList args[] = {s1, s2, s3}; - TermList c = TermList(Term::create(cb, 3, args)); - return AH::createAppTerm3(SortHelper::getResultSort(c.term()), c, arg1, arg2); -} - - - diff --git a/Inferences/CombinatorNormalisationISE.hpp b/Inferences/CombinatorNormalisationISE.hpp deleted file mode 100644 index b36460f620..0000000000 --- a/Inferences/CombinatorNormalisationISE.hpp +++ /dev/null @@ -1,67 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file CombinatorNormalisationISE.hpp - * Defines class CombinatorNormalisationISE. - */ - - -#ifndef __CombinatorNormalisationISE__ -#define __CombinatorNormalisationISE__ - -#include "Kernel/Signature.hpp" -#include "Kernel/TermTransformer.hpp" -#include "Forwards.hpp" -#include "InferenceEngine.hpp" - -//simplification engine for normalising combinators. -//uses the following equations: - -// S(KX)(KY) -> K(XY) -// S(KX)I -> X -// S(KX)Y -> BXY -// SKX -> I -// S(BKX) -> KX -// S(BKX)Y -> X -// BX(KY) -> KXY -// BXI -> X -// BI -> I -// C(KX)Y -> K(XY) - -namespace Inferences { - -class CombinatorNormaliser : public ApplicativeTermTransformer { -public: - CombinatorNormaliser() { - recurseIntoReplaced(); - dontTransformSorts(); - } - TermList transformFirstOrderSubterm(TermList trm) override; -}; - -class CombinatorNormalisationISE -: public ImmediateSimplificationEngine -{ -public: - CLASS_NAME(CombinatorNormalisationISE); - USE_ALLOCATOR(CombinatorNormalisationISE); - - static TermList replaceWithSmallerCombinator(TermList t); - - CombinatorNormalisationISE(){} - Clause* simplify(Clause* cl); -private: - static TermList createKTerm(TermList s1, TermList s2, TermList arg1); - static TermList createSCorBTerm(TermList arg1, TermList arg1sort, TermList arg2, TermList arg2sort, Signature::Combinator comb); -}; - -}; - -#endif /* __CombinatorNormalisationISE__ */ diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 01d2e4f840..ac60b95633 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -78,7 +78,9 @@ struct TermSpec { // for backwards compatibility bool isOrdinaryVar() const { return trm.isOrdinaryVar(); } bool isTerm() const { return trm.isTerm(); } bool isOutputVar() const { return isVar() && index == UNBOUND_INDEX; } +#if VHOL bool containsLooseIndex() const { return trm.containsLooseIndex(); } +#endif bool onBank() const { return true; } // always on a bank unsigned var() const { ASS(trm.isVar()); return trm.var(); } const Term* term() const { ASS(isTerm()); return trm.term(); } diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 0741f0cfba..dcf1afe4ef 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1841,7 +1841,7 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons } #if VHOL - if(env.options->choiceReasoning() && prb.higherOrder()){ + if(prb.higherOrder() && env.options->choiceReasoning()){ res->addFront(new ChoiceDefinitionISE()); } @@ -1859,7 +1859,7 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons res->addFrontMany(new CasesSimp()); } - if(env.options->newTautologyDel()){ + if(prb.higherOrder() && env.options->newTautologyDel()){ res->addFront(new TautologyDeletionISE2()); } From ebf284539d7a18d5c0c9bd0bacb9593060cec55d Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 2 Jun 2023 16:40:02 +0100 Subject: [PATCH 098/210] adding positive extensionality inference --- Saturation/SaturationAlgorithm.cpp | 19 ++++++++++--------- Shell/Options.cpp | 12 ++++++++++++ Shell/Options.hpp | 2 ++ 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index dcf1afe4ef..758c55dda5 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -86,6 +86,7 @@ //#include "Inferences/Injectivity.hpp" #include "Inferences/BetaEtaISE.hpp" #include "Inferences/FlexFlexSimplify.hpp" +#include "Inferences/PositiveExt.hpp" #endif #include "Inferences/URResolution.hpp" @@ -1584,11 +1585,15 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const // only add when we are not carrying out higher-order unification gie->addFront(new ImitateProject()); } - } - - if(prb.hasFOOL() && - prb.higherOrder() && env.options->booleanEqTrick()){ - gie->addFront(new BoolEqToDiseq()); + if(env.options->positiveExtensionality()){ + gie->addFront(new PositiveExt()); + } + if(prb.hasFOOL() && env.options->booleanEqTrick()){ + gie->addFront(new BoolEqToDiseq()); + } + if(env.options->choiceReasoning()){ + gie->addFront(new Choice()); + } } if(opt.complexBooleanReasoning() && prb.hasBoolVar() && @@ -1597,10 +1602,6 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(new ElimLeibniz()); } - if(env.options->choiceReasoning()){ - gie->addFront(new Choice()); - } - if (opt.cases() && prb.hasFOOL() && !opt.casesSimp()) { gie->addFront(new Cases()); } diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 9a8bf14fb1..aa29435d72 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1899,6 +1899,18 @@ void Options::init() // potentially could be useful for FOOL, so am not adding the HOL constraint _newTautologyDel.tag(OptionTag::HIGHER_ORDER); + _positiveExt = BoolOptionValue("pos_ext","pe",false); + _positiveExt.description= + "Enables the following inference\n" + "C \\/ t X = s X \n" + "----------------\n" + " C \\/ t = s \n" + "where X doesn't occur in t,s or C"; + _lookup.insert(&_positiveExt); + _positiveExt.addProblemConstraint(hasHigherOrder()); + _positiveExt.onlyUsefulWith(_functionExtensionality.is(notEqual(FunctionExtensionality::AXIOM))); + _positiveExt.tag(OptionTag::HIGHER_ORDER); + _lambdaFreeHol = BoolOptionValue("lam_free_hol","lfh",false); _lambdaFreeHol.description= "Reason about lambda-free hol. See paper by Vukmirovic et al."; diff --git a/Shell/Options.hpp b/Shell/Options.hpp index d609164936..2973aaaa33 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2427,6 +2427,7 @@ bool _hard; bool casesSimp() const { return _casesSimp.actualValue; } bool cases() const { return _cases.actualValue; } bool newTautologyDel() const { return _newTautologyDel.actualValue; } + bool positiveExtensionality() const { return _positiveExt.actualValue; } bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } // TODO doesn't do anyhting currently // bool complexVarCondition() const { return _complexVarCondition.actualValue; } @@ -2873,6 +2874,7 @@ bool _hard; BoolOptionValue _casesSimp; BoolOptionValue _cases; BoolOptionValue _newTautologyDel; + BoolOptionValue _positiveExt; BoolOptionValue _lambdaFreeHol; // BoolOptionValue _complexVarCondition; ChoiceOptionValue _holPrinting; From f43590fa77b010ea8e13e0880092a165eff8fd7b Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 2 Jun 2023 17:22:30 +0100 Subject: [PATCH 099/210] fixing pos ext inference --- Inferences/PositiveExt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inferences/PositiveExt.cpp b/Inferences/PositiveExt.cpp index b5f7c979c8..0a527192ec 100644 --- a/Inferences/PositiveExt.cpp +++ b/Inferences/PositiveExt.cpp @@ -86,7 +86,7 @@ struct PositiveExt::ResultFn } if(!occursInC){ - TermList sort = *lhs.term()->nthArgument(0); + TermList sort = ApplicativeHelper::lhsSort(lhs); // f = g Literal* newLit = Literal::createEquality(true, left1, left2, sort); From 1f6f525e37e54c5bd9d69c1940b47a356f42b8c6 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Mon, 5 Jun 2023 11:29:18 +0100 Subject: [PATCH 100/210] bug fixing and adding enw inference, bool instantiation (not well tested yet) --- CMakeLists.txt | 2 + Indexing/IndexManager.cpp | 17 + Indexing/IndexManager.hpp | 2 + Indexing/TermIndex.cpp | 100 +++--- Indexing/TermIndex.hpp | 29 ++ Inferences/BoolInstantiation.cpp | 160 ++++++++++ Inferences/BoolInstantiation.hpp | 54 ++++ Inferences/CNFOnTheFly.cpp | 440 +++++--------------------- Inferences/CNFOnTheFly.hpp | 4 + Inferences/PrimitiveInstantiation.cpp | 4 +- Kernel/ApplicativeHelper.cpp | 62 ++++ Kernel/ApplicativeHelper.hpp | 3 + Kernel/HOLUnification.cpp | 3 +- Kernel/Inference.cpp | 2 + Kernel/Inference.hpp | 1 + Kernel/Term.cpp | 5 +- Kernel/TermTransformer.cpp | 26 +- Kernel/TermTransformer.hpp | 22 +- Kernel/TypedTermList.hpp | 4 +- Saturation/SaturationAlgorithm.cpp | 12 +- Shell/FOOLElimination.cpp | 10 +- Shell/Options.cpp | 18 +- Shell/Options.hpp | 11 +- 23 files changed, 544 insertions(+), 447 deletions(-) create mode 100644 Inferences/BoolInstantiation.cpp create mode 100644 Inferences/BoolInstantiation.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 85106b488c..b4d4b646dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -328,6 +328,8 @@ set(VAMPIRE_KERNEL_SOURCES Inferences/BoolEqToDiseq.cpp Inferences/PrimitiveInstantiation.cpp Inferences/PrimitiveInstantiation.hpp + Inferences/BoolInstantiation.cpp + Inferences/BoolInstantiation.hpp Inferences/ElimLeibniz.cpp Inferences/ElimLeibniz.hpp Inferences/Choice.cpp diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index de4a04b438..4811f2bcf7 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -179,6 +179,23 @@ Index* IndexManager::create(IndexType t) isGenerating = false; break; } + + case BOOL_INST_INSTANTIATION_INDEX: { + auto tis = new TermSubstitutionTree(); + tis->useExtra(); + res = new BoolInstInstantiationIndex(tis); + isGenerating = true; + break; + } + + case BOOL_INST_FORMULA_INDEX: { + auto tis = new TermSubstitutionTree(); + tis->useExtra(); + res = new BoolInstFormulaIndex(tis); + isGenerating = true; + break; + } + #endif case ACYCLICITY_INDEX: diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index 1ef9202910..ca0f74d1a9 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -59,6 +59,8 @@ enum IndexType { #if VHOL SKOLEMISING_FORMULA_INDEX, + BOOL_INST_INSTANTIATION_INDEX, + BOOL_INST_FORMULA_INDEX, #endif UNIT_INT_COMPARISON_INDEX, diff --git a/Indexing/TermIndex.cpp b/Indexing/TermIndex.cpp index 9ca4c3ea51..7ea6e522d5 100644 --- a/Indexing/TermIndex.cpp +++ b/Indexing/TermIndex.cpp @@ -226,83 +226,59 @@ void SkolemisingFormulaIndex::insertFormula(TermList formula, TermList skolem) _is->insert(TypedTermList(formula.term()), skolem); } -#endif +void BoolInstFormulaIndex::insertFormula(TermList sort, TermList formula, Literal* lit, Clause* c) +{ + CALL("BoolInstFormulaIndex::insertFormula"); + _is->insert(TypedTermList(sort, AtomicSort::superSort()), formula, lit, c); +} -/*void HeuristicInstantiationIndex::insertInstantiation(TermList sort, TermList instantiation) +void BoolInstInstantiationIndex::insertInstantiation(TermList sort, TermList instantiation) { - CALL("HeuristicInstantiationIndex::insertInstantiation"); - _is->insert(sort, instantiation); + CALL("BoolInstInstantiationIndex::insertInstantiation"); + _is->insert(TypedTermList(sort, AtomicSort::superSort()), instantiation); } -void HeuristicInstantiationIndex::handleClause(Clause* c, bool adding) +void BoolInstInstantiationIndex::handleClause(Clause* c, bool adding) { - CALL("HeuristicInstantiationIndex::handleClause"); + CALL("BoolInstInstantiationIndex::handleClause"); - typedef ApplicativeHelper AH; + // TODO only consider derivations shorter than some length??? + // we never remove instantiations, only add new ones + if(!c->derivedFromGoal() || !adding) return; - TermList freshVar(c->maxVar() + 1, false); - VList* boundVar = new VList(freshVar.var()); + typedef ApplicativeHelper AH; for (unsigned i=0; ilength(); i++) { Literal* lit=(*c)[i]; - TermList leftHead, rightHead, lhSort, rhSort; - static TermStack leftArgs; - static TermStack rightArgs; - AH::getHeadSortAndArgs(*lit->nthArgument(0), leftHead, lhSort, leftArgs); - AH::getHeadSortAndArgs(*lit->nthArgument(1), rightHead, rhSort, rightArgs); - if(leftHead.isTerm() && AH::getComb(leftHead) == Signature::NOT_COMB && - AH::getProxy(leftHead) == Signature::NOT_PROXY && - leftHead == rightHead && - leftArgs.size() == rightArgs.size() && - leftArgs.size()) - { - TermList sort, boundVarSort, combTerm; - for(i = 0; i < leftArgs.size(); i++){ - boundVarSort = AH::getNthArg(lhSort, leftArgs.size() - i); - SList* boundVarSortList = new SList(boundVarSort); - - Literal* newLit = EqHelper::replace(lit, leftArgs[i], freshVar); - newLit->setPolarity(!newLit->polarity()); - Term* eqForm = Term::createFormula(new Kernel::AtomicFormula(newLit)); - Term* lambdaTerm = Term::createLambda(TermList(eqForm), boundVar, boundVarSortList, AtomicSort::boolSort()); - combTerm = LambdaElimination().elimLambda(lambdaTerm); - if(!_insertedInstantiations.contains(combTerm)){ - cout << "lhs is " + lit->nthArgument(0)->toString() << endl; - cout << "arg " + leftArgs[i].toString() << endl; - cout << "inserting " + lambdaTerm->toString() << endl; - cout << "inserting " + combTerm.toString() << endl; - _insertedInstantiations.insert(combTerm); - insertInstantiation(lambdaTerm->getSpecialData()->getSort(), combTerm); - } - //may be harmful performance wise, but otherwise these - //leak - //eqForm->destroy(); - //lambdaTerm->destroy(); - - newLit = EqHelper::replace(lit, rightArgs[i], freshVar); - newLit->setPolarity(!newLit->polarity()); - eqForm = Term::createFormula(new Kernel::AtomicFormula(newLit)); - lambdaTerm = Term::createLambda(TermList(eqForm), boundVar, boundVarSortList, AtomicSort::boolSort()); - combTerm = LambdaElimination().elimLambda(lambdaTerm); - if(!_insertedInstantiations.contains(combTerm)){ - cout << "rhs is " + lit->nthArgument(1)->toString() << endl; - cout << "arg " + rightArgs[i].toString() << endl; - cout << "inserting " + lambdaTerm->toString() << endl; - cout << "inserting " + combTerm.toString() << endl; - _insertedInstantiations.insert(combTerm); - insertInstantiation(lambdaTerm->getSpecialData()->getSort(), combTerm); - } - //eqForm->destroy(); - //lambdaTerm->destroy(); + TermStack abstractionTerms; + AH::getAbstractionTerms(lit, abstractionTerms); + while(!abstractionTerms.isEmpty()){ + TermList inst = abstractionTerms.pop(); + if(!_insertedInstantiations.contains(inst)){ + _insertedInstantiations.insert(inst); + insertInstantiation(SortHelper::getResultSort(inst.term()),inst); + } + } - SList::destroy(boundVarSortList); + if(env.options->booleanInstantiation() == Options::BoolInstantiation::ABS_AND_SUBTERM){ + NonVariableNonTypeIterator it(lit); + while(it.hasNext()){ + Term* term = it.next(); + TermList sort = SortHelper::getResultSort(term); + TermList t = TermList(term); + // t : sigma -> o for some sigma + if(!t.containsLooseIndex() && sort.isArrowSort() && sort.result().isBoolSort()){ + if(!_insertedInstantiations.contains(t)){ + _insertedInstantiations.insert(t); + insertInstantiation(sort,t); + } + } } } } +} - VList::destroy(boundVar); -}*/ - +#endif } // namespace Indexing diff --git a/Indexing/TermIndex.hpp b/Indexing/TermIndex.hpp index 9f61112daa..7fe9e9b7a2 100644 --- a/Indexing/TermIndex.hpp +++ b/Indexing/TermIndex.hpp @@ -180,6 +180,35 @@ class SkolemisingFormulaIndex {} void insertFormula(TermList formula, TermList skolem); }; + +class BoolInstFormulaIndex +: public TermIndex +{ +public: + CLASS_NAME(BoolInstFormulaIndex); + USE_ALLOCATOR(BoolInstFormulaIndex); + + BoolInstFormulaIndex(TermIndexingStructure* is) : TermIndex(is) + {} + void insertFormula(TermList sort, TermList formula, Literal* lit, Clause* c); +}; + +class BoolInstInstantiationIndex +: public TermIndex +{ +public: + CLASS_NAME(BoolInstInstantiationIndex); + USE_ALLOCATOR(BoolInstInstantiationIndex); + + BoolInstInstantiationIndex(TermIndexingStructure* is) : TermIndex(is) + {} +protected: + void insertInstantiation(TermList sort, TermList instantiation); + void handleClause(Clause* c, bool adding); +private: + Set _insertedInstantiations; +}; + #endif /*class HeuristicInstantiationIndex diff --git a/Inferences/BoolInstantiation.cpp b/Inferences/BoolInstantiation.cpp new file mode 100644 index 0000000000..7f4bc3b37b --- /dev/null +++ b/Inferences/BoolInstantiation.cpp @@ -0,0 +1,160 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file BoolInstantiation.cpp + * Implements class BoolInstantiation. + */ + +#if VHOL + +#include "Debug/RuntimeStatistics.hpp" +#include "Saturation/SaturationAlgorithm.hpp" + +#include "Kernel/OperatorType.hpp" +#include "Kernel/SortHelper.hpp" +#include "Kernel/Signature.hpp" +#include "Kernel/Inference.hpp" +#include "Kernel/Substitution.hpp" +#include "Kernel/ApplicativeHelper.hpp" +#include "Kernel/TermIterators.hpp" + +#include "Lib/Environment.hpp" +#include "Lib/Metaiterators.hpp" +#include "Lib/PairUtils.hpp" +#include "Lib/VirtualIterator.hpp" + +#include "BoolInstantiation.hpp" + +#if VDEBUG +#include +using namespace std; +#endif + +namespace Inferences +{ + +using namespace Lib; +using namespace Kernel; +using namespace Indexing; +using namespace Saturation; + + +void BoolInstantiation::attach(SaturationAlgorithm* salg) +{ + CALL("BoolInstantiation::attach"); + + GeneratingInferenceEngine::attach(salg); + _boolInstFormIndex=static_cast ( + _salg->getIndexManager()->request(BOOL_INST_FORMULA_INDEX) ); +} + +void BoolInstantiation::detach() +{ + CALL("BoolInstantiation::detach"); + + _boolInstFormIndex = 0; + cout << "RELEASING" << endl; + _salg->getIndexManager()->release(BOOL_INST_FORMULA_INDEX); + GeneratingInferenceEngine::detach(); +} + +ClauseIterator BoolInstantiation::generateClauses(Clause* premise) +{ + CALL("BoolInstantiation::generateClauses"); + + typedef ApplicativeHelper AH; + + if(!premise->derivedFromGoal()) + { return ClauseIterator::getEmpty(); } + + static ClauseStack resultStack; + resultStack.reset(); + + for (unsigned i=0; ilength(); i++) { + Literal* lit=(*premise)[i]; + + TermStack abstractionTerms; + TermStack instantiations; + AH::getAbstractionTerms(lit, abstractionTerms); + while(!abstractionTerms.isEmpty()){ + TermList inst = abstractionTerms.pop(); + if(!_insertedInstantiations.contains(inst)){ + _insertedInstantiations.insert(inst); + instantiations.push(inst); + } + } + + if(env.options->booleanInstantiation() == Options::BoolInstantiation::ABS_AND_SUBTERM){ + NonVariableNonTypeIterator it(lit); + while(it.hasNext()){ + Term* term = it.next(); + TermList sort = SortHelper::getResultSort(term); + TermList t = TermList(term); + // t : sigma -> o for some sigma + if(!t.containsLooseIndex() && sort.isArrowSort() && sort.result().isBoolSort()){ + if(!_insertedInstantiations.contains(t)){ + _insertedInstantiations.insert(t); + instantiations.push(t); + } + } + } + } + + + while(!instantiations.isEmpty()){ + TermList inst = instantiations.pop(); + TermList sort = SortHelper::getResultSort(inst.term()); + auto it = _boolInstFormIndex->getUnifications(TypedTermList(sort, AtomicSort::superSort()), true); + while(it.hasNext()){ + TermQueryResult tqr = it.next(); + TermList form = tqr.unifier->apply(tqr.term, RESULT_BANK); + TermList instS = tqr.unifier->apply(inst, QUERY_BANK); + + Literal* l = tqr.literal; + TermList lhs = *lit->nthArgument(0); + TermList rhs = *lit->nthArgument(1); + TermList boolVal = AH::isBool(lhs) ? lhs : rhs; + bool positive = AH::isTrue(boolVal) == lit->polarity(); + + TermList newLhs = AH::app(form, instS); + TermList newRhs = positive ? AH::top() : AH::bottom(); + + Literal* newLit = Literal::createEquality(true, newLhs, newRhs, AtomicSort::boolSort()); + Clause* c = tqr.clause; + unsigned clen = c->length(); + + + Clause* res = new(clen) Clause(clen, GeneratingInference1(InferenceRule::BOOL_INSTANTIATION, c)); + (*res)[0] = newLit; + unsigned next = 0; + for(unsigned i=0;iapply(curr, RESULT_BANK); + (*res)[next++] = currAfter; + } + } + resultStack.push(res); + } + } + + + + } + + + return pvi(getUniquePersistentIterator(ClauseStack::Iterator(resultStack))); + + +} + +} + +#endif \ No newline at end of file diff --git a/Inferences/BoolInstantiation.hpp b/Inferences/BoolInstantiation.hpp new file mode 100644 index 0000000000..276b6400b0 --- /dev/null +++ b/Inferences/BoolInstantiation.hpp @@ -0,0 +1,54 @@ +/* + * This file is part of the source code of the software program + * Vampire. It is protected by applicable + * copyright laws. + * + * This source code is distributed under the licence found here + * https://vprover.github.io/license.html + * and in the source directory + */ +/** + * @file BoolInstantiation.hpp + * Defines class BoolInstantiation. + */ + + +#ifndef __BoolInstantiation__ +#define __BoolInstantiation__ + +#if VHOL + +#include "Forwards.hpp" +#include "Indexing/TermIndex.hpp" + +#include "InferenceEngine.hpp" + +namespace Inferences { + +using namespace Kernel; +using namespace Indexing; +using namespace Saturation; + +class BoolInstantiation +: public GeneratingInferenceEngine +{ +public: + CLASS_NAME(BoolInstantiation); + USE_ALLOCATOR(BoolInstantiation); + + ClauseIterator generateClauses(Clause* premise) override; + + void attach(SaturationAlgorithm* salg) override; + void detach() override; + +private: + Set _insertedInstantiations; + BoolInstFormulaIndex* _boolInstFormIndex; +}; + + +}; + +#endif + +#endif /* __BoolInstantiation__ */ diff --git a/Inferences/CNFOnTheFly.cpp b/Inferences/CNFOnTheFly.cpp index f6714fa42f..a16d1497c1 100644 --- a/Inferences/CNFOnTheFly.cpp +++ b/Inferences/CNFOnTheFly.cpp @@ -41,371 +41,17 @@ static Clause* replaceLits(Clause *c, Literal *a, Literal *b, InferenceRule r, b static TermList sigmaRemoval(TermList sigmaTerm, TermList expsrt); static TermList piRemoval(TermList piTerm, Clause* clause, TermList expsrt); static InferenceRule convert(Signature::Proxy cnst); -static ClauseIterator produceClauses(Clause* c, bool generating, SkolemisingFormulaIndex* index = 0); +static ClauseIterator produceClauses(Clause* c, bool generating, + SkolemisingFormulaIndex* index = 0, + BoolInstFormulaIndex* boolInstFormIndex = 0, + BoolInstInstantiationIndex* boolInstInstIndex = 0); typedef ApplicativeHelper AH; -/*Clause* NotProxyISE::simplify(Clause* c){ - CALL("NotProxyISE::simplify"); - - TermList boolSort = AtomicSort::boolSort(); - TermList troo = TermList(Term::foolTrue()); - TermList fols = TermList(Term::foolFalse()); - - static TermStack args; - TermList head; - - for(int i = c->length()-1; i>=0; i--){ - Literal* lit = (*c)[i]; - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - TermList term; - TermList boolVal; - if(AH::isBool(lhs)){ - boolVal = lhs; - term = rhs; - } else if(AH::isBool(rhs)){ - boolVal = rhs; - term = lhs; - } else { - continue; - } - - bool positive = AH::isTrue(boolVal) == lit->polarity(); - - AH::getHeadAndArgs(term, head, args); - Signature::Proxy prox = AH::getProxy(head); - - if((prox == Signature::NOT) && (args.size())){ - TermList rhs = positive ? fols : troo; - Literal* l1 = Literal::createEquality(true, args[0], rhs, boolSort); - Inference *inf = new Inference1(convert(prox), c); - Clause* res = replaceLits(c, lit, l1, inf); - res->setAge(c->age()); - return res; - } - } - - return c; -} - -Clause* EqualsProxyISE::simplify(Clause* c){ - CALL("EqualsProxyISE::simplify"); - - TermList boolSort = AtomicSort::boolSort(); - TermList troo = TermList(Term::foolTrue()); - TermList fols = TermList(Term::foolFalse()); - - static TermStack args; - TermList head; - - for(int i = c->length()-1; i >=0; i--){ - Literal* lit = (*c)[i]; - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - TermList term; - TermList boolVal; - if(AH::isBool(lhs)){ - boolVal = lhs; - term = rhs; - } else if(AH::isBool(rhs)){ - boolVal = rhs; - term = lhs; - } else { - continue; - } - - bool positive = AH::isTrue(boolVal) == lit->polarity(); - - AH::getHeadAndArgs(term, head, args); - Signature::Proxy prox = AH::getProxy(head); - - if((prox == Signature::EQUALS) && (args.size() == 2)){ - TermList srt = *SortHelper::getResultSort(head.term()).term()->nthArgument(0); - Literal* l1 = Literal::createEquality(positive, args[0], args[1], srt); - Inference *inf = new Inference1(convert(prox), c); - Clause* res = replaceLits(c, lit, l1, inf); - res->setAge(c->age()); - return res; - } - } - - return c; -} - -Clause* PiSigmaProxyISE::simplify(Clause* c){ - CALL("PiSigmaProxyISE::simplify"); - - TermList boolSort = AtomicSort::boolSort(); - TermList troo = TermList(Term::foolTrue()); - TermList fols = TermList(Term::foolFalse()); - - static TermStack args; - TermList head; - - for(int i = c->length() - 1 ; i >= 0; i--){ - Literal* lit = (*c)[i]; - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - TermList term; - TermList boolVal; - if(AH::isBool(lhs)){ - boolVal = lhs; - term = rhs; - } else if(AH::isBool(rhs)){ - boolVal = rhs; - term = lhs; - } else { - continue; - } - - bool positive = AH::isTrue(boolVal) == lit->polarity(); - - AH::getHeadAndArgs(term, head, args); - Signature::Proxy prox = AH::getProxy(head); - - if((prox == Signature::PI || prox == Signature::SIGMA ) && (args.size())){ - TermList rhs = positive ? troo : fols; - TermList srt = *SortHelper::getResultSort(head.term()).term()->nthArgument(0); - TermList newTerm; - Inference *inf; - if((prox == Signature::PI && positive) || - (prox == Signature::SIGMA && !positive)){ - inf = new Inference1(convert(Signature::PI), c); - newTerm = piRemoval(args[0], c, srt); - } else { - TermList skolemTerm = sigmaRemoval(args[0], srt); - newTerm = AH::createAppTerm(srt, args[0], skolemTerm); - inf = new Inference1(convert(Signature::SIGMA), c); - } - Literal* l1 = Literal::createEquality(true, newTerm, rhs, boolSort); - Clause* res = replaceLits(c, lit, l1, inf); - res->setAge(c->age()); - return res; - } - } - - return c; -} - -Clause* OrImpAndProxyISE::simplify(Clause* c){ - CALL("rImpAndProxyISE::simplify"); - - TermList boolSort = AtomicSort::boolSort(); - TermList troo = TermList(Term::foolTrue()); - TermList fols = TermList(Term::foolFalse()); - - static TermStack args; - TermList head; - - for(int i = c->length() -1; i >=0; i--){ - Literal* lit = (*c)[i]; - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - TermList term; - TermList boolVal; - if(AH::isBool(lhs)){ - boolVal = lhs; - term = rhs; - } else if(AH::isBool(rhs)){ - boolVal = rhs; - term = lhs; - } else { - continue; - } - - bool positive = AH::isTrue(boolVal) == lit->polarity(); - - AH::getHeadAndArgs(term, head, args); - Signature::Proxy prox = AH::getProxy(head); - - if((prox == Signature::OR) && (args.size() == 2)){ - if(positive){ - Literal* l1 = Literal::createEquality(true, args[1], troo, boolSort); - Literal* l2 = Literal::createEquality(true, args[0], troo, boolSort); - Inference *inf = new Inference1(convert(prox), c); - Clause* res = replaceLits(c, lit, l1, inf, l2); - res->setAge(c->age()); - return res; - } - } - - if((prox == Signature::AND) && (args.size() == 2)){ - if(!positive){ - Literal* l1 = Literal::createEquality(true, args[1], fols, boolSort); - Literal* l2 = Literal::createEquality(true, args[0], fols, boolSort); - Inference *inf = new Inference1(convert(prox), c); - Clause* res = replaceLits(c, lit, l1, inf, l2); - res->setAge(c->age()); - return res; - } - } - - if((prox == Signature::IMP) && (args.size() == 2)){ - if(positive){ - Literal* l1 = Literal::createEquality(true, args[1], fols, boolSort); - Literal* l2 = Literal::createEquality(true, args[0], troo, boolSort); - Inference *inf = new Inference1(convert(prox), c); - Clause* res = replaceLits(c, lit, l1, inf, l2); - res->setAge(c->age()); - return res; - } - } - } - - return c; -} - -ClauseIterator ProxyISE::simplifyMany(Clause* c){ - CALL("ProxyISE::simplifyMany"); - - TermList troo = TermList(Term::foolTrue()); - TermList fols = TermList(Term::foolFalse()); - TermList boolSort = AtomicSort::boolSort(); - - static TermStack args; - TermList head; - - ClauseStack resultStack; - unsigned clength = c->length(); - - for(unsigned i = 0; i < clength; i++){ - Literal* lit = (*c)[i]; - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - TermList term; - TermList boolVal; - if(AH::isBool(lhs)){ - boolVal = lhs; - term = rhs; - } else if(AH::isBool(rhs)){ - boolVal = rhs; - term = lhs; - } else if(SortHelper::getEqualityArgumentSort(lit) == boolSort) { - //equality or diseqality between boolean terms - Literal* lhsTroo = Literal::createEquality(true, lhs, troo, boolSort); - Literal* lhsFols = Literal::createEquality(true, lhs, fols, boolSort); - Literal* rhsTroo = Literal::createEquality(true, rhs, troo, boolSort); - Literal* rhsFols = Literal::createEquality(true, rhs, fols, boolSort); - if(lit->polarity()){ - Inference* inf1 = new Inference1(convert(Signature::IFF), c); - Inference* inf2 = new Inference1(convert(Signature::IFF), c); - Clause* res1 = replaceLits(c, lit, lhsTroo, inf1, rhsFols); - Clause* res2 = replaceLits(c, lit, lhsFols, inf2, rhsTroo); - res1->setAge(c->age()+1); - res2->setAge(c->age()+1); - resultStack.push(res1); - resultStack.push(res2); - } else { - Inference* inf1 = new Inference1(convert(Signature::XOR), c); - Inference* inf2 = new Inference1(convert(Signature::XOR), c); - Clause* res1 = replaceLits(c, lit, lhsTroo, inf1, rhsTroo); - Clause* res2 = replaceLits(c, lit, lhsFols, inf2, rhsFols); - res1->setAge(c->age()+1); - res2->setAge(c->age()+1); - resultStack.push(res1); - resultStack.push(res2); - } - goto afterLoop; - } else { - continue; - } - - AH::getHeadAndArgs(term, head, args); - Signature::Proxy prox = AH::getProxy(head); - if(prox == Signature::NOT_PROXY){ - continue; - } - - bool positive = AH::isTrue(boolVal) == lit->polarity(); - - if((prox == Signature::OR) && (args.size() == 2)){ - if(!positive){ - Literal* l1 = Literal::createEquality(true, args[1], fols, boolSort); - Literal* l2 = Literal::createEquality(true, args[0], fols, boolSort); - Inference* inf1 = new Inference1(convert(prox), c); - Inference* inf2 = new Inference1(convert(prox), c); - Clause* res1 = replaceLits(c, lit, l1, inf1); - Clause* res2 = replaceLits(c, lit, l2, inf2); - res1->setAge(c->age()+1); - res2->setAge(c->age()+1); - resultStack.push(res1); - resultStack.push(res2); - goto afterLoop; - } - } - - if((prox == Signature::AND) && (args.size() == 2)){ - if(positive){ - Literal* l1 = Literal::createEquality(true, args[1], troo, boolSort); - Literal* l2 = Literal::createEquality(true, args[0], troo, boolSort); - Inference* inf1 = new Inference1(convert(prox), c); - Inference* inf2 = new Inference1(convert(prox), c); - Clause* res1 = replaceLits(c, lit, l1, inf1); - Clause* res2 = replaceLits(c, lit, l2, inf2); - res1->setAge(c->age()+1); - res2->setAge(c->age()+1); - resultStack.push(res1); - resultStack.push(res2); - goto afterLoop; - } - } - - if((prox == Signature::IMP) && (args.size() == 2)){ - if(!positive){ - Literal* l1 = Literal::createEquality(true, args[1], troo, boolSort); - Literal* l2 = Literal::createEquality(true, args[0], fols, boolSort); - Inference* inf1 = new Inference1(convert(prox), c); - Inference* inf2 = new Inference1(convert(prox), c); - Clause* res1 = replaceLits(c, lit, l1, inf1); - Clause* res2 = replaceLits(c, lit, l2, inf2); - res1->setAge(c->age()+1); - res2->setAge(c->age()+1); - resultStack.push(res1); - resultStack.push(res2); - goto afterLoop; - } - } - - if((prox == Signature::IFF || prox == Signature::XOR) && (args.size() == 2)){ - bool polarity = (prox == Signature::IFF) == positive; - //equality or diseqality between boolean terms - Literal* lhsTroo = Literal::createEquality(true, args[1], troo, boolSort); - Literal* lhsFols = Literal::createEquality(true, args[1], fols, boolSort); - Literal* rhsTroo = Literal::createEquality(true, args[0], troo, boolSort); - Literal* rhsFols = Literal::createEquality(true, args[0], fols, boolSort); - if(polarity){ - Inference* inf1 = new Inference1(convert(Signature::IFF), c); - Inference* inf2 = new Inference1(convert(Signature::IFF), c); - Clause* res1 = replaceLits(c, lit, lhsTroo, inf1, rhsFols); - Clause* res2 = replaceLits(c, lit, lhsFols, inf2, rhsTroo); - res1->setAge(c->age()+1); - res2->setAge(c->age()+1); - resultStack.push(res1); - resultStack.push(res2); - } else { - Inference* inf1 = new Inference1(convert(Signature::XOR), c); - Inference* inf2 = new Inference1(convert(Signature::XOR), c); - Clause* res1 = replaceLits(c, lit, lhsTroo, inf1, rhsTroo); - Clause* res2 = replaceLits(c, lit, lhsFols, inf2, rhsFols); - res1->setAge(c->age()+1); - res2->setAge(c->age()+1); - resultStack.push(res1); - resultStack.push(res2); - } - goto afterLoop; - } - } - - return ClauseIterator::getEmpty(); - -afterLoop: - - return pvi(getUniquePersistentIterator(ClauseStack::Iterator(resultStack))); - -}*/ - -ClauseIterator produceClauses(Clause* c, bool generating, SkolemisingFormulaIndex* index) +ClauseIterator produceClauses(Clause* c, bool generating, + SkolemisingFormulaIndex* index, + BoolInstFormulaIndex* boolInstFormIndex, + BoolInstInstantiationIndex* boolInstInstIndex) { CALL("CNFOnTheFly::produceClauses"); @@ -549,13 +195,42 @@ ClauseIterator produceClauses(Clause* c, bool generating, SkolemisingFormulaInde if((prox == Signature::PI || prox == Signature::SIGMA ) && (args.size())){ TermList rhs = positive ? troo : fols; - TermList srt = *SortHelper::getResultSort(head.term()).term()->nthArgument(0); + TermList srt = SortHelper::getResultSort(head.term()).domain(); + ASS(srt.isArrowSort()); TermList newTerm; InferenceRule rule; if((prox == Signature::PI && positive) || (prox == Signature::SIGMA && !positive)){ rule = convert(Signature::PI); newTerm = piRemoval(args[0], c, srt); + if(boolInstFormIndex){ + ASS(boolInstInstIndex); + auto instances = boolInstInstIndex->getUnifications(TypedTermList(srt.domain(),AtomicSort::superSort()), true); + while(instances.hasNext()){ + TermQueryResult tqr = instances.next(); + TermList inst = tqr.unifier->apply(tqr.term, RESULT_BANK); + TermList form = tqr.unifier->apply(args[0], QUERY_BANK); + form = AH::app(form, inst); + Literal* l1 = Literal::createEquality(true, form, rhs, boolSort); + + unsigned clen = c->length(); + + // cant use replaceLits, as we need to apply the type unifier + Clause* res = new(clen) Clause(clen, GeneratingInference1(InferenceRule::BOOL_INSTANTIATION, c)); + (*res)[0] = l1; + unsigned next = 0; + for(unsigned i=0;iapply(curr, QUERY_BANK); + (*res)[next++] = currAfter; + } + } + + resultStack.push(res); + } + boolInstFormIndex->insertFormula(TypedTermList(srt.domain(), AtomicSort::superSort()), args[0], lit, c); + } } else { ASS(term.isTerm()); bool newTermCreated = false; @@ -758,6 +433,16 @@ void LazyClausificationGIE::attach(SaturationAlgorithm* salg) GeneratingInferenceEngine::attach(salg); _formulaIndex=static_cast ( _salg->getIndexManager()->request(SKOLEMISING_FORMULA_INDEX) ); + + _boolInstFormIndex = 0; + _boolInstInstIndex = 0; + + if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ + _boolInstFormIndex=static_cast ( + _salg->getIndexManager()->request(BOOL_INST_FORMULA_INDEX) ); + _boolInstInstIndex=static_cast ( + _salg->getIndexManager()->request(BOOL_INST_INSTANTIATION_INDEX) ); + } } void LazyClausificationGIE::detach() @@ -765,7 +450,14 @@ void LazyClausificationGIE::detach() CALL("LazyClausificationGIE::detach"); _formulaIndex=0; + _boolInstFormIndex = 0; + _boolInstInstIndex = 0; + _salg->getIndexManager()->release(SKOLEMISING_FORMULA_INDEX); + if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ + _salg->getIndexManager()->release(BOOL_INST_FORMULA_INDEX); + _salg->getIndexManager()->release(BOOL_INST_INSTANTIATION_INDEX); + } GeneratingInferenceEngine::detach(); } @@ -776,6 +468,16 @@ void LazyClausification::attach(SaturationAlgorithm* salg) SimplificationEngine::attach(salg); _formulaIndex=static_cast ( _salg->getIndexManager()->request(SKOLEMISING_FORMULA_INDEX) ); + + _boolInstFormIndex = 0; + _boolInstInstIndex = 0; + + if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ + _boolInstFormIndex=static_cast ( + _salg->getIndexManager()->request(BOOL_INST_FORMULA_INDEX) ); + _boolInstInstIndex=static_cast ( + _salg->getIndexManager()->request(BOOL_INST_INSTANTIATION_INDEX) ); + } } void LazyClausification::detach() @@ -783,7 +485,15 @@ void LazyClausification::detach() CALL("LazyClausification::detach"); _formulaIndex=0; + _boolInstFormIndex = 0; + _boolInstInstIndex = 0; + _salg->getIndexManager()->release(SKOLEMISING_FORMULA_INDEX); + if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ + cout << "RELEASING 2" << endl; + _salg->getIndexManager()->release(BOOL_INST_FORMULA_INDEX); + _salg->getIndexManager()->release(BOOL_INST_INSTANTIATION_INDEX); + } SimplificationEngine::detach(); } @@ -798,14 +508,14 @@ ClauseIterator LazyClausificationGIE::generateClauses(Clause* c) { CALL("LazyClausificationGIE::simplifyMany"); - return produceClauses(c, true, _formulaIndex); + return produceClauses(c, true, _formulaIndex, _boolInstFormIndex, _boolInstInstIndex); } ClauseIterator LazyClausification::perform(Clause* c) { CALL("LazyClausification::perform"); - return produceClauses(c, false, _formulaIndex); + return produceClauses(c, false, _formulaIndex, _boolInstFormIndex, _boolInstInstIndex); } diff --git a/Inferences/CNFOnTheFly.hpp b/Inferences/CNFOnTheFly.hpp index c708b7774a..dacdaa2e3c 100644 --- a/Inferences/CNFOnTheFly.hpp +++ b/Inferences/CNFOnTheFly.hpp @@ -74,6 +74,8 @@ class LazyClausification private: SkolemisingFormulaIndex* _formulaIndex; + BoolInstFormulaIndex* _boolInstFormIndex; + BoolInstInstantiationIndex* _boolInstInstIndex; }; class LazyClausificationGIE @@ -95,6 +97,8 @@ class LazyClausificationGIE private: SkolemisingFormulaIndex* _formulaIndex; + BoolInstFormulaIndex* _boolInstFormIndex; + BoolInstInstantiationIndex* _boolInstInstIndex; }; diff --git a/Inferences/PrimitiveInstantiation.cpp b/Inferences/PrimitiveInstantiation.cpp index 2d064f18c6..62c11c9950 100644 --- a/Inferences/PrimitiveInstantiation.cpp +++ b/Inferences/PrimitiveInstantiation.cpp @@ -157,8 +157,8 @@ struct PrimitiveInstantiation::ResultFn TermStack argsFlex; TermStack sortsFlex; //sorts of arguments of flex head - AH::getHeadAndArgs(flexTerm, headFlex, argsFlex); - AH::getArgSorts(flexTerm, sortsFlex); + AH::getHeadArgsAndArgSorts(flexTerm, headFlex, argsFlex, sortsFlex); + ASS(argsFlex.size() == sortsFlex.size()); if(!argsFlex.size()){ // TODO do we really want to do this? diff --git a/Kernel/ApplicativeHelper.cpp b/Kernel/ApplicativeHelper.cpp index 1e57e1b626..e3fad8215a 100644 --- a/Kernel/ApplicativeHelper.cpp +++ b/Kernel/ApplicativeHelper.cpp @@ -631,6 +631,23 @@ void ApplicativeHelper::getHeadSortAndArgs(TermList term, TermList& head, head = term; } +void ApplicativeHelper::getHeadArgsAndArgSorts(TermList t, TermList& head, TermStack& args, TermStack& argSorts) +{ + CALL("ApplicativeHelper::getHeadArgsAndArgSorts"); + + if(!args.isEmpty()){ args.reset(); } + if(!argSorts.isEmpty()){ argSorts.reset(); } + + t = matrix(t); + + while(t.isApplication()){ + args.push(t.rhs()); + argSorts.push(rhsSort(t)); + t = t.lhs(); + } + head = t; +} + void ApplicativeHelper::getMatrixAndPrefSorts(TermList t, TermList& matrix, TermStack& sorts) { CALL("ApplicativeHelper::getLambdaPrefSorts"); @@ -716,6 +733,51 @@ Signature::Proxy ApplicativeHelper::getProxy(const TermList& t) return env.signature->getFunction(t.term()->functor())->proxy(); } +void ApplicativeHelper::getAbstractionTerms(Literal* lit, TermStack& terms) +{ + CALL("ApplicativeHelper::getAbstractionTerms"); + + ASS(lit->isEquality()); + + TermList lhs = *lit->nthArgument(0); + TermList rhs = *lit->nthArgument(1); + TermList eqSort = SortHelper::getEqualityArgumentSort(lit); + + + auto dealWithArg = [&](TermList arg, TermList argSort, TermStack& terms){ + if(!arg.containsLooseIndex()){ + TermList db = getDeBruijnIndex(0,argSort); + SubtermReplacer st(arg,db,true); + TermList lhsReplaced = st.transform(lhs); + TermList rhsReplaced = st.transform(rhs); + TermList eq = app2(equality(eqSort), lhsReplaced, rhsReplaced); + eq = lit->polarity() ? app(neg(),eq) : eq; // reverse the polarity of the literal + terms.push(lambda(argSort,eq)); + } + }; + + TermList lhsHead, rhsHead; + TermList lhsMatrix, rhsMatrix; + static TermStack lhsArgs; + static TermStack lhsArgSorts; + static TermStack rhsArgs; + static TermStack rhsArgSorts; + + + getHeadArgsAndArgSorts(lhs, lhsHead, lhsArgs, lhsArgSorts); + getHeadArgsAndArgSorts(rhs, rhsHead, rhsArgs, rhsArgSorts); + if(lhsHead.isTerm() && lhsHead.deBruijnIndex().isNone() && lhsHead == rhsHead) + { + for(unsigned i = 0; i < lhsArgs.size(); i++){ + dealWithArg(lhsArgs[i], lhsArgSorts[i], terms); + } + + for(unsigned i = 0; i < rhsArgs.size(); i++){ + dealWithArg(rhsArgs[i], rhsArgSorts[i], terms); + } + } +} + bool ApplicativeHelper::isBool(TermList t){ CALL("ApplicativeHelper::isBool"); return isTrue(t) || isFalse(t); diff --git a/Kernel/ApplicativeHelper.hpp b/Kernel/ApplicativeHelper.hpp index 0f5e8b0bc5..bfdda6ede8 100644 --- a/Kernel/ApplicativeHelper.hpp +++ b/Kernel/ApplicativeHelper.hpp @@ -57,6 +57,7 @@ class ApplicativeHelper { static void getHeadSortAndArgs(TermList term, TermList& head, TermList& headSort, TermStack& args); + static void getHeadArgsAndArgSorts(TermList t, TermList& head, TermStack& args, TermStack& argSorts); // function below ONLY used in AppliArgsIT which is used in SKIKBO. Leaving for now in case need to // revive // static void getHeadAndAllArgs(TermList term, TermList& head, TermStack& args); @@ -68,6 +69,8 @@ class ApplicativeHelper { static void getArgSorts(TermList t, TermStack& sorts); static Signature::Proxy getProxy(const TermList& t); + static void getAbstractionTerms(Literal* lit, TermStack& terms); + // returns true if we can split (decompose) term // during first-order unification without losing HOL // unifiers. Return false otherwise diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index d1130d7737..ca2523c546 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -215,8 +215,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCoreisLambdaTerm()) _shiftBy++; +} + +void SubtermReplacer::onTermExit(Term* t) +{ + CALL("SubtermReplacer::onTermExit"); + + if(t->isLambdaTerm()) _shiftBy--; +} + +#endif TypedTermList ToBank::toBank(TypedTermList term){ CALL("ToBank::toBank"); diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index 8021d393e0..445ab54bec 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -75,16 +75,36 @@ class TermTransformer { class SubtermReplacer : public TermTransformer { public: - SubtermReplacer(TermList what, TermList by) : _what(what), _by(by) { + SubtermReplacer(TermList what, TermList by +#if VHOL + , bool liftFree = false +#endif + ) : + _what(what), + _by(by), +#if VHOL + _liftFreeIndices(liftFree), + _shiftBy(0) +#endif + { ASS(what.isVar() || by.isVar() || SortHelper::getResultSort(what.term()) == SortHelper::getResultSort(by.term())); dontTransformSorts(); } TermList transformSubterm(TermList t) override; +#if VHOL + void onTermEntry(Term* t) override; + void onTermExit(Term* t) override; +#endif + private: TermList _what; TermList _by; +#if VHOL + bool _liftFreeIndices; // true if need to lift free indices in _what + int _shiftBy; // the amount to shift a free index by +#endif }; class ToBank : public TermTransformer diff --git a/Kernel/TypedTermList.hpp b/Kernel/TypedTermList.hpp index eb1b3d15a1..df9ee5f2fb 100644 --- a/Kernel/TypedTermList.hpp +++ b/Kernel/TypedTermList.hpp @@ -24,7 +24,9 @@ class TypedTermList : public TermList TypedTermList(TermList t, SortId sort) : TermList(t), _sort(sort) { - ASS_NEQ(sort, AtomicSort::superSort()); + // TODO we have some use cases where we want to enter a sort + // with sort SuperSort(). See BoolInstantiation + // ASS_NEQ(sort, AtomicSort::superSort()); ASS(!sort.isEmpty()) } TypedTermList(Term* t) : TypedTermList(TermList(t), SortHelper::getResultSort(t)) {} diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 758c55dda5..3ddf2c0c8f 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -87,6 +87,7 @@ #include "Inferences/BetaEtaISE.hpp" #include "Inferences/FlexFlexSimplify.hpp" #include "Inferences/PositiveExt.hpp" +#include "Inferences/BoolInstantiation.hpp" #endif #include "Inferences/URResolution.hpp" @@ -1594,6 +1595,9 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if(env.options->choiceReasoning()){ gie->addFront(new Choice()); } + if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ + gie->addFront(new BoolInstantiation()); + } } if(opt.complexBooleanReasoning() && prb.hasBoolVar() && @@ -1607,9 +1611,8 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const } if((prb.hasLogicalProxy() || prb.hasBoolVar() || prb.hasFOOL()) && - prb.higherOrder() && !prb.quantifiesOverPolymorphicVar()){ - if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && - env.options->cnfOnTheFly() != Options::CNFOnTheFly::OFF){ + prb.higherOrder() && !prb.quantifiesOverPolymorphicVar()){ // TODO why the last condition???? + if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER){ gie->addFront(new LazyClausificationGIE()); } } @@ -1700,8 +1703,7 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const #if VHOL if((prb.hasLogicalProxy() || prb.hasBoolVar() || prb.hasFOOL()) && prb.higherOrder() && !prb.quantifiesOverPolymorphicVar()){ - if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && - env.options->cnfOnTheFly() != Options::CNFOnTheFly::OFF){ + if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER){ res->addSimplifierToFront(new LazyClausification()); } } diff --git a/Shell/FOOLElimination.cpp b/Shell/FOOLElimination.cpp index 066eca5c47..cf3c0dd22a 100644 --- a/Shell/FOOLElimination.cpp +++ b/Shell/FOOLElimination.cpp @@ -59,6 +59,12 @@ FOOLElimination::FOOLElimination() : _defs(0), bool FOOLElimination::needsElimination(FormulaUnit* unit) { CALL("FOOLElimination::needsElimination"); +#if VHOL + // process everything into a big proxified term + if(env.property->higherOrder() && env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER) + { return true; } +#endif + /** * Be careful with the difference between FOOLElimination::needsElimination * and Property::_hasFOOL! @@ -186,8 +192,8 @@ Formula* FOOLElimination::process(Formula* formula) { CALL("FOOLElimination::process(Formula*)"); #if VHOL - if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && - !_polymorphic){ + if(env.property->higherOrder() && env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && + !_polymorphic){ // why the !_polymorphic check? It is a varry over from old implementation, do we still need it??? TermList proxifiedFormula = LambdaConversion().convertLambda(formula); Formula* processedFormula = toEquality(proxifiedFormula); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index aa29435d72..5bdfa52928 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1827,11 +1827,11 @@ void Options::init() "lazy_simp", "lazy_not_gen", "lazy_not_gen_be_off", - "lazy_not_be_gen", - "off"}); + "lazy_not_be_gen"}); _clausificationOnTheFly.description="Various options linked to clausification on the fly"; _lookup.insert(&_clausificationOnTheFly); - _clausificationOnTheFly.addProblemConstraint(hasHigherOrder()); + _clausificationOnTheFly.addProblemConstraint(hasHigherOrder()); + _clausificationOnTheFly.onlyUsefulWith(_addProxyAxioms.is(equal(false))); _clausificationOnTheFly.tag(OptionTag::HIGHER_ORDER); _piSet = ChoiceOptionValue("prim_inst_set","piset",PISet::PRAGMATIC, @@ -1911,6 +1911,18 @@ void Options::init() _positiveExt.onlyUsefulWith(_functionExtensionality.is(notEqual(FunctionExtensionality::AXIOM))); _positiveExt.tag(OptionTag::HIGHER_ORDER); + + + _boolInstantiation = ChoiceOptionValue("bool_inst","bi",BoolInstantiation::OFF, + {"off", "abs", "abs_sub"}); + _boolInstantiation.description= + "Enables heuristic instantiation of higher-order variables with Bool return type.\n" + " -abs attempt to instantiate such variables with abstractions of literals coming from conjeture.\n" + " -abs_sub same as above, but also subterms of clauses derived from conjecture"; + _lookup.insert(&_boolInstantiation); + _boolInstantiation.addProblemConstraint(hasHigherOrder()); + _boolInstantiation.tag(OptionTag::HIGHER_ORDER); + _lambdaFreeHol = BoolOptionValue("lam_free_hol","lfh",false); _lambdaFreeHol.description= "Reason about lambda-free hol. See paper by Vukmirovic et al."; diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 2973aaaa33..025b2b6fe7 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -740,8 +740,7 @@ class Options LAZY_SIMP = 2, LAZY_SIMP_NOT_GEN = 3, LAZY_SIMP_NOT_GEN_BOOL_EQ_OFF = 4, - LAZY_SIMP_NOT_GEN_BOOL_EQ_GEN = 5, - OFF = 6 + LAZY_SIMP_NOT_GEN_BOOL_EQ_GEN = 5 }; enum class PISet : unsigned int { @@ -756,6 +755,12 @@ class Options PI_SIGMA = 8 }; + enum class BoolInstantiation : unsigned int { + OFF = 0, + ABSTRACTION = 1, + ABS_AND_SUBTERM = 2 + }; + enum class HPrinting : unsigned int { RAW = 0, DB_INDICES = 1, @@ -2428,6 +2433,7 @@ bool _hard; bool cases() const { return _cases.actualValue; } bool newTautologyDel() const { return _newTautologyDel.actualValue; } bool positiveExtensionality() const { return _positiveExt.actualValue; } + BoolInstantiation booleanInstantiation() const { return _boolInstantiation.actualValue; } bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } // TODO doesn't do anyhting currently // bool complexVarCondition() const { return _complexVarCondition.actualValue; } @@ -2875,6 +2881,7 @@ bool _hard; BoolOptionValue _cases; BoolOptionValue _newTautologyDel; BoolOptionValue _positiveExt; + ChoiceOptionValue _boolInstantiation; BoolOptionValue _lambdaFreeHol; // BoolOptionValue _complexVarCondition; ChoiceOptionValue _holPrinting; From 5459c97a11aca39b1eb2d4db97d662504fcca75b Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 2 Jun 2023 10:45:32 +0200 Subject: [PATCH 101/210] a comment and a minor extension of allowed literal selection values --- Saturation/ProvingHelper.cpp | 2 +- Shell/Options.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Saturation/ProvingHelper.cpp b/Saturation/ProvingHelper.cpp index 9392af232e..f4e51c6a29 100644 --- a/Saturation/ProvingHelper.cpp +++ b/Saturation/ProvingHelper.cpp @@ -140,7 +140,7 @@ void ProvingHelper::runVampire(Problem& prb, const Options& opt) //this point is reached both by the vampire mode (single strategy) and the portfolio mode (strategy schedule) when inside a strategy /* Set random seed one more time, this time in the title of "seed for proof search". - * This should help improve reproducibility when using vampire mode + "--decode" to reply a behavior of a strat from a schedule + * This should help improve reproducibility when using vampire mode + "--decode" to replay a behavior of a strat from a schedule */ Lib::Random::setSeed(opt.randomSeed()); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 5bdfa52928..1985d9669a 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -3061,6 +3061,7 @@ bool Options::SelectionOptionValue::setValue(const vstring& value) case -1004: case -1010: case -1011: // almost same as 1011 (but factoring will be on negative and not positive literals) + case -1666: actualValue = sel; return true; default: From dd5b2e6eac0e8d6be3d5f9ea289d1a1dc2c2a5e2 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 2 Jun 2023 11:15:27 +0200 Subject: [PATCH 102/210] extended StringUtils --- Lib/StringUtils.cpp | 12 ++++++++++++ Lib/StringUtils.hpp | 1 + 2 files changed, 13 insertions(+) diff --git a/Lib/StringUtils.cpp b/Lib/StringUtils.cpp index 2254f631c3..79155a517a 100644 --- a/Lib/StringUtils.cpp +++ b/Lib/StringUtils.cpp @@ -152,6 +152,18 @@ void StringUtils::splitStr(const char* str, char delimiter, Stack& stri strings.push(currPart.begin()); } +void StringUtils::dropEmpty(Stack& strings) +{ + CALL("StringUtils::dropEmpty"); + unsigned i = 0; + for (unsigned j = 0; j < strings.size(); j++) { + if (strings[j].size() > 0) { + strings[i++] = strings[j]; + } + } + strings.truncate(i); +} + bool StringUtils::readEquality(const char* str, char eqChar, vstring& lhs, vstring& rhs) { CALL("StringUtils::readEquality"); diff --git a/Lib/StringUtils.hpp b/Lib/StringUtils.hpp index f82751d266..5149c98fee 100644 --- a/Lib/StringUtils.hpp +++ b/Lib/StringUtils.hpp @@ -33,6 +33,7 @@ class StringUtils { static bool isPositiveDecimal(vstring str); static void splitStr(const char* str, char delimiter, Stack& strings); + static void dropEmpty(Stack& strings); static bool readEquality(const char* str, char eqChar, vstring& lhs, vstring& rhs); static bool readEqualities(const char* str, char delimiter, char eqChar, DHMap& pairs); template From 25d008efc7ec9ddf67238d0de5348cc6e7bf0c7a Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 2 Jun 2023 11:16:02 +0200 Subject: [PATCH 103/210] starting to work on strategy sampling in Options --- Shell/Options.cpp | 190 ++++++++++++++++++++++++++++++++++++++++++++++ Shell/Options.hpp | 10 ++- samplerEx.txt | 12 +++ vampire.cpp | 6 +- 4 files changed, 215 insertions(+), 3 deletions(-) create mode 100644 samplerEx.txt diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 1985d9669a..d932243a46 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -21,6 +21,8 @@ // Visual does not know the round function #include +#include +#include #include "Forwards.hpp" @@ -222,6 +224,13 @@ void Options::init() _randomStrategy.reliesOn(Or(_mode.is(equal(Mode::VAMPIRE)),_mode.is(equal(Mode::RANDOM_STRATEGY)))); _randomStrategy.tag(OptionTag::DEVELOPMENT); + _sampleStrategy = StringOptionValue("sample_strategy","",""); + _sampleStrategy.description = "Specify a path to a filename (of homemade format) describing how to sample a random strategy (incompatible with the --random_strategy way)."; + _lookup.insert(&_sampleStrategy); + _sampleStrategy.reliesOn(_mode.is(equal(Mode::VAMPIRE))); + _sampleStrategy.setExperimental(); + _sampleStrategy.tag(OptionTag::DEVELOPMENT); + _forbiddenOptions = StringOptionValue("forbidden_options","",""); _forbiddenOptions.description= "If some of the specified options are set to a forbidden state, vampire will fail to start, or in portfolio modes it will skip such strategies. The expected syntax is =:::...:="; @@ -3224,6 +3233,186 @@ void Options::randomizeStrategy(Property* prop) if(prop) cout << "Random strategy: " + generateEncodedOptions() << endl; } +void Options::strategySamplingAssign(vstring optname, vstring value, DHMap& fakes) +{ + CALL("Options::strategySamplingAssign"); + + // dollar sign signifies fake options + if (optname[0] == '$') { + fakes.set(optname,value); + return; + } + + AbstractOptionValue* opt = getOptionValueByName(optname); + if (opt) { + if (!opt->set(value)) { + USER_ERROR("Sampling file processing error -- unknown option value: " + value + " for option " + optname); + } + } else { + USER_ERROR("Sampling file processing error -- unknown option: " + optname); + } +} + +void Options::trySamplingStrategy() +{ + CALL("Options::trySamplingStrategy"); + if(_sampleStrategy.actualValue=="") return; + + BYPASSING_ALLOCATOR; + + std::ifstream input(_sampleStrategy.actualValue.c_str()); + + if (input.fail()) { + USER_ERROR("Cannot open sampler file: "+_sampleStrategy.actualValue); + } + + // our local randomizing engine (randomly seeded) + std::mt19937 rng((std::random_device())()); + // map of local variables (fake options) + DHMap fakes; + + vstring line; // parsed lines + Stack pieces; // temp stack used for splitting + while (std::getline(input, line)) + { + if (line.length() == 0 || line[0] == '#') { // empty lines and comments (starting with # as the first! character) + continue; + } + + StringUtils::splitStr(line.c_str(),'>',pieces); + if (pieces.size() != 2) { + USER_ERROR("Sampling file parse error -- each rule must contain exactly one >. Here: "+line); + } + + vstring cond = pieces[0]; + vstring body = pieces[1]; + pieces.reset(); + + // evaluate condition, if false, will skip the rest + bool fireRule = true; + { + StringUtils::splitStr(cond.c_str(),' ',pieces); + StringUtils::dropEmpty(pieces); + + Stack pair; + Stack::BottomFirstIterator it(pieces); + while(it.hasNext()) { + vstring equation = it.next(); + StringUtils::splitStr(equation.c_str(),'=',pair); + StringUtils::dropEmpty(pair); + if (pair.size() != 2) { + USER_ERROR("Sampling file parse error -- invalid equation: "+equation); + } + vstring* foundVal = fakes.findPtr(pair[0]); + if (!foundVal || *foundVal != pair[1]) { + fireRule = false; + break; + } + pair.reset(); + } + + pieces.reset(); + } + + if (!fireRule) { + continue; + } + + // now it's time to read the body + // cout << "fire: " << body << endl; + + StringUtils::splitStr(body.c_str(),' ',pieces); + StringUtils::dropEmpty(pieces); + if (pieces.size() != 3) { + USER_ERROR("Sampling file parse error -- rule body must consist of three space-separated parts. Here: "+body); + } + + vstring optname = pieces[0]; + vstring sampler = pieces[1]; + vstring args = pieces[2]; + pieces.reset(); + + if (sampler == "~cat") { // categorical sampling + StringUtils::splitStr(args.c_str(),',',pieces); + + unsigned total = 0; + Stack> mulvals; + + // parse the mulvals + { + Stack pair; + Stack::BottomFirstIterator it(pieces); + while(it.hasNext()) { + vstring mulval = it.next(); + StringUtils::splitStr(mulval.c_str(),':',pair); + StringUtils::dropEmpty(pair); + if (pair.size() != 2) { + USER_ERROR("Sampling file parse error -- invalid mulval: "+mulval); + } + + int multiplicity = 0; + if (!Int::stringToInt(pair[1],multiplicity) || multiplicity <= 0) { + USER_ERROR("Sampling file parse error -- invalid multiplicity in mulval: "+mulval); + } + total += multiplicity; + mulvals.push(std::make_pair(multiplicity,pair[0])); + pair.reset(); + } + pieces.reset(); + } + + // actual sampling + vstring value; + int sample = std::uniform_int_distribution(1,total)(rng); + Stack>::BottomFirstIterator it(mulvals); + while (it.hasNext()) { + auto mulval = it.next(); + if (sample <= mulval.first) { + value = mulval.second; + break; + } + sample -= mulval.first; + } + ASS_NEQ(value,""); + + strategySamplingAssign(optname,value,fakes); + } else if (sampler == "~u2r") { + StringUtils::splitStr(args.c_str(),',',pieces); + StringUtils::dropEmpty(pieces); + + if (pieces.size() != 3) { + USER_ERROR("Sampling file parse error -- ~u2r sampler expect exatly three comma-separated arguments but got: "+args); + } + if (pieces[2].length() != 1) { + USER_ERROR("Sampling file parse error -- the third argument of the ~u2r sampler needs to be a single character and not: "+pieces[2]); + } + float low,high; + if (!Int::stringToFloat(pieces[0].c_str(),low) || !Int::stringToFloat(pieces[1].c_str(),high)) { + USER_ERROR("Sampling file parse error -- can't convert one of ~u2r sampler arguments to float: "+args); + } + std::uniform_real_distribution dis(low,high); + float raw = dis(rng); + float exped = powf(2.0,raw); + unsigned denom = 1 << 20; + unsigned numer = exped*denom; + strategySamplingAssign(optname,Int::toString(numer)+pieces[2]+Int::toString(denom),fakes); + + pieces.reset(); + } else { + USER_ERROR("Sampling file parse error -- unrecognized sampler: " + sampler); + } + + /* + Stack::BottomFirstIterator it(pieces); + while(it.hasNext()) { + cout << "tok:" << it.next() << endl; + } + */ + } + + cout << "Random strategy: " + generateEncodedOptions() << endl; +} + /** * Assign option values as encoded in the option vstring if assign=true, otherwise check that * the option values are not currently set to those values. @@ -3447,6 +3636,7 @@ vstring Options::generateEncodedOptions() const forbidden.insert(&_randomStrategy); forbidden.insert(&_encode); forbidden.insert(&_decode); + forbidden.insert(&_sampleStrategy); forbidden.insert(&_ignoreMissing); // or maybe we do! #if VDEBUG forbidden.insert(&_printVarBanks); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 025b2b6fe7..4f3302774f 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -152,7 +152,9 @@ class Options // This dual usage is required as the property object is created during // the preprocessing stage. This means that in vampire.cpp we call this twice void randomizeStrategy(Property* prop); - + + void trySamplingStrategy(); + /** * Return the problem name * @@ -783,7 +785,9 @@ class Options // // The details are explained in comments below private: - + // helper function of trySamplingStrategy + void strategySamplingAssign(vstring optname, vstring value, DHMap& fakes); + /** * These store the names of the choices for an option. * They can be declared using initializer lists i.e. {"on","off","half_on"} @@ -2736,6 +2740,8 @@ bool _hard; UnsignedOptionValue _randomSeed; UnsignedOptionValue _randomStrategySeed; + StringOptionValue _sampleStrategy; + IntOptionValue _activationLimit; ChoiceOptionValue _satSolver; diff --git a/samplerEx.txt b/samplerEx.txt new file mode 100644 index 0000000000..deecef0b75 --- /dev/null +++ b/samplerEx.txt @@ -0,0 +1,12 @@ +# hash as the very first character signifies a full line comment + +# saturation algorithm +> sa ~cat lrs:864,discount:572,otter:236 + +# literal selection +> $s_pos ~cat Y:4,N:1 +$s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:628,11:131,20:11,21:66,22:11,30:6,31:14,32:4,33:10,34:3,35:8,666:50,1002:141,1003:14,1004:23,1010:145,1011:357,1666:50 +$s_pos=N > s ~cat -0:11,-1:31,-2:52,-3:21,-4:22,-10:628,-11:131,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50,-1002:141,-1003:14,-1004:23,-1010:145,-1011:357,-1666:50 + +# age/weight ratio +> awr ~u2r -10,4,: \ No newline at end of file diff --git a/vampire.cpp b/vampire.cpp index e64a63f642..070c4ba556 100644 --- a/vampire.cpp +++ b/vampire.cpp @@ -190,13 +190,17 @@ void getRandomStrategy() void doProving() { CALL("doProving()"); + + // a new strategy randomization mechanism independent with randomizeStrategy below + env.options->trySamplingStrategy(); + // One call to randomize before preprocessing (see Options) env.options->randomizeStrategy(0); ScopedPtr prb(getPreprocessedProblem()); // Then again when the property is here (this will only randomize non-default things if an option is set to do so) - env.options->randomizeStrategy(prb->getProperty()); + env.options->randomizeStrategy(prb->getProperty()); // this will provide warning if options don't make sense for problem if (env.options->mode()!=Options::Mode::SPIDER) { From cdb46fcd7f0413e09ada15c818ade74762c2d543 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 2 Jun 2023 12:47:08 +0200 Subject: [PATCH 104/210] Resolving conflict in cherry-pick register _superposition as OptionTag::INFERENCES --- Shell/Options.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index d932243a46..29fb49f990 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1773,6 +1773,8 @@ void Options::init() #if VHOL _superposition = BoolOptionValue("superposition","sup",true); + _superposition.onlyUsefulWith(InferencingSaturationAlgorithm()); + _superposition.tag(OptionTag::INFERENCES); _superposition.description= "Control superposition. Turning off this core inference leads to an incomplete calculus on equational problems."; _lookup.insert(&_superposition); From b836be8a0ce2f0e2de5f53c4d5215df4b28b443c Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 2 Jun 2023 13:01:55 +0200 Subject: [PATCH 105/210] put kbo things under OptionTag::SATURATION --- Shell/Options.cpp | 3 +++ samplerEx.txt | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 29fb49f990..976dc878fa 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -2378,11 +2378,13 @@ void Options::init() _kboWeightGenerationScheme.description = "Weight generation schemes from KBO inspired by E. This gets overridden by the function_weights option if used."; _kboWeightGenerationScheme.setExperimental(); _kboWeightGenerationScheme.onlyUsefulWith(_termOrdering.is(equal(TermOrdering::KBO))); + _kboWeightGenerationScheme.tag(OptionTag::SATURATION); _lookup.insert(&_kboWeightGenerationScheme); _kboMaxZero = BoolOptionValue("kbo_max_zero","kmz",false); _kboMaxZero.setExperimental(); _kboMaxZero.onlyUsefulWith(_termOrdering.is(equal(TermOrdering::KBO))); + _kboMaxZero.tag(OptionTag::SATURATION); _kboMaxZero.description="Modifies any kbo_weight_scheme by setting the maximal (by the precedence) function symbol to have weight 0."; _lookup.insert(&_kboMaxZero); @@ -2392,6 +2394,7 @@ void Options::init() _kboAdmissabilityCheck.description = "Choose to emit a warning instead of throwing an exception if the weight function and precedence ordering for kbo are not compatible."; _kboAdmissabilityCheck.setExperimental(); _kboAdmissabilityCheck.onlyUsefulWith(_termOrdering.is(equal(TermOrdering::KBO))); + _kboAdmissabilityCheck.tag(OptionTag::SATURATION); _lookup.insert(&_kboAdmissabilityCheck); diff --git a/samplerEx.txt b/samplerEx.txt index deecef0b75..053ba28a1e 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -9,4 +9,18 @@ $s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:628,11:131,20:11,21:66,22:11,30:6, $s_pos=N > s ~cat -0:11,-1:31,-2:52,-3:21,-4:22,-10:628,-11:131,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50,-1002:141,-1003:14,-1004:23,-1010:145,-1011:357,-1666:50 # age/weight ratio -> awr ~u2r -10,4,: \ No newline at end of file +> awr ~u2r -10,4,: + +# INFERENCES + +# superposition (don't turn this off at home!) +> sup ~cat on:1700,off:1 + +# ORDERING + + +# TODO - make this conditional on KBO! + +> kmz ~cat on:1,off:200 +> kws ~cat const:1659,inv_arity_squared:6,precedence:28,arity_squared:1,inv_arity:5,inv_frequency:8,frequency:2 + From 5861d6e963ae67161d06585b40d9788fcadd5839 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 2 Jun 2023 14:45:23 +0200 Subject: [PATCH 106/210] Fixing cherry-pick conflict occurence -> occurrence also in comments/decriptions --- Shell/Options.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 976dc878fa..82ebcb8246 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -2352,9 +2352,9 @@ void Options::init() "scramble","frequency","unary_frequency","const_frequency", "reverse_frequency", "weighted_frequency","reverse_weighted_frequency"}); _symbolPrecedence.description="Vampire uses term orderings which require a precedence relation between symbols.\n" - "Arity orders symbols by their arity (and reverse_arity takes the reverse of this) and occurence orders symbols by the order they appear in the problem. " + "Arity orders symbols by their arity (and reverse_arity takes the reverse of this) and occurrence orders symbols by the order they appear in the problem. " "Then we have a few precedence generating schemes adopted from E: frequency - sort by frequency making rare symbols large, reverse does the opposite, " - "(For the weighted versions, each symbol occurence counts as many times as is the lenght of the clause in which it occurs.) " + "(For the weighted versions, each symbol occurrence counts as many times as is the length of the clause in which it occurs.) " "unary_first is like arity, except that unary symbols are maximal (and ties are broken by frequency), " "unary_frequency is like frequency, except that unary symbols are maximal, " "const_max makes constants the largest, then falls back to arity, " @@ -2363,7 +2363,7 @@ void Options::init() _lookup.insert(&_symbolPrecedence); _symbolPrecedence.onlyUsefulWith(InferencingSaturationAlgorithm()); _symbolPrecedence.tag(OptionTag::SATURATION); - _symbolPrecedence.setRandomChoices({"arity","occurence","reverse_arity","frequency"}); + _symbolPrecedence.setRandomChoices({"arity","occurrence","reverse_arity","frequency"}); _introducedSymbolPrecedence = ChoiceOptionValue("introduced_symbol_precedence","isp", IntroducedSymbolPrecedence::TOP, From 61806b5b15710c619d8ccfa8b3f9260182567bd4 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 2 Jun 2023 14:45:46 +0200 Subject: [PATCH 107/210] more robust value lookup --- Shell/Options.cpp | 25 +++++++++++++++++++++++-- Shell/Options.hpp | 1 + samplerEx.txt | 28 +++++++++++++++++++++------- 3 files changed, 45 insertions(+), 9 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 82ebcb8246..4fb3ffbc50 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -3258,6 +3258,27 @@ void Options::strategySamplingAssign(vstring optname, vstring value, DHMap& fakes) +{ + CALL("Options::strategySamplingLookup"); + + if (optname[0] == '$') { + vstring* foundVal = fakes.findPtr(optname); + if (!foundVal) { + USER_ERROR("Sampling file processing error -- unassigned fake option: " + optname); + } + return *foundVal; + } + + AbstractOptionValue* opt = getOptionValueByName(optname); + if (opt) { + return opt->getStringOfActual(); + } else { + USER_ERROR("Sampling file processing error -- unknown option to look up: " + optname); + } + return ""; +} + void Options::trySamplingStrategy() { CALL("Options::trySamplingStrategy"); @@ -3308,8 +3329,8 @@ void Options::trySamplingStrategy() if (pair.size() != 2) { USER_ERROR("Sampling file parse error -- invalid equation: "+equation); } - vstring* foundVal = fakes.findPtr(pair[0]); - if (!foundVal || *foundVal != pair[1]) { + vstring storedVal = strategySamplingLookup(pair[0],fakes); + if (storedVal != pair[1]) { fireRule = false; break; } diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 4f3302774f..9ec8f6d424 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -787,6 +787,7 @@ class Options private: // helper function of trySamplingStrategy void strategySamplingAssign(vstring optname, vstring value, DHMap& fakes); + vstring strategySamplingLookup(vstring optname, DHMap& fakes); /** * These store the names of the choices for an option. diff --git a/samplerEx.txt b/samplerEx.txt index 053ba28a1e..d97d76feba 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -1,12 +1,12 @@ # hash as the very first character signifies a full line comment # saturation algorithm -> sa ~cat lrs:864,discount:572,otter:236 +> sa ~cat lrs:600,discount:572,otter:236 # literal selection > $s_pos ~cat Y:4,N:1 -$s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:628,11:131,20:11,21:66,22:11,30:6,31:14,32:4,33:10,34:3,35:8,666:50,1002:141,1003:14,1004:23,1010:145,1011:357,1666:50 -$s_pos=N > s ~cat -0:11,-1:31,-2:52,-3:21,-4:22,-10:628,-11:131,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50,-1002:141,-1003:14,-1004:23,-1010:145,-1011:357,-1666:50 +$s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:300,11:131,20:11,21:66,22:11,30:6,31:14,32:4,33:10,34:3,35:8,666:50,1002:141,1003:14,1004:23,1010:145,1011:357,1666:50 +$s_pos=N > s ~cat -1:31,-2:52,-3:21,-4:22,-10:300,-11:131,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50,-1002:141,-1003:14,-1004:23,-1010:145,-1011:357,-1666:50 # age/weight ratio > awr ~u2r -10,4,: @@ -14,13 +14,27 @@ $s_pos=N > s ~cat -0:11,-1:31,-2:52,-3:21,-4:22,-10:628,-11:131,-20:11,-21:66,-2 # INFERENCES # superposition (don't turn this off at home!) -> sup ~cat on:1700,off:1 +> sup ~cat on:100,off:1 # ORDERING +> to ~cat kbo:13,lpo:4 -# TODO - make this conditional on KBO! +> sp ~cat arity:100,const_min:72,frequency:130,const_frequency:49,reverse_frequency:55,reverse_arity:72,weighted_frequency:24,unary_first:28,occurrence:82,unary_frequency:14,const_max:18 +> spb ~cat none:200,units:78,goal:91,goal_then_units:93,non_intro:14,intro:12 -> kmz ~cat on:1,off:200 -> kws ~cat const:1659,inv_arity_squared:6,precedence:28,arity_squared:1,inv_arity:5,inv_frequency:8,frequency:2 +to=kbo > kmz ~cat off:200,on:1 +to=kbo > kws ~cat const:50,inv_arity_squared:6,precedence:28,arity_squared:1,inv_arity:5,inv_frequency:8,frequency:2 +> s2pl ~cat off:50,on:2,no:3 + +# SPLIT QUEUES + + + + + + +# MISC + +> uhcvi ~cat off:1,on:1 \ No newline at end of file From 6c0c32df105f796c19dd7908a03d8fdc730c47fb Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 2 Jun 2023 14:52:06 +0200 Subject: [PATCH 108/210] more precise description --- Shell/Options.cpp | 3 ++- samplerEx.txt | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 4fb3ffbc50..371d999c75 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -2235,7 +2235,8 @@ void Options::init() #endif }); _satSolver.description= - "Select the SAT solver to be used throughout the solver. This will be used in AVATAR (for splitting) when the saturation algorithm is discount,lrs or otter and in instance generation for selection and global subsumption."; + "Select the SAT solver to be used throughout the solver. This will be used in AVATAR (for splitting) when the saturation algorithm is discount,lrs or otter." + " (For instance generation for selection and global subsumption, we currently only use minisat.)"; _lookup.insert(&_satSolver); // in principle, global_subsumption and instgen also depend on the SAT solver choice, however, // 1) currently, neither is actually supporting Z3 diff --git a/samplerEx.txt b/samplerEx.txt index d97d76feba..4f7e3602c8 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -28,6 +28,14 @@ to=kbo > kws ~cat const:50,inv_arity_squared:6,precedence:28,arity_squared:1,inv > s2pl ~cat off:50,on:2,no:3 +# AVATAR + +> av ~cat on:15,off:4 + + + + + # SPLIT QUEUES From 4e6e9368d3c2432930cebdb049eea0f4a0dab485 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 2 Jun 2023 22:28:38 +0200 Subject: [PATCH 109/210] shifted geometric distribution --- Shell/Options.cpp | 17 +++++++++++ samplerEx.txt | 72 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 88 insertions(+), 1 deletion(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 371d999c75..bddc171ff7 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -3424,6 +3424,23 @@ void Options::trySamplingStrategy() unsigned numer = exped*denom; strategySamplingAssign(optname,Int::toString(numer)+pieces[2]+Int::toString(denom),fakes); + pieces.reset(); + } else if (sampler == "~sgd") { + StringUtils::splitStr(args.c_str(),',',pieces); + StringUtils::dropEmpty(pieces); + + if (pieces.size() != 2) { + USER_ERROR("Sampling file parse error -- ~sgd sampler expect exatly two comma-separated arguments but got: "+args); + } + double prob; + int offset; + if (!Int::stringToDouble(pieces[0].c_str(),prob) || !Int::stringToInt(pieces[1].c_str(),offset)) { + USER_ERROR("Sampling file parse error -- can't convert one of ~sgd sampler arguments to numbers: "+args); + } + std::geometric_distribution dis(prob); + int nval = offset+dis(rng); + strategySamplingAssign(optname,Int::toString(nval),fakes); + pieces.reset(); } else { USER_ERROR("Sampling file parse error -- unrecognized sampler: " + sampler); diff --git a/samplerEx.txt b/samplerEx.txt index 4f7e3602c8..7365a759df 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -1,4 +1,32 @@ -# hash as the very first character signifies a full line comment +# PREPROCESSING + +# blocked_clause_elimination +> bce ~cat off:5,on:1 + +# equality_proxy +> $ep ~cat N:7,Y:1 +$ep=Y > ep ~cat RST:2,R:3,RSTC:2,RS:3 +# mono_ep +$ep=Y > mep ~cat on:10,off:1 + +# equality_resolution_with_deletion +> erd ~cat on:10,off:1 + +# function_definition_elimination +> fde ~cat all:5,none:1,unused:1 + +# general_splitting +> gsp ~cat off:8,on:1 + +# inline_let -- this is probably irrelevant on TPTP anyway +> ile ~cat off:10,on:1 + +# naming +> $nm ~cat Z:1,NZ:5 +$nm=Z > nm ~cat 0:1 +$nm=NZ > nm ~sgd 0.07,2 + +# SATURATION # saturation algorithm > sa ~cat lrs:600,discount:572,otter:236 @@ -16,11 +44,29 @@ $s_pos=N > s ~cat -1:31,-2:52,-3:21,-4:22,-10:300,-11:131,-20:11,-21:66,-22:11,- # superposition (don't turn this off at home!) > sup ~cat on:100,off:1 +# simultaneous_superposition +sup=on > sims ~cat on:50,off:1 + +# superposition_from_variables +sup=on > sfv ~cat on:38,off:1 + + + + +# inner_rewriting +> irw ~cat off:165,on:6 + +# unit_resulting_resolution (TODO: out for Ahmed for now) +# > urr ~cat off:1200,ec_only:162,on:340 + # ORDERING +# term_ordering > to ~cat kbo:13,lpo:4 +# symbol_precendence > sp ~cat arity:100,const_min:72,frequency:130,const_frequency:49,reverse_frequency:55,reverse_arity:72,weighted_frequency:24,unary_first:28,occurrence:82,unary_frequency:14,const_max:18 +# symbol_precedence_boost > spb ~cat none:200,units:78,goal:91,goal_then_units:93,non_intro:14,intro:12 to=kbo > kmz ~cat off:200,on:1 @@ -36,6 +82,30 @@ to=kbo > kws ~cat const:50,inv_arity_squared:6,precedence:28,arity_squared:1,inv + + + + + +# TODO: consider enabling this for vampire_z3 compiles! +# av=on > sas ~cat minisat:10,z3:1 + +# GLOBAL SUBSUMPTION (only after AVATAR -- careful of dependencies!) + +> gs ~cat off:5,on:1 + +# global_subsumption_explicit_minim +gs=on > gsem ~cat randomized:50,on:5,off:17 + +# global_subsumption_sat_solver_power +gs=on > gsssp ~cat propagation_only:20,full:1 + +# global_subsumption_avatar_assumptions +gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 + + + + # SPLIT QUEUES From 85969681cdd5a9676fc7ed5162d21fbc8e9eb63b Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Sat, 3 Jun 2023 08:16:51 +0200 Subject: [PATCH 110/210] sine_tolerance should actually allow -1.0 (and not 0.0) as a special value --- Shell/Options.cpp | 14 ++++++++------ samplerEx.txt | 28 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index bddc171ff7..a0d65fcbbc 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -576,13 +576,14 @@ void Options::init() _sineSelection.setRandomChoices(atomsMoreThan(1000),{"axioms","off","off","off","off","off","off","off"}); _sineTolerance = FloatOptionValue("sine_tolerance","st",1.0); - _sineTolerance.description="SInE tolerance parameter (sometimes referred to as 'benevolence')"; + _sineTolerance.description="SInE tolerance parameter (sometimes referred to as 'benevolence')." + " Has special value of -1.0, but otherwise must be greater or equal 1.0."; _lookup.insert(&_sineTolerance); _sineTolerance.tag(OptionTag::PREPROCESSING); - _sineTolerance.addConstraint(Or(equal(0.0f),greaterThanEq(1.0f) )); + _sineTolerance.addConstraint(Or(equal(-1.0f),greaterThanEq(1.0f) )); // Captures that if the value is not 1.0 then sineSelection must be on _sineTolerance.onlyUsefulWith(_sineSelection.is(notEqual(SineSelection::OFF))); - _sineTolerance.setRandomChoices({"1.0","1.2","1.5","2.0","3.0","5.0"}); + _sineTolerance.setRandomChoices({"-1.0","1.0","1.2","1.5","2.0","3.0","5.0"}); _naming = IntOptionValue("naming","nm",8); _naming.description="Introduce names for subformulas. Given a subformula F(x1,..,xk) of formula G a new predicate symbol is introduced as a name for F(x1,..,xk) by adding the axiom n(x1,..,xk) <=> F(x1,..,xk) and replacing F(x1,..,xk) with n(x1,..,xk) in G. The value indicates how many times a subformula must be used before it is named."; @@ -1117,16 +1118,17 @@ void Options::init() // Like generality threshold for SiNE, except used by the sine2age trick _sineToAgeTolerance = FloatOptionValue("sine_to_age_tolerance","s2at",1.0); - _sineToAgeTolerance.description = "Like sine_tolerance but influences sine_to_age, sine_to_pred_levels, and sine_level_split_queue rather than sine_selection."; + _sineToAgeTolerance.description = "Like sine_tolerance but influences sine_to_age, sine_to_pred_levels, and sine_level_split_queue rather than sine_selection." + " Has special value of -1.0, but otherwise must be greater or equal 1.0."; _lookup.insert(&_sineToAgeTolerance); _sineToAgeTolerance.tag(OptionTag::SATURATION); - _sineToAgeTolerance.addConstraint(Or(equal(0.0f),greaterThanEq(1.0f))); + _sineToAgeTolerance.addConstraint(Or(equal(-1.0f),greaterThanEq(1.0f))); // Captures that if the value is not 1.0 then sineSelection must be on _sineToAgeTolerance.onlyUsefulWith(Or( _sineToAge.is(equal(true)), _sineToPredLevels.is(notEqual(PredicateSineLevels::OFF)), _useSineLevelSplitQueues.is(equal(true)))); - _sineToAgeTolerance.setRandomChoices({"1.0","1.2","1.5","2.0","3.0","5.0"}); + _sineToAgeTolerance.setRandomChoices({"-1.0","1.0","1.2","1.5","2.0","3.0","5.0"}); _lrsFirstTimeCheck = IntOptionValue("lrs_first_time_check","",5); _lrsFirstTimeCheck.description= diff --git a/samplerEx.txt b/samplerEx.txt index 7365a759df..e4d23b04c8 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -26,6 +26,34 @@ $ep=Y > mep ~cat on:10,off:1 $nm=Z > nm ~cat 0:1 $nm=NZ > nm ~sgd 0.07,2 +# inequality_splitting +> ins ~cat 0:20,1:4,2:3,3:2,4:1 + +# random_polarities +> rp ~cat off:3,on:1 + +# twee_goal_transformation +> tgt ~cat off:10,ground:6,full:5 + +# set_of_support +> sos ~cat off:80,on:17,all:10 + +# sine_selection +> $ss ~cat OFF:1182,ON:527 +$ss=ON > ss ~cat included:135,axioms:392 + +# sine_depth +$ss=ON > sd ~cat 0:45,1:13,2:12,3:5,4:4,5:4,7:3,10:2,12:1,15:1 + +# sine_generality_threshold +$ss=ON > sgt ~cat 0:7,5:1,10:1,15:1,20:1,30:1,50:1,100:1 + +# sine_tolerance +$ss=ON > st ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5:15,5.0:50,5.5:10,6.0:30,7.0:20 + +# unused_predicate_definition_removal +> updr ~cat on:16,off:1 + # SATURATION # saturation algorithm From de779d21d67a23da7ba7f6af1692e6de3f2dd9e1 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Sat, 3 Jun 2023 21:36:30 +0200 Subject: [PATCH 111/210] allow for negation in rule conditions --- Shell/Options.cpp | 10 ++++++++-- samplerEx.txt | 28 +++++++++++++++++++--------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index a0d65fcbbc..828bc84e58 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -3332,8 +3332,14 @@ void Options::trySamplingStrategy() if (pair.size() != 2) { USER_ERROR("Sampling file parse error -- invalid equation: "+equation); } - vstring storedVal = strategySamplingLookup(pair[0],fakes); - if (storedVal != pair[1]) { + bool negated = false; + vstring optName = pair[0]; + if (optName.back() == '!') { + negated = true; + optName.pop_back(); + } + vstring storedVal = strategySamplingLookup(optName,fakes); + if ((storedVal != pair[1]) != negated) { fireRule = false; break; } diff --git a/samplerEx.txt b/samplerEx.txt index e4d23b04c8..61944b64e6 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -4,10 +4,9 @@ > bce ~cat off:5,on:1 # equality_proxy -> $ep ~cat N:7,Y:1 -$ep=Y > ep ~cat RST:2,R:3,RSTC:2,RS:3 +> ep ~cat off:70,RST:2,R:3,RSTC:2,RS:3 # mono_ep -$ep=Y > mep ~cat on:10,off:1 +ep!=off > mep ~cat on:10,off:1 # equality_resolution_with_deletion > erd ~cat on:10,off:1 @@ -39,17 +38,16 @@ $nm=NZ > nm ~sgd 0.07,2 > sos ~cat off:80,on:17,all:10 # sine_selection -> $ss ~cat OFF:1182,ON:527 -$ss=ON > ss ~cat included:135,axioms:392 +> ss ~cat off:1182,included:135,axioms:392 # sine_depth -$ss=ON > sd ~cat 0:45,1:13,2:12,3:5,4:4,5:4,7:3,10:2,12:1,15:1 +ss!=off > sd ~cat 0:45,1:13,2:12,3:5,4:4,5:4,7:3,10:2,12:1,15:1 # sine_generality_threshold -$ss=ON > sgt ~cat 0:7,5:1,10:1,15:1,20:1,30:1,50:1,100:1 +ss!=off > sgt ~cat 0:7,5:1,10:1,15:1,20:1,30:1,50:1,100:1 # sine_tolerance -$ss=ON > st ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5:15,5.0:50,5.5:10,6.0:30,7.0:20 +ss!=off > st ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5:15,5.0:50,5.5:10,6.0:30,7.0:20 # unused_predicate_definition_removal > updr ~cat on:16,off:1 @@ -103,9 +101,17 @@ to=kbo > kws ~cat const:50,inv_arity_squared:6,precedence:28,arity_squared:1,inv > s2pl ~cat off:50,on:2,no:3 # AVATAR - > av ~cat on:15,off:4 +# avatar_add_complementary +av=on > aac ~cat none:147,ground:600 + +# avatar_buffered_solver +av=on > abs ~cat on:63,off:300 + +# avatar_congruence_closure +av=on > acc ~cat off:600,model:24,on:58 + @@ -113,7 +119,11 @@ to=kbo > kws ~cat const:50,inv_arity_squared:6,precedence:28,arity_squared:1,inv +# nonliterals_in_clause_weight +av=on > nicw ~cat off:600,on:76 +# split_at_activation +av=on > sac ~cat off:3,on:1 # TODO: consider enabling this for vampire_z3 compiles! # av=on > sas ~cat minisat:10,z3:1 From feceb4442a42ee451bb1441a163a56c2e0d5351e Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 5 Jun 2023 09:43:41 +0200 Subject: [PATCH 112/210] uniform float sampling and some avatar stuff --- Shell/Options.cpp | 18 +++++++++++++++++- samplerEx.txt | 25 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 828bc84e58..17c0a7452e 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -2201,7 +2201,7 @@ void Options::init() "but not introducing new splits anymore. This fights the theoretical possibility of AVATAR's dynamic incompletness.)"; _lookup.insert(&_splittingAvatimer); _splittingAvatimer.tag(OptionTag::AVATAR); - _splittingAvatimer.addConstraint(greaterThan(0.0f)); //if you want to stop splitting right-away, just turn AVATAR off + _splittingAvatimer.addConstraint(greaterThanEq(0.0f)); //if you want to stop splitting right-away, just turn AVATAR off _splittingAvatimer.addConstraint(smallerThanEq(1.0f)); _splittingAvatimer.onlyUsefulWith(_splitting.is(equal(true))); _splittingAvatimer.setRandomChoices({"0.0","0.5","0.7","0.9"}); @@ -3449,6 +3449,22 @@ void Options::trySamplingStrategy() int nval = offset+dis(rng); strategySamplingAssign(optname,Int::toString(nval),fakes); + pieces.reset(); + } else if (sampler == "~uf") { + StringUtils::splitStr(args.c_str(),',',pieces); + StringUtils::dropEmpty(pieces); + + if (pieces.size() != 2) { + USER_ERROR("Sampling file parse error -- ~uf sampler expect exatly two comma-separated arguments but got: "+args); + } + float low,high; + if (!Int::stringToFloat(pieces[0].c_str(),low) || !Int::stringToFloat(pieces[1].c_str(),high)) { + USER_ERROR("Sampling file parse error -- can't convert one of ~uf sampler arguments to float: "+args); + } + std::uniform_real_distribution dis(low,high); + float raw = dis(rng); + strategySamplingAssign(optname,Int::toString(raw),fakes); + pieces.reset(); } else { USER_ERROR("Sampling file parse error -- unrecognized sampler: " + sampler); diff --git a/samplerEx.txt b/samplerEx.txt index 61944b64e6..1e9fb9f566 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -112,11 +112,36 @@ av=on > abs ~cat on:63,off:300 # avatar_congruence_closure av=on > acc ~cat off:600,model:24,on:58 +# cc_unsat_cores +acc!=off > ccuc ~cat first:1,small_ones:1,all:3 +# avatar_minimize_model +av=on acc=model > amm ~cat all:600,off:69 +av=on acc!=model > amm ~cat all:600,sco:32,off:69 +# avatar_eager_removal +av=on amm=all > aer ~cat on:300,off:1 +# avatar_delete_deactivated +av=on > add ~cat on:300,large:55,off:8 +# avatar_fast_restart +av=on > afr ~cat off:10,on:1 +# avatar_literal_polarity_advice +av=on > alpa ~cat none:300,false:13,true:6,random:4 + +# avatar_nonsplittable_components +av=on > anc ~cat known:300,all_dependent:38,all:45,none:48 + +# avatar_turn_off_time_frac +av=on > atotf ~cat 1.0:10,0.5:1 +# careful that 1.0 becomes "1" by the ->toFloat->toStr internal transformation +atotf!=1 > atotf ~uf 0.0,0.5 + + + +# avatar_flush_quotient # nonliterals_in_clause_weight From 2db6412e3ce7b312ff3b5053ff2f0287a0661140 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 5 Jun 2023 10:34:12 +0200 Subject: [PATCH 113/210] _splittingFlushQuotient only makes sense with non-zero _splittingFlushPeriod --- Shell/Options.cpp | 2 +- samplerEx.txt | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 17c0a7452e..ccfe0d13bb 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -2192,7 +2192,7 @@ void Options::init() _lookup.insert(&_splittingFlushQuotient); _splittingFlushQuotient.tag(OptionTag::AVATAR); _splittingFlushQuotient.addConstraint(greaterThanEq(1.0f)); - _splittingFlushQuotient.onlyUsefulWith(_splitting.is(equal(true))); + _splittingFlushQuotient.onlyUsefulWith(_splittingFlushPeriod.is(notEqual((unsigned)0))); _splittingFlushQuotient.setRandomChoices({"1.0","1.1","1.2","1.4","2.0"}); _splittingAvatimer = FloatOptionValue("avatar_turn_off_time_frac","atotf",1.0); diff --git a/samplerEx.txt b/samplerEx.txt index 1e9fb9f566..3391cb05d4 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -139,10 +139,12 @@ av=on > atotf ~cat 1.0:10,0.5:1 # careful that 1.0 becomes "1" by the ->toFloat->toStr internal transformation atotf!=1 > atotf ~uf 0.0,0.5 - +# avatar_flush_period +av=on > afp ~cat 0:15,1:1 +afp!=0 > afp ~cat 1:1,10:1,50:1,300:1,1000:1,2000:1,4000:1,10000:1,40000:1,100000:1,1000000:1 # avatar_flush_quotient - +afp!=0 > afq ~uf 1.0,3.0 # nonliterals_in_clause_weight av=on > nicw ~cat off:600,on:76 @@ -153,6 +155,10 @@ av=on > sac ~cat off:3,on:1 # TODO: consider enabling this for vampire_z3 compiles! # av=on > sas ~cat minisat:10,z3:1 +# avatar_split_queue +av=on > avsq ~cat off:5,on:1 + + # GLOBAL SUBSUMPTION (only after AVATAR -- careful of dependencies!) > gs ~cat off:5,on:1 @@ -169,7 +175,7 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 -# SPLIT QUEUES +# OTHER SPLIT QUEUES (the avatar one done above) From 5502f5bfdd4d7ea9f6af30eb47ba4709f62f1cd7 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 5 Jun 2023 12:19:56 +0200 Subject: [PATCH 114/210] need a different separator for ~u2r, and finished avatar --- Shell/Options.cpp | 4 ++-- samplerEx.txt | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index ccfe0d13bb..2df7f2cd04 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -3412,11 +3412,11 @@ void Options::trySamplingStrategy() strategySamplingAssign(optname,value,fakes); } else if (sampler == "~u2r") { - StringUtils::splitStr(args.c_str(),',',pieces); + StringUtils::splitStr(args.c_str(),';',pieces); StringUtils::dropEmpty(pieces); if (pieces.size() != 3) { - USER_ERROR("Sampling file parse error -- ~u2r sampler expect exatly three comma-separated arguments but got: "+args); + USER_ERROR("Sampling file parse error -- ~u2r sampler expect exatly three simecolon-separated arguments but got: "+args); } if (pieces[2].length() != 1) { USER_ERROR("Sampling file parse error -- the third argument of the ~u2r sampler needs to be a single character and not: "+pieces[2]); diff --git a/samplerEx.txt b/samplerEx.txt index 3391cb05d4..d78146d90e 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -63,7 +63,7 @@ $s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:300,11:131,20:11,21:66,22:11,30:6, $s_pos=N > s ~cat -1:31,-2:52,-3:21,-4:22,-10:300,-11:131,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50,-1002:141,-1003:14,-1004:23,-1010:145,-1011:357,-1666:50 # age/weight ratio -> awr ~u2r -10,4,: +> awr ~u2r -10;4;: # INFERENCES @@ -158,6 +158,14 @@ av=on > sac ~cat off:3,on:1 # avatar_split_queue av=on > avsq ~cat off:5,on:1 +# avatar_split_queue_layered_arrangement +avsq=on > avsql ~cat off:4,on:1 + +# avatar_split_queue_cutoffs +avsq=on > avsqc ~cat 0:80,1:30,2:20,3:20,4:10,5:5 + +# avatar_split_queue_ratios +avsq=on > avsqr ~u2r -5;3;, # GLOBAL SUBSUMPTION (only after AVATAR -- careful of dependencies!) From 7fc82eedfbbb349ccd0062fe55ba9c49b9faf6a4 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 5 Jun 2023 16:53:29 +0200 Subject: [PATCH 115/210] added ~ui sampler --- Shell/Options.cpp | 26 ++++++-- samplerEx.txt | 147 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 158 insertions(+), 15 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 2df7f2cd04..6b9a530ce5 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1158,8 +1158,8 @@ void Options::init() _lrsEstimateCorrectionCoef.tag(OptionTag::SATURATION); _lrsEstimateCorrectionCoef.addConstraint(greaterThan(0.0f)); _lrsEstimateCorrectionCoef.onlyUsefulWith(_saturationAlgorithm.is(equal(SaturationAlgorithm::LRS))); - _lrsEstimateCorrectionCoef.setRandomChoices({"1.0","1.1","1.2","0.9","0.8"}); - + _lrsEstimateCorrectionCoef.setRandomChoices({"1.0","1.1","1.2","0.9","0.8"}); + //*********************** Inferences *********************** #if VZ3 @@ -3416,7 +3416,7 @@ void Options::trySamplingStrategy() StringUtils::dropEmpty(pieces); if (pieces.size() != 3) { - USER_ERROR("Sampling file parse error -- ~u2r sampler expect exatly three simecolon-separated arguments but got: "+args); + USER_ERROR("Sampling file parse error -- ~u2r sampler expects exatly three simecolon-separated arguments but got: "+args); } if (pieces[2].length() != 1) { USER_ERROR("Sampling file parse error -- the third argument of the ~u2r sampler needs to be a single character and not: "+pieces[2]); @@ -3438,7 +3438,7 @@ void Options::trySamplingStrategy() StringUtils::dropEmpty(pieces); if (pieces.size() != 2) { - USER_ERROR("Sampling file parse error -- ~sgd sampler expect exatly two comma-separated arguments but got: "+args); + USER_ERROR("Sampling file parse error -- ~sgd sampler expects exatly two comma-separated arguments but got: "+args); } double prob; int offset; @@ -3455,7 +3455,7 @@ void Options::trySamplingStrategy() StringUtils::dropEmpty(pieces); if (pieces.size() != 2) { - USER_ERROR("Sampling file parse error -- ~uf sampler expect exatly two comma-separated arguments but got: "+args); + USER_ERROR("Sampling file parse error -- ~uf sampler expects exatly two comma-separated arguments but got: "+args); } float low,high; if (!Int::stringToFloat(pieces[0].c_str(),low) || !Int::stringToFloat(pieces[1].c_str(),high)) { @@ -3465,6 +3465,22 @@ void Options::trySamplingStrategy() float raw = dis(rng); strategySamplingAssign(optname,Int::toString(raw),fakes); + pieces.reset(); + } else if (sampler == "~ui") { + StringUtils::splitStr(args.c_str(),',',pieces); + StringUtils::dropEmpty(pieces); + + if (pieces.size() != 2) { + USER_ERROR("Sampling file parse error -- ~ui sampler expects exatly two comma-separated arguments but got: "+args); + } + int low,high; + if (!Int::stringToInt(pieces[0].c_str(),low) || !Int::stringToInt(pieces[1].c_str(),high)) { + USER_ERROR("Sampling file parse error -- can't convert one of ~ui sampler arguments to integer: "+args); + } + std::uniform_int_distribution dis(low,high); + int raw = dis(rng); + strategySamplingAssign(optname,Int::toString(raw),fakes); + pieces.reset(); } else { USER_ERROR("Sampling file parse error -- unrecognized sampler: " + sampler); diff --git a/samplerEx.txt b/samplerEx.txt index d78146d90e..7bd809c344 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -62,9 +62,56 @@ ss!=off > st ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5: $s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:300,11:131,20:11,21:66,22:11,30:6,31:14,32:4,33:10,34:3,35:8,666:50,1002:141,1003:14,1004:23,1010:145,1011:357,1666:50 $s_pos=N > s ~cat -1:31,-2:52,-3:21,-4:22,-10:300,-11:131,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50,-1002:141,-1003:14,-1004:23,-1010:145,-1011:357,-1666:50 +# lookahaed_delay +> $ls ~cat off:1 +s=11 > $ls ~cat on:1 +s=-11 > $ls ~cat on:1 +s=1011 > $ls ~cat on:1 +s=-1011 > $ls ~cat on:1 + +$ls=on > lsd ~cat 0:20,1:1,5:1,10:1,20:1,50:1,100:1 + # age/weight ratio > awr ~u2r -10;4;: +# random_awr +> rawr ~cat on:4,off:1 + +# lrs_weight_limit_only +sa=lrs > lwlo ~cat off:5,on:1 + +# lrs_estimate_correction_coef +sa=lrs > lecc ~cat 1:10,666:1 +lecc!=1 > lecc ~uf 0.5,2.0 + +# age_weight_ratio_shape +> awrs ~cat constant:8,decay:1,converge:1 + +# age_weight_ratio_shape_frequency +awrs!=constant > awrsf ~ui 0,500 + +# nongoal_weight_coefficient +> nwc ~cat 1:2,2:1 +nwc!=1 > nwc ~ui 2,15 + +# restrict_nwc_to_goal_constants +nwc!=1 > rnwc ~cat off:5,on:1 + +# literal_maximality_aftercheck +> lma ~cat off:500,on:83 + +# POSITIVE LITERAL SPLIT QUEUE +> plsq ~cat off:4,on:1 + +# positive_literal_split_queue_layered_arrangement +plsq=on > plsql ~cat on:66,off:162 + +# positive_literal_split_queue_cutoffs +plsq=on > plsqc ~cat 0:117,1:92,2:19,3:5,4:1 + +# positive_literal_split_queue_ratios +plsq=on > plsqr ~u2r -5;7;, + # INFERENCES # superposition (don't turn this off at home!) @@ -76,8 +123,59 @@ sup=on > sims ~cat on:50,off:1 # superposition_from_variables sup=on > sfv ~cat on:38,off:1 +# forward_subsumption +> fs ~cat on:500,off:31 + +# forward_subsumption_resolution +fs=on > fsr ~cat on:500,off:193 + +# forward_subsumption_demodulation +> fsd ~cat off:500,on:90 + +# forward_subsumption_demodulation_max_matches +fsd=on > fsdmm ~cat 0:10,1:3,2:2,3:1 + +# backward_demodulation +> bd ~cat all:500,off:245,preordered:91 + +# backward_subsumption +fs!=off > bs ~cat off::500,unit_only:74,on:64 + +# backward_subsumption_resolution +> bsr ~cat off:500,unit_only:118,on:75 + +# backward_subsumption_demodulation +> bsd ~cat off:500,on:74 + +# backward_subsumption_demodulation_max_matches +bsd=on > bsdmm ~cat 0:10,1:3,2:2,3:1 + +# binary_resolution +> br ~cat on:8,off:1 + +# condensation +> cond ~cat off:500,on:89,fast:61 + +# demodulation_redundancy_check +> drc ~cat encompass:500,on:500,off:354 + +# equational_tautology_removal +> etr ~cat off:500,on:30 +# extensionality_resolution +> er ~cat off:500,known:25,filter:26 +# fool_paramodulation (TODO: out for Ahmed for now) +# > foolp ~cat off:10,on:1 + +# forward_demodulation +> fd ~cat all:500,off:41,preordered:168 + +# forward_literal_rewriting +> flr ~cat off:8,on:1 + +# function_definition_introduction +> fdi ~cat 0:100,2:1,4:1,8:1,16:1,32:1,64:1,128:1,256:1,512:1,1024:1 # inner_rewriting > irw ~cat off:165,on:6 @@ -85,6 +183,23 @@ sup=on > sfv ~cat on:38,off:1 # unit_resulting_resolution (TODO: out for Ahmed for now) # > urr ~cat off:1200,ec_only:162,on:340 +# SINE LEVELS and shit + +# sine_to_age +> s2a ~cat off:2,on:1 + +# sine_level_split_queue +> slsq ~cat off:5,on:1 + +# sine_level_split_queue_layered_arrangement +slsq=on > slsql ~cat on:1,off:1 + +# sine_level_split_queue_cutoffs +slsq=on > slsqc ~cat 0:10,1:10,2:6,3:3,4:1 + +# sine_level_split_queue_ratios +slsq=on > slsqr ~u2r -5;2;, + # ORDERING # term_ordering @@ -98,8 +213,28 @@ sup=on > sfv ~cat on:38,off:1 to=kbo > kmz ~cat off:200,on:1 to=kbo > kws ~cat const:50,inv_arity_squared:6,precedence:28,arity_squared:1,inv_arity:5,inv_frequency:8,frequency:2 +# literal_comparison_mode +> lcm ~cat standard:500,reverse:66,predicate:51 + +# sine_to_pred_levels > s2pl ~cat off:50,on:2,no:3 +# SINE LEVELS - configure (must come after sine_to_age & slsq & s2pl) + +# set $s2a as the disjunction: s2a=on | slsq=on | s2pl!=off +> $s2a ~cat off:1 +s2a=on > $s2a ~cat on:1 +slsq=on > $s2a ~cat on:1 +s2pl!=off > $s2a ~cat on:1 + +# now configure (stealing the values from sine proper, which is not ideal, but should do) + +# sine_to_age_generality_threshold +$s2a=on > s2agt ~cat 0:7,5:1,10:1,15:1,20:1,30:1,50:1,100:1 + +# sine_to_age_tolerance +$s2a=on > s2at ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5:15,5.0:50,5.5:10,6.0:30,7.0:20 + # AVATAR > av ~cat on:15,off:4 @@ -155,6 +290,8 @@ av=on > sac ~cat off:3,on:1 # TODO: consider enabling this for vampire_z3 compiles! # av=on > sas ~cat minisat:10,z3:1 +# AVATAR SPLIT QUEUE + # avatar_split_queue av=on > avsq ~cat off:5,on:1 @@ -180,16 +317,6 @@ gs=on > gsssp ~cat propagation_only:20,full:1 # global_subsumption_avatar_assumptions gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 - - - -# OTHER SPLIT QUEUES (the avatar one done above) - - - - - - # MISC > uhcvi ~cat off:1,on:1 \ No newline at end of file From 086fdce8b4c77a84836fe1ce9f315f8ac0dad9ca Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 5 Jun 2023 17:19:10 +0200 Subject: [PATCH 116/210] added HO stuff uniformly --- samplerEx.txt | 61 ++++++++++++++++++++++++++++++++++++++++++++++----- z3 | 2 +- 2 files changed, 57 insertions(+), 6 deletions(-) diff --git a/samplerEx.txt b/samplerEx.txt index 7bd809c344..d66ef02a6f 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -156,8 +156,8 @@ bsd=on > bsdmm ~cat 0:10,1:3,2:2,3:1 # condensation > cond ~cat off:500,on:89,fast:61 -# demodulation_redundancy_check -> drc ~cat encompass:500,on:500,off:354 +# demodulation_redundancy_check (not implemented in Ahmed's branch) +# > drc ~cat encompass:500,on:500,off:354 # equational_tautology_removal > etr ~cat off:500,on:30 @@ -174,8 +174,8 @@ bsd=on > bsdmm ~cat 0:10,1:3,2:2,3:1 # forward_literal_rewriting > flr ~cat off:8,on:1 -# function_definition_introduction -> fdi ~cat 0:100,2:1,4:1,8:1,16:1,32:1,64:1,128:1,256:1,512:1,1024:1 +# function_definition_introduction (not implemented in Ahmed's branch) +# > fdi ~cat 0:100,2:1,4:1,8:1,16:1,32:1,64:1,128:1,256:1,512:1,1024:1 # inner_rewriting > irw ~cat off:165,on:6 @@ -319,4 +319,55 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 # MISC -> uhcvi ~cat off:1,on:1 \ No newline at end of file +> uhcvi ~cat off:1,on:1 + +# HIGHER ORDER STUFF + +# add_proxy_axioms +> apa ~cat off:1,on:1 + +# bool_eq_trick +> bet ~cat off:1,on:1 + +# bool_inst +> bi ~cat off:1,abs:1,abs_sub:1 + +# cases +> c ~cat off:1,on:1 + +# cases_simp +> cs ~cat off:1,on:1 + +# choice_ax +> cha ~cat off:1,on:1 + +# choice_reasoning +> chr ~cat off:1,on:1 + +# cnf_on_the_fly +> cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1 + +# complex_bool_reasoning +> cbe ~cat off:1,on:1 + +# equality_to_equiv +> e2e ~cat off:1,on:1 + +# func_ext +> fe ~cat off:1,axiom:1,abstraction:1 + +# hol_unif_depth +> hud ~ui 0,10 + +# lam_free_hol +> lfh ~cat off:1,on:1 + +# new_taut_del +> ntd ~cat off:1,on:1 + +# pos_ext +> pe ~cat off:1,on:1 + +# prim_inst_set +> piset ~cat all:1,all_but_not_eq:1,not:1,small_set:1,pragmatic:1,and:1,or:1,equals:1,pi_sigma:1 + diff --git a/z3 b/z3 index f03d756e08..6ed071b444 160000 --- a/z3 +++ b/z3 @@ -1 +1 @@ -Subproject commit f03d756e086f81f2596157241e0decfb1c982299 +Subproject commit 6ed071b44407cf6623b8d3c0dceb2a8fb7040cee From b8f6b0f1faaa532115c6a33a8f909a355fe020b4 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 5 Jun 2023 18:09:37 +0200 Subject: [PATCH 117/210] sampler file update --- samplerEx.txt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/samplerEx.txt b/samplerEx.txt index d66ef02a6f..91a548a36b 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -3,10 +3,10 @@ # blocked_clause_elimination > bce ~cat off:5,on:1 -# equality_proxy -> ep ~cat off:70,RST:2,R:3,RSTC:2,RS:3 +# equality_proxy (no ep for Ahmed) +#> ep ~cat off:70,RST:2,R:3,RSTC:2,RS:3 # mono_ep -ep!=off > mep ~cat on:10,off:1 +# ep!=off > mep ~cat on:10,off:1 # equality_resolution_with_deletion > erd ~cat on:10,off:1 @@ -127,7 +127,8 @@ sup=on > sfv ~cat on:38,off:1 > fs ~cat on:500,off:31 # forward_subsumption_resolution -fs=on > fsr ~cat on:500,off:193 +fs=off > fsr ~cat off:1 +fs=on > fsr ~cat on:500,off:193 # forward_subsumption_demodulation > fsd ~cat off:500,on:90 @@ -366,7 +367,7 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 > ntd ~cat off:1,on:1 # pos_ext -> pe ~cat off:1,on:1 +func_ext!=axiom > pe ~cat off:1,on:1 # prim_inst_set > piset ~cat all:1,all_but_not_eq:1,not:1,small_set:1,pragmatic:1,and:1,or:1,equals:1,pi_sigma:1 From 58121d4ac32e80ad3deb8b00b2565fd9f0e74026 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 6 Jun 2023 13:04:15 +0200 Subject: [PATCH 118/210] the twee phase should have a twee string --- Shell/Statistics.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Shell/Statistics.cpp b/Shell/Statistics.cpp index e15c719d2a..c3e0df228e 100644 --- a/Shell/Statistics.cpp +++ b/Shell/Statistics.cpp @@ -528,6 +528,8 @@ const char* Statistics::phaseToString(ExecutionPhase p) return "Unused predicate definition removal"; case BLOCKED_CLAUSE_ELIMINATION: return "Blocked clause elimination"; + case TWEE: + return "Twee Goal Transformation"; case PREPROCESS_2: return "Preprocessing 2"; case NEW_CNF: From 609d7683de8acd0cb0cfe30a5520e259399a593f Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 6 Jun 2023 13:52:11 +0200 Subject: [PATCH 119/210] only sample cnfonf conditioned on apa=off --- samplerEx.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samplerEx.txt b/samplerEx.txt index 91a548a36b..0db802d958 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -21,7 +21,7 @@ > ile ~cat off:10,on:1 # naming -> $nm ~cat Z:1,NZ:5 +> $nm ~cat Z:1,NZ:5 $nm=Z > nm ~cat 0:1 $nm=NZ > nm ~sgd 0.07,2 @@ -346,7 +346,7 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 > chr ~cat off:1,on:1 # cnf_on_the_fly -> cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1 +apa=off > cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1 # complex_bool_reasoning > cbe ~cat off:1,on:1 From bf0da4efc13b14b3a09d1f250eca3746269d2386 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 6 Jun 2023 14:24:42 +0100 Subject: [PATCH 120/210] bug fixes and adding warnings when running with options incompatible with higher-order --- .../BackwardSubsumptionDemodulation.cpp | 37 +++++++++++-------- .../BackwardSubsumptionDemodulation.hpp | 1 + Inferences/BoolInstantiation.cpp | 1 - Inferences/CNFOnTheFly.cpp | 5 ++- Inferences/ForwardSubsumptionDemodulation.cpp | 26 +++++++------ Inferences/ForwardSubsumptionDemodulation.hpp | 1 + Kernel/LiteralSelector.cpp | 7 ++++ Kernel/LookaheadLiteralSelector.cpp | 2 +- Kernel/Ordering.cpp | 7 +++- Saturation/SaturationAlgorithm.cpp | 33 +++++++++++++---- Shell/Options.cpp | 21 ++++++++--- Shell/Options.hpp | 7 +++- Shell/Preprocess.cpp | 8 ++++ 13 files changed, 110 insertions(+), 46 deletions(-) diff --git a/Inferences/BackwardSubsumptionDemodulation.cpp b/Inferences/BackwardSubsumptionDemodulation.cpp index 50f08c6f38..6a0bf76ab5 100644 --- a/Inferences/BackwardSubsumptionDemodulation.cpp +++ b/Inferences/BackwardSubsumptionDemodulation.cpp @@ -56,13 +56,14 @@ using namespace Indexing; using namespace Saturation; -BackwardSubsumptionDemodulation::BackwardSubsumptionDemodulation() +template +BackwardSubsumptionDemodulation::BackwardSubsumptionDemodulation() : _preorderedOnly{false} , _allowIncompleteness{false} { } - -void BackwardSubsumptionDemodulation::attach(SaturationAlgorithm* salg) +template +void BackwardSubsumptionDemodulation::attach(SaturationAlgorithm* salg) { CALL("BackwardSubsumptionDemodulation::attach"); BackwardSimplificationEngine::attach(salg); @@ -70,8 +71,8 @@ void BackwardSubsumptionDemodulation::attach(SaturationAlgorithm* salg) _index.request(salg->getIndexManager(), BACKWARD_SUBSUMPTION_SUBST_TREE); } - -void BackwardSubsumptionDemodulation::detach() +template +void BackwardSubsumptionDemodulation::detach() { CALL("BackwardSubsumptionDemodulation::detach"); _index.release(); @@ -111,8 +112,8 @@ STLIterator getSTLIterator(Iterator begin, Iterator end) return STLIterator(begin, end); } - -void BackwardSubsumptionDemodulation::perform(Clause* sideCl, BwSimplificationRecordIterator& simplifications) +template +void BackwardSubsumptionDemodulation::perform(Clause* sideCl, BwSimplificationRecordIterator& simplifications) { CALL("BackwardSubsumptionDemodulation::perform"); ASSERT_VALID(*sideCl); @@ -171,7 +172,8 @@ void BackwardSubsumptionDemodulation::perform(Clause* sideCl, BwSimplificationRe } // perform -void BackwardSubsumptionDemodulation::performWithQueryLit(Clause* sideCl, Literal* candidateQueryLit, vvector& simplifications) +template +void BackwardSubsumptionDemodulation::performWithQueryLit(Clause* sideCl, Literal* candidateQueryLit, vvector& simplifications) { // sideCl // vvvvvvvvvv @@ -300,7 +302,8 @@ void BackwardSubsumptionDemodulation::performWithQueryLit(Clause* sideCl, Litera /// Handles the matching part. /// Returns true iff the main premise has been simplified. -bool BackwardSubsumptionDemodulation::simplifyCandidate(Clause* sideCl, Clause* mainCl, vvector& simplifications) +template +bool BackwardSubsumptionDemodulation::simplifyCandidate(Clause* sideCl, Clause* mainCl, vvector& simplifications) { static vvector alts; @@ -394,7 +397,8 @@ bool BackwardSubsumptionDemodulation::simplifyCandidate(Clause* sideCl, Clause* /// Handles the rewriting part. /// Returns true iff the main premise has been simplified. -bool BackwardSubsumptionDemodulation::rewriteCandidate(Clause* sideCl, Clause* mainCl, MLMatcherSD const& matcher, Clause*& replacement) +template +bool BackwardSubsumptionDemodulation::rewriteCandidate(Clause* sideCl, Clause* mainCl, MLMatcherSD const& matcher, Clause*& replacement) { Ordering const& ordering = _salg->getOrdering(); @@ -493,12 +497,7 @@ bool BackwardSubsumptionDemodulation::rewriteCandidate(Clause* sideCl, Clause* m continue; } - // TODO higher-order support not yet implemented; see forward demodulation - // (maybe it's enough to just use the different iterator) -#if VHOL - ASS(!env.property->higherOrder()); -#endif - NonVariableNonTypeIterator nvi(dlit); + SubtermIterator nvi(dlit); while (nvi.hasNext()) { TermList lhsS = TermList(nvi.next()); // named 'lhsS' because it will be matched against 'lhs' @@ -721,5 +720,11 @@ bool BackwardSubsumptionDemodulation::rewriteCandidate(Clause* sideCl, Clause* m return false; } // rewriteCandidate +#if VHOL +template class BackwardSubsumptionDemodulation; +#endif +template class BackwardSubsumptionDemodulation; } + + diff --git a/Inferences/BackwardSubsumptionDemodulation.hpp b/Inferences/BackwardSubsumptionDemodulation.hpp index 0d79e359a2..a742798754 100644 --- a/Inferences/BackwardSubsumptionDemodulation.hpp +++ b/Inferences/BackwardSubsumptionDemodulation.hpp @@ -45,6 +45,7 @@ using namespace Kernel; * * This class implements the backward direction. */ +template class BackwardSubsumptionDemodulation : public BackwardSimplificationEngine { diff --git a/Inferences/BoolInstantiation.cpp b/Inferences/BoolInstantiation.cpp index 7f4bc3b37b..fd46ad8dcb 100644 --- a/Inferences/BoolInstantiation.cpp +++ b/Inferences/BoolInstantiation.cpp @@ -60,7 +60,6 @@ void BoolInstantiation::detach() CALL("BoolInstantiation::detach"); _boolInstFormIndex = 0; - cout << "RELEASING" << endl; _salg->getIndexManager()->release(BOOL_INST_FORMULA_INDEX); GeneratingInferenceEngine::detach(); } diff --git a/Inferences/CNFOnTheFly.cpp b/Inferences/CNFOnTheFly.cpp index a16d1497c1..ee45e64f78 100644 --- a/Inferences/CNFOnTheFly.cpp +++ b/Inferences/CNFOnTheFly.cpp @@ -203,7 +203,9 @@ ClauseIterator produceClauses(Clause* c, bool generating, (prox == Signature::SIGMA && !positive)){ rule = convert(Signature::PI); newTerm = piRemoval(args[0], c, srt); - if(boolInstFormIndex){ + // the isVar() check is defensive programming + // It shouldn't occur in normal running + if(boolInstFormIndex && !args[0].isVar()){ ASS(boolInstInstIndex); auto instances = boolInstInstIndex->getUnifications(TypedTermList(srt.domain(),AtomicSort::superSort()), true); while(instances.hasNext()){ @@ -490,7 +492,6 @@ void LazyClausification::detach() _salg->getIndexManager()->release(SKOLEMISING_FORMULA_INDEX); if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ - cout << "RELEASING 2" << endl; _salg->getIndexManager()->release(BOOL_INST_FORMULA_INDEX); _salg->getIndexManager()->release(BOOL_INST_INSTANTIATION_INDEX); } diff --git a/Inferences/ForwardSubsumptionDemodulation.cpp b/Inferences/ForwardSubsumptionDemodulation.cpp index 8f75f365d1..ba142ed883 100644 --- a/Inferences/ForwardSubsumptionDemodulation.cpp +++ b/Inferences/ForwardSubsumptionDemodulation.cpp @@ -43,7 +43,8 @@ using namespace Inferences; using namespace Saturation; -void ForwardSubsumptionDemodulation::attach(SaturationAlgorithm* salg) +template +void ForwardSubsumptionDemodulation::attach(SaturationAlgorithm* salg) { CALL("ForwardSubsumptionDemodulation::attach"); ForwardSimplificationEngine::attach(salg); @@ -58,16 +59,16 @@ void ForwardSubsumptionDemodulation::attach(SaturationAlgorithm* salg) } } - -void ForwardSubsumptionDemodulation::detach() +template +void ForwardSubsumptionDemodulation::detach() { CALL("ForwardSubsumptionDemodulation::detach"); _index.release(); ForwardSimplificationEngine::detach(); } - -bool ForwardSubsumptionDemodulation::perform(Clause* cl, Clause*& replacement, ClauseIterator& premises) +template +bool ForwardSubsumptionDemodulation::perform(Clause* cl, Clause*& replacement, ClauseIterator& premises) { CALL("ForwardSubsumptionDemodulation::perform"); @@ -415,12 +416,7 @@ bool ForwardSubsumptionDemodulation::perform(Clause* cl, Clause*& replacement, C continue; } - // TODO higher-order support not yet implemented; see forward demodulation - // (maybe it's enough to just use the different iterator) -#if VHOL - ASS(!env.property->higherOrder()); -#endif - NonVariableNonTypeIterator nvi(dlit); + SubtermIterator nvi(dlit); while (nvi.hasNext()) { TermList lhsS = TermList(nvi.next()); // named 'lhsS' because it will be matched against 'lhs' @@ -689,3 +685,11 @@ bool ForwardSubsumptionDemodulation::perform(Clause* cl, Clause*& replacement, C return false; } + +namespace Inferences +{ +#if VHOL + template class ForwardSubsumptionDemodulation; +#endif + template class ForwardSubsumptionDemodulation; +} \ No newline at end of file diff --git a/Inferences/ForwardSubsumptionDemodulation.hpp b/Inferences/ForwardSubsumptionDemodulation.hpp index 7ef26eaaf6..39f53f8c1a 100644 --- a/Inferences/ForwardSubsumptionDemodulation.hpp +++ b/Inferences/ForwardSubsumptionDemodulation.hpp @@ -44,6 +44,7 @@ using namespace Saturation; * * This class implements the forward direction. */ +template class ForwardSubsumptionDemodulation : public ForwardSimplificationEngine { diff --git a/Kernel/LiteralSelector.cpp b/Kernel/LiteralSelector.cpp index 2325c98b67..08d6c3bec9 100644 --- a/Kernel/LiteralSelector.cpp +++ b/Kernel/LiteralSelector.cpp @@ -111,6 +111,13 @@ LiteralSelector* LiteralSelector::getSelector(const Ordering& ordering, const Op int absNum = abs(selectorNumber); +#if VHOL + if(env.property->higherOrder() && (absNum == 11 || absNum == 1011)){ + cout << "WARNING: Look ahead literal selection is not currently compatible with higher-order. Ignoring request to use" << endl; + absNum = 10; // set to some arbitrary hopefully good value + } +#endif + LiteralSelector* res; switch(absNum) { case 0: res = new TotalLiteralSelector(ordering, options); break; diff --git a/Kernel/LookaheadLiteralSelector.cpp b/Kernel/LookaheadLiteralSelector.cpp index e43b74e65e..aca24b946e 100644 --- a/Kernel/LookaheadLiteralSelector.cpp +++ b/Kernel/LookaheadLiteralSelector.cpp @@ -103,7 +103,7 @@ struct LookaheadLiteralSelector::GenIteratorIterator ASS(fsi); nextIt=pvi( getMapAndFlattenIterator( - getMappingIterator(EqHelper::getSubtermIterator(lit, _parent._ord), //TODO update for combinatory sup + getMappingIterator(EqHelper::getSubtermIterator(lit, _parent._ord), [](Term* t) { return TermList(t); }), TermUnificationRetriever(fsi, lit)) ); break; diff --git a/Kernel/Ordering.cpp b/Kernel/Ordering.cpp index 59fa575fa0..6d38fd1249 100644 --- a/Kernel/Ordering.cpp +++ b/Kernel/Ordering.cpp @@ -148,7 +148,12 @@ Ordering* Ordering::create(Problem& prb, const Options& opt) } break; case Options::TermOrdering::LPO: - out = new LPO(prb, opt); + if(prb.hasPolymorphicSym()){ + cout << "WARNING: LPO is currently not compatible with polymorphic problems. Ignoring request to use LPO." << endl; + out = new KBO(prb, opt); + } else { + out = new LPO(prb, opt); + } break; default: ASSERTION_VIOLATION; diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 3ddf2c0c8f..15823ebdf7 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1600,8 +1600,7 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const } } - if(opt.complexBooleanReasoning() && prb.hasBoolVar() && - prb.higherOrder() && !opt.lambdaFreeHol()){ + if(opt.complexBooleanReasoning() && prb.hasBoolVar() && prb.higherOrder()){ gie->addFront(new PrimitiveInstantiation()); //TODO only add in some cases gie->addFront(new ElimLeibniz()); } @@ -1612,7 +1611,8 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if((prb.hasLogicalProxy() || prb.hasBoolVar() || prb.hasFOOL()) && prb.higherOrder() && !prb.quantifiesOverPolymorphicVar()){ // TODO why the last condition???? - if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER){ + if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && + env.options->cnfOnTheFly() != Options::CNFOnTheFly::OFF){ gie->addFront(new LazyClausificationGIE()); } } @@ -1703,7 +1703,8 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const #if VHOL if((prb.hasLogicalProxy() || prb.hasBoolVar() || prb.hasFOOL()) && prb.higherOrder() && !prb.quantifiesOverPolymorphicVar()){ - if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER){ + if(env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && + env.options->cnfOnTheFly() != Options::CNFOnTheFly::OFF){ res->addSimplifierToFront(new LazyClausification()); } } @@ -1737,7 +1738,15 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const // fsd should be performed after forward subsumption, // because every successful forward subsumption will lead to a (useless) match in fsd. if (opt.forwardSubsumptionDemodulation()) { - res->addForwardSimplifierToFront(new ForwardSubsumptionDemodulation(false)); +#if VHOL + if(prb.higherOrder()){ + res->addForwardSimplifierToFront(new ForwardSubsumptionDemodulation(false)); + } else { +#endif + res->addForwardSimplifierToFront(new ForwardSubsumptionDemodulation(false)); +#if VHOL + } +#endif } } if (prb.hasEquality()) { @@ -1795,7 +1804,15 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const } } if (prb.hasEquality() && opt.backwardSubsumptionDemodulation()) { - res->addBackwardSimplifierToFront(new BackwardSubsumptionDemodulation()); +#if VHOL + if(prb.higherOrder()){ + res->addBackwardSimplifierToFront(new BackwardSubsumptionDemodulation()); + } else { +#endif + res->addBackwardSimplifierToFront(new BackwardSubsumptionDemodulation()); +#if VHOL + } +#endif } if (opt.backwardSubsumption() != Options::Subsumption::OFF) { bool byUnitsOnly=opt.backwardSubsumption()==Options::Subsumption::UNIT_ONLY; @@ -1850,9 +1867,11 @@ ImmediateSimplificationEngine* SaturationAlgorithm::createISE(Problem& prb, cons if((prb.hasLogicalProxy() || prb.hasBoolVar() || prb.hasFOOL()) && prb.higherOrder() && !env.options->addProxyAxioms()){ + if(env.options->cnfOnTheFly() == Options::CNFOnTheFly::EAGER){ res->addFrontMany(new EagerClausificationISE()); - } else { + } + if(env.options->iffXorRewriter()){ res->addFront(new IFFXORRewriterISE()); } res->addFront(new BoolSimp()); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 6b9a530ce5..a64bfe84a6 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -512,6 +512,7 @@ void Options::init() "`full` is a generalization, where also non-ground subterms are considered."; _tweeGoalTransformation.tag(OptionTag::PREPROCESSING); _tweeGoalTransformation.setExperimental(); + _tweeGoalTransformation.addProblemConstraint(onlyFirstOrder()); _lookup.insert(&_tweeGoalTransformation); _generalSplitting = BoolOptionValue("general_splitting","gsp",false); @@ -1840,11 +1841,12 @@ void Options::init() "lazy_simp", "lazy_not_gen", "lazy_not_gen_be_off", - "lazy_not_be_gen"}); + "lazy_not_be_gen", + "off"}); _clausificationOnTheFly.description="Various options linked to clausification on the fly"; _lookup.insert(&_clausificationOnTheFly); _clausificationOnTheFly.addProblemConstraint(hasHigherOrder()); - _clausificationOnTheFly.onlyUsefulWith(_addProxyAxioms.is(equal(false))); + _clausificationOnTheFly.addHardConstraint(If(notEqual(CNFOnTheFly::OFF)).then(_addProxyAxioms.is(equal(false)))); _clausificationOnTheFly.tag(OptionTag::HIGHER_ORDER); _piSet = ChoiceOptionValue("prim_inst_set","piset",PISet::PRAGMATIC, @@ -1933,15 +1935,24 @@ void Options::init() " -abs attempt to instantiate such variables with abstractions of literals coming from conjeture.\n" " -abs_sub same as above, but also subterms of clauses derived from conjecture"; _lookup.insert(&_boolInstantiation); - _boolInstantiation.addProblemConstraint(hasHigherOrder()); + _boolInstantiation.addProblemConstraint(hasHigherOrder()); + _boolInstantiation.addHardConstraint(If(notEqual(BoolInstantiation::OFF)).then(_clausificationOnTheFly.is(notEqual(CNFOnTheFly::OFF)))); _boolInstantiation.tag(OptionTag::HIGHER_ORDER); - _lambdaFreeHol = BoolOptionValue("lam_free_hol","lfh",false); + /*_lambdaFreeHol = BoolOptionValue("lam_free_hol","lfh",false); _lambdaFreeHol.description= "Reason about lambda-free hol. See paper by Vukmirovic et al."; _lookup.insert(&_lambdaFreeHol); _lambdaFreeHol.addProblemConstraint(hasHigherOrder()); - _lambdaFreeHol.tag(OptionTag::HIGHER_ORDER); + _lambdaFreeHol.tag(OptionTag::HIGHER_ORDER);*/ + + _iffXorRewriter = BoolOptionValue("iff_xor_rewriter","ixr",true); + _iffXorRewriter.description= + "Rewrites p <=> q = $true to p <=> q and the like. It does this as an immediate simplification."; + _lookup.insert(&_iffXorRewriter); + _iffXorRewriter.addProblemConstraint(hasHigherOrder()); + _iffXorRewriter.tag(OptionTag::HIGHER_ORDER); + /*_complexVarCondition = BoolOptionValue("complex_var_cond","cvc",false); _complexVarCondition.description= diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 9ec8f6d424..8a676e18cc 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -742,7 +742,8 @@ class Options LAZY_SIMP = 2, LAZY_SIMP_NOT_GEN = 3, LAZY_SIMP_NOT_GEN_BOOL_EQ_OFF = 4, - LAZY_SIMP_NOT_GEN_BOOL_EQ_GEN = 5 + LAZY_SIMP_NOT_GEN_BOOL_EQ_GEN = 5, + OFF = 6 }; enum class PISet : unsigned int { @@ -2439,7 +2440,8 @@ bool _hard; bool newTautologyDel() const { return _newTautologyDel.actualValue; } bool positiveExtensionality() const { return _positiveExt.actualValue; } BoolInstantiation booleanInstantiation() const { return _boolInstantiation.actualValue; } - bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } + // bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } + bool iffXorRewriter() const { return _iffXorRewriter.actualValue; } // TODO doesn't do anyhting currently // bool complexVarCondition() const { return _complexVarCondition.actualValue; } HPrinting holPrinting() const { return _holPrinting.actualValue; } @@ -2890,6 +2892,7 @@ bool _hard; BoolOptionValue _positiveExt; ChoiceOptionValue _boolInstantiation; BoolOptionValue _lambdaFreeHol; + BoolOptionValue _iffXorRewriter; // BoolOptionValue _complexVarCondition; ChoiceOptionValue _holPrinting; UnsignedOptionValue _higherOrderUnifDepth; diff --git a/Shell/Preprocess.cpp b/Shell/Preprocess.cpp index 83b00729dc..7e6decaec1 100644 --- a/Shell/Preprocess.cpp +++ b/Shell/Preprocess.cpp @@ -404,12 +404,20 @@ void Preprocess::preprocess(Problem& prb) } if(env.options->tweeGoalTransformation() != Options::TweeGoalTransformation::OFF) { +#if VHOL + if(prb.higherOrder()){ + env.out() << "WARNING: twee goal transformation is currently not compatible with higher-order. Ignoring request to use." << std::endl; + } else { +#endif env.statistics->phase = Statistics::TWEE; if(env.options->showPreprocessing()) env.out() << "twee goal transformation" << std::endl; TweeGoalTransformation twee; twee.apply(prb,(env.options->tweeGoalTransformation() == Options::TweeGoalTransformation::GROUND)); +#if VHOL + } +#endif } if ( From 5322196b7b8ab8bd151a32288ab61c68cfeab497 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 6 Jun 2023 16:02:53 +0200 Subject: [PATCH 121/210] sample better --- samplerEx.txt | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/samplerEx.txt b/samplerEx.txt index 0db802d958..416124ec12 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -31,8 +31,8 @@ $nm=NZ > nm ~sgd 0.07,2 # random_polarities > rp ~cat off:3,on:1 -# twee_goal_transformation -> tgt ~cat off:10,ground:6,full:5 +# twee_goal_transformation (not currently with HO) +# > tgt ~cat off:10,ground:6,full:5 # set_of_support > sos ~cat off:80,on:17,all:10 @@ -57,10 +57,10 @@ ss!=off > st ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5: # saturation algorithm > sa ~cat lrs:600,discount:572,otter:236 -# literal selection +# literal selection #(kicked out looakead selections: 11:131,-11:131,1011:357,-1011:357, not compatible with HO) > $s_pos ~cat Y:4,N:1 -$s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:300,11:131,20:11,21:66,22:11,30:6,31:14,32:4,33:10,34:3,35:8,666:50,1002:141,1003:14,1004:23,1010:145,1011:357,1666:50 -$s_pos=N > s ~cat -1:31,-2:52,-3:21,-4:22,-10:300,-11:131,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50,-1002:141,-1003:14,-1004:23,-1010:145,-1011:357,-1666:50 +$s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:300,20:11,21:66,22:11,30:6,31:14,32:4,33:10,34:3,35:8,666:50,1002:141,1003:14,1004:23,1010:145,1011:357,1666:50 +$s_pos=N > s ~cat -1:31,-2:52,-3:21,-4:22,-10:300,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50,-1002:141,-1003:14,-1004:23,-1010:145,-1666:50 # lookahaed_delay > $ls ~cat off:1 @@ -203,8 +203,8 @@ slsq=on > slsqr ~u2r -5;2;, # ORDERING -# term_ordering -> to ~cat kbo:13,lpo:4 +# term_ordering (lpo not compatible with HO) +# > to ~cat kbo:13,lpo:4 # symbol_precendence > sp ~cat arity:100,const_min:72,frequency:130,const_frequency:49,reverse_frequency:55,reverse_arity:72,weighted_frequency:24,unary_first:28,occurrence:82,unary_frequency:14,const_max:18 @@ -330,9 +330,6 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 # bool_eq_trick > bet ~cat off:1,on:1 -# bool_inst -> bi ~cat off:1,abs:1,abs_sub:1 - # cases > c ~cat off:1,on:1 @@ -346,7 +343,11 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 > chr ~cat off:1,on:1 # cnf_on_the_fly -apa=off > cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1 +apa=on > cnfonf ~cat off:1 +apa=off > cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1,off:1 + +# bool_inst +cnfonf!=off > bi ~cat off:1,abs:1,abs_sub:1 # complex_bool_reasoning > cbe ~cat off:1,on:1 @@ -361,7 +362,10 @@ apa=off > cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen > hud ~ui 0,10 # lam_free_hol -> lfh ~cat off:1,on:1 +# > lfh ~cat off:1,on:1 + +# iff_xor_rewriter +> ixr ~cat off:1,on:1 # new_taut_del > ntd ~cat off:1,on:1 From a509d359b407fcf638f0a32af1e938e72d8c89ec Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 6 Jun 2023 15:49:09 +0100 Subject: [PATCH 122/210] updating comment and fixing bug whereby shuffling didn't handle Lambda terms --- Kernel/Signature.cpp | 2 +- Shell/LambdaConversion.cpp | 4 ++-- Shell/Shuffling.cpp | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Kernel/Signature.cpp b/Kernel/Signature.cpp index 7998f188de..4765d1d1ad 100644 --- a/Kernel/Signature.cpp +++ b/Kernel/Signature.cpp @@ -913,7 +913,7 @@ unsigned Signature::addNameFunction(unsigned arity) { CALL("Signature::addNameFunction"); return addFreshFunction(arity,"sP"); -} // addNamePredicate +} // addNameFunction /** diff --git a/Shell/LambdaConversion.cpp b/Shell/LambdaConversion.cpp index 8a885eeb59..07e49ec4cd 100644 --- a/Shell/LambdaConversion.cpp +++ b/Shell/LambdaConversion.cpp @@ -286,8 +286,8 @@ void LambdaConversion::addChoiceAxiom(Problem& prb) TermList pchoiceT = AH::app(alpha, boolS, p, choiceTApplied); Clause* choiceAx = new(2) Clause(2, NonspecificInference0(UnitInputType::AXIOM,InferenceRule::CHOICE_AXIOM)); - (*choiceAx)[0] = Literal::createEquality(true, px, TermList(Term::foolFalse()), boolS); - (*choiceAx)[1] = Literal::createEquality(true, pchoiceT, TermList(Term::foolTrue()), boolS); + (*choiceAx)[0] = Literal::createEquality(true, px, AH::bottom(), boolS); + (*choiceAx)[1] = Literal::createEquality(true, pchoiceT, AH::top(), boolS); UnitList::push(choiceAx, prb.units()); diff --git a/Shell/Shuffling.cpp b/Shell/Shuffling.cpp index 2892e79874..1f73dd6a34 100644 --- a/Shell/Shuffling.cpp +++ b/Shell/Shuffling.cpp @@ -287,6 +287,11 @@ void Shuffling::shuffleIter(Shufflable sh) { goto tl_updated; break; // I know, unreachable; + case Term::SF_LAMBDA: + tl = TermList(sd->getLambdaExp()); + goto tl_updated; + break; // I know, unreachable; + default: ASSERTION_VIOLATION_REP(tl.toString()); } From fd4d1084eb50c627bf7cfa2605a783c9ace64ff7 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 7 Jun 2023 17:22:07 +0100 Subject: [PATCH 123/210] bug fixing --- Indexing/TermIndex.cpp | 47 +++++++++++++++++++-- Indexing/TermIndex.hpp | 4 +- Indexing/TermIndexingStructure.hpp | 1 + Indexing/TermSubstitutionTree.hpp | 3 ++ Inferences/BoolInstantiation.cpp | 6 +-- Inferences/CNFOnTheFly.cpp | 67 ++++++++++++++++-------------- Inferences/CNFOnTheFly.hpp | 2 - Kernel/RobSubstitution.cpp | 18 ++++---- Kernel/RobSubstitution.hpp | 12 +++++- Kernel/Signature.cpp | 2 + Kernel/Signature.hpp | 5 +++ Kernel/Term.cpp | 17 +++++++- Kernel/Term.hpp | 2 + Parse/TPTP.cpp | 24 ++++++----- Shell/Options.cpp | 1 + Shell/Options.hpp | 7 ++-- Shell/Preprocess.cpp | 20 +++++---- Shell/Shuffling.cpp | 14 ++++--- 18 files changed, 175 insertions(+), 77 deletions(-) diff --git a/Indexing/TermIndex.cpp b/Indexing/TermIndex.cpp index 7ea6e522d5..03b4a0f3a4 100644 --- a/Indexing/TermIndex.cpp +++ b/Indexing/TermIndex.cpp @@ -226,10 +226,51 @@ void SkolemisingFormulaIndex::insertFormula(TermList formula, TermList skolem) _is->insert(TypedTermList(formula.term()), skolem); } -void BoolInstFormulaIndex::insertFormula(TermList sort, TermList formula, Literal* lit, Clause* c) +void BoolInstFormulaIndex::handleClause(Clause* c, bool adding) { - CALL("BoolInstFormulaIndex::insertFormula"); - _is->insert(TypedTermList(sort, AtomicSort::superSort()), formula, lit, c); + CALL("BoolInstFormulaIndex::handleClause"); + + typedef ApplicativeHelper AH; + + static TermStack args; + static TermStack argSorts; + TermList head; + + for(unsigned i = 0; i < c->length(); i++){ + Literal* lit = (*c)[i]; + + TermList lhs = *lit->nthArgument(0); + TermList rhs = *lit->nthArgument(1); + TermList term; + TermList boolVal; + if(AH::isBool(lhs)){ + boolVal = lhs; + term = rhs; + } else if(AH::isBool(rhs)){ + boolVal = rhs; + term = lhs; + } else { + continue; + } + + bool positive = AH::isTrue(boolVal) == lit->polarity(); + + AH::getHeadArgsAndArgSorts(term, head, args, argSorts); + Signature::Proxy prox = AH::getProxy(head); + if((prox == Signature::PI && positive) || (prox == Signature::SIGMA && !positive)){ + ASS(args.size() == 1); + TermList form = args[0]; + TermList sort = argSorts[0]; + ASS(sort.isArrowSort()); + if (adding) { + _is->insert(TypedTermList(sort.domain(), AtomicSort::superSort()), form, lit, c); + } else { + _is->remove(TypedTermList(sort.domain(), AtomicSort::superSort()), form, lit, c); + } + } + + } + } void BoolInstInstantiationIndex::insertInstantiation(TermList sort, TermList instantiation) diff --git a/Indexing/TermIndex.hpp b/Indexing/TermIndex.hpp index 7fe9e9b7a2..8019f34723 100644 --- a/Indexing/TermIndex.hpp +++ b/Indexing/TermIndex.hpp @@ -190,7 +190,9 @@ class BoolInstFormulaIndex BoolInstFormulaIndex(TermIndexingStructure* is) : TermIndex(is) {} - void insertFormula(TermList sort, TermList formula, Literal* lit, Clause* c); + +protected: + void handleClause(Clause* c, bool adding); }; class BoolInstInstantiationIndex diff --git a/Indexing/TermIndexingStructure.hpp b/Indexing/TermIndexingStructure.hpp index 5b512ef605..999d244603 100644 --- a/Indexing/TermIndexingStructure.hpp +++ b/Indexing/TermIndexingStructure.hpp @@ -30,6 +30,7 @@ class TermIndexingStructure { virtual void remove(TypedTermList t, Literal* lit, Clause* cls) = 0; virtual void insert(TypedTermList t, TermList trm){ NOT_IMPLEMENTED; } virtual void insert(TypedTermList t, TermList trm, Literal* lit, Clause* cls){ NOT_IMPLEMENTED; } + virtual void remove(TypedTermList t, TermList trm, Literal* lit, Clause* cls){ NOT_IMPLEMENTED; } virtual TermQueryResultIterator getUnifications(TypedTermList t, bool retrieveSubstitutions = true) { NOT_IMPLEMENTED; } diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index e652eb8e40..412e46a6fe 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -77,6 +77,9 @@ class TermSubstitutionTree void insert(TypedTermList t, TermList trm, Literal* lit, Clause* cls) override { handleTerm(t, LeafData(cls, lit, t, trm), /* insert */ true); } + void remove(TypedTermList t, TermList trm, Literal* lit, Clause* cls) override + { handleTerm(t, LeafData(cls, lit, t, trm), /* insert */ false); } + bool generalizationExists(TermList t) override { return t.isVar() ? false : _tree->generalizationExists(TypedTermList(t.term())); } diff --git a/Inferences/BoolInstantiation.cpp b/Inferences/BoolInstantiation.cpp index fd46ad8dcb..e27ad90d35 100644 --- a/Inferences/BoolInstantiation.cpp +++ b/Inferences/BoolInstantiation.cpp @@ -113,8 +113,8 @@ ClauseIterator BoolInstantiation::generateClauses(Clause* premise) auto it = _boolInstFormIndex->getUnifications(TypedTermList(sort, AtomicSort::superSort()), true); while(it.hasNext()){ TermQueryResult tqr = it.next(); - TermList form = tqr.unifier->apply(tqr.term, RESULT_BANK); - TermList instS = tqr.unifier->apply(inst, QUERY_BANK); + TermList form = tqr.unifier->apply(tqr.term, 1); + TermList instS = tqr.unifier->apply(inst, 0); Literal* l = tqr.literal; TermList lhs = *lit->nthArgument(0); @@ -136,7 +136,7 @@ ClauseIterator BoolInstantiation::generateClauses(Clause* premise) for(unsigned i=0;iapply(curr, RESULT_BANK); + Literal* currAfter = tqr.unifier->apply(curr, 0); (*res)[next++] = currAfter; } } diff --git a/Inferences/CNFOnTheFly.cpp b/Inferences/CNFOnTheFly.cpp index ee45e64f78..8188ac520b 100644 --- a/Inferences/CNFOnTheFly.cpp +++ b/Inferences/CNFOnTheFly.cpp @@ -43,14 +43,12 @@ static TermList piRemoval(TermList piTerm, Clause* clause, TermList expsrt); static InferenceRule convert(Signature::Proxy cnst); static ClauseIterator produceClauses(Clause* c, bool generating, SkolemisingFormulaIndex* index = 0, - BoolInstFormulaIndex* boolInstFormIndex = 0, BoolInstInstantiationIndex* boolInstInstIndex = 0); typedef ApplicativeHelper AH; ClauseIterator produceClauses(Clause* c, bool generating, SkolemisingFormulaIndex* index, - BoolInstFormulaIndex* boolInstFormIndex, BoolInstInstantiationIndex* boolInstInstIndex) { CALL("CNFOnTheFly::produceClauses"); @@ -58,9 +56,13 @@ ClauseIterator produceClauses(Clause* c, bool generating, static bool eager = env.options->cnfOnTheFly() == Options::CNFOnTheFly::EAGER; static bool simp = env.options->cnfOnTheFly() == Options::CNFOnTheFly::LAZY_SIMP; static bool gen = env.options->cnfOnTheFly() == Options::CNFOnTheFly::LAZY_GEN; + static bool simp_except_pi_sigma_gen = env.options->cnfOnTheFly() == Options::CNFOnTheFly::LAZY_SIMP_PI_SIGMA_GEN; static bool simp_except_not_be_off = env.options->cnfOnTheFly() == Options::CNFOnTheFly::LAZY_SIMP_NOT_GEN_BOOL_EQ_OFF; static bool simp_except_not_and_be = env.options->cnfOnTheFly() == Options::CNFOnTheFly::LAZY_SIMP_NOT_GEN_BOOL_EQ_GEN; - bool not_be = simp_except_not_be_off || (!generating && simp_except_not_and_be); + // if we don't want to simplify <=>, or we want to simplify it as a generating inference, but we have reached here + // from a simplification inference, or the opposite + bool not_be = simp_except_not_be_off || (!generating && simp_except_not_and_be) || + ( generating && simp_except_pi_sigma_gen); if(generating && (eager || simp)){ return ClauseIterator::getEmpty(); } @@ -112,13 +114,29 @@ ClauseIterator produceClauses(Clause* c, bool generating, AH::getHeadAndArgs(term, head, args); Signature::Proxy prox = AH::getProxy(head); - if(prox == Signature::NOT_PROXY || prox == Signature::IFF || - prox == Signature::XOR){ + if(prox == Signature::NOT_PROXY || prox == Signature::IFF || prox == Signature::XOR){ + // iff and xor are dealt with by IFFXORRewriter continue; } - if(generating && !gen && prox != Signature::NOT){ - continue; + // need to decide whether to continue at this point or not + + if(simp_except_pi_sigma_gen){ + if(generating && prox != Signature::PI && prox != Signature::SIGMA){ + continue; + } + if(!generating && (prox == Signature::PI || prox == Signature::SIGMA)){ + continue; + } + } + + if(simp_except_not_be_off || simp_except_not_and_be){ + if(generating && prox != Signature::NOT){ + continue; + } + if(!generating && prox == Signature::NOT){ + continue; + } } bool positive = AH::isTrue(boolVal) == lit->polarity(); @@ -199,39 +217,36 @@ ClauseIterator produceClauses(Clause* c, bool generating, ASS(srt.isArrowSort()); TermList newTerm; InferenceRule rule; - if((prox == Signature::PI && positive) || - (prox == Signature::SIGMA && !positive)){ + if((prox == Signature::PI && positive) || (prox == Signature::SIGMA && !positive)){ rule = convert(Signature::PI); newTerm = piRemoval(args[0], c, srt); // the isVar() check is defensive programming // It shouldn't occur in normal running - if(boolInstFormIndex && !args[0].isVar()){ - ASS(boolInstInstIndex); + if(boolInstInstIndex && !args[0].isVar()){ auto instances = boolInstInstIndex->getUnifications(TypedTermList(srt.domain(),AtomicSort::superSort()), true); while(instances.hasNext()){ TermQueryResult tqr = instances.next(); - TermList inst = tqr.unifier->apply(tqr.term, RESULT_BANK); - TermList form = tqr.unifier->apply(args[0], QUERY_BANK); - form = AH::app(form, inst); - Literal* l1 = Literal::createEquality(true, form, rhs, boolSort); + + TermList inst = tqr.unifier->apply(tqr.term, 1); + TermList form = tqr.unifier->apply(args[0], 0); + form = AH::app(form, inst); + Literal* l1 = Literal::createEquality(true, form, rhs, boolSort); unsigned clen = c->length(); // cant use replaceLits, as we need to apply the type unifier Clause* res = new(clen) Clause(clen, GeneratingInference1(InferenceRule::BOOL_INSTANTIATION, c)); (*res)[0] = l1; - unsigned next = 0; + unsigned next = 1; for(unsigned i=0;iapply(curr, QUERY_BANK); + Literal* currAfter = tqr.unifier->apply(curr, 0); (*res)[next++] = currAfter; } } - resultStack.push(res); } - boolInstFormIndex->insertFormula(TypedTermList(srt.domain(), AtomicSort::superSort()), args[0], lit, c); } } else { ASS(term.isTerm()); @@ -436,12 +451,9 @@ void LazyClausificationGIE::attach(SaturationAlgorithm* salg) _formulaIndex=static_cast ( _salg->getIndexManager()->request(SKOLEMISING_FORMULA_INDEX) ); - _boolInstFormIndex = 0; _boolInstInstIndex = 0; if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ - _boolInstFormIndex=static_cast ( - _salg->getIndexManager()->request(BOOL_INST_FORMULA_INDEX) ); _boolInstInstIndex=static_cast ( _salg->getIndexManager()->request(BOOL_INST_INSTANTIATION_INDEX) ); } @@ -452,12 +464,10 @@ void LazyClausificationGIE::detach() CALL("LazyClausificationGIE::detach"); _formulaIndex=0; - _boolInstFormIndex = 0; _boolInstInstIndex = 0; _salg->getIndexManager()->release(SKOLEMISING_FORMULA_INDEX); if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ - _salg->getIndexManager()->release(BOOL_INST_FORMULA_INDEX); _salg->getIndexManager()->release(BOOL_INST_INSTANTIATION_INDEX); } GeneratingInferenceEngine::detach(); @@ -471,12 +481,9 @@ void LazyClausification::attach(SaturationAlgorithm* salg) _formulaIndex=static_cast ( _salg->getIndexManager()->request(SKOLEMISING_FORMULA_INDEX) ); - _boolInstFormIndex = 0; _boolInstInstIndex = 0; if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ - _boolInstFormIndex=static_cast ( - _salg->getIndexManager()->request(BOOL_INST_FORMULA_INDEX) ); _boolInstInstIndex=static_cast ( _salg->getIndexManager()->request(BOOL_INST_INSTANTIATION_INDEX) ); } @@ -487,12 +494,10 @@ void LazyClausification::detach() CALL("LazyClausification::detach"); _formulaIndex=0; - _boolInstFormIndex = 0; _boolInstInstIndex = 0; _salg->getIndexManager()->release(SKOLEMISING_FORMULA_INDEX); if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ - _salg->getIndexManager()->release(BOOL_INST_FORMULA_INDEX); _salg->getIndexManager()->release(BOOL_INST_INSTANTIATION_INDEX); } SimplificationEngine::detach(); @@ -509,14 +514,14 @@ ClauseIterator LazyClausificationGIE::generateClauses(Clause* c) { CALL("LazyClausificationGIE::simplifyMany"); - return produceClauses(c, true, _formulaIndex, _boolInstFormIndex, _boolInstInstIndex); + return produceClauses(c, true, _formulaIndex, _boolInstInstIndex); } ClauseIterator LazyClausification::perform(Clause* c) { CALL("LazyClausification::perform"); - return produceClauses(c, false, _formulaIndex, _boolInstFormIndex, _boolInstInstIndex); + return produceClauses(c, false, _formulaIndex, _boolInstInstIndex); } diff --git a/Inferences/CNFOnTheFly.hpp b/Inferences/CNFOnTheFly.hpp index dacdaa2e3c..9fedc0f98a 100644 --- a/Inferences/CNFOnTheFly.hpp +++ b/Inferences/CNFOnTheFly.hpp @@ -74,7 +74,6 @@ class LazyClausification private: SkolemisingFormulaIndex* _formulaIndex; - BoolInstFormulaIndex* _boolInstFormIndex; BoolInstInstantiationIndex* _boolInstInstIndex; }; @@ -97,7 +96,6 @@ class LazyClausificationGIE private: SkolemisingFormulaIndex* _formulaIndex; - BoolInstFormulaIndex* _boolInstFormIndex; BoolInstInstantiationIndex* _boolInstInstIndex; }; diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index 82eaa05ca0..e0e001353e 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -316,7 +316,11 @@ bool RobSubstitutionTS::match(TermList t1, int idx1, TermList t2, int idx2) } template -bool RobSubstitution::unify(TermSpecOrList t1, TermSpecOrList t2) +bool RobSubstitution::unify(TermSpecOrList t1, TermSpecOrList t2, +#if VHOL + bool applicativeUnify +#endif + ) { CALL("RobSubstitution::unify/2"); #define DEBUG_UNIFY(lvl, ...) if (lvl < 0) DBG("unify: ", __VA_ARGS__) @@ -386,14 +390,14 @@ bool RobSubstitution::unify(TermSpecOrList t1, Ter // cannot be currently bound as we already dereferenced } else if(dt1.isVar() && !occurs(dt1, dt2) #if VHOL - && !containsLooseIndex(dt2) + && (!applicativeUnify || !containsLooseIndex(dt2)) #endif ) { bind(dt1, dt2); } else if(dt2.isVar() && !occurs(dt2, dt1) #if VHOL - && !containsLooseIndex(dt1) + && (!applicativeUnify || !containsLooseIndex(dt1)) #endif ) { bind(dt2, dt1); @@ -598,7 +602,7 @@ TermList RobSubstitution::apply(TermSpecOrList trm, { CALL("RobSubstitution::apply(TermList...)"); - //DBG(*this, ".apply(", trm, ")") + //DBG(*this, ".apply(", trm, " " , bank , ")") auto out = evalBottomUp(AutoDerefTerm(trm, this, bank), [&](auto& orig, TermList* args) -> TermList { @@ -820,7 +824,7 @@ class RobSubstitution::AssocIterator: public Iterat switch (_state) { case NEXT_STRAIGHT: - if (_subst->unify(_l1, _l2)) { + if (_subst->unify(_l1, _l2, true)) { _state = NEXT_REVERSED; break; } @@ -830,8 +834,8 @@ class RobSubstitution::AssocIterator: public Iterat TermSpecOrList t12 = _l1.nthArg(1); TermSpecOrList t21 = _l2.nthArg(0); TermSpecOrList t22 = _l2.nthArg(1); - if (_subst->unify(t11, t22)) { - if (_subst->unify(t12, t21)) { + if (_subst->unify(t11, t22, true)) { + if (_subst->unify(t12, t21, true)) { _state = NEXT_CLEANUP; break; } diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index ac60b95633..18b41398b2 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -218,7 +218,17 @@ class RobSubstitution */ void setOutputIndex(VarBankOrInt idx) { _outputIndex = idx; } - bool unify(TermSpecOrList t1, TermSpecOrList t2); + // TODO, in the future create a separate function for applicative FOL unification. Will be cleaner + /* + * In the higher-order case, in some instances we want to carry out first-order applicative unification + * This the same as first-order unification, but we need an added check to ensure that we never bind a variable + * to a term that contains a loose index. To use this form of unification, the flag applicativeUnify is added. + */ + bool unify(TermSpecOrList t1, TermSpecOrList t2, +#if VHOL + bool applicativeUnify = false +#endif + ); bool match(TermSpecOrList base, TermSpecOrList instance, VarBankOrInt baseBank); void denormalize(const Renaming& normalizer, VarBankOrInt normBank, VarBankOrInt denormBank); diff --git a/Kernel/Signature.cpp b/Kernel/Signature.cpp index 4765d1d1ad..7349635296 100644 --- a/Kernel/Signature.cpp +++ b/Kernel/Signature.cpp @@ -252,6 +252,7 @@ Signature::Signature (): _arrowCon(UINT_MAX), _appFun(UINT_MAX), _lamFun(UINT_MAX), + _choiceFun(UINT_MAX), _placeholderFun(UINT_MAX), #endif _termAlgebras() @@ -786,6 +787,7 @@ unsigned Signature::getChoice(){ bool added = false; unsigned choice = addFunction("vEPSILON",1, added); if(added){ + _choiceFun = choice; TermList alpha = TermList(0, false); TermList bs = AtomicSort::boolSort(); TermList alphaBs = AtomicSort::arrowSort(alpha, bs); diff --git a/Kernel/Signature.hpp b/Kernel/Signature.hpp index 176abf4631..dcd839c844 100644 --- a/Kernel/Signature.hpp +++ b/Kernel/Signature.hpp @@ -649,6 +649,10 @@ class Signature return (fun == _lamFun && _lamFun != UINT_MAX); } + bool isChoiceFun(unsigned fun) const{ + return (fun == _choiceFun && _choiceFun != UINT_MAX); + } + bool isPlaceholder(unsigned fun) const{ return (fun == _placeholderFun && _placeholderFun != UINT_MAX); } @@ -937,6 +941,7 @@ class Signature unsigned _arrowCon; unsigned _appFun; unsigned _lamFun; + unsigned _choiceFun; unsigned _placeholderFun; #endif diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 87987d2ee2..8fc0268688 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -657,6 +657,18 @@ bool Term::isPlaceholder() const { return !isSort() && !isLiteral() && !isSpecial() && env.signature->isPlaceholder(_functor); } +bool TermList::isChoice() const { + CALL("TermList::isChoice"); + + return !isVar() && term()->isChoice(); +} + +bool Term::isChoice() const { + CALL("Term::isChoice"); + + return !isSort() && !isLiteral() && !isSpecial() && env.signature->isChoiceFun(_functor); +} + bool TermList::containsLooseIndex() const { CALL("TermList::containsLooseIndex()"); @@ -1289,8 +1301,9 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const else if(head.isAnd()){ headStr = pretty ? "∧" : "&"; } else if(head.isOr()){ headStr = pretty ? "∨" : "|"; } else if(head.isXOr()){ headStr = pretty ? "⊕" : "<~>"; } - else if(head.isImp()){ headStr = pretty ? "⇒" : "=>"; } - else if(head.isIff() || head.isEquals()){ headStr = pretty ? "≈" : "="; } + else if(head.isImp()){ headStr = pretty ? "⇒" : "=>"; } + else if(head.isChoice()){ headStr = pretty ? "ε" : "@@+"; } + else if(head.isIff() || head.isEquals()){ headStr = pretty ? "≈" : "="; } // @=??? else if(ApplicativeHelper::isTrue(head)){ headStr = pretty ? "⊤" : "$true"; } else if(ApplicativeHelper::isFalse(head)){ headStr = pretty ? "⊥" : "$false"; } else { diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index 59b5dc579a..e7660cc8e0 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -262,6 +262,7 @@ class TermList { bool isImp() const; bool isEquals() const; bool isPlaceholder() const; + bool isChoice() const; bool containsLooseIndex() const; Option deBruijnIndex() const; TermList lhs() const; @@ -818,6 +819,7 @@ class Term bool isImp() const; bool isEquals() const; bool isPlaceholder() const; + bool isChoice() const; /** true if term is a sort which is a arrow sort */ bool isArrowSort() const; diff --git a/Parse/TPTP.cpp b/Parse/TPTP.cpp index 27fceddaa5..e8c0967b8e 100644 --- a/Parse/TPTP.cpp +++ b/Parse/TPTP.cpp @@ -50,17 +50,19 @@ using namespace Parse; DHMap TPTP::_axiomNames; -//Numbers chosen to avoid clashing with connectives. -//Unlikely to ever have 100 connectives, so this should be ok. -const int TPTP::HOL_CONSTANTS_LOWER_BOUND = 99u; -/** operator lambda */ -const int TPTP::LAMBDA = 100u; -/** application of any number of terms */ -const int TPTP::APP = 101u; -/** Pi function for universal quantification */ -const int TPTP::PI = 102u; -/** Sigma function for existential quantification */ -const int TPTP::SIGMA = 103u; +#if VHOL + //Numbers chosen to avoid clashing with connectives. + //Unlikely to ever have 100 connectives, so this should be ok. + const int TPTP::HOL_CONSTANTS_LOWER_BOUND = 99u; + /** operator lambda */ + const int TPTP::LAMBDA = 100u; + /** application of any number of terms */ + const int TPTP::APP = 101u; + /** Pi function for universal quantification */ + const int TPTP::PI = 102u; + /** Sigma function for existential quantification */ + const int TPTP::SIGMA = 103u; +#endif /** * Create a parser, parse the input and return the parsed list of units. diff --git a/Shell/Options.cpp b/Shell/Options.cpp index a64bfe84a6..427b3ec8d8 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1840,6 +1840,7 @@ void Options::init() "lazy_gen", "lazy_simp", "lazy_not_gen", + "lazy_pi_sigma_gen", "lazy_not_gen_be_off", "lazy_not_be_gen", "off"}); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 8a676e18cc..d9cd2c60da 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -741,9 +741,10 @@ class Options LAZY_GEN = 1, LAZY_SIMP = 2, LAZY_SIMP_NOT_GEN = 3, - LAZY_SIMP_NOT_GEN_BOOL_EQ_OFF = 4, - LAZY_SIMP_NOT_GEN_BOOL_EQ_GEN = 5, - OFF = 6 + LAZY_SIMP_PI_SIGMA_GEN = 4, + LAZY_SIMP_NOT_GEN_BOOL_EQ_OFF = 5, + LAZY_SIMP_NOT_GEN_BOOL_EQ_GEN = 6, + OFF = 7 }; enum class PISet : unsigned int { diff --git a/Shell/Preprocess.cpp b/Shell/Preprocess.cpp index 7e6decaec1..532df89c1d 100644 --- a/Shell/Preprocess.cpp +++ b/Shell/Preprocess.cpp @@ -165,20 +165,26 @@ void Preprocess::preprocess(Problem& prb) } } +prb.getProperty(); + #if VHOL if(env.options->functionExtensionality() == Options::FunctionExtensionality::AXIOM){ - LambdaConversion::addFunctionExtensionalityAxiom(prb); + if(!env.property->higherOrder()){ + env.out() << "WARNING: ignoring request to add function extensionality axiom as problem is first-order" << std::endl; + } else { + LambdaConversion::addFunctionExtensionalityAxiom(prb); + } } if(env.options->choiceAxiom()){ - LambdaConversion::addChoiceAxiom(prb); + if(!env.property->higherOrder()){ + env.out() << "WARNING: ignoring request to add choice axiom as problem is first-order" << std::endl; + } else { + LambdaConversion::addChoiceAxiom(prb); + } } -#endif - prb.getProperty(); - -#if VHOL - if ((prb.hasLogicalProxy() || prb.hasBoolVar()) && env.options->addProxyAxioms()){ + if ((prb.hasLogicalProxy() || prb.hasBoolVar()) && env.options->addProxyAxioms()){ LambdaConversion::addProxyAxioms(prb); } #endif diff --git a/Shell/Shuffling.cpp b/Shell/Shuffling.cpp index 1f73dd6a34..42e7dc07bc 100644 --- a/Shell/Shuffling.cpp +++ b/Shell/Shuffling.cpp @@ -208,13 +208,15 @@ void Shuffling::shuffleIter(Shufflable sh) { //cout << "Shuffling FORALL/EXISTS: " << fla->toString() << endl; - // can even shuffle the variables in the quantifier! - if (fla->sorts()) { // need to shuffle sorts in sync with vars, if they are there - shuffleTwoList(*fla->varsPtr(),*fla->sortsPtr()); - } else { - shuffleList(*fla->varsPtr()); + // can't naively shuffle variables in the polymorphic case + // as we require type variables to come before term variable in the list + if(!env.property->hasPolymorphicSym()){ + if (fla->sorts()) { // need to shuffle sorts in sync with vars, if they are there + shuffleTwoList(*fla->varsPtr(),*fla->sortsPtr()); + } else { + shuffleList(*fla->varsPtr()); + } } - //cout << "getting: " << fla->toString() << endl; fla = fla->qarg(); From eca545df19b0e8e2025824f927c6bd22c0754478 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 8 Jun 2023 00:32:42 +0100 Subject: [PATCH 124/210] fixing bugs --- Saturation/SaturationAlgorithm.cpp | 26 ++++++++++++++++++++------ Shell/Options.cpp | 1 + Shell/Preprocess.cpp | 27 +++++++++++++++++++++++---- 3 files changed, 44 insertions(+), 10 deletions(-) diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 15823ebdf7..5eab4f602c 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1625,9 +1625,13 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if (opt.unitResultingResolution() != Options::URResolution::OFF) { #if VHOL if(env.property->higherOrder()){ - // TODO how to output error properly? - // Should we be outputing an error or just dying? - cout << "WARNING: unit resulting resolution is not compatible with higher-order. Ignoring request" << endl; + // TODO Should we be outputing an error or just dying? + if (outputAllowed()) { + env.beginOutput(); + addCommentSignForSZS(env.out()); + env.out() << "WARNING: unit resulting resolution is not compatible with higher-order. Ignoring request." << endl; + env.endOutput(); + } } else { #endif gie->addFront(new URResolution()); @@ -1641,10 +1645,15 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if (opt.FOOLParamodulation()) { #if VHOL if(env.property->higherOrder()){ - cout << "WARNING: FOOL paramodulation is not compatible with higher-order. Try using Cases or CasesSimp instead. Ignoring request" << endl; + if (outputAllowed()) { + env.beginOutput(); + addCommentSignForSZS(env.out()); + env.out() << "WARNING: FOOL paramodulation is not compatible with higher-order. Try using Cases or CasesSimp instead. Ignoring request." << endl; + env.endOutput(); + } } else { #endif - gie->addFront(new FOOLParamodulation()); + gie->addFront(new FOOLParamodulation()); #if VHOL } #endif @@ -1719,7 +1728,12 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if(env.property->higherOrder()){ // TODO how to output error properly? // Should we be outputing an error or just dying? - cout << "WARNING: hyper superposition is not compatible with higher-order. Ignoring request" << endl; + if (outputAllowed()) { + env.beginOutput(); + addCommentSignForSZS(env.out()); + env.out() << "WARNING: hyper superposition is not compatible with higher-order. Ignoring request" << endl; + env.endOutput(); + } } else { #endif res->addForwardSimplifierToFront(new HyperSuperposition()); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 427b3ec8d8..2511a82d3c 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -968,6 +968,7 @@ void Options::init() _ageWeightRatioShapeFrequency = UnsignedOptionValue("age_weight_ratio_shape_frequency","awrsf",100); _ageWeightRatioShapeFrequency.description = "How frequently the age/weight ratio shape is to change: i.e. if set to 'decay' at a frequency of 100, the age/weight ratio will change every 100 age/weight choices."; _ageWeightRatioShapeFrequency.onlyUsefulWith(_ageWeightRatioShape.is(notEqual(AgeWeightRatioShape::CONSTANT))); + _ageWeightRatioShapeFrequency.addHardConstraint(greaterThan(0u)); // we divide by this value in AWPPassiveClauseContainer::popSelected _lookup.insert(&_ageWeightRatioShapeFrequency); _ageWeightRatioShapeFrequency.tag(OptionTag::SATURATION); diff --git a/Shell/Preprocess.cpp b/Shell/Preprocess.cpp index 532df89c1d..066f87f94a 100644 --- a/Shell/Preprocess.cpp +++ b/Shell/Preprocess.cpp @@ -170,7 +170,12 @@ prb.getProperty(); #if VHOL if(env.options->functionExtensionality() == Options::FunctionExtensionality::AXIOM){ if(!env.property->higherOrder()){ - env.out() << "WARNING: ignoring request to add function extensionality axiom as problem is first-order" << std::endl; + if (outputAllowed()) { + env.beginOutput(); + addCommentSignForSZS(env.out()); + env.out() << "WARNING: ignoring request to add function extensionality axiom as problem is first-order" << std::endl; + env.endOutput(); + } } else { LambdaConversion::addFunctionExtensionalityAxiom(prb); } @@ -178,14 +183,28 @@ prb.getProperty(); if(env.options->choiceAxiom()){ if(!env.property->higherOrder()){ - env.out() << "WARNING: ignoring request to add choice axiom as problem is first-order" << std::endl; + if (outputAllowed()) { + env.beginOutput(); + addCommentSignForSZS(env.out()); + env.out() << "WARNING: ignoring request to add choice axiom as problem is first-order" << std::endl; + env.endOutput(); + } } else { LambdaConversion::addChoiceAxiom(prb); } } - if ((prb.hasLogicalProxy() || prb.hasBoolVar()) && env.options->addProxyAxioms()){ - LambdaConversion::addProxyAxioms(prb); + if (env.options->addProxyAxioms()){ + if(!env.property->higherOrder()){ + if (outputAllowed()) { + env.beginOutput(); + addCommentSignForSZS(env.out()); + env.out() << "WARNING: ignoring request to add logical proxy axioms as problem is first-order" << std::endl; + env.endOutput(); + } + } else { + LambdaConversion::addProxyAxioms(prb); + } } #endif From bc9db6f551fe13ae1656484663808b3027d0a4e2 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 8 Jun 2023 01:07:59 +0100 Subject: [PATCH 125/210] removing Boolean instantiation for now as it is buggy. Can always resurrect if need be --- CMakeLists.txt | 2 - Indexing/IndexManager.cpp | 17 --- Indexing/IndexManager.hpp | 2 - Indexing/TermIndex.cpp | 94 ----------------- Indexing/TermIndex.hpp | 30 ------ Inferences/BoolInstantiation.cpp | 159 ----------------------------- Inferences/BoolInstantiation.hpp | 54 ---------- Inferences/CNFOnTheFly.cpp | 62 +---------- Inferences/CNFOnTheFly.hpp | 2 - Saturation/SaturationAlgorithm.cpp | 4 - Shell/Options.cpp | 13 --- Shell/Options.hpp | 8 -- 12 files changed, 5 insertions(+), 442 deletions(-) delete mode 100644 Inferences/BoolInstantiation.cpp delete mode 100644 Inferences/BoolInstantiation.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index b4d4b646dd..85106b488c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -328,8 +328,6 @@ set(VAMPIRE_KERNEL_SOURCES Inferences/BoolEqToDiseq.cpp Inferences/PrimitiveInstantiation.cpp Inferences/PrimitiveInstantiation.hpp - Inferences/BoolInstantiation.cpp - Inferences/BoolInstantiation.hpp Inferences/ElimLeibniz.cpp Inferences/ElimLeibniz.hpp Inferences/Choice.cpp diff --git a/Indexing/IndexManager.cpp b/Indexing/IndexManager.cpp index 4811f2bcf7..de4a04b438 100644 --- a/Indexing/IndexManager.cpp +++ b/Indexing/IndexManager.cpp @@ -179,23 +179,6 @@ Index* IndexManager::create(IndexType t) isGenerating = false; break; } - - case BOOL_INST_INSTANTIATION_INDEX: { - auto tis = new TermSubstitutionTree(); - tis->useExtra(); - res = new BoolInstInstantiationIndex(tis); - isGenerating = true; - break; - } - - case BOOL_INST_FORMULA_INDEX: { - auto tis = new TermSubstitutionTree(); - tis->useExtra(); - res = new BoolInstFormulaIndex(tis); - isGenerating = true; - break; - } - #endif case ACYCLICITY_INDEX: diff --git a/Indexing/IndexManager.hpp b/Indexing/IndexManager.hpp index ca0f74d1a9..1ef9202910 100644 --- a/Indexing/IndexManager.hpp +++ b/Indexing/IndexManager.hpp @@ -59,8 +59,6 @@ enum IndexType { #if VHOL SKOLEMISING_FORMULA_INDEX, - BOOL_INST_INSTANTIATION_INDEX, - BOOL_INST_FORMULA_INDEX, #endif UNIT_INT_COMPARISON_INDEX, diff --git a/Indexing/TermIndex.cpp b/Indexing/TermIndex.cpp index 03b4a0f3a4..b5e303c62d 100644 --- a/Indexing/TermIndex.cpp +++ b/Indexing/TermIndex.cpp @@ -226,100 +226,6 @@ void SkolemisingFormulaIndex::insertFormula(TermList formula, TermList skolem) _is->insert(TypedTermList(formula.term()), skolem); } -void BoolInstFormulaIndex::handleClause(Clause* c, bool adding) -{ - CALL("BoolInstFormulaIndex::handleClause"); - - typedef ApplicativeHelper AH; - - static TermStack args; - static TermStack argSorts; - TermList head; - - for(unsigned i = 0; i < c->length(); i++){ - Literal* lit = (*c)[i]; - - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - TermList term; - TermList boolVal; - if(AH::isBool(lhs)){ - boolVal = lhs; - term = rhs; - } else if(AH::isBool(rhs)){ - boolVal = rhs; - term = lhs; - } else { - continue; - } - - bool positive = AH::isTrue(boolVal) == lit->polarity(); - - AH::getHeadArgsAndArgSorts(term, head, args, argSorts); - Signature::Proxy prox = AH::getProxy(head); - if((prox == Signature::PI && positive) || (prox == Signature::SIGMA && !positive)){ - ASS(args.size() == 1); - TermList form = args[0]; - TermList sort = argSorts[0]; - ASS(sort.isArrowSort()); - if (adding) { - _is->insert(TypedTermList(sort.domain(), AtomicSort::superSort()), form, lit, c); - } else { - _is->remove(TypedTermList(sort.domain(), AtomicSort::superSort()), form, lit, c); - } - } - - } - -} - -void BoolInstInstantiationIndex::insertInstantiation(TermList sort, TermList instantiation) -{ - CALL("BoolInstInstantiationIndex::insertInstantiation"); - _is->insert(TypedTermList(sort, AtomicSort::superSort()), instantiation); -} - -void BoolInstInstantiationIndex::handleClause(Clause* c, bool adding) -{ - CALL("BoolInstInstantiationIndex::handleClause"); - - // TODO only consider derivations shorter than some length??? - // we never remove instantiations, only add new ones - if(!c->derivedFromGoal() || !adding) return; - - typedef ApplicativeHelper AH; - - for (unsigned i=0; ilength(); i++) { - Literal* lit=(*c)[i]; - - TermStack abstractionTerms; - AH::getAbstractionTerms(lit, abstractionTerms); - while(!abstractionTerms.isEmpty()){ - TermList inst = abstractionTerms.pop(); - if(!_insertedInstantiations.contains(inst)){ - _insertedInstantiations.insert(inst); - insertInstantiation(SortHelper::getResultSort(inst.term()),inst); - } - } - - if(env.options->booleanInstantiation() == Options::BoolInstantiation::ABS_AND_SUBTERM){ - NonVariableNonTypeIterator it(lit); - while(it.hasNext()){ - Term* term = it.next(); - TermList sort = SortHelper::getResultSort(term); - TermList t = TermList(term); - // t : sigma -> o for some sigma - if(!t.containsLooseIndex() && sort.isArrowSort() && sort.result().isBoolSort()){ - if(!_insertedInstantiations.contains(t)){ - _insertedInstantiations.insert(t); - insertInstantiation(sort,t); - } - } - } - } - } -} - #endif } // namespace Indexing diff --git a/Indexing/TermIndex.hpp b/Indexing/TermIndex.hpp index 8019f34723..a355699489 100644 --- a/Indexing/TermIndex.hpp +++ b/Indexing/TermIndex.hpp @@ -181,36 +181,6 @@ class SkolemisingFormulaIndex void insertFormula(TermList formula, TermList skolem); }; -class BoolInstFormulaIndex -: public TermIndex -{ -public: - CLASS_NAME(BoolInstFormulaIndex); - USE_ALLOCATOR(BoolInstFormulaIndex); - - BoolInstFormulaIndex(TermIndexingStructure* is) : TermIndex(is) - {} - -protected: - void handleClause(Clause* c, bool adding); -}; - -class BoolInstInstantiationIndex -: public TermIndex -{ -public: - CLASS_NAME(BoolInstInstantiationIndex); - USE_ALLOCATOR(BoolInstInstantiationIndex); - - BoolInstInstantiationIndex(TermIndexingStructure* is) : TermIndex(is) - {} -protected: - void insertInstantiation(TermList sort, TermList instantiation); - void handleClause(Clause* c, bool adding); -private: - Set _insertedInstantiations; -}; - #endif /*class HeuristicInstantiationIndex diff --git a/Inferences/BoolInstantiation.cpp b/Inferences/BoolInstantiation.cpp deleted file mode 100644 index e27ad90d35..0000000000 --- a/Inferences/BoolInstantiation.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file BoolInstantiation.cpp - * Implements class BoolInstantiation. - */ - -#if VHOL - -#include "Debug/RuntimeStatistics.hpp" -#include "Saturation/SaturationAlgorithm.hpp" - -#include "Kernel/OperatorType.hpp" -#include "Kernel/SortHelper.hpp" -#include "Kernel/Signature.hpp" -#include "Kernel/Inference.hpp" -#include "Kernel/Substitution.hpp" -#include "Kernel/ApplicativeHelper.hpp" -#include "Kernel/TermIterators.hpp" - -#include "Lib/Environment.hpp" -#include "Lib/Metaiterators.hpp" -#include "Lib/PairUtils.hpp" -#include "Lib/VirtualIterator.hpp" - -#include "BoolInstantiation.hpp" - -#if VDEBUG -#include -using namespace std; -#endif - -namespace Inferences -{ - -using namespace Lib; -using namespace Kernel; -using namespace Indexing; -using namespace Saturation; - - -void BoolInstantiation::attach(SaturationAlgorithm* salg) -{ - CALL("BoolInstantiation::attach"); - - GeneratingInferenceEngine::attach(salg); - _boolInstFormIndex=static_cast ( - _salg->getIndexManager()->request(BOOL_INST_FORMULA_INDEX) ); -} - -void BoolInstantiation::detach() -{ - CALL("BoolInstantiation::detach"); - - _boolInstFormIndex = 0; - _salg->getIndexManager()->release(BOOL_INST_FORMULA_INDEX); - GeneratingInferenceEngine::detach(); -} - -ClauseIterator BoolInstantiation::generateClauses(Clause* premise) -{ - CALL("BoolInstantiation::generateClauses"); - - typedef ApplicativeHelper AH; - - if(!premise->derivedFromGoal()) - { return ClauseIterator::getEmpty(); } - - static ClauseStack resultStack; - resultStack.reset(); - - for (unsigned i=0; ilength(); i++) { - Literal* lit=(*premise)[i]; - - TermStack abstractionTerms; - TermStack instantiations; - AH::getAbstractionTerms(lit, abstractionTerms); - while(!abstractionTerms.isEmpty()){ - TermList inst = abstractionTerms.pop(); - if(!_insertedInstantiations.contains(inst)){ - _insertedInstantiations.insert(inst); - instantiations.push(inst); - } - } - - if(env.options->booleanInstantiation() == Options::BoolInstantiation::ABS_AND_SUBTERM){ - NonVariableNonTypeIterator it(lit); - while(it.hasNext()){ - Term* term = it.next(); - TermList sort = SortHelper::getResultSort(term); - TermList t = TermList(term); - // t : sigma -> o for some sigma - if(!t.containsLooseIndex() && sort.isArrowSort() && sort.result().isBoolSort()){ - if(!_insertedInstantiations.contains(t)){ - _insertedInstantiations.insert(t); - instantiations.push(t); - } - } - } - } - - - while(!instantiations.isEmpty()){ - TermList inst = instantiations.pop(); - TermList sort = SortHelper::getResultSort(inst.term()); - auto it = _boolInstFormIndex->getUnifications(TypedTermList(sort, AtomicSort::superSort()), true); - while(it.hasNext()){ - TermQueryResult tqr = it.next(); - TermList form = tqr.unifier->apply(tqr.term, 1); - TermList instS = tqr.unifier->apply(inst, 0); - - Literal* l = tqr.literal; - TermList lhs = *lit->nthArgument(0); - TermList rhs = *lit->nthArgument(1); - TermList boolVal = AH::isBool(lhs) ? lhs : rhs; - bool positive = AH::isTrue(boolVal) == lit->polarity(); - - TermList newLhs = AH::app(form, instS); - TermList newRhs = positive ? AH::top() : AH::bottom(); - - Literal* newLit = Literal::createEquality(true, newLhs, newRhs, AtomicSort::boolSort()); - Clause* c = tqr.clause; - unsigned clen = c->length(); - - - Clause* res = new(clen) Clause(clen, GeneratingInference1(InferenceRule::BOOL_INSTANTIATION, c)); - (*res)[0] = newLit; - unsigned next = 0; - for(unsigned i=0;iapply(curr, 0); - (*res)[next++] = currAfter; - } - } - resultStack.push(res); - } - } - - - - } - - - return pvi(getUniquePersistentIterator(ClauseStack::Iterator(resultStack))); - - -} - -} - -#endif \ No newline at end of file diff --git a/Inferences/BoolInstantiation.hpp b/Inferences/BoolInstantiation.hpp deleted file mode 100644 index 276b6400b0..0000000000 --- a/Inferences/BoolInstantiation.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of the source code of the software program - * Vampire. It is protected by applicable - * copyright laws. - * - * This source code is distributed under the licence found here - * https://vprover.github.io/license.html - * and in the source directory - */ -/** - * @file BoolInstantiation.hpp - * Defines class BoolInstantiation. - */ - - -#ifndef __BoolInstantiation__ -#define __BoolInstantiation__ - -#if VHOL - -#include "Forwards.hpp" -#include "Indexing/TermIndex.hpp" - -#include "InferenceEngine.hpp" - -namespace Inferences { - -using namespace Kernel; -using namespace Indexing; -using namespace Saturation; - -class BoolInstantiation -: public GeneratingInferenceEngine -{ -public: - CLASS_NAME(BoolInstantiation); - USE_ALLOCATOR(BoolInstantiation); - - ClauseIterator generateClauses(Clause* premise) override; - - void attach(SaturationAlgorithm* salg) override; - void detach() override; - -private: - Set _insertedInstantiations; - BoolInstFormulaIndex* _boolInstFormIndex; -}; - - -}; - -#endif - -#endif /* __BoolInstantiation__ */ diff --git a/Inferences/CNFOnTheFly.cpp b/Inferences/CNFOnTheFly.cpp index 8188ac520b..ecd4510996 100644 --- a/Inferences/CNFOnTheFly.cpp +++ b/Inferences/CNFOnTheFly.cpp @@ -42,14 +42,12 @@ static TermList sigmaRemoval(TermList sigmaTerm, TermList expsrt); static TermList piRemoval(TermList piTerm, Clause* clause, TermList expsrt); static InferenceRule convert(Signature::Proxy cnst); static ClauseIterator produceClauses(Clause* c, bool generating, - SkolemisingFormulaIndex* index = 0, - BoolInstInstantiationIndex* boolInstInstIndex = 0); + SkolemisingFormulaIndex* index = 0); typedef ApplicativeHelper AH; ClauseIterator produceClauses(Clause* c, bool generating, - SkolemisingFormulaIndex* index, - BoolInstInstantiationIndex* boolInstInstIndex) + SkolemisingFormulaIndex* index) { CALL("CNFOnTheFly::produceClauses"); @@ -220,34 +218,6 @@ ClauseIterator produceClauses(Clause* c, bool generating, if((prox == Signature::PI && positive) || (prox == Signature::SIGMA && !positive)){ rule = convert(Signature::PI); newTerm = piRemoval(args[0], c, srt); - // the isVar() check is defensive programming - // It shouldn't occur in normal running - if(boolInstInstIndex && !args[0].isVar()){ - auto instances = boolInstInstIndex->getUnifications(TypedTermList(srt.domain(),AtomicSort::superSort()), true); - while(instances.hasNext()){ - TermQueryResult tqr = instances.next(); - - TermList inst = tqr.unifier->apply(tqr.term, 1); - TermList form = tqr.unifier->apply(args[0], 0); - form = AH::app(form, inst); - Literal* l1 = Literal::createEquality(true, form, rhs, boolSort); - - unsigned clen = c->length(); - - // cant use replaceLits, as we need to apply the type unifier - Clause* res = new(clen) Clause(clen, GeneratingInference1(InferenceRule::BOOL_INSTANTIATION, c)); - (*res)[0] = l1; - unsigned next = 1; - for(unsigned i=0;iapply(curr, 0); - (*res)[next++] = currAfter; - } - } - resultStack.push(res); - } - } } else { ASS(term.isTerm()); bool newTermCreated = false; @@ -450,13 +420,6 @@ void LazyClausificationGIE::attach(SaturationAlgorithm* salg) GeneratingInferenceEngine::attach(salg); _formulaIndex=static_cast ( _salg->getIndexManager()->request(SKOLEMISING_FORMULA_INDEX) ); - - _boolInstInstIndex = 0; - - if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ - _boolInstInstIndex=static_cast ( - _salg->getIndexManager()->request(BOOL_INST_INSTANTIATION_INDEX) ); - } } void LazyClausificationGIE::detach() @@ -464,12 +427,8 @@ void LazyClausificationGIE::detach() CALL("LazyClausificationGIE::detach"); _formulaIndex=0; - _boolInstInstIndex = 0; - _salg->getIndexManager()->release(SKOLEMISING_FORMULA_INDEX); - if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ - _salg->getIndexManager()->release(BOOL_INST_INSTANTIATION_INDEX); - } + _salg->getIndexManager()->release(SKOLEMISING_FORMULA_INDEX); GeneratingInferenceEngine::detach(); } @@ -480,13 +439,6 @@ void LazyClausification::attach(SaturationAlgorithm* salg) SimplificationEngine::attach(salg); _formulaIndex=static_cast ( _salg->getIndexManager()->request(SKOLEMISING_FORMULA_INDEX) ); - - _boolInstInstIndex = 0; - - if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ - _boolInstInstIndex=static_cast ( - _salg->getIndexManager()->request(BOOL_INST_INSTANTIATION_INDEX) ); - } } void LazyClausification::detach() @@ -494,12 +446,8 @@ void LazyClausification::detach() CALL("LazyClausification::detach"); _formulaIndex=0; - _boolInstInstIndex = 0; _salg->getIndexManager()->release(SKOLEMISING_FORMULA_INDEX); - if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ - _salg->getIndexManager()->release(BOOL_INST_INSTANTIATION_INDEX); - } SimplificationEngine::detach(); } @@ -514,14 +462,14 @@ ClauseIterator LazyClausificationGIE::generateClauses(Clause* c) { CALL("LazyClausificationGIE::simplifyMany"); - return produceClauses(c, true, _formulaIndex, _boolInstInstIndex); + return produceClauses(c, true, _formulaIndex); } ClauseIterator LazyClausification::perform(Clause* c) { CALL("LazyClausification::perform"); - return produceClauses(c, false, _formulaIndex, _boolInstInstIndex); + return produceClauses(c, false, _formulaIndex); } diff --git a/Inferences/CNFOnTheFly.hpp b/Inferences/CNFOnTheFly.hpp index 9fedc0f98a..c708b7774a 100644 --- a/Inferences/CNFOnTheFly.hpp +++ b/Inferences/CNFOnTheFly.hpp @@ -74,7 +74,6 @@ class LazyClausification private: SkolemisingFormulaIndex* _formulaIndex; - BoolInstInstantiationIndex* _boolInstInstIndex; }; class LazyClausificationGIE @@ -96,7 +95,6 @@ class LazyClausificationGIE private: SkolemisingFormulaIndex* _formulaIndex; - BoolInstInstantiationIndex* _boolInstInstIndex; }; diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 5eab4f602c..effe8d03d2 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -87,7 +87,6 @@ #include "Inferences/BetaEtaISE.hpp" #include "Inferences/FlexFlexSimplify.hpp" #include "Inferences/PositiveExt.hpp" -#include "Inferences/BoolInstantiation.hpp" #endif #include "Inferences/URResolution.hpp" @@ -1595,9 +1594,6 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if(env.options->choiceReasoning()){ gie->addFront(new Choice()); } - if(env.options->booleanInstantiation() != Options::BoolInstantiation::OFF){ - gie->addFront(new BoolInstantiation()); - } } if(opt.complexBooleanReasoning() && prb.hasBoolVar() && prb.higherOrder()){ diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 2511a82d3c..540ff07a7e 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1928,19 +1928,6 @@ void Options::init() _positiveExt.onlyUsefulWith(_functionExtensionality.is(notEqual(FunctionExtensionality::AXIOM))); _positiveExt.tag(OptionTag::HIGHER_ORDER); - - - _boolInstantiation = ChoiceOptionValue("bool_inst","bi",BoolInstantiation::OFF, - {"off", "abs", "abs_sub"}); - _boolInstantiation.description= - "Enables heuristic instantiation of higher-order variables with Bool return type.\n" - " -abs attempt to instantiate such variables with abstractions of literals coming from conjeture.\n" - " -abs_sub same as above, but also subterms of clauses derived from conjecture"; - _lookup.insert(&_boolInstantiation); - _boolInstantiation.addProblemConstraint(hasHigherOrder()); - _boolInstantiation.addHardConstraint(If(notEqual(BoolInstantiation::OFF)).then(_clausificationOnTheFly.is(notEqual(CNFOnTheFly::OFF)))); - _boolInstantiation.tag(OptionTag::HIGHER_ORDER); - /*_lambdaFreeHol = BoolOptionValue("lam_free_hol","lfh",false); _lambdaFreeHol.description= "Reason about lambda-free hol. See paper by Vukmirovic et al."; diff --git a/Shell/Options.hpp b/Shell/Options.hpp index d9cd2c60da..91ea572035 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -759,12 +759,6 @@ class Options PI_SIGMA = 8 }; - enum class BoolInstantiation : unsigned int { - OFF = 0, - ABSTRACTION = 1, - ABS_AND_SUBTERM = 2 - }; - enum class HPrinting : unsigned int { RAW = 0, DB_INDICES = 1, @@ -2440,7 +2434,6 @@ bool _hard; bool cases() const { return _cases.actualValue; } bool newTautologyDel() const { return _newTautologyDel.actualValue; } bool positiveExtensionality() const { return _positiveExt.actualValue; } - BoolInstantiation booleanInstantiation() const { return _boolInstantiation.actualValue; } // bool lambdaFreeHol() const { return _lambdaFreeHol.actualValue; } bool iffXorRewriter() const { return _iffXorRewriter.actualValue; } // TODO doesn't do anyhting currently @@ -2891,7 +2884,6 @@ bool _hard; BoolOptionValue _cases; BoolOptionValue _newTautologyDel; BoolOptionValue _positiveExt; - ChoiceOptionValue _boolInstantiation; BoolOptionValue _lambdaFreeHol; BoolOptionValue _iffXorRewriter; // BoolOptionValue _complexVarCondition; From d6e7fa2f0a81a55cdb04de8ffa8ed087261b20b7 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 8 Jun 2023 11:31:49 +0200 Subject: [PATCH 126/210] added lazy_pi_sigma_gen to cnfonf --- samplerEx.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samplerEx.txt b/samplerEx.txt index 416124ec12..4dab147e15 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -344,7 +344,7 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 # cnf_on_the_fly apa=on > cnfonf ~cat off:1 -apa=off > cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1,off:1 +apa=off > cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1,lazy_pi_sigma_gen:1,off:1 # bool_inst cnfonf!=off > bi ~cat off:1,abs:1,abs_sub:1 From 75540da4c6f3bc84c0b95646abb7a922a108d2ee Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 8 Jun 2023 11:48:32 +0200 Subject: [PATCH 127/210] no bool_inst for now and awrsf must start from 1 not 0 --- samplerEx.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/samplerEx.txt b/samplerEx.txt index 4dab147e15..b2593705d0 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -88,7 +88,7 @@ lecc!=1 > lecc ~uf 0.5,2.0 > awrs ~cat constant:8,decay:1,converge:1 # age_weight_ratio_shape_frequency -awrs!=constant > awrsf ~ui 0,500 +awrs!=constant > awrsf ~ui 1,500 # nongoal_weight_coefficient > nwc ~cat 1:2,2:1 @@ -346,8 +346,8 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 apa=on > cnfonf ~cat off:1 apa=off > cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1,lazy_pi_sigma_gen:1,off:1 -# bool_inst -cnfonf!=off > bi ~cat off:1,abs:1,abs_sub:1 +# bool_inst (disable for now) +# cnfonf!=off > bi ~cat off:1,abs:1,abs_sub:1 # complex_bool_reasoning > cbe ~cat off:1,on:1 From 899a0652a5d8c0bef64ada354749326da6b7cf03 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 8 Jun 2023 11:57:25 +0200 Subject: [PATCH 128/210] a few more updates of the sampling file --- samplerEx.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/samplerEx.txt b/samplerEx.txt index b2593705d0..5d4f38cae7 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -14,8 +14,8 @@ # function_definition_elimination > fde ~cat all:5,none:1,unused:1 -# general_splitting -> gsp ~cat off:8,on:1 +# general_splitting (no gsp for Ahmed) +# > gsp ~cat off:8,on:1 # inline_let -- this is probably irrelevant on TPTP anyway > ile ~cat off:10,on:1 @@ -59,7 +59,7 @@ ss!=off > st ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5: # literal selection #(kicked out looakead selections: 11:131,-11:131,1011:357,-1011:357, not compatible with HO) > $s_pos ~cat Y:4,N:1 -$s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:300,20:11,21:66,22:11,30:6,31:14,32:4,33:10,34:3,35:8,666:50,1002:141,1003:14,1004:23,1010:145,1011:357,1666:50 +$s_pos=Y > s ~cat 0:11,1:31,2:52,3:21,4:22,10:300,20:11,21:66,22:11,30:6,31:14,32:4,33:10,34:3,35:8,666:50,1002:141,1003:14,1004:23,1010:145,1666:50 $s_pos=N > s ~cat -1:31,-2:52,-3:21,-4:22,-10:300,-20:11,-21:66,-22:11,-30:6,-31:14,-32:4,-33:10,-34:3,-35:8,-666:50,-1002:141,-1003:14,-1004:23,-1010:145,-1666:50 # lookahaed_delay @@ -340,7 +340,7 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 > cha ~cat off:1,on:1 # choice_reasoning -> chr ~cat off:1,on:1 +cha=off > chr ~cat off:1,on:1 # cnf_on_the_fly apa=on > cnfonf ~cat off:1 From 49ffa8c63b1e56ffb1399ff56ac0759eff7e8b01 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 8 Jun 2023 12:41:30 +0000 Subject: [PATCH 129/210] one more sampling fix --- samplerEx.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/samplerEx.txt b/samplerEx.txt index 5d4f38cae7..a0615b71c0 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -1,7 +1,7 @@ # PREPROCESSING -# blocked_clause_elimination -> bce ~cat off:5,on:1 +# blocked_clause_elimination (preferring to skip for HO) +# > bce ~cat off:5,on:1 # equality_proxy (no ep for Ahmed) #> ep ~cat off:70,RST:2,R:3,RSTC:2,RS:3 @@ -334,7 +334,7 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 > c ~cat off:1,on:1 # cases_simp -> cs ~cat off:1,on:1 +cases_simp=off > cs ~cat off:1,on:1 # choice_ax > cha ~cat off:1,on:1 From 6a2a64c2e85ad87c9b984209a50e981741fe56db Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 8 Jun 2023 14:24:53 +0100 Subject: [PATCH 130/210] adding in a slimmed down version of Boolean Instantiation and adding in a pragmatic mode as well --- Inferences/CNFOnTheFly.cpp | 39 +++++++++++++++++- Kernel/HOLUnification.cpp | 11 +++++- Kernel/Inference.cpp | 2 +- Kernel/Inference.hpp | 1 + Kernel/Signature.hpp | 10 +++++ Kernel/Term.cpp | 7 +++- Shell/FOOLElimination.cpp | 81 ++++++++++++++++++++++++++++++-------- Shell/FOOLElimination.hpp | 5 ++- Shell/Options.cpp | 14 ++++++- Shell/Options.hpp | 10 +++-- Shell/Preprocess.cpp | 58 ++++++++++++++++++++++++--- Shell/Preprocess.hpp | 4 ++ 12 files changed, 208 insertions(+), 34 deletions(-) diff --git a/Inferences/CNFOnTheFly.cpp b/Inferences/CNFOnTheFly.cpp index ecd4510996..3a2d94ec7f 100644 --- a/Inferences/CNFOnTheFly.cpp +++ b/Inferences/CNFOnTheFly.cpp @@ -52,7 +52,8 @@ ClauseIterator produceClauses(Clause* c, bool generating, CALL("CNFOnTheFly::produceClauses"); static bool eager = env.options->cnfOnTheFly() == Options::CNFOnTheFly::EAGER; - static bool simp = env.options->cnfOnTheFly() == Options::CNFOnTheFly::LAZY_SIMP; + static bool instantiations = env.options->cnfOnTheFly() == Options::CNFOnTheFly::CONJ_EAGER; + static bool simp = env.options->cnfOnTheFly() == Options::CNFOnTheFly::LAZY_SIMP || instantiations; static bool gen = env.options->cnfOnTheFly() == Options::CNFOnTheFly::LAZY_GEN; static bool simp_except_pi_sigma_gen = env.options->cnfOnTheFly() == Options::CNFOnTheFly::LAZY_SIMP_PI_SIGMA_GEN; static bool simp_except_not_be_off = env.options->cnfOnTheFly() == Options::CNFOnTheFly::LAZY_SIMP_NOT_GEN_BOOL_EQ_OFF; @@ -218,6 +219,42 @@ ClauseIterator produceClauses(Clause* c, bool generating, if((prox == Signature::PI && positive) || (prox == Signature::SIGMA && !positive)){ rule = convert(Signature::PI); newTerm = piRemoval(args[0], c, srt); + if(instantiations && !args[0].isVar()){ + DHSet* insts = env.signature->getInstantiations(); + DHSet::Iterator it(*insts); + while(it.hasNext()){ + TermList t = it.next(); + ASS(t.isTerm()); + static RobSubstitutionTS subst; + subst.reset(); + + TermList tSort = SortHelper::getResultSort(t.term()); + TermList aSort = srt.domain(); + + if(subst.unify(tSort,0,aSort,1)){ + TermList tS = subst.apply(t, 0); + TermList argS = subst.apply(args[0],1); + + TermList app = AH::app(argS, tS); + Literal* l1 = Literal::createEquality(true, app, rhs, boolSort); + + unsigned clen = c->length(); + + // cant use replaceLits, as we need to apply the type unifier + Clause* res = new(clen) Clause(clen, GeneratingInference1(InferenceRule::BOOL_INSTANTIATION, c)); + (*res)[0] = l1; + unsigned next = 1; + for(unsigned i=0;ipragmatic()){ + forward = backtrack(); + continue; + } else { + break; + } + } auto con = popFromUnifPairs(_bdStack->top()); diff --git a/Kernel/Inference.cpp b/Kernel/Inference.cpp index 604d65de7a..d51d31940a 100644 --- a/Kernel/Inference.cpp +++ b/Kernel/Inference.cpp @@ -971,7 +971,7 @@ vstring Kernel::ruleName(InferenceRule rule) case InferenceRule::PROJECT: return "project"; case InferenceRule::BOOL_INSTANTIATION: - return "boolean instantiation"; + return "heuristic instantiation"; /* these cases are no actual inference rules but only markeres to separatea groups of rules */ case InferenceRule::PROXY_AXIOM: #endif diff --git a/Kernel/Inference.hpp b/Kernel/Inference.hpp index bfea0328ce..80ba101b67 100644 --- a/Kernel/Inference.hpp +++ b/Kernel/Inference.hpp @@ -330,6 +330,7 @@ enum class InferenceRule : unsigned char { HOL_EQUALITY_ELIMINATION, + // TODO change to HEURISTIC_... BOOL_INSTANTIATION, #endif /** the last generating inference marker -- diff --git a/Kernel/Signature.hpp b/Kernel/Signature.hpp index dcd839c844..dfab065992 100644 --- a/Kernel/Signature.hpp +++ b/Kernel/Signature.hpp @@ -543,6 +543,10 @@ class Signature _choiceSymbols.insert(fun); } + void addInstantiation(TermList inst){ + _instantiations.insert(inst); + } + bool isChoiceOperator(unsigned fun){ return _choiceSymbols.contains(fun); } @@ -550,6 +554,10 @@ class Signature DHSet* getChoiceOperators(){ return &_choiceSymbols; } + + DHSet* getInstantiations(){ + return &_instantiations; + } #endif /** return the number of functions */ @@ -886,7 +894,9 @@ class Signature Stack _typeCons; #if VHOL + // TODO these two don't belong in the signature DHSet _choiceSymbols; + DHSet _instantiations; #endif /** * Map from vstring "name_arity" to their numbers diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 8fc0268688..2d8fba708b 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -1262,7 +1262,9 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const if(isLambdaTerm()){ unsigned v = st.size() ? st.top().second + 1 : 0; vstring bvar = (pretty ? "y" : "Y") + Int::toString(v); - bvar = !pretty ? "[" + bvar + " : " + termToStr(*nthArgument(0),true,st) + "]" : bvar; + bvar = pretty ? + bvar + " : " + termToStr(*nthArgument(0),true,st) : + "[" + bvar + " : " + termToStr(*nthArgument(0),true,st) + "]"; bvar = db ? "" : bvar; IndexVarStack newSt(st); @@ -1313,7 +1315,8 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const } } - if(head.isTerm() && !head.isEquals() && !head.isLambdaTerm() && head.term()->arity()){ + if(head.isTerm() && !head.isEquals() && head.deBruijnIndex().isNone() && + !head.isLambdaTerm() && head.term()->arity()){ Term* t = head.term(); if(pretty) headStr += "⟨"; for(unsigned i = 0; i < t->arity(); i++){ diff --git a/Shell/FOOLElimination.cpp b/Shell/FOOLElimination.cpp index cf3c0dd22a..35904721f7 100644 --- a/Shell/FOOLElimination.cpp +++ b/Shell/FOOLElimination.cpp @@ -60,9 +60,21 @@ bool FOOLElimination::needsElimination(FormulaUnit* unit) { CALL("FOOLElimination::needsElimination"); #if VHOL - // process everything into a big proxified term - if(env.property->higherOrder() && env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER) - { return true; } + if(env.property->higherOrder()) + { + switch(env.options->cnfOnTheFly()){ + case Options::CNFOnTheFly::EAGER: + break; + case Options::CNFOnTheFly::CONJ_EAGER: + if(unit->inputType() != UnitInputType::NEGATED_CONJECTURE && + unit->inputType() != UnitInputType::CONJECTURE){ + return true; + } + break; + default: + return true; + } + } #endif /** @@ -165,7 +177,27 @@ FormulaUnit* FOOLElimination::apply(FormulaUnit* unit) { SortHelper::collectVariableSorts(formula, _varSorts); - Formula* processedFormula = process(formula); +#if VHOL + bool isConjecture = + unit->inputType() == UnitInputType::NEGATED_CONJECTURE || + unit->inputType() == UnitInputType::CONJECTURE; + + // The old implementation (combinator implementation) had a check !_polymorhpic + // I've removed it here, but if we start seeing issues on polymorphic problems, that + // is one place to check immediately + bool proxify = env.property->higherOrder() && + env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && + env.options->cnfOnTheFly() != Options::CNFOnTheFly::OFF && + (env.options->cnfOnTheFly() != Options::CNFOnTheFly::CONJ_EAGER || !isConjecture); +#endif + + Formula* processedFormula = +#if VHOL + proxify ? + convertToProxified(formula) : +#endif + process(formula); + if (formula == processedFormula) { return rectifiedUnit; } @@ -188,23 +220,40 @@ FormulaUnit* FOOLElimination::apply(FormulaUnit* unit) { return processedUnit; } -Formula* FOOLElimination::process(Formula* formula) { - CALL("FOOLElimination::process(Formula*)"); - #if VHOL - if(env.property->higherOrder() && env.options->cnfOnTheFly() != Options::CNFOnTheFly::EAGER && - !_polymorphic){ // why the !_polymorphic check? It is a varry over from old implementation, do we still need it??? - TermList proxifiedFormula = LambdaConversion().convertLambda(formula); - Formula* processedFormula = toEquality(proxifiedFormula); - - if (env.options->showPreprocessing()) { - reportProcessed(formula->toString(), processedFormula->toString()); - } +Formula* FOOLElimination::convertToProxified(Formula* formula) +{ + CALL("FOOLElimination::convertToProxified"); + + LambdaConversion lc; + + Formula* processedFormula; + if(formula->connective() == LITERAL){ + // don't proxify the equality itself, as this blocks definition rewriting + // which really harms performance + Literal* literal = formula->literal(); + TermList lhs = *literal->nthArgument(0); + TermList rhs = *literal->nthArgument(1); + lhs = lc.convertLambda(lhs); + rhs = lc.convertLambda(rhs); + literal = Literal::createEquality(literal->polarity(), lhs, rhs, SortHelper::getEqualityArgumentSort(literal)); + processedFormula = new AtomicFormula(literal); + } else { + TermList proxifiedFormula = lc.convertLambda(formula); + processedFormula = toEquality(proxifiedFormula); + } - return processedFormula; + if (env.options->showPreprocessing()) { + reportProcessed(formula->toString(), processedFormula->toString()); } + + return processedFormula; +} #endif +Formula* FOOLElimination::process(Formula* formula) { + CALL("FOOLElimination::process(Formula*)"); + switch (formula->connective()) { case LITERAL: { Literal* literal = formula->literal(); diff --git a/Shell/FOOLElimination.hpp b/Shell/FOOLElimination.hpp index 33b88012d0..c131149476 100644 --- a/Shell/FOOLElimination.hpp +++ b/Shell/FOOLElimination.hpp @@ -62,7 +62,10 @@ class FOOLElimination { /** Process a given part of the unit */ FormulaList* process(FormulaList* fs); Formula* process(Formula* f); - +#if VHOL + Formula* convertToProxified(Formula* f); +#endif + // A context in one of two possible values, so we model it with bool constants typedef bool Context; static const Context TERM_CONTEXT = true; diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 540ff07a7e..a44e50d660 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1782,6 +1782,15 @@ void Options::init() _superposition.description= "Control superposition. Turning off this core inference leads to an incomplete calculus on equational problems."; _lookup.insert(&_superposition); + + _heuristicInstantiation = BoolOptionValue("heur_inst","hi",false); + _heuristicInstantiation.onlyUsefulWith(InferencingSaturationAlgorithm()); + _heuristicInstantiation.addProblemConstraint(hasHigherOrder()); + _heuristicInstantiation.addHardConstraint(If(notEqual(false)).then(_clausificationOnTheFly.is(equal(CNFOnTheFly::CONJ_EAGER)))); + _heuristicInstantiation.description= "Heuristically instantiates universally quantified variables with abstractions of literals from negated conjecture"; + _lookup.insert(&_heuristicInstantiation); + _heuristicInstantiation.tag(OptionTag::HIGHER_ORDER); + _higherOrderUnifDepth = UnsignedOptionValue("hol_unif_depth","hud",2); _higherOrderUnifDepth.description = "Set the maximum depth (in terms of projextions and imitations) that higher-order unification can descend to. Once limit is reached, remaining pairs are retunred as constraints."; _higherOrderUnifDepth.addProblemConstraint(hasHigherOrder()); @@ -1818,13 +1827,13 @@ void Options::init() _injectivity.description="Attempts to identify injective functions and postulates a left-inverse"; _lookup.insert(&_injectivity); _injectivity.addProblemConstraint(hasHigherOrder()); - _injectivity.tag(OptionTag::HIGHER_ORDER); + _injectivity.tag(OptionTag::HIGHER_ORDER);*/ _pragmatic = BoolOptionValue("pragmatic","prag",false); _pragmatic.description="Modifes various parameters to help Vampire solve 'hard' higher-order"; _lookup.insert(&_pragmatic); _pragmatic.addProblemConstraint(hasHigherOrder()); - _pragmatic.tag(OptionTag::HIGHER_ORDER);*/ + _pragmatic.tag(OptionTag::HIGHER_ORDER); // TODO we have two ways of enabling function extensionality abstraction atm: // this option, and `-uwa`. @@ -1844,6 +1853,7 @@ void Options::init() "lazy_pi_sigma_gen", "lazy_not_gen_be_off", "lazy_not_be_gen", + "conj_eager", "off"}); _clausificationOnTheFly.description="Various options linked to clausification on the fly"; _lookup.insert(&_clausificationOnTheFly); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 91ea572035..ebd9a8339c 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -744,7 +744,8 @@ class Options LAZY_SIMP_PI_SIGMA_GEN = 4, LAZY_SIMP_NOT_GEN_BOOL_EQ_OFF = 5, LAZY_SIMP_NOT_GEN_BOOL_EQ_GEN = 6, - OFF = 7 + CONJ_EAGER = 7, + OFF = 8 }; enum class PISet : unsigned int { @@ -2420,8 +2421,7 @@ bool _hard; bool addProxyAxioms() const { return _addProxyAxioms.actualValue; } bool choiceAxiom() const { return _choiceAxiom.actualValue; } // bool injectivityReasoning() const { return _injectivity.actualValue; } - // TODO doesn't do anyhting currently - // bool pragmatic() const { return _pragmatic.actualValue; } + bool pragmatic() const { return _pragmatic.actualValue; } bool choiceReasoning() const { return _choiceReasoning.actualValue; } // bool prioritiseClausesProducedByLongReduction() const { return _priortyToLongReducts.actualValue; } FunctionExtensionality functionExtensionality() const { return _functionExtensionality.actualValue; } @@ -2441,6 +2441,7 @@ bool _hard; HPrinting holPrinting() const { return _holPrinting.actualValue; } void setHolPrinting(HPrinting setting) { _holPrinting.actualValue = setting; } bool superposition() const {return _superposition.actualValue; } + bool heuristicInstantiation() const { return _heuristicInstantiation.actualValue; } unsigned higherOrderUnifDepth() const { return _higherOrderUnifDepth.actualValue; } #endif // For unit testing @@ -2870,7 +2871,7 @@ bool _hard; BoolOptionValue _addProxyAxioms; BoolOptionValue _choiceAxiom; // BoolOptionValue _injectivity; - // BoolOptionValue _pragmatic; + BoolOptionValue _pragmatic; BoolOptionValue _choiceReasoning; // BoolOptionValue _priortyToLongReducts; ChoiceOptionValue _functionExtensionality; @@ -2880,6 +2881,7 @@ bool _hard; BoolOptionValue _complexBooleanReasoning; BoolOptionValue _booleanEqTrick; BoolOptionValue _superposition; + BoolOptionValue _heuristicInstantiation; BoolOptionValue _casesSimp; BoolOptionValue _cases; BoolOptionValue _newTautologyDel; diff --git a/Shell/Preprocess.cpp b/Shell/Preprocess.cpp index 066f87f94a..f731544ad7 100644 --- a/Shell/Preprocess.cpp +++ b/Shell/Preprocess.cpp @@ -51,6 +51,7 @@ #include "FOOLElimination.hpp" #if VHOL #include "LambdaConversion.hpp" +#include "Kernel/ApplicativeHelper.hpp" #endif #include "TheoryAxioms.hpp" #include "TheoryFlattening.hpp" @@ -431,7 +432,10 @@ prb.getProperty(); if(env.options->tweeGoalTransformation() != Options::TweeGoalTransformation::OFF) { #if VHOL if(prb.higherOrder()){ - env.out() << "WARNING: twee goal transformation is currently not compatible with higher-order. Ignoring request to use." << std::endl; + env.beginOutput(); + addCommentSignForSZS(env.out()); + env.out() << "WARNING: twee goal transformation is currently not compatible with higher-order. Ignoring request to use." << endl; + env.endOutput(); } else { #endif env.statistics->phase = Statistics::TWEE; @@ -445,6 +449,12 @@ prb.getProperty(); #endif } +#if VHOL + if(env.property->higherOrder() && env.options->heuristicInstantiation()){ + findAbstractions(prb.units()); + } +#endif + if ( #if VHOL !prb.higherOrder() && @@ -483,12 +493,23 @@ prb.getProperty(); } if (_options.blockedClauseElimination()) { - env.statistics->phase=Statistics::BLOCKED_CLAUSE_ELIMINATION; - if(env.options->showPreprocessing()) - env.out() << "blocked clause elimination" << std::endl; +#if VHOL + if(prb.higherOrder()){ + env.beginOutput(); + addCommentSignForSZS(env.out()); + env.out() << "WARNING: blocked clause elimination is currently not compatible with higher-order. Ignoring request to use." << endl; + env.endOutput(); + } else { +#endif + env.statistics->phase=Statistics::BLOCKED_CLAUSE_ELIMINATION; + if(env.options->showPreprocessing()) + env.out() << "blocked clause elimination" << std::endl; - BlockedClauseElimination bce; - bce.apply(prb); + BlockedClauseElimination bce; + bce.apply(prb); +#if VHOL + } +#endif } if (_options.shuffleInput()) { @@ -528,6 +549,31 @@ prb.getProperty(); } } // Preprocess::preprocess () +#if VHOL +void Preprocess::findAbstractions(UnitList*& units){ + CALL("Preprocess::findAbstractions"); + + UnitList::RefIterator uit(units); + while (uit.hasNext()) { + Unit* &u = uit.next(); + if (!u->derivedFromGoal()) + continue; + + ASS(u->isClause()); + Clause* c = u->asClause(); + + for(unsigned i = 0; i < c->length(); i++){ + Literal* lit = (*c)[i]; + TermStack abstractionTerms; + ApplicativeHelper::getAbstractionTerms(lit, abstractionTerms); + while(!abstractionTerms.isEmpty()){ + env.signature->addInstantiation(abstractionTerms.pop()); + } + } + } +} +#endif + /** * Preprocess the unit using options from opt. Preprocessing may diff --git a/Shell/Preprocess.hpp b/Shell/Preprocess.hpp index 0f32d270f1..bd8d1417f4 100644 --- a/Shell/Preprocess.hpp +++ b/Shell/Preprocess.hpp @@ -53,6 +53,10 @@ class Preprocess void preprocess3(Problem& prb); void clausify(Problem& prb); +#if VHOL + void findAbstractions(UnitList*& units); +#endif + void newCnf(Problem& prb); /** Options used in the normalisation */ From f77398047644affec20d205070d042fd455bf7a1 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 8 Jun 2023 15:57:37 +0200 Subject: [PATCH 131/210] tuning sampler still --- samplerEx.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/samplerEx.txt b/samplerEx.txt index a0615b71c0..75e363e45b 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -344,7 +344,10 @@ cha=off > chr ~cat off:1,on:1 # cnf_on_the_fly apa=on > cnfonf ~cat off:1 -apa=off > cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1,lazy_pi_sigma_gen:1,off:1 +apa=off > cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1,lazy_pi_sigma_gen:1,conj_eager:1,off:1 + +# heur_inst +cnfonf=conj_eager > hi ~cat off:1,on:1 # bool_inst (disable for now) # cnfonf!=off > bi ~cat off:1,abs:1,abs_sub:1 @@ -376,3 +379,5 @@ func_ext!=axiom > pe ~cat off:1,on:1 # prim_inst_set > piset ~cat all:1,all_but_not_eq:1,not:1,small_set:1,pragmatic:1,and:1,or:1,equals:1,pi_sigma:1 +# pragmatic +> prag ~cat off:1,on:1 From a02c9292ae4b49db3f0b4c181b43b99843bbb9d3 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 8 Jun 2023 16:36:20 +0100 Subject: [PATCH 132/210] fixing some corner cases --- Kernel/KBO.cpp | 13 ++++++++++++- Shell/InequalitySplitting.cpp | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Kernel/KBO.cpp b/Kernel/KBO.cpp index 5c5a2d1129..c594b7d565 100644 --- a/Kernel/KBO.cpp +++ b/Kernel/KBO.cpp @@ -100,8 +100,11 @@ Ordering::Result KBO::State::result(Term* t1, Term* t2) { CALL("KBO::State::result") Result res; + cout << "HERE with " << t1->toString() << endl; + cout << "HERE with " << t2->toString() << endl; if(_weightDiff) { res=_weightDiff>0 ? GREATER : LESS; + cout << "HERE1 " << _weightDiff << endl; } else if(t1->functor()!=t2->functor()) { if(t1->isLiteral()) { int prec1, prec2; @@ -113,7 +116,7 @@ Ordering::Result KBO::State::result(Term* t1, Term* t2) ASS(t2->isSort()); //should only compare sorts with sorts res=_kbo.compareTypeConPrecedences(t1->functor(), t2->functor()); ASS_REP(res==GREATER || res==LESS, res);//precedence ordering must be total - } else { + } else { res=_kbo.compareFunctionPrecedences(t1->functor(), t2->functor()); ASS_REP(res==GREATER || res==LESS, res); //precedence ordering must be total } @@ -203,6 +206,8 @@ void KBO::State::traverse(TermList tl,int coef) Term* t=tl.term(); ASSERT_VALID(*t); + cout << tl << " " << _kbo.symbolWeight(t) << endl; + _weightDiff+=_kbo.symbolWeight(t)*coef; if(!t->arity()) { @@ -956,6 +961,12 @@ bool KboSpecialWeights::tryGetWeight(unsigned functor, unsigned& bool KboSpecialWeights::tryGetWeight(unsigned functor, unsigned& weight) const { auto sym = env.signature->getFunction(functor); + if (env.signature->isFoolConstantSymbol(true, functor) || + env.signature->isFoolConstantSymbol(false, functor)){ + // Bool symbols must have minimum weight to esnure that they are smaller than other + // terms + weight = _variableWeight; return true; + } if (sym->integerConstant()) { weight = _numInt; return true; } if (sym->rationalConstant()) { weight = _numRat; return true; } if (sym->realConstant()) { weight = _numReal; return true; } diff --git a/Shell/InequalitySplitting.cpp b/Shell/InequalitySplitting.cpp index 630bbffe3e..c3cd8a4a8d 100644 --- a/Shell/InequalitySplitting.cpp +++ b/Shell/InequalitySplitting.cpp @@ -56,7 +56,7 @@ void InequalitySplitting::perform(Problem& prb) CALL("InequalitySplitting::perform"); #if VHOL - _appify = prb.hasApp(); + _appify = prb.higherOrder(); #endif if(perform(prb.units())) { prb.invalidateByRemoval(); From 991752673f77bc91ea715230e352ad3a2cc4cfae Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 8 Jun 2023 16:44:21 +0100 Subject: [PATCH 133/210] removing debug code --- Kernel/KBO.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Kernel/KBO.cpp b/Kernel/KBO.cpp index c594b7d565..5bf5b12b3c 100644 --- a/Kernel/KBO.cpp +++ b/Kernel/KBO.cpp @@ -99,12 +99,9 @@ class KBO::State Ordering::Result KBO::State::result(Term* t1, Term* t2) { CALL("KBO::State::result") - Result res; - cout << "HERE with " << t1->toString() << endl; - cout << "HERE with " << t2->toString() << endl; + Result res; if(_weightDiff) { res=_weightDiff>0 ? GREATER : LESS; - cout << "HERE1 " << _weightDiff << endl; } else if(t1->functor()!=t2->functor()) { if(t1->isLiteral()) { int prec1, prec2; @@ -206,8 +203,6 @@ void KBO::State::traverse(TermList tl,int coef) Term* t=tl.term(); ASSERT_VALID(*t); - cout << tl << " " << _kbo.symbolWeight(t) << endl; - _weightDiff+=_kbo.symbolWeight(t)*coef; if(!t->arity()) { From dee2da817a209c710747007cc7974a4374a913ae Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 9 Jun 2023 11:21:10 +0100 Subject: [PATCH 134/210] minor bug fix, pragmatic is not compatible with unif depth being set to 0 --- Inferences/EqualityResolution.cpp | 6 ++++++ Kernel/HOLUnification.cpp | 3 ++- Shell/Options.cpp | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index b46b538df6..9d2db12c60 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -156,6 +156,12 @@ struct EqualityResolution::ResultFn env.statistics->equalityResolution++; results->push(res); + // would like to do the below, but exiting higher-order iterator early causes + // some issue which I haven;t tracked at the moment. TODO + //if(res->isEmpty()){ + // derived the empty clause, no need to continue with loop + //break; + //} } return pvi(getUniquePersistentIterator(ClauseStack::Iterator(*results))); } diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 34fb7a3af6..5e111bfbfc 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -58,6 +58,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorepragmatic()){ + if(env.options->pragmatic() && depth){ forward = backtrack(); continue; } else { diff --git a/Shell/Options.cpp b/Shell/Options.cpp index a44e50d660..a287e842eb 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1833,6 +1833,7 @@ void Options::init() _pragmatic.description="Modifes various parameters to help Vampire solve 'hard' higher-order"; _lookup.insert(&_pragmatic); _pragmatic.addProblemConstraint(hasHigherOrder()); + _pragmatic.addHardConstraint(If(equal(true)).then(_higherOrderUnifDepth.is(notEqual(0u)))); _pragmatic.tag(OptionTag::HIGHER_ORDER); // TODO we have two ways of enabling function extensionality abstraction atm: From 1c5842c5661d62b05fcab57957e349a8ce8f85c7 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 9 Jun 2023 14:50:06 +0200 Subject: [PATCH 135/210] fixed a typo --- samplerEx.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samplerEx.txt b/samplerEx.txt index 75e363e45b..38d2aaaf07 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -172,7 +172,7 @@ bsd=on > bsdmm ~cat 0:10,1:3,2:2,3:1 # forward_demodulation > fd ~cat all:500,off:41,preordered:168 -# forward_literal_rewriting +# forward_literal_rewriting > flr ~cat off:8,on:1 # function_definition_introduction (not implemented in Ahmed's branch) @@ -334,7 +334,7 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 > c ~cat off:1,on:1 # cases_simp -cases_simp=off > cs ~cat off:1,on:1 +c=off > cs ~cat off:1,on:1 # choice_ax > cha ~cat off:1,on:1 From 20a4351be38d33b2bec146c07bdd5faf97613015 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 9 Jun 2023 14:54:46 +0200 Subject: [PATCH 136/210] the thing with pragmatic --- samplerEx.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samplerEx.txt b/samplerEx.txt index 38d2aaaf07..c9475ad655 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -380,4 +380,4 @@ func_ext!=axiom > pe ~cat off:1,on:1 > piset ~cat all:1,all_but_not_eq:1,not:1,small_set:1,pragmatic:1,and:1,or:1,equals:1,pi_sigma:1 # pragmatic -> prag ~cat off:1,on:1 +hud!=0 > prag ~cat off:1,on:1 From e308af83f6c782c9660fb802eb3f04d0e530acb2 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sat, 10 Jun 2023 18:07:43 +0100 Subject: [PATCH 137/210] fixing choice reasoning - more investigation required --- Inferences/InferenceEngine.cpp | 23 +++++++++++++++++++++-- Inferences/InferenceEngine.hpp | 1 + 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Inferences/InferenceEngine.cpp b/Inferences/InferenceEngine.cpp index 9380a491ca..47e722e472 100644 --- a/Inferences/InferenceEngine.cpp +++ b/Inferences/InferenceEngine.cpp @@ -282,15 +282,16 @@ Clause* ChoiceDefinitionISE::simplify(Clause* c) TermList x, f; - if(!isPositive(lit1) && isOfFormXY(lit1, x) && + if( isNegative(lit1) && isOfFormXY(lit1, x) && isPositive(lit2) && isOfFormXfX(lit2, x, f)){ unsigned fun = f.term()->functor(); env.signature->addChoiceOperator(fun); return 0; } else - if(!isPositive(lit2) && isOfFormXY(lit2, x) && + if( isNegative(lit2) && isOfFormXY(lit2, x) && isPositive(lit1) && isOfFormXfX(lit1, x, f)) { unsigned fun = f.term()->functor(); + env.signature->addChoiceOperator(fun); return 0; } @@ -304,6 +305,7 @@ bool ChoiceDefinitionISE::isPositive(Literal* lit) { TermList rhs = *lit->nthArgument(1); if(!AH::isBool(lhs) && !AH::isBool(rhs)){ return false; } if(AH::isBool(lhs) && AH::isBool(rhs)){ return false; } + if(AH::isBool(lhs)){ return lit->polarity() == AH::isTrue(lhs); } @@ -313,6 +315,23 @@ bool ChoiceDefinitionISE::isPositive(Literal* lit) { return false; }; +bool ChoiceDefinitionISE::isNegative(Literal* lit) { + CALL("ChoiceDefinitionISE::isPositive"); + + TermList lhs = *lit->nthArgument(0); + TermList rhs = *lit->nthArgument(1); + if(!AH::isBool(lhs) && !AH::isBool(rhs)){ return false; } + if(AH::isBool(lhs) && AH::isBool(rhs)){ return false; } + + if(AH::isBool(lhs)){ + return lit->polarity() != AH::isTrue(lhs); + } + if(AH::isBool(rhs)){ + return lit->polarity() != AH::isTrue(rhs); + } + return false; +}; + bool ChoiceDefinitionISE::isOfFormXY(Literal* lit, TermList& x){ CALL("ChoiceDefinitionISE::isOfFormXY"); diff --git a/Inferences/InferenceEngine.hpp b/Inferences/InferenceEngine.hpp index be325d66bb..825f490d29 100644 --- a/Inferences/InferenceEngine.hpp +++ b/Inferences/InferenceEngine.hpp @@ -438,6 +438,7 @@ class ChoiceDefinitionISE Clause* simplify(Clause* cl); bool isPositive(Literal* lit); + bool isNegative(Literal* lit); bool isOfFormXY(Literal* lit, TermList& x); bool isOfFormXfX(Literal* lit, TermList x, TermList& f); From 782d9272bf8f2d44b2d79e11c112b492d5030f9e Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sat, 10 Jun 2023 23:26:39 +0100 Subject: [PATCH 138/210] fixing loose indices escaping in Choice.cpp and reviewing all uses of NonVariableNonTypeIterator --- Inferences/BoolSimp.cpp | 1 + Inferences/Choice.cpp | 6 +++--- Shell/FunctionDefinition.cpp | 3 +++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Inferences/BoolSimp.cpp b/Inferences/BoolSimp.cpp index ac016aef11..4f8638927c 100644 --- a/Inferences/BoolSimp.cpp +++ b/Inferences/BoolSimp.cpp @@ -38,6 +38,7 @@ Clause* BoolSimp::simplify(Clause* premise) { while (literalPosition < cLen) { Literal *literal = (*premise)[literalPosition]; + // Below should be safe. We can bool simplify a term that contains free indices NonVariableNonTypeIterator nvi(literal); while (nvi.hasNext()) { diff --git a/Inferences/Choice.cpp b/Inferences/Choice.cpp index 97f8654eaa..4f8b12b9ee 100644 --- a/Inferences/Choice.cpp +++ b/Inferences/Choice.cpp @@ -70,8 +70,8 @@ Clause* Choice::createChoiceAxiom(TermList op, TermList set) Clause* axiom = new(2) Clause(2, NonspecificInference0(UnitInputType::AXIOM, InferenceRule::CHOICE_AXIOM)); - (*axiom)[0] = Literal::createEquality(true, t1, AH::bottom(), AtomicSort::boolSort());; - (*axiom)[1] = Literal::createEquality(true, t2, AH::top(), AtomicSort::boolSort());; + (*axiom)[0] = Literal::createEquality(true, t1, AH::bottom(), AtomicSort::boolSort()); + (*axiom)[1] = Literal::createEquality(true, t2, AH::top(), AtomicSort::boolSort()); return axiom; } @@ -174,7 +174,7 @@ struct Choice::IsChoiceTerm TermStack args; TermList head; ApplicativeHelper::getHeadAndArgs(t, head, args); - if(args.size() == 1){ + if(args.size() == 1 && !args[0].isVar() && !args[0].containsLooseIndex()){ TermList headSort = AH::lhsSort(TermList(t)); TermList tv = TermList(0, VarBank::QUERY_BANK); // put on QUERY_BANK to separate in from variables in headSort diff --git a/Shell/FunctionDefinition.cpp b/Shell/FunctionDefinition.cpp index bc6c9262d4..b929fad96d 100644 --- a/Shell/FunctionDefinition.cpp +++ b/Shell/FunctionDefinition.cpp @@ -187,6 +187,9 @@ bool FunctionDefinition::removeUnusedDefinitions(UnitList*& units, Problem* prb) } } for(unsigned i=0;ifunctor(); From 464552bd13178d5d73601402e963d2491f8883c5 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sat, 10 Jun 2023 23:56:47 +0100 Subject: [PATCH 139/210] fixing some polymorphism issues in TweeGoalTransformation and updating to HOL --- Shell/TweeGoalTransformation.cpp | 53 ++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/Shell/TweeGoalTransformation.cpp b/Shell/TweeGoalTransformation.cpp index fb8a83d76b..a3c55c74e8 100644 --- a/Shell/TweeGoalTransformation.cpp +++ b/Shell/TweeGoalTransformation.cpp @@ -66,6 +66,8 @@ class Definizator : public BottomUpTermTransformer { bool _groundOnly; unsigned _typeArity; + TermStack _typeVars; + TermStack _termVars; TermStack _allVars; // including typeVars, which will come first, then termVars TermStack _termVarSorts; @@ -78,8 +80,8 @@ class Definizator : public BottomUpTermTransformer { varSeen.reset(); _typeArity = 0; _allVars.reset(); - static TermStack termVars; - termVars.reset(); + _typeVars.reset(); + _termVars.reset(); _termVarSorts.reset(); // fake scanVars cheaply @@ -94,16 +96,22 @@ class Definizator : public BottomUpTermTransformer { if(s == AtomicSort::superSort()) { _allVars.push(TermList(v,false)); } else { - termVars.push(TermList(v,false)); + _termVars.push(TermList(v,false)); _termVarSorts.push(varAndSort.second); } } } _typeArity = _allVars.size(); // allVars only collected typeVars until now - for(unsigned i = 0; i < termVars.size(); i++){ - _allVars.push(termVars[i]); + for(unsigned i = 0; i < _termVars.size() +#if VHOL + && !env.property->higherOrder() +#endif + ; i++){ + _allVars.push(_termVars[i]); } + SortHelper::normaliseArgSorts(_typeVars, _termVarSorts); + ASS_EQ(_typeArity+_termVarSorts.size(), _allVars.size()) } @@ -113,9 +121,15 @@ class Definizator : public BottomUpTermTransformer { // cout << "tf: " << trm.toString() << endl; if (trm.isVar()) return trm; + Term* t = trm.term(); if (t->isSort() || t->arity() == 0 || (!t->ground() && _groundOnly)) return trm; +#if VHOL + if (env.property->higherOrder() && trm.containsLooseIndex()) + { return trm; } +#endif + Term* key = t; if (!t->ground()) { // as we go bottom up, t is never too big (well, it could be wide, but at least not deep) @@ -129,6 +143,8 @@ class Definizator : public BottomUpTermTransformer { TermList res; if (!_cache.find(key,symAndDef)) { TermList outSort = SortHelper::getResultSort(t); + SortHelper::normaliseSort(_typeVars, outSort); + unsigned newSym; Clause* newDef; scanVars(t); @@ -137,17 +153,30 @@ class Definizator : public BottomUpTermTransformer { // (whether we will also demodulate in this direction may depend on the ordering, but with a constant-weight KBO we will) if (t->weight() > _allVars.size()+1) { // this is always true in the ground case (where t->weight()>=2 and _allVars.size() == 0) +#if VHOL + if(!env.property->higherOrder()){ +#endif + newSym = env.signature->addFreshFunction(_allVars.size(), "sF"); + OperatorType* type = OperatorType::getFunctionType(_termVarSorts.size(),_termVarSorts.begin(),outSort,_typeArity); + env.signature->getFunction(newSym)->setType(type); + + // res is used both to replace here, but also in the new definition + res = TermList(Term::create(newSym,_allVars.size(),_allVars.begin())); +#if VHOL + } else { + newSym = env.signature->addFreshFunction(_typeVars.size(), "sF"); + TermList sort = AtomicSort::arrowSort(_termVarSorts, outSort); + Signature::Symbol* sym = env.signature->getFunction(newSym); + sym->setType(OperatorType::getConstantsType(sort, _typeVars.size())); - newSym = env.signature->addFreshFunction(_allVars.size(), "sF"); - OperatorType* type = OperatorType::getFunctionType(_termVarSorts.size(),_termVarSorts.begin(),outSort,_typeArity); - env.signature->getFunction(newSym)->setType(type); - - // res is used both to replace here, but also in the new definition - res = TermList(Term::create(newSym,_allVars.size(),_allVars.begin())); + TermList head = TermList(Term::create(newSym, _typeVars.size(), _typeVars.begin())); + res= ApplicativeHelper::app(head, _termVars); + } +#endif // (we don't care the definition is not rectified, as long as it's correct) // it is correct, because the lhs below is t and not key - Literal* equation = Literal::createEquality(true, TermList(t), res, outSort); + Literal* equation = Literal::createEquality(true, TermList(t), res, SortHelper::getResultSort(res.term())); Inference inference(NonspecificInference0(UnitInputType::AXIOM,InferenceRule::FUNCTION_DEFINITION)); newDef = new (1) Clause(1, inference); newDef->literals()[0] = equation; From 8c66de4b7e61ba88959196b6cc007e792a25fcca Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Sun, 11 Jun 2023 03:41:02 +0000 Subject: [PATCH 140/210] tuning samplerEx.txt furher --- samplerEx.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/samplerEx.txt b/samplerEx.txt index c9475ad655..41207d16ee 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -164,7 +164,7 @@ bsd=on > bsdmm ~cat 0:10,1:3,2:2,3:1 > etr ~cat off:500,on:30 # extensionality_resolution -> er ~cat off:500,known:25,filter:26 +ins=0 > er ~cat off:500,known:25,filter:26 # fool_paramodulation (TODO: out for Ahmed for now) # > foolp ~cat off:10,on:1 @@ -353,7 +353,7 @@ cnfonf=conj_eager > hi ~cat off:1,on:1 # cnfonf!=off > bi ~cat off:1,abs:1,abs_sub:1 # complex_bool_reasoning -> cbe ~cat off:1,on:1 +apa=off > cbe ~cat off:1,on:1 # equality_to_equiv > e2e ~cat off:1,on:1 @@ -362,7 +362,7 @@ cnfonf=conj_eager > hi ~cat off:1,on:1 > fe ~cat off:1,axiom:1,abstraction:1 # hol_unif_depth -> hud ~ui 0,10 +> hud ~ui 0,15 # lam_free_hol # > lfh ~cat off:1,on:1 From 28dd7c4d6f167bdf199da200febfc2898cb1fb1a Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 2 Jun 2023 11:51:18 +0200 Subject: [PATCH 141/210] don't touch args.top() in DEBUG mode if there are actually no arguments (empty stacks don't like it) --- Kernel/TermTransformer.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Kernel/TermTransformer.cpp b/Kernel/TermTransformer.cpp index 7a119fb1b8..fe35fbecf0 100644 --- a/Kernel/TermTransformer.cpp +++ b/Kernel/TermTransformer.cpp @@ -409,7 +409,12 @@ Term* BottomUpTermTransformer::transform(Term* term) //here we assume, that stack is an array with //second topmost element as &top()-1, third at //&top()-2, etc... - TermList* argLst=&args.top() - (term->arity() - 1); +#if VDEBUG + // don't touch args.top() in DEBUG mode if there are actually no arguments (empty stacks don't like it) + TermList* argLst= args.size() ? &args.top() - (term->arity() - 1) : nullptr; +#else // in release, it's fine too, because Literal::create won't touch the pointer in the zero arity case + TermList* argLst= &args.top() - (term->arity() - 1); +#endif if (term->isLiteral()) { return Literal::create(static_cast(term), argLst); } else { From 530b50b587fd1eed1283a4ebf1783c89a0540459 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Sun, 11 Jun 2023 05:29:57 +0000 Subject: [PATCH 142/210] tentative: new way of dealing with apa/cbe interaction --- Shell/Options.cpp | 4 ++-- samplerEx.txt | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index a287e842eb..12498b5cd3 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1801,6 +1801,7 @@ void Options::init() _addProxyAxioms = BoolOptionValue("add_proxy_axioms","apa",false); _addProxyAxioms.description="Add logical proxy axioms"; _lookup.insert(&_addProxyAxioms); + _addProxyAxioms.onlyUsefulWith(_complexBooleanReasoning.is(equal(false))); _addProxyAxioms.addProblemConstraint(hasHigherOrder()); _addProxyAxioms.tag(OptionTag::HIGHER_ORDER); @@ -1888,9 +1889,8 @@ void Options::init() _complexBooleanReasoning = BoolOptionValue("complex_bool_reasoning","cbe",true); _complexBooleanReasoning.description= "Switches on primitive instantiation and elimination of leibniz equality"; - _complexBooleanReasoning.onlyUsefulWith(_addProxyAxioms.is(equal(false))); _lookup.insert(&_complexBooleanReasoning); - _complexBooleanReasoning.addProblemConstraint(hasHigherOrder()); + _complexBooleanReasoning.addProblemConstraint(hasHigherOrder()); _complexBooleanReasoning.tag(OptionTag::HIGHER_ORDER); _booleanEqTrick = BoolOptionValue("bool_eq_trick","bet",false); diff --git a/samplerEx.txt b/samplerEx.txt index 41207d16ee..2bd9809218 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -324,8 +324,11 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 # HIGHER ORDER STUFF +# complex_bool_reasoning +> cbe ~cat off:1,on:1 + # add_proxy_axioms -> apa ~cat off:1,on:1 +cbe=off > apa ~cat off:1,on:1 # bool_eq_trick > bet ~cat off:1,on:1 @@ -352,9 +355,6 @@ cnfonf=conj_eager > hi ~cat off:1,on:1 # bool_inst (disable for now) # cnfonf!=off > bi ~cat off:1,abs:1,abs_sub:1 -# complex_bool_reasoning -apa=off > cbe ~cat off:1,on:1 - # equality_to_equiv > e2e ~cat off:1,on:1 From a4110ce1f3bbe3807723e20f2514bb15760abf8d Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Sun, 11 Jun 2023 05:30:04 +0000 Subject: [PATCH 143/210] sample tgt too --- samplerEx.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samplerEx.txt b/samplerEx.txt index 2bd9809218..bbc0f2079e 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -32,7 +32,7 @@ $nm=NZ > nm ~sgd 0.07,2 > rp ~cat off:3,on:1 # twee_goal_transformation (not currently with HO) -# > tgt ~cat off:10,ground:6,full:5 +> tgt ~cat off:10,ground:6,full:5 # set_of_support > sos ~cat off:80,on:17,all:10 From a2acc860650b8a9fd42c4f322c8188a089384244 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 11 Jun 2023 06:39:57 +0100 Subject: [PATCH 144/210] improved warning regarding cbe and apa. Also added option app_unify that does not do anything at the moment --- Shell/Options.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 12498b5cd3..ed0d6982a9 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -512,7 +512,6 @@ void Options::init() "`full` is a generalization, where also non-ground subterms are considered."; _tweeGoalTransformation.tag(OptionTag::PREPROCESSING); _tweeGoalTransformation.setExperimental(); - _tweeGoalTransformation.addProblemConstraint(onlyFirstOrder()); _lookup.insert(&_tweeGoalTransformation); _generalSplitting = BoolOptionValue("general_splitting","gsp",false); @@ -1791,6 +1790,14 @@ void Options::init() _lookup.insert(&_heuristicInstantiation); _heuristicInstantiation.tag(OptionTag::HIGHER_ORDER); + + _applicativeUnify = BoolOptionValue("applicative_unif","au",false); + _applicativeUnify.onlyUsefulWith(InferencingSaturationAlgorithm()); + _applicativeUnify.addProblemConstraint(hasHigherOrder()); + _applicativeUnify.description= "Carries out first-order applicative unification instead of higher-order unification"; + _lookup.insert(&_applicativeUnify); + _applicativeUnify.tag(OptionTag::HIGHER_ORDER); + _higherOrderUnifDepth = UnsignedOptionValue("hol_unif_depth","hud",2); _higherOrderUnifDepth.description = "Set the maximum depth (in terms of projextions and imitations) that higher-order unification can descend to. Once limit is reached, remaining pairs are retunred as constraints."; _higherOrderUnifDepth.addProblemConstraint(hasHigherOrder()); @@ -1889,6 +1896,7 @@ void Options::init() _complexBooleanReasoning = BoolOptionValue("complex_bool_reasoning","cbe",true); _complexBooleanReasoning.description= "Switches on primitive instantiation and elimination of leibniz equality"; + _complexBooleanReasoning.addConstraint(If(equal(true)).then(_addProxyAxioms.is(equal(false)))); _lookup.insert(&_complexBooleanReasoning); _complexBooleanReasoning.addProblemConstraint(hasHigherOrder()); _complexBooleanReasoning.tag(OptionTag::HIGHER_ORDER); From 3a2502044a03493793e1c2fa3813bfdf7527a188 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 11 Jun 2023 06:42:25 +0100 Subject: [PATCH 145/210] adding app_unify option that does nothing currently --- Shell/Options.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Shell/Options.hpp b/Shell/Options.hpp index ebd9a8339c..c4c160790e 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2442,6 +2442,7 @@ bool _hard; void setHolPrinting(HPrinting setting) { _holPrinting.actualValue = setting; } bool superposition() const {return _superposition.actualValue; } bool heuristicInstantiation() const { return _heuristicInstantiation.actualValue; } + bool applicativeUnify() const { return _applicativeUnify.actualValue; } unsigned higherOrderUnifDepth() const { return _higherOrderUnifDepth.actualValue; } #endif // For unit testing @@ -2882,6 +2883,7 @@ bool _hard; BoolOptionValue _booleanEqTrick; BoolOptionValue _superposition; BoolOptionValue _heuristicInstantiation; + BoolOptionValue _applicativeUnify; BoolOptionValue _casesSimp; BoolOptionValue _cases; BoolOptionValue _newTautologyDel; From fc88b5adc51193626d34556ae2b67305aead0abd Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 11 Jun 2023 06:46:35 +0100 Subject: [PATCH 146/210] removed code preenting the use of twee goal directed transformation from Preprocess --- Shell/Preprocess.cpp | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/Shell/Preprocess.cpp b/Shell/Preprocess.cpp index f731544ad7..633907ce00 100644 --- a/Shell/Preprocess.cpp +++ b/Shell/Preprocess.cpp @@ -430,23 +430,12 @@ prb.getProperty(); } if(env.options->tweeGoalTransformation() != Options::TweeGoalTransformation::OFF) { -#if VHOL - if(prb.higherOrder()){ - env.beginOutput(); - addCommentSignForSZS(env.out()); - env.out() << "WARNING: twee goal transformation is currently not compatible with higher-order. Ignoring request to use." << endl; - env.endOutput(); - } else { -#endif env.statistics->phase = Statistics::TWEE; if(env.options->showPreprocessing()) env.out() << "twee goal transformation" << std::endl; TweeGoalTransformation twee; twee.apply(prb,(env.options->tweeGoalTransformation() == Options::TweeGoalTransformation::GROUND)); -#if VHOL - } -#endif } #if VHOL From 1bbf6bf373ef98c39445182687e2ceca8131294c Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 11 Jun 2023 06:58:34 +0100 Subject: [PATCH 147/210] missed updating case where symbol has already been defined --- Shell/TweeGoalTransformation.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/Shell/TweeGoalTransformation.cpp b/Shell/TweeGoalTransformation.cpp index a3c55c74e8..6a3f81a5aa 100644 --- a/Shell/TweeGoalTransformation.cpp +++ b/Shell/TweeGoalTransformation.cpp @@ -143,12 +143,13 @@ class Definizator : public BottomUpTermTransformer { TermList res; if (!_cache.find(key,symAndDef)) { TermList outSort = SortHelper::getResultSort(t); - SortHelper::normaliseSort(_typeVars, outSort); - unsigned newSym; Clause* newDef; scanVars(t); + SortHelper::normaliseSort(_typeVars, outSort); + + // will the definition folding decrease term weight? // (whether we will also demodulate in this direction may depend on the ordering, but with a constant-weight KBO we will) if (t->weight() > _allVars.size()+1) { @@ -203,7 +204,17 @@ class Definizator : public BottomUpTermTransformer { } scanVars(t); - res = TermList(Term::create(symAndDef.first,_allVars.size(),_allVars.begin())); +#if VHOL + if(!env.property->higherOrder()){ +#endif + res = TermList(Term::create(symAndDef.first,_allVars.size(),_allVars.begin())); +#if VHOL + } else { + TermList head = TermList(Term::create(symAndDef.first, _typeVars.size(), _typeVars.begin())); + res= ApplicativeHelper::app(head, _termVars); + } +#endif + } // record as a new premise UnitList::push(symAndDef.second,premises); From e186790daafb4978bd8425c2c57bf18290103e1a Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Sun, 11 Jun 2023 08:05:52 +0200 Subject: [PATCH 148/210] one constraint is enough --- Shell/Options.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index ed0d6982a9..47d8d9f2d2 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1896,7 +1896,7 @@ void Options::init() _complexBooleanReasoning = BoolOptionValue("complex_bool_reasoning","cbe",true); _complexBooleanReasoning.description= "Switches on primitive instantiation and elimination of leibniz equality"; - _complexBooleanReasoning.addConstraint(If(equal(true)).then(_addProxyAxioms.is(equal(false)))); + // _complexBooleanReasoning.addConstraint(If(equal(true)).then(_addProxyAxioms.is(equal(false)))); // see _addProxyAxioms.onlyUsefulWith _lookup.insert(&_complexBooleanReasoning); _complexBooleanReasoning.addProblemConstraint(hasHigherOrder()); _complexBooleanReasoning.tag(OptionTag::HIGHER_ORDER); From 2ab66aa610c132be78ab26ebc007d44fd7677eb2 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 11 Jun 2023 07:20:14 +0100 Subject: [PATCH 149/210] no need to check for free indices in subterms which do not contain indices at all --- Kernel/Term.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 2d8fba708b..cfc03a7221 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -677,11 +677,21 @@ bool TermList::containsLooseIndex() const { unsigned depth; }; + auto needToCheck = [](TermList t){ + if(t.isVar() || !t.term()->hasDBIndex()) return false; + return true; + }; + Stack toDo; toDo.push( TermListWD { .t = *this, .depth = 0, }); while(!toDo.isEmpty()){ auto item = toDo.pop(); + + if(!needToCheck(iterm.t)){ + continue; + } + unsigned dep = item.depth; if(item.t.deBruijnIndex().isSome()){ unsigned idx = item.t.deBruijnIndex().unwrap(); From ddeca3e54d92bdff6ac7dc6376a2d489d04ea01e Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 11 Jun 2023 07:34:04 +0100 Subject: [PATCH 150/210] fixing typo and missing shared check --- Kernel/Term.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index cfc03a7221..e9ea060174 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -678,7 +678,7 @@ bool TermList::containsLooseIndex() const { }; auto needToCheck = [](TermList t){ - if(t.isVar() || !t.term()->hasDBIndex()) return false; + if(t.isVar() || (t.term()->shared() && !t.term()->hasDBIndex())) return false; return true; }; @@ -688,7 +688,7 @@ bool TermList::containsLooseIndex() const { while(!toDo.isEmpty()){ auto item = toDo.pop(); - if(!needToCheck(iterm.t)){ + if(!needToCheck(item.t)){ continue; } From 022c5dde88df493f69ef7dd0cc07e962835248d6 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 11 Jun 2023 15:43:37 +0100 Subject: [PATCH 151/210] fixing choice with AVATAR bug --- Inferences/InferenceEngine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inferences/InferenceEngine.cpp b/Inferences/InferenceEngine.cpp index 47e722e472..953b1a46f4 100644 --- a/Inferences/InferenceEngine.cpp +++ b/Inferences/InferenceEngine.cpp @@ -273,7 +273,7 @@ Clause* ChoiceDefinitionISE::simplify(Clause* c) { CALL("ChoiceDefinitionISE::simplify"); - if (c->length() != 2) { + if (c->length() != 2 || !c->noSplits()) { return c; } From 106a71ac0067e692d310c3b85d478bce0d86037c Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Sun, 11 Jun 2023 18:13:30 +0000 Subject: [PATCH 152/210] apa and cbe potentially meaningful together (although known to be suboptimal) --- Shell/Options.cpp | 4 ++-- samplerEx.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 47d8d9f2d2..c13c3dc163 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1808,7 +1808,6 @@ void Options::init() _addProxyAxioms = BoolOptionValue("add_proxy_axioms","apa",false); _addProxyAxioms.description="Add logical proxy axioms"; _lookup.insert(&_addProxyAxioms); - _addProxyAxioms.onlyUsefulWith(_complexBooleanReasoning.is(equal(false))); _addProxyAxioms.addProblemConstraint(hasHigherOrder()); _addProxyAxioms.tag(OptionTag::HIGHER_ORDER); @@ -1896,7 +1895,8 @@ void Options::init() _complexBooleanReasoning = BoolOptionValue("complex_bool_reasoning","cbe",true); _complexBooleanReasoning.description= "Switches on primitive instantiation and elimination of leibniz equality"; - // _complexBooleanReasoning.addConstraint(If(equal(true)).then(_addProxyAxioms.is(equal(false)))); // see _addProxyAxioms.onlyUsefulWith + // add this back to warn users about a suboptimal conf; but actually the two options do something together + // _complexBooleanReasoning.addConstraint(If(equal(true)).then(_addProxyAxioms.is(equal(false)))); _lookup.insert(&_complexBooleanReasoning); _complexBooleanReasoning.addProblemConstraint(hasHigherOrder()); _complexBooleanReasoning.tag(OptionTag::HIGHER_ORDER); diff --git a/samplerEx.txt b/samplerEx.txt index bbc0f2079e..f6c0238478 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -328,7 +328,7 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 > cbe ~cat off:1,on:1 # add_proxy_axioms -cbe=off > apa ~cat off:1,on:1 +> apa ~cat off:1,on:1 # bool_eq_trick > bet ~cat off:1,on:1 From 779105b63ede296322ab95032693b93d98144109 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 11 Jun 2023 21:04:16 +0100 Subject: [PATCH 153/210] removing assertion that fails to hold in the higher-order case --- Shell/TweeGoalTransformation.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Shell/TweeGoalTransformation.cpp b/Shell/TweeGoalTransformation.cpp index 6a3f81a5aa..857d110743 100644 --- a/Shell/TweeGoalTransformation.cpp +++ b/Shell/TweeGoalTransformation.cpp @@ -111,8 +111,6 @@ class Definizator : public BottomUpTermTransformer { } SortHelper::normaliseArgSorts(_typeVars, _termVarSorts); - - ASS_EQ(_typeArity+_termVarSorts.size(), _allVars.size()) } protected: From 352de00bbe9a14f4369d71f6389ec0e41d042419 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 13 Jun 2023 00:04:10 +0100 Subject: [PATCH 154/210] fxing TweeGoalTransformation for HOL and adding new option appUnif --- Kernel/HOLUnification.cpp | 30 ++++++++++++++++++++++++++---- Saturation/SaturationAlgorithm.cpp | 2 +- Shell/InequalitySplitting.cpp | 2 +- Shell/TweeGoalTransformation.cpp | 11 ++++++----- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 5e111bfbfc..90614696e5 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -410,18 +410,35 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCore { public: - HigherOrderUnifiersItWrapper(TermList t1, TermList s1, TermList t2, TermList s2, bool funcExt) : _subst() + HigherOrderUnifiersItWrapper(TermList t1, TermList s1, TermList t2, TermList s2, bool funcExt) : + _appUnif(env.options->applicativeUnify()), _subst() { // this unification must pass, otherwise we wouldn't have reached a leaf // however, we are forced to recompute it here with the new substitution (not ideal) ALWAYS(_subst->unify(s1,s2)); - _inner = vi(new HigherOrderUnifiersIt(t1, t2, &*_subst, funcExt)); + if(_appUnif){ + _success = _subst->unify(t1, t2, true); + } else { + _inner = vi(new HigherOrderUnifiersIt(t1, t2, &*_subst, funcExt)); + } } - bool hasNext() { return _inner.hasNext(); } - RobSubstitutionTL* next() { return _inner.next(); } + bool hasNext() { + if(_appUnif){ + bool suc = _success; + _success = false; + return suc; + } + return _inner.hasNext(); + } + RobSubstitutionTL* next() { + if(_appUnif){ return &*_subst; } + return _inner.next(); + } private: + bool _appUnif; + bool _success; SubstIterator _inner; Recycled _subst; }; @@ -430,6 +447,11 @@ SubstIterator HOLUnification::unifiers(TermList t1, TermList t2, RobSubstitution { CALL("HOLUnification::unifiers"); + if(env.options->applicativeUnify()){ + if(sub->unify(t1,t2,true)) + { return pvi(getSingletonIterator(sub)); } + return SubstIterator::getEmpty(); + } if(sub->sameTermContent(t1,t2)) return pvi(getSingletonIterator(sub)); diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index effe8d03d2..509243d2d3 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1581,7 +1581,7 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const if(prb.higherOrder()){ gie->addFront(new ArgCong()); gie->addFront(new NegativeExt());//TODO add option - if(!env.options->higherOrderUnifDepth()){ + if(!env.options->higherOrderUnifDepth() && !env.options->applicativeUnify()){ // only add when we are not carrying out higher-order unification gie->addFront(new ImitateProject()); } diff --git a/Shell/InequalitySplitting.cpp b/Shell/InequalitySplitting.cpp index c3cd8a4a8d..3027ef6f84 100644 --- a/Shell/InequalitySplitting.cpp +++ b/Shell/InequalitySplitting.cpp @@ -256,7 +256,7 @@ Literal* InequalitySplitting::makeNameLiteral(unsigned predNum, TermList arg, bo return Literal::create(predNum, vars.size(), polarity, false, vars.begin()); #if VHOL } else { - TermList boolT = polarity ? TermList(Term::foolTrue()) : TermList(Term::foolFalse()); + TermList boolT = polarity ? ApplicativeHelper::top() : ApplicativeHelper::bottom(); TermList head = TermList(Term::create(predNum, vars.size(), vars.begin())); TermList t = ApplicativeHelper::app(head, arg); return Literal::createEquality(true, t, boolT, AtomicSort::boolSort()); diff --git a/Shell/TweeGoalTransformation.cpp b/Shell/TweeGoalTransformation.cpp index 857d110743..0d7e471c52 100644 --- a/Shell/TweeGoalTransformation.cpp +++ b/Shell/TweeGoalTransformation.cpp @@ -90,14 +90,15 @@ class Definizator : public BottomUpTermTransformer { VariableWithSortIterator it(t); while (it.hasNext()) { auto varAndSort = it.next(); - unsigned v = varAndSort.first.var(); + TermList v = varAndSort.first; TermList s = varAndSort.second; - if (varSeen.insert(v)) { + if (varSeen.insert(v.var())) { if(s == AtomicSort::superSort()) { - _allVars.push(TermList(v,false)); + _allVars.push(v); + _typeVars.push(v); } else { - _termVars.push(TermList(v,false)); - _termVarSorts.push(varAndSort.second); + _termVars.push(v); + _termVarSorts.push(s); } } } From 1e4335fc3a00ca968e7f1e481d6e6d5017bbfc37 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 12 Jun 2023 14:44:02 +0200 Subject: [PATCH 155/210] no tgt for now --- Shell/Options.cpp | 2 +- samplerEx.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index c13c3dc163..ebbfac748e 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -433,7 +433,7 @@ void Options::init() "where s (or conversely t) is ground and has weight greater or equal than w " "is replaced by C \\/ p(s) with the additional unit clause ~p(t) being added " "for fresh predicate p."; - _inequalitySplitting.addProblemConstraint(hasEquality()); + // _inequalitySplitting.addProblemConstraint(hasEquality()); // in HO varions axioms may add equality on which we can possibly split _lookup.insert(&_inequalitySplitting); _inequalitySplitting.tag(OptionTag::PREPROCESSING); diff --git a/samplerEx.txt b/samplerEx.txt index f6c0238478..ad921b9ee2 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -32,7 +32,7 @@ $nm=NZ > nm ~sgd 0.07,2 > rp ~cat off:3,on:1 # twee_goal_transformation (not currently with HO) -> tgt ~cat off:10,ground:6,full:5 +# > tgt ~cat off:10,ground:6,full:5 # set_of_support > sos ~cat off:80,on:17,all:10 From 77e16eb95fe2fbe62310d97587b14d5e0bed4bbe Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 12 Jun 2023 14:43:01 +0200 Subject: [PATCH 156/210] don't generate factions in non-base form --- Shell/Options.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index ebbfac748e..36bf74cd9e 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -3449,6 +3449,11 @@ void Options::trySamplingStrategy() float exped = powf(2.0,raw); unsigned denom = 1 << 20; unsigned numer = exped*denom; + // don't generate factions in non-base form + while (numer % 2 == 0 && denom % 2 == 0) { + numer /= 2; + denom /= 2; + } strategySamplingAssign(optname,Int::toString(numer)+pieces[2]+Int::toString(denom),fakes); pieces.reset(); From 1a9aad78c7baa8943c455f02fe10e9be02b27a6c Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 13 Jun 2023 09:57:18 +0100 Subject: [PATCH 157/210] bug fix: --- Kernel/HOLUnification.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 90614696e5..1308dd7f78 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -424,15 +424,14 @@ class HOLUnification::HigherOrderUnifiersItWrapper: public IteratorCore Date: Tue, 13 Jun 2023 09:59:47 +0100 Subject: [PATCH 158/210] no abstraction built into applicative unify --- Shell/Options.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 36bf74cd9e..13258a43be 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1794,6 +1794,7 @@ void Options::init() _applicativeUnify = BoolOptionValue("applicative_unif","au",false); _applicativeUnify.onlyUsefulWith(InferencingSaturationAlgorithm()); _applicativeUnify.addProblemConstraint(hasHigherOrder()); + _applicativeUnify.onlyUsefulWith(_functionExtensionality.is(notEqual(FunctionExtensionality::ABSTRACTION))); _applicativeUnify.description= "Carries out first-order applicative unification instead of higher-order unification"; _lookup.insert(&_applicativeUnify); _applicativeUnify.tag(OptionTag::HIGHER_ORDER); From 31b268e3403596b3ccfdfb31bcf6fc170ebb3b84 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 13 Jun 2023 12:33:35 +0200 Subject: [PATCH 159/210] tgt is back --- samplerEx.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samplerEx.txt b/samplerEx.txt index ad921b9ee2..f6c0238478 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -32,7 +32,7 @@ $nm=NZ > nm ~sgd 0.07,2 > rp ~cat off:3,on:1 # twee_goal_transformation (not currently with HO) -# > tgt ~cat off:10,ground:6,full:5 +> tgt ~cat off:10,ground:6,full:5 # set_of_support > sos ~cat off:80,on:17,all:10 From 5d9e522719218d6534f3cab72a16de629039ecad Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 13 Jun 2023 14:29:01 +0000 Subject: [PATCH 160/210] let's not warn here yet --- Shell/Options.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 13258a43be..7de714f065 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1794,7 +1794,7 @@ void Options::init() _applicativeUnify = BoolOptionValue("applicative_unif","au",false); _applicativeUnify.onlyUsefulWith(InferencingSaturationAlgorithm()); _applicativeUnify.addProblemConstraint(hasHigherOrder()); - _applicativeUnify.onlyUsefulWith(_functionExtensionality.is(notEqual(FunctionExtensionality::ABSTRACTION))); + // _applicativeUnify.onlyUsefulWith(_functionExtensionality.is(notEqual(FunctionExtensionality::ABSTRACTION))); // not good for minimizer: defaulting fe to abstraction would trigger turning off au, which will not be the same _applicativeUnify.description= "Carries out first-order applicative unification instead of higher-order unification"; _lookup.insert(&_applicativeUnify); _applicativeUnify.tag(OptionTag::HIGHER_ORDER); From cd3070147c03455ff2f62fb20c58f14f19ccee5f Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 13 Jun 2023 18:40:04 +0000 Subject: [PATCH 161/210] the first version of a hol schedule; also sampling ua now --- CASC/PortfolioMode.cpp | 6 +- CASC/Schedules.cpp | 322 +++++++++++++++++++++++++++++++++++++++++ CASC/Schedules.hpp | 1 + Shell/Options.cpp | 1 + Shell/Options.hpp | 1 + samplerEx.txt | 3 + 6 files changed, 332 insertions(+), 2 deletions(-) diff --git a/CASC/PortfolioMode.cpp b/CASC/PortfolioMode.cpp index cb98c3fa70..ee5d6bc587 100644 --- a/CASC/PortfolioMode.cpp +++ b/CASC/PortfolioMode.cpp @@ -270,12 +270,11 @@ bool PortfolioMode::prepareScheduleAndPerform(const Shell::Property& prop) schedule.loadFromIterator(main.iterFifo()); addScheduleExtra(main,schedule,"rp=on:de=on"); // random polarities, demodulation encompassment - } else if (env.options->schedule() == Options::Schedule::SNAKE_TPTP_SAT) { ASS(fallback.isEmpty()); schedule.loadFromIterator(main.iterFifo()); - addScheduleExtra(main,schedule,"rp=on:fmbksg=on:de=on"); // random polarities, demodulation encompassment for saturation, fmbksg for the fmb's + addScheduleExtra(main,schedule,"rp=on:fmbksg=on:de=on"); // random polarities, demodulation encompassment for saturation, fmbksg for the fmb's } else { // all other schedules just get loaded plain @@ -371,6 +370,9 @@ void PortfolioMode::getSchedules(const Property& prop, Schedule& quick, Schedule case Options::Schedule::SNAKE_TPTP_SAT: Schedules::getSnakeTptpSatSchedule(prop,quick); break; + case Options::Schedule::SNAKE_TPTP_HOL: + Schedules::getSnakeTptpHolSchedule(prop,quick); + break; case Options::Schedule::CASC_2019: case Options::Schedule::CASC: diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 53c88e5335..fd8ee14d98 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5133,3 +5133,325 @@ void Schedules::getSnakeTptpSatSchedule(const Shell::Property& property, Schedul // Improves by expected 0.4363593202030057 probs costing 1274359 Mi // Overall score 2081.1804482430707 probs on average / budget 9091993 Mi } + +void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick) { + // Champion singleton-schedule for 100000Mi + quick.push("lrs+1010_1:1_chr=on:ntd=on:i=98874:si=on:rtra=on_0"); + // Improves by expected 2034.99796500208 probs costing 98873 Mi + // Sub-schedule for 50Mi strat cap / 400Mi overall limit + quick.push("ott+2_1:128_au=on:bd=off:cnfonf=off:fsr=off:nm=4:piset=or:sp=weighted_frequency:i=39:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:hud=15:piset=equals:i=8:si=on:rtra=on_0"); + quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:cs=on:tgt=ground:i=25:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_anc=all_dependent:au=on:bd=off:e2e=on:fsr=off:sac=on:ss=axioms:i=14:si=on:rtra=on_0"); + quick.push("lrs+1666_1:14_er=filter:fsr=off:i=18:si=on:rtra=on_0"); + quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=15:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fd=preordered:prag=on:sos=on:i=18:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:i=48:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=2:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=2:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:i=48:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:e2e=on:fde=unused:ixr=off:sp=reverse_arity:i=14:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:i=2:si=on:rtra=on_0"); + quick.push("lrs-1666_1:1_bsr=unit_only:cbe=off:cnfonf=lazy_not_gen_be_off:hud=6:kws=inv_arity:prag=on:i=4:si=on:rtra=on_0"); + quick.push("lrs+2_4:1_bd=preordered:cnfonf=lazy_pi_sigma_gen:fe=off:fs=off:fsr=off:kws=inv_frequency:plsq=on:plsqc=1:plsqr=32,1:i=2:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cbe=off:chr=on:fde=unused:hud=10:prag=on:i=26:si=on:rtra=on_0"); + quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=6:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:i=3:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:prag=on:i=34:si=on:rtra=on_0"); + quick.push("lrs+1010_2:1_anc=none:atotf=0.308:bd=preordered:fe=off:nm=2:nwc=10.0:s2agt=30:s2pl=on:i=15:si=on:rtra=on_0"); + quick.push("lrs-1666_1:1_bet=on:chr=on:fe=off:hud=5:ntd=on:i=7:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=12:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_av=off:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:i=2:si=on:rtra=on_0"); + quick.push("ott+10_1:1_aac=none:apa=on:au=on:cnfonf=off:ntd=on:nwc=12.0:sos=on:i=3:si=on:rtra=on_0"); + quick.push("dis+1004_1:230_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:fsr=off:ntd=on:prag=on:spb=goal_then_units:i=49:si=on:rtra=on_0"); + // Improves by expected 116.00133199856381 probs costing 394 Mi + // Sub-schedule for 100Mi strat cap / 800Mi overall limit + quick.push("ott+1002_1:1_au=on:cbe=off:cond=on:sp=occurrence:i=28:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=41:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=conj_eager:hi=on:ntd=on:i=25:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=101:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=20:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:fsr=off:i=69:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:i=67:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=77:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=83:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=92:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=conj_eager:nwc=10.0:ss=axioms:i=92:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_plsq=on:plsqc=1:plsqr=32,1:sd=1:ss=axioms:i=73:si=on:rtra=on_0"); + quick.push("dis+10_1:1_aac=none:cs=on:i=35:si=on:rtra=on_0"); + // Improves by expected 26.000137499859665 probs costing 790 Mi + // Sub-schedule for 150Mi strat cap / 1200Mi overall limit + quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=148:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=52:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=136:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=preordered:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=10:ixr=off:prag=on:i=47:si=on:rtra=on_0"); + quick.push("dis+1010_1:128_cbe=off:cnfonf=lazy_simp:fd=off:hud=5:ntd=on:i=147:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=148:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_av=off:fd=off:sos=on:ss=axioms:i=146:si=on:rtra=on_0"); + quick.push("dis+10_1:128_cnfonf=lazy_not_gen:fe=off:kws=inv_frequency:prag=on:sd=2:ss=axioms:st=3.0:i=138:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=123:si=on:rtra=on_0"); + quick.push("dis+10_1:64_au=on:cnfonf=off:fd=off:fs=off:fsr=off:nm=2:piset=equals:i=84:si=on:rtra=on_0"); + // Improves by expected 35.000088499890325 probs costing 1159 Mi + // Sub-schedule for 500Mi strat cap / 4000Mi overall limit + quick.push("dis+1002_1:1024_fsd=on:hud=1:nm=32:piset=or:i=102:si=on:rtra=on_0"); + quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=98:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=332:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_cond=on:e2e=on:i=61:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=84:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=441:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=1:sgt=32:ss=axioms:i=246:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fde=unused:s2a=on:s2agt=8:i=344:si=on:rtra=on_0"); + quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=57:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:i=243:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=406:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=89:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=420:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:hud=8:prag=on:i=99:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=76:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=381:si=on:rtra=on_0"); + quick.push("ott+10_4:219_abs=on:alpa=random:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:ixr=off:kws=inv_frequency:sos=all:i=95:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:ss=axioms:st=1.5:i=214:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=96:si=on:rtra=on_0"); + quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=119:si=on:rtra=on_0"); + // Improves by expected 79.5001324998535 probs costing 3983 Mi + // Sub-schedule for 1000Mi strat cap / 8000Mi overall limit + quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=215:si=on:rtra=on_0"); + quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:cnfonf=off:e2e=on:plsq=on:i=463:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=conj_eager:hi=on:ntd=on:i=201:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=913:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:s2a=on:sp=weighted_frequency:ss=axioms:i=297:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_chr=on:cnfonf=lazy_gen:hud=5:ins=1:ntd=on:prag=on:i=156:si=on:rtra=on_0"); + quick.push("dis+2_1:1024_cnfonf=off:e2e=on:nwc=5.0:i=168:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=982:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=849:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:fsr=off:i=567:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_fde=none:kws=precedence:prag=on:sac=on:sos=on:i=495:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:cnfonf=off:fe=off:hud=10:prag=on:s2a=on:ss=axioms:st=2.0:i=161:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=129:si=on:rtra=on_0"); + quick.push("lrs+1002_1:40_awrs=converge:c=on:cbe=off:fe=axiom:hud=3:prag=on:sos=all:sp=const_frequency:i=373:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=150:si=on:rtra=on_0"); + quick.push("lrs+1003_1:8_cnfonf=lazy_pi_sigma_gen:fe=off:ins=1:ixr=off:spb=non_intro:i=304:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=306:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_av=off:fe=off:hud=5:piset=or:prag=on:i=429:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=conj_eager:s2a=on:sd=4:sgt=16:ss=axioms:i=574:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cbe=off:cnfonf=lazy_not_gen_be_off:fe=off:i=127:si=on:rtra=on_0"); + // Improves by expected 63.50007662492973 probs costing 7992 Mi + // Sub-schedule for 1500Mi strat cap / 12000Mi overall limit + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=398:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=294:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:hud=15:piset=equals:i=423:si=on:rtra=on_0"); + quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=103:si=on:rtra=on_0"); + quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=223:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_bsd=on:cnfonf=lazy_gen:erd=off:fe=off:hud=1:ins=2:kws=arity_squared:nm=30:ntd=on:piset=equals:prag=on:rp=on:s2a=on:sac=on:sp=unary_first:i=446:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=4:piset=pi_sigma:i=340:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_cs=on:fde=unused:fe=axiom:nm=0:ntd=on:prag=on:s2a=on:s2at=1.2:i=229:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:ixr=off:kws=inv_frequency:nwc=10.0:rnwc=on:sos=on:sp=occurrence:i=269:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_amm=off:cs=on:kws=precedence:nwc=10.0:piset=all:s2a=on:sac=on:sp=unary_frequency:spb=goal:ss=axioms:st=3.0:i=357:si=on:rtra=on_0"); + quick.push("lrs+1010_1:2_br=off:cnfonf=lazy_not_gen:i=242:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_cbe=off:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ins=1:piset=small_set:rp=on:spb=goal_then_units:i=374:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1172:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_atotf=0.3:bd=off:cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3,1:i=502:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:sd=3:sgt=10:ss=axioms:st=1.5:i=283:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_apa=on:cnfonf=off:cond=on:e2e=on:gs=on:hud=7:piset=equals:prag=on:s2agt=32:s2at=5.0:s2pl=no:sos=on:sp=const_max:ss=axioms:i=1283:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=312:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_av=off:bet=on:c=on:cnfonf=lazy_gen:fe=axiom:rawr=on:s2a=on:s2agt=15:sp=reverse_arity:i=573:si=on:rtra=on_0"); + quick.push("ott+1010_1:3_av=off:cbe=off:cnfonf=lazy_not_gen:hud=5:ins=3:spb=goal_then_units:i=321:si=on:rtra=on_0"); + quick.push("lrs-1010_1:32_bet=on:br=off:c=on:cnfonf=lazy_simp:e2e=on:fe=axiom:hud=1:nm=0:ntd=on:nwc=10.0:piset=small_set:prag=on:rawr=on:sp=occurrence:i=270:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:i=284:si=on:rtra=on_0"); + quick.push("lrs+1010_1:32_cnfonf=lazy_simp:fsr=off:piset=equals:i=973:si=on:rtra=on_0"); + quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=220:si=on:rtra=on_0"); + quick.push("dis+1002_4:1_cha=on:cnfonf=lazy_not_gen:fd=off:hud=8:ntd=on:nwc=5.0:prag=on:rnwc=on:s2a=on:s2agt=8:i=317:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=886:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all:c=on:cnfonf=off:fsr=off:kws=inv_frequency:nwc=5.0:sos=on:sp=occurrence:i=328:si=on:rtra=on_0"); + quick.push("dis+1004_1:230_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:fsr=off:ntd=on:prag=on:spb=goal_then_units:i=567:si=on:rtra=on_0"); + // Improves by expected 45.5000091250097 probs costing 11962 Mi + // Sub-schedule for 5000Mi strat cap / 40000Mi overall limit + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=396:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=4311:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=920:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=conj_eager:hi=on:ntd=on:i=350:si=on:rtra=on_0"); + quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=817:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=212:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=899:si=on:rtra=on_0"); + quick.push("ott+1004_1:1_alpa=true:fde=none:ins=3:piset=small_set:i=395:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_bd=preordered:chr=on:cnfonf=lazy_simp:ntd=on:sp=const_frequency:i=572:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=382:si=on:rtra=on_0"); + quick.push("lrs+1010_1:5_cnfonf=lazy_not_be_gen:e2e=on:fe=off:hud=10:kws=precedence:rawr=on:sos=on:i=819:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_anc=all_dependent:au=on:bd=off:e2e=on:fsr=off:sac=on:ss=axioms:i=2926:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_amm=sco:bd=off:bet=on:cnfonf=lazy_not_gen:e2e=on:fde=none:fe=axiom:nicw=on:rawr=on:s2a=on:sos=all:spb=goal_then_units:i=1011:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=1:sgt=32:ss=axioms:i=4734:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=491:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:i=658:si=on:rtra=on_0"); + quick.push("lrs+21_1:1024_cnfonf=lazy_not_gen:fd=preordered:fe=off:hud=5:kws=inv_arity_squared:ntd=on:plsq=on:plsql=on:s2a=on:i=496:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:cnfonf=off:fe=off:hud=10:prag=on:s2a=on:ss=axioms:st=2.0:i=485:si=on:rtra=on_0"); + quick.push("ott+1004_64217:1048576_cnfonf=lazy_simp:fe=off:fsr=off:piset=and:rawr=on:sp=frequency:spb=units:i=3752:si=on:rtra=on_0"); + quick.push("lrs-1010_1:32_bet=on:br=off:c=on:cnfonf=lazy_simp:e2e=on:fe=axiom:hud=1:nm=0:ntd=on:nwc=10.0:piset=small_set:prag=on:rawr=on:sp=occurrence:i=885:si=on:rtra=on_0"); + quick.push("lrs+1004_1:4_av=off:bsd=on:e2e=on:i=3591:si=on:rtra=on_0"); + quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=641:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=412:si=on:rtra=on_0"); + quick.push("dis+10_1:1_apa=on:bsd=on:c=on:cnfonf=off:e2e=on:er=filter:fsr=off:gs=on:hud=5:kws=inv_precedence:ntd=on:piset=pi_sigma:prag=on:sgt=16:spb=intro:ss=axioms:i=746:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=3861:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_av=off:hud=10:i=375:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=4291:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=484:si=on:rtra=on_0"); + // Improves by expected 104.83335374998916 probs costing 39884 Mi + // Sub-schedule for 10000Mi strat cap / 80000Mi overall limit + quick.push("ott+21_5:1_au=on:c=on:cbe=off:e2e=on:ins=3:nm=16:plsq=on:plsqc=2:plsqr=17,1:ss=axioms:st=3.0:i=1855:si=on:rtra=on_0"); + quick.push("ott+21_1:64_bd=off:cnfonf=off:kws=precedence:piset=not:sd=1:sos=all:ss=axioms:st=3.0:i=5727:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=396:si=on:rtra=on_0"); + quick.push("dis+10_3:2_av=off:bsd=on:hud=9:nm=0:plsq=on:plsqc=1:plsql=on:prag=on:i=1485:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cs=on:sd=1:sgt=8:ss=axioms:i=1032:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cbe=off:cond=on:sp=occurrence:i=1613:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_apa=on:cnfonf=off:hud=10:nm=30:ntd=on:nwc=12.0:sp=occurrence:i=589:si=on:rtra=on_0"); + quick.push("dis+10_3:1_anc=all:avsq=on:c=on:cnfonf=off:e2e=on:fd=off:fde=none:ins=3:nwc=5.0:plsq=on:plsqc=1:plsqr=4964065,131072:prag=on:s2a=on:s2agt=64:i=2724:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:anc=all_dependent:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=on:fe=axiom:fsd=on:hud=5:kws=arity_squared:prag=on:sd=10:ss=axioms:i=623:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=conj_eager:hi=on:ntd=on:i=1417:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=3966:si=on:rtra=on_0"); + quick.push("ott+1004_1:1_alpa=true:fde=none:ins=3:piset=small_set:i=395:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1512:si=on:rtra=on_0"); + quick.push("lrs+1002_1:2_au=on:bd=off:bet=on:cbe=off:cnfonf=lazy_not_gen_be_off:cond=on:cs=on:kws=precedence:sp=const_max:tgt=ground:i=2750:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=1079:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=1279:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=1439:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=2073:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=7655:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1614:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=2979:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:bsr=unit_only:prag=on:sos=all:i=2514:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=2970:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=5775:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=6747:si=on:rtra=on_0"); + quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=2267:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:i=702:si=on:rtra=on_0"); + quick.push("dis+1003_1:3_av=off:bd=off:cnfonf=lazy_gen:fe=off:kws=arity_squared:sp=const_max:i=488:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_amm=sco:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:piset=or:sos=on:sp=occurrence:i=3672:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_fe=off:hud=10:nwc=5.0:sos=on:ss=axioms:i=544:si=on:rtra=on_0"); + quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); + quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=1167:si=on:rtra=on_0"); + quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1516:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=5883:si=on:rtra=on_0"); + // Improves by expected 68.4375457707899 probs costing 79948 Mi + // Sub-schedule for 15000Mi strat cap / 120000Mi overall limit + quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=2904:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=348:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=1123:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=5579:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:cnfonf=off:e2e=on:plsq=on:i=562:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:anc=all_dependent:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=on:fe=axiom:fsd=on:hud=5:kws=arity_squared:prag=on:sd=10:ss=axioms:i=613:si=on:rtra=on_0"); + quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=2151:si=on:rtra=on_0"); + quick.push("ott+1004_1:1_alpa=true:fde=none:ins=3:piset=small_set:i=395:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_bsd=on:cnfonf=lazy_gen:erd=off:fe=off:hud=1:ins=2:kws=arity_squared:nm=30:ntd=on:piset=equals:prag=on:rp=on:s2a=on:sac=on:sp=unary_first:i=7122:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=4:piset=pi_sigma:i=2187:si=on:rtra=on_0"); + quick.push("lrs+1010_1:5_cnfonf=lazy_not_be_gen:e2e=on:fe=off:hud=10:kws=precedence:rawr=on:sos=on:i=4259:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=12184:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_alpa=false:cbe=off:fe=off:fsr=off:gs=on:gsaa=full_model:hud=10:piset=and:s2a=on:sac=on:sp=const_frequency:i=3030:si=on:rtra=on_0"); + quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=2770:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=8298:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4057:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:ss=axioms:st=1.2:i=2081:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=10845:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:cond=fast:e2e=on:fd=off:nm=16:nwc=5.0:prag=on:i=2465:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cbe=off:chr=on:fde=unused:hud=10:prag=on:i=3840:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:i=700:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=2925:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=7373:si=on:rtra=on_0"); + quick.push("dis+1002_1:16_anc=all_dependent:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=5:sp=reverse_arity:i=2871:si=on:rtra=on_0"); + quick.push("lrs+1010_1:32_cnfonf=lazy_simp:fsr=off:piset=equals:i=3779:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_av=off:fd=off:sos=on:ss=axioms:i=9463:si=on:rtra=on_0"); + quick.push("dis+1010_1:1024_awrs=converge:awrsf=40:c=on:cnfonf=off:fe=axiom:hud=5:ins=3:nm=2:piset=and:prag=on:sos=all:spb=goal_then_units:i=5036:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_apa=on:av=off:awrs=converge:awrsf=130:c=on:cnfonf=off:e2e=on:fde=none:fe=axiom:ntd=on:nwc=3.0:prag=on:s2a=on:s2at=3.0:spb=goal_then_units:tgt=ground:i=3437:si=on:rtra=on_0"); + quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=3771:si=on:rtra=on_0"); + quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3625:si=on:rtra=on_0"); + // Improves by expected 36.25002762498634 probs costing 119763 Mi + // Sub-schedule for 50000Mi strat cap / 400000Mi overall limit + quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=1119:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3862:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_bsr=unit_only:cnfonf=lazy_not_be_gen:fe=off:ntd=on:i=15948:si=on:rtra=on_0"); + quick.push("dis+10_3:1_anc=all:avsq=on:c=on:cnfonf=off:e2e=on:fd=off:fde=none:ins=3:nwc=5.0:plsq=on:plsqc=1:plsqr=4964065,131072:prag=on:s2a=on:s2agt=64:i=1714:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=conj_eager:hi=on:ntd=on:i=1415:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=13832:si=on:rtra=on_0"); + quick.push("lrs+1002_1:2_au=on:bd=off:bet=on:cbe=off:cnfonf=lazy_not_gen_be_off:cond=on:cs=on:kws=precedence:sp=const_max:tgt=ground:i=10990:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_bsd=on:cnfonf=lazy_gen:erd=off:fe=off:hud=1:ins=2:kws=arity_squared:nm=30:ntd=on:piset=equals:prag=on:rp=on:s2a=on:sac=on:sp=unary_first:i=15467:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=13530:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=9757:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=preordered:cnfonf=lazy_gen:fe=off:ins=1:ixr=off:ntd=on:piset=pi_sigma:plsq=on:plsqc=1:plsql=on:plsqr=9,8:s2a=on:i=1525:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=13236:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=26737:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:ss=axioms:st=1.2:i=11376:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_apa=on:cnfonf=off:cond=on:e2e=on:gs=on:hud=7:piset=equals:prag=on:s2agt=32:s2at=5.0:s2pl=no:sos=on:sp=const_max:ss=axioms:i=22070:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fde=none:s2a=on:s2agt=32:i=10385:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=43342:si=on:rtra=on_0"); + quick.push("ott+1002_1:32_abs=on:cnfonf=conj_eager:fe=off:nm=0:i=9574:si=on:rtra=on_0"); + quick.push("dis+1002_4:1_bd=off:cnfonf=off:cs=on:e2e=on:i=6953:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=11365:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1024_apa=on:av=off:cnfonf=off:hud=5:nwc=10.0:piset=all_but_not_eq:i=7366:si=on:rtra=on_0"); + quick.push("lrs+1003_1:8_cnfonf=lazy_pi_sigma_gen:fe=off:ins=1:ixr=off:spb=non_intro:i=8982:si=on:rtra=on_0"); + quick.push("lrs+10_1:50_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:plsq=on:plsqr=1,32:sos=all:i=2561:si=on:rtra=on_0"); + quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=6275:si=on:rtra=on_0"); + quick.push("dis+1002_4:1_cha=on:cnfonf=lazy_not_gen:fd=off:hud=8:ntd=on:nwc=5.0:prag=on:rnwc=on:s2a=on:s2agt=8:i=3674:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=conj_eager:s2a=on:sd=4:sgt=16:ss=axioms:i=15204:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:fsr=off:ntd=on:prag=on:i=34565:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=47219:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=25245:si=on:rtra=on_0"); + // Improves by expected 46.642402649263126 probs costing 395259 Mi + // Sub-schedule for 100000Mi strat cap / 800000Mi overall limit + quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=29318:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:ss=axioms:i=45899:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cs=on:sd=1:sgt=8:ss=axioms:i=24623:si=on:rtra=on_0"); + quick.push("lrs-1010_1:5_aac=none:alpa=true:c=on:cbe=off:cnfonf=off:fe=off:ntd=on:pe=on:piset=and:prag=on:i=4728:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=9811:si=on:rtra=on_0"); + quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=32242:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=44144:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:hud=15:piset=equals:i=33033:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:anc=all_dependent:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=on:fe=axiom:fsd=on:hud=5:kws=arity_squared:prag=on:sd=10:ss=axioms:i=18697:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=56282:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=52383:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_au=on:cbe=off:ins=1:nm=0:piset=or:i=32973:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_av=off:cbe=off:hud=10:ntd=on:prag=on:i=22913:si=on:rtra=on_0"); + quick.push("lrs+2_1241:205_abs=on:alpa=true:anc=all:bd=off:cha=on:cs=on:e2e=on:er=known:fd=preordered:fe=axiom:hud=9:lcm=predicate:piset=and:rawr=on:rp=on:sac=on:sp=frequency:i=41132:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=44280:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_av=off:bet=on:c=on:cnfonf=lazy_gen:fe=axiom:rawr=on:s2a=on:s2agt=15:sp=reverse_arity:i=15935:si=on:rtra=on_0"); + quick.push("ott+1002_1:32_abs=on:cnfonf=conj_eager:fe=off:nm=0:i=36251:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=78592:si=on:rtra=on_0"); + quick.push("lrs-1666_1:1_bsr=unit_only:cbe=off:cnfonf=lazy_not_gen_be_off:hud=6:kws=inv_arity:prag=on:i=16593:si=on:rtra=on_0"); + quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=28934:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=87700:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=31402:si=on:rtra=on_0"); + // Improves by expected 28.578143999992292 probs costing 787843 Mi + // Sub-schedule for 150000Mi strat cap / 1200000Mi overall limit + quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=93119:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_bsd=on:c=on:cnfonf=off:e2e=on:kws=inv_frequency:lwlo=on:nwc=10.0:piset=all:prag=on:i=63693:si=on:rtra=on_0"); + quick.push("dis+2_1:4_au=on:cbe=off:i=53114:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:anc=all_dependent:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=on:fe=axiom:fsd=on:hud=5:kws=arity_squared:prag=on:sd=10:ss=axioms:i=18695:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=97140:si=on:rtra=on_0"); + quick.push("lrs-1010_1:128_apa=on:awrs=converge:awrsf=30:cnfonf=off:hud=4:ins=1:ntd=on:prag=on:i=60471:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=12554:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_bsd=on:cnfonf=lazy_gen:erd=off:fe=off:hud=1:ins=2:kws=arity_squared:nm=30:ntd=on:piset=equals:prag=on:rp=on:s2a=on:sac=on:sp=unary_first:i=82496:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=93028:si=on:rtra=on_0"); + quick.push("lrs+2_1241:205_abs=on:alpa=true:anc=all:bd=off:cha=on:cs=on:e2e=on:er=known:fd=preordered:fe=axiom:hud=9:lcm=predicate:piset=and:rawr=on:rp=on:sac=on:sp=frequency:i=98063:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=139380:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=58631:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:cond=fast:e2e=on:fd=off:nm=16:nwc=5.0:prag=on:i=57903:si=on:rtra=on_0"); + quick.push("lrs-1010_1:32_bet=on:br=off:c=on:cnfonf=lazy_simp:e2e=on:fe=axiom:hud=1:nm=0:ntd=on:nwc=10.0:piset=small_set:prag=on:rawr=on:sp=occurrence:i=57706:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=103689:si=on:rtra=on_0"); + quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=84620:si=on:rtra=on_0"); + // Improves by expected 14.132819945314214 probs costing 1174286 Mi + // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit + quick.push("lrs+21_8:1_bsd=on:c=on:cnfonf=off:e2e=on:kws=inv_frequency:lwlo=on:nwc=10.0:piset=all:prag=on:i=63592:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:anc=all_dependent:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=on:fe=axiom:fsd=on:hud=5:kws=arity_squared:prag=on:sd=10:ss=axioms:i=18695:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=95100:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_av=off:cnfonf=lazy_pi_sigma_gen:lwlo=on:nwc=2.0:piset=equals:i=124793:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=150008:si=on:rtra=on_0"); + quick.push("dis-2_1:16_aac=none:e2e=on:fe=off:hud=5:ntd=on:piset=and:rawr=on:spb=units:i=159324:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=170242:si=on:rtra=on_0"); + quick.push("dis+10_1:128_amm=off:cnfonf=conj_eager:fsr=off:ntd=on:nwc=10.0:i=146239:si=on:rtra=on_0"); + // Improves by expected 4.875005953119484 probs costing 927985 Mi + // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=95100:si=on:rtra=on_0"); + // Improves by expected 0.18750024999974996 probs costing 95099 Mi + // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit + // Improves by expected 0.0 probs costing 0 Mi + // Overall score 2704.4365411936406 probs on average / budget 3745220 Mi +} \ No newline at end of file diff --git a/CASC/Schedules.hpp b/CASC/Schedules.hpp index df7e50fc96..031ceb43c5 100644 --- a/CASC/Schedules.hpp +++ b/CASC/Schedules.hpp @@ -49,6 +49,7 @@ class Schedules static void getSnakeTptpUnsSchedule(const Shell::Property& property, Schedule& quick); static void getSnakeTptpSatSchedule(const Shell::Property& property, Schedule& quick); + static void getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick); }; } diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 7de714f065..fd8458dade 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -170,6 +170,7 @@ void Options::init() "smtcomp_2018", "snake_tptp_uns", "snake_tptp_sat", + "snake_tptp_hol", "struct_induction"}); _schedule.description = "Schedule to be run by the portfolio mode. casc and smtcomp usually point to the most recent schedule in that category. file loads the schedule from a file specified in --schedule_file. Note that some old schedules may contain option values that are no longer supported - see ignore_missing."; _lookup.insert(&_schedule); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index c4c160790e..cf3af094b2 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -423,6 +423,7 @@ class Options SMTCOMP_2018, SNAKE_TPTP_UNS, SNAKE_TPTP_SAT, + SNAKE_TPTP_HOL, STRUCT_INDUCTION }; diff --git a/samplerEx.txt b/samplerEx.txt index f6c0238478..0e3287675e 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -381,3 +381,6 @@ func_ext!=axiom > pe ~cat off:1,on:1 # pragmatic hud!=0 > prag ~cat off:1,on:1 + +# applicative_unif +> au ~cat off:1,on:1 From f36e4143a048eb364372437ad23c1033f7335e57 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 14 Jun 2023 09:52:12 +0100 Subject: [PATCH 162/210] fixing bugs in TPTP proof output + fixing FOOL saturation bug + adding proof extra option --- Inferences/Superposition.cpp | 14 ++++++++++++++ Kernel/Formula.cpp | 10 ++++++++-- Kernel/RobSubstitution.hpp | 4 ++-- Kernel/Term.cpp | 22 ++++++++++++++++++++-- Saturation/SaturationAlgorithm.cpp | 8 ++++++-- Shell/Options.cpp | 9 ++++++++- Shell/Options.hpp | 3 +++ 7 files changed, 61 insertions(+), 9 deletions(-) diff --git a/Inferences/Superposition.cpp b/Inferences/Superposition.cpp index 105637ebbc..ed7575459f 100644 --- a/Inferences/Superposition.cpp +++ b/Inferences/Superposition.cpp @@ -485,6 +485,20 @@ Clause* Superposition::performSuperposition( } env.proofExtra->insert(res,extra); } + + // Commenting this out to avoid disturbing Snake schedule just before + // CASC 2023. After competition can uncomment below in order to be able + // to collect unifier information + /*if(env.options->proofExtra() == Options::ProofExtra::UNIFIER){ + vstringstream ss; + ss << *subst; + vstring unifStr = ss.str(); + unifStr = " unifier: \n" + unifStr; + if (!env.proofExtra) { + env.proofExtra = new DHMap(); + } + env.proofExtra->insert(res,unifStr); + }*/ (*res)[0] = tgtLitS; int next = 1; diff --git a/Kernel/Formula.cpp b/Kernel/Formula.cpp index 192192def8..d15db7646d 100644 --- a/Kernel/Formula.cpp +++ b/Kernel/Formula.cpp @@ -185,6 +185,7 @@ vstring Formula::toString () const SList::Iterator ss(f->sorts()); bool hasSorts = f->sorts(); bool first=true; + bool printDefs = env.options->printDefaultSorts(); while (vs.hasNext()) { int var = vs.next(); if (!first) { @@ -195,10 +196,10 @@ vstring Formula::toString () const if (hasSorts) { ASS(ss.hasNext()); t = ss.next(); - if (t != AtomicSort::defaultSort()) { + if (t != AtomicSort::defaultSort() || printDefs) { res += " : " + t.toString(); } - } else if (SortHelper::tryGetVariableSort(var, const_cast(f),t) && t != AtomicSort::defaultSort()) { + } else if (SortHelper::tryGetVariableSort(var, const_cast(f),t) && (t != AtomicSort::defaultSort() || printDefs)) { res += " : " + t.toString(); } first = false; @@ -213,6 +214,11 @@ vstring Formula::toString () const case BOOL_TERM: { vstring term = f->getBooleanTerm().toString(); +#if VHOL + if(env.property->higherOrder() && f->getBooleanTerm().isApplication()){ + term = "(" + term + ")"; + } +#endif res += env.options->showFOOL() ? "$formula{" + term + "}" : term; continue; diff --git a/Kernel/RobSubstitution.hpp b/Kernel/RobSubstitution.hpp index 18b41398b2..d963c90a8a 100644 --- a/Kernel/RobSubstitution.hpp +++ b/Kernel/RobSubstitution.hpp @@ -224,9 +224,9 @@ class RobSubstitution * This the same as first-order unification, but we need an added check to ensure that we never bind a variable * to a term that contains a loose index. To use this form of unification, the flag applicativeUnify is added. */ - bool unify(TermSpecOrList t1, TermSpecOrList t2, + bool unify(TermSpecOrList t1, TermSpecOrList t2 #if VHOL - bool applicativeUnify = false + , bool applicativeUnify = false #endif ); bool match(TermSpecOrList base, TermSpecOrList instance, VarBankOrInt baseBank); diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index e9ea060174..d8a7b60505 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -1130,7 +1130,7 @@ vstring TermList::toString() const } #if VHOL - if(env.options->holPrinting() == Options::HPrinting::PRETTY){ + if(env.property->higherOrder() && env.options->holPrinting() == Options::HPrinting::PRETTY){ if(ApplicativeHelper::isTrue(*this)){ return "⊤"; } @@ -1294,6 +1294,7 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const if(findVar(deBruijnIndex().unwrap(), st, var)){ return (pretty ? "y" : "Y") + Int::toString(var); } else { + // loose bound index return "db" + Int::toString(deBruijnIndex().unwrap()); } } @@ -1367,6 +1368,14 @@ vstring Literal::toString() const if (isEquality()) { const TermList* lhs = args(); vstring s = lhs->toString(); + +#if VHOL + if(env.property->higherOrder() && env.options->holPrinting() != Options::HPrinting::RAW && + lhs->isApplication()){ + s = "(" + s + ")"; + } +#endif + vstring eqSym = isPositive() ? " = " : " != "; #if VHOL if(env.options->holPrinting() == Options::HPrinting::PRETTY){ @@ -1375,7 +1384,16 @@ vstring Literal::toString() const #endif s += eqSym; - vstring res = s + lhs->next()->toString(); + vstring rhs = lhs->next()->toString(); + +#if VHOL + if(env.property->higherOrder() && env.options->holPrinting() != Options::HPrinting::RAW && + lhs->next()->isApplication()){ + rhs = "(" + rhs + ")"; + } +#endif + + vstring res = s + rhs; if ( #if VHOL env.property->higherOrder() || diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 509243d2d3..21606bc663 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -1563,7 +1563,11 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(res->_instantiation); } - if (prb.hasEquality()) { + if (prb.hasEquality() || opt.FOOLParamodulation() +#if VHOL // cases and foolParamodulation can introduce equality into a problem which has none + || opt.cases() +#endif + ) { gie->addFront(new EqualityFactoring()); gie->addFront(new EqualityResolution()); #if VHOL @@ -1601,7 +1605,7 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(new ElimLeibniz()); } - if (opt.cases() && prb.hasFOOL() && !opt.casesSimp()) { + if (opt.cases() && prb.hasFOOL()) { gie->addFront(new Cases()); } diff --git a/Shell/Options.cpp b/Shell/Options.cpp index fd8458dade..0bd322eb48 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -330,9 +330,16 @@ void Options::init() _printVarBanks.tag(OptionTag::OUTPUT); #endif - _proofExtra = ChoiceOptionValue("proof_extra","",ProofExtra::OFF,{"off","free","full"}); + _printDefaultSorts = BoolOptionValue("print_def_sorts","pds",false); + _printDefaultSorts.description="Output variable sort in quantifier list, even if sort is default ($i)\n" + "Useful as some of Geoff's proof tools don't work with implicit sorts"; + _lookup.insert(&_printDefaultSorts); + _printDefaultSorts.tag(OptionTag::OUTPUT); + + _proofExtra = ChoiceOptionValue("proof_extra","",ProofExtra::OFF,{"off","free", "unifier", "full"}); _proofExtra.description="Add extra detail to proofs:\n " "- free uses known information only\n" + "- unifier records the actual unifer used in superposition\n" "- full may perform expensive operations to acheive this so may" " significantly impact on performance.\n" " The option is still under development and the format of extra information (mainly from full) may change between minor releases"; diff --git a/Shell/Options.hpp b/Shell/Options.hpp index cf3af094b2..29c48a8c07 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -287,6 +287,7 @@ class Options enum class ProofExtra : unsigned int { OFF, FREE, + UNIFIER, FULL }; enum class FMBWidgetOrders : unsigned int { @@ -2105,6 +2106,7 @@ bool _hard; #if VDEBUG bool printVarBanks() const { return _printVarBanks.actualValue; } #endif + bool printDefaultSorts() const { return _printDefaultSorts.actualValue; } bool fmbNonGroundDefs() const { return _fmbNonGroundDefs.actualValue; } unsigned fmbStartSize() const { return _fmbStartSize.actualValue;} @@ -2727,6 +2729,7 @@ bool _hard; #if VDEBUG BoolOptionValue _printVarBanks; #endif + BoolOptionValue _printDefaultSorts; BoolOptionValue _printClausifierPremises; StringOptionValue _problemName; ChoiceOptionValue _proof; From acd46a742d1afebe0e64bd0d5d6af10f8178db90 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 14 Jun 2023 11:06:47 +0100 Subject: [PATCH 163/210] adding new option to take only the first n unifiers and then abort the higher-order unification process --- Inferences/EqualityResolution.cpp | 3 ++- Kernel/HOLUnification.cpp | 17 ++++++++++++----- Shell/Options.cpp | 9 +++++++++ Shell/Options.hpp | 2 ++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Inferences/EqualityResolution.cpp b/Inferences/EqualityResolution.cpp index 9d2db12c60..bfafb5991e 100644 --- a/Inferences/EqualityResolution.cpp +++ b/Inferences/EqualityResolution.cpp @@ -157,7 +157,8 @@ struct EqualityResolution::ResultFn env.statistics->equalityResolution++; results->push(res); // would like to do the below, but exiting higher-order iterator early causes - // some issue which I haven;t tracked at the moment. TODO + // some issue wrelating to celeting the underlying Substitution whilst it is still + // recording. TODO fix this and add code back in //if(res->isEmpty()){ // derived the empty clause, no need to continue with loop //break; diff --git a/Kernel/HOLUnification.cpp b/Kernel/HOLUnification.cpp index 1308dd7f78..206748fe17 100644 --- a/Kernel/HOLUnification.cpp +++ b/Kernel/HOLUnification.cpp @@ -42,7 +42,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCorehigherOrderUnifDepth(); - - if((_solved || solved()) && !_used) // the solved() check ensures that when we start with a flex-flex we return true straight away - { return true; } + static unsigned maxUnifiers = env.options->takeNUnifiersOnly(); + static unsigned depth = env.options->higherOrderUnifDepth(); if(_subst->bdIsRecording()) _subst->bdDone(); + if(maxUnifiers && _unifiersReturned == maxUnifiers){ + return false; + } + + if((_solved || solved()) && !_used) // the solved() check ensures that when we start with a flex-flex we return true straight away + { return true; } + _used = false; DEBUG_ITERATOR(1, "has next called with\n ", *this) @@ -332,6 +337,7 @@ class HOLUnification::HigherOrderUnifiersIt: public IteratorCore _unifPairs; Recycled> _bdStack; Recycled> _bindings; diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 0bd322eb48..940b9e5c90 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1814,6 +1814,15 @@ void Options::init() _lookup.insert(&_higherOrderUnifDepth); _higherOrderUnifDepth.tag(OptionTag::HIGHER_ORDER); + _takeNUnifiersOnly = UnsignedOptionValue("take_n_unifiers","tnu",0); + _takeNUnifiersOnly.description = "Only take the first n unifiers returned by the higher-order unification iterator. 0 means don't use this option"; + _takeNUnifiersOnly.addProblemConstraint(hasHigherOrder()); + _takeNUnifiersOnly.addHardConstraint(If(notEqual(0u)).then(_applicativeUnify.is(equal(false)))); + _takeNUnifiersOnly.addHardConstraint(lessThan(10u)); + _takeNUnifiersOnly.addHardConstraint(greaterThan(0u)); + _lookup.insert(&_takeNUnifiersOnly); + _takeNUnifiersOnly.tag(OptionTag::HIGHER_ORDER); + _addProxyAxioms = BoolOptionValue("add_proxy_axioms","apa",false); _addProxyAxioms.description="Add logical proxy axioms"; _lookup.insert(&_addProxyAxioms); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 29c48a8c07..f42b5a67bc 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2447,6 +2447,7 @@ bool _hard; bool heuristicInstantiation() const { return _heuristicInstantiation.actualValue; } bool applicativeUnify() const { return _applicativeUnify.actualValue; } unsigned higherOrderUnifDepth() const { return _higherOrderUnifDepth.actualValue; } + unsigned takeNUnifiersOnly() const { return _takeNUnifiersOnly.actualValue; } #endif // For unit testing @@ -2897,6 +2898,7 @@ bool _hard; // BoolOptionValue _complexVarCondition; ChoiceOptionValue _holPrinting; UnsignedOptionValue _higherOrderUnifDepth; + UnsignedOptionValue _takeNUnifiersOnly; #endif }; // class Options From f5f9e8989e6e4ec758e38b919ab298e10fb63e7b Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 14 Jun 2023 11:13:06 +0100 Subject: [PATCH 164/210] removing incorrect option constraint --- Shell/Options.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 940b9e5c90..e4e5cd57a5 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1819,7 +1819,6 @@ void Options::init() _takeNUnifiersOnly.addProblemConstraint(hasHigherOrder()); _takeNUnifiersOnly.addHardConstraint(If(notEqual(0u)).then(_applicativeUnify.is(equal(false)))); _takeNUnifiersOnly.addHardConstraint(lessThan(10u)); - _takeNUnifiersOnly.addHardConstraint(greaterThan(0u)); _lookup.insert(&_takeNUnifiersOnly); _takeNUnifiersOnly.tag(OptionTag::HIGHER_ORDER); From 4b88dc60d64244f34753a6cee053769af4f49c53 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Wed, 14 Jun 2023 11:27:09 +0000 Subject: [PATCH 165/210] adapted sampler, added tnu --- samplerEx.txt | 121 ++++++++++++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 59 deletions(-) diff --git a/samplerEx.txt b/samplerEx.txt index 0e3287675e..736e8cccf8 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -9,16 +9,16 @@ # ep!=off > mep ~cat on:10,off:1 # equality_resolution_with_deletion -> erd ~cat on:10,off:1 +> erd ~cat on:20,off:1 # function_definition_elimination -> fde ~cat all:5,none:1,unused:1 +> fde ~cat all:20,none:2,unused:1 # general_splitting (no gsp for Ahmed) # > gsp ~cat off:8,on:1 # inline_let -- this is probably irrelevant on TPTP anyway -> ile ~cat off:10,on:1 +> ile ~cat off:30,on:1 # naming > $nm ~cat Z:1,NZ:5 @@ -26,19 +26,19 @@ $nm=Z > nm ~cat 0:1 $nm=NZ > nm ~sgd 0.07,2 # inequality_splitting -> ins ~cat 0:20,1:4,2:3,3:2,4:1 +> ins ~cat 0:40,1:8,2:12,3:17,4:5,5:2 # random_polarities -> rp ~cat off:3,on:1 +> rp ~cat off:10,on:1 # twee_goal_transformation (not currently with HO) -> tgt ~cat off:10,ground:6,full:5 +> tgt ~cat off:20,ground:5,full:1 # set_of_support -> sos ~cat off:80,on:17,all:10 +> sos ~cat off:100,on:36,all:15 # sine_selection -> ss ~cat off:1182,included:135,axioms:392 +> ss ~cat off:204,axioms:77,included:5 # sine_depth ss!=off > sd ~cat 0:45,1:13,2:12,3:5,4:4,5:4,7:3,10:2,12:1,15:1 @@ -50,12 +50,12 @@ ss!=off > sgt ~cat 0:7,5:1,10:1,15:1,20:1,30:1,50:1,100:1 ss!=off > st ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5:15,5.0:50,5.5:10,6.0:30,7.0:20 # unused_predicate_definition_removal -> updr ~cat on:16,off:1 +> updr ~cat on:25,off:1 # SATURATION # saturation algorithm -> sa ~cat lrs:600,discount:572,otter:236 +> sa ~cat lrs:144,otter:25,discount:117 # literal selection #(kicked out looakead selections: 11:131,-11:131,1011:357,-1011:357, not compatible with HO) > $s_pos ~cat Y:4,N:1 @@ -75,17 +75,17 @@ $ls=on > lsd ~cat 0:20,1:1,5:1,10:1,20:1,50:1,100:1 > awr ~u2r -10;4;: # random_awr -> rawr ~cat on:4,off:1 +> rawr ~cat off:8,on:1 # lrs_weight_limit_only -sa=lrs > lwlo ~cat off:5,on:1 +sa=lrs > lwlo ~cat off:15,on:1 # lrs_estimate_correction_coef sa=lrs > lecc ~cat 1:10,666:1 lecc!=1 > lecc ~uf 0.5,2.0 # age_weight_ratio_shape -> awrs ~cat constant:8,decay:1,converge:1 +> awrs ~cat constant:20,converge:2,decay:1 # age_weight_ratio_shape_frequency awrs!=constant > awrsf ~ui 1,500 @@ -95,7 +95,7 @@ awrs!=constant > awrsf ~ui 1,500 nwc!=1 > nwc ~ui 2,15 # restrict_nwc_to_goal_constants -nwc!=1 > rnwc ~cat off:5,on:1 +nwc!=1 > rnwc ~cat off:10,on:1 # literal_maximality_aftercheck > lma ~cat off:500,on:83 @@ -104,10 +104,10 @@ nwc!=1 > rnwc ~cat off:5,on:1 > plsq ~cat off:4,on:1 # positive_literal_split_queue_layered_arrangement -plsq=on > plsql ~cat on:66,off:162 +plsq=on > plsql ~cat on:1,off:8 # positive_literal_split_queue_cutoffs -plsq=on > plsqc ~cat 0:117,1:92,2:19,3:5,4:1 +plsq=on > plsqc ~cat 0:12,1:30,2:4,3:1,4:1 # positive_literal_split_queue_ratios plsq=on > plsqr ~u2r -5;7;, @@ -131,7 +131,7 @@ fs=off > fsr ~cat off:1 fs=on > fsr ~cat on:500,off:193 # forward_subsumption_demodulation -> fsd ~cat off:500,on:90 +> fsd ~cat off:279,on:7 # forward_subsumption_demodulation_max_matches fsd=on > fsdmm ~cat 0:10,1:3,2:2,3:1 @@ -152,16 +152,16 @@ fs!=off > bs ~cat off::500,unit_only:74,on:64 bsd=on > bsdmm ~cat 0:10,1:3,2:2,3:1 # binary_resolution -> br ~cat on:8,off:1 +> br ~cat on:40,off:1 # condensation -> cond ~cat off:500,on:89,fast:61 +> cond ~cat off:266,on:12,fast:8 # demodulation_redundancy_check (not implemented in Ahmed's branch) # > drc ~cat encompass:500,on:500,off:354 # equational_tautology_removal -> etr ~cat off:500,on:30 +> etr ~cat off:100,on:1 # extensionality_resolution ins=0 > er ~cat off:500,known:25,filter:26 @@ -170,16 +170,16 @@ ins=0 > er ~cat off:500,known:25,filter:26 # > foolp ~cat off:10,on:1 # forward_demodulation -> fd ~cat all:500,off:41,preordered:168 +> fd ~cat all:244,off:27,preordered:15 # forward_literal_rewriting -> flr ~cat off:8,on:1 +> flr ~cat off:30,on:1 # function_definition_introduction (not implemented in Ahmed's branch) # > fdi ~cat 0:100,2:1,4:1,8:1,16:1,32:1,64:1,128:1,256:1,512:1,1024:1 # inner_rewriting -> irw ~cat off:165,on:6 +> irw ~cat off:165,on:1 # unit_resulting_resolution (TODO: out for Ahmed for now) # > urr ~cat off:1200,ec_only:162,on:340 @@ -187,16 +187,16 @@ ins=0 > er ~cat off:500,known:25,filter:26 # SINE LEVELS and shit # sine_to_age -> s2a ~cat off:2,on:1 +> s2a ~cat off:4,on:1 # sine_level_split_queue -> slsq ~cat off:5,on:1 +> slsq ~cat off:25,on:1 # sine_level_split_queue_layered_arrangement -slsq=on > slsql ~cat on:1,off:1 +slsq=on > slsql ~cat on:10,off:1 # sine_level_split_queue_cutoffs -slsq=on > slsqc ~cat 0:10,1:10,2:6,3:3,4:1 +slsq=on > slsqc ~cat 0:6,1:8,2:1,3:1 # sine_level_split_queue_ratios slsq=on > slsqr ~u2r -5;2;, @@ -209,13 +209,13 @@ slsq=on > slsqr ~u2r -5;2;, # symbol_precendence > sp ~cat arity:100,const_min:72,frequency:130,const_frequency:49,reverse_frequency:55,reverse_arity:72,weighted_frequency:24,unary_first:28,occurrence:82,unary_frequency:14,const_max:18 # symbol_precedence_boost -> spb ~cat none:200,units:78,goal:91,goal_then_units:93,non_intro:14,intro:12 +> spb ~cat none:100,units:3,goal:1,goal_then_units:8,non_intro:6,intro:2 to=kbo > kmz ~cat off:200,on:1 -to=kbo > kws ~cat const:50,inv_arity_squared:6,precedence:28,arity_squared:1,inv_arity:5,inv_frequency:8,frequency:2 +to=kbo > kws ~cat const:200,inv_arity_squared:1,precedence:16,arity_squared:10,inv_arity:3,inv_frequency:10,frequency:1 # literal_comparison_mode -> lcm ~cat standard:500,reverse:66,predicate:51 +> lcm ~cat standard:100,reverse:5,predicate:5 # sine_to_pred_levels > s2pl ~cat off:50,on:2,no:3 @@ -237,16 +237,16 @@ $s2a=on > s2agt ~cat 0:7,5:1,10:1,15:1,20:1,30:1,50:1,100:1 $s2a=on > s2at ~cat -1.0:50,1.0:150,1.5:37,2.0:60,2.5:20,3.0:70,3.5:15,4.0:60,4.5:15,5.0:50,5.5:10,6.0:30,7.0:20 # AVATAR -> av ~cat on:15,off:4 +> av ~cat on:5,off:1 # avatar_add_complementary -av=on > aac ~cat none:147,ground:600 +av=on > aac ~cat none:19,ground:100 # avatar_buffered_solver -av=on > abs ~cat on:63,off:300 +av=on > abs ~cat on:8,off:100 # avatar_congruence_closure -av=on > acc ~cat off:600,model:24,on:58 +av=on > acc ~cat off:100,model:2,on:5 # cc_unsat_cores acc!=off > ccuc ~cat first:1,small_ones:1,all:3 @@ -259,16 +259,16 @@ av=on acc!=model > amm ~cat all:600,sco:32,off:69 av=on amm=all > aer ~cat on:300,off:1 # avatar_delete_deactivated -av=on > add ~cat on:300,large:55,off:8 +av=on > add ~cat on:100,large:2,off:1 # avatar_fast_restart av=on > afr ~cat off:10,on:1 # avatar_literal_polarity_advice -av=on > alpa ~cat none:300,false:13,true:6,random:4 +av=on > alpa ~cat none:200,false:1,true:6,random:1 # avatar_nonsplittable_components -av=on > anc ~cat known:300,all_dependent:38,all:45,none:48 +av=on > anc ~cat known:300,all_dependent:14,all:5,none:14 # avatar_turn_off_time_frac av=on > atotf ~cat 1.0:10,0.5:1 @@ -283,7 +283,7 @@ afp!=0 > afp ~cat 1:1,10:1,50:1,300:1,1000:1,2000:1,4000:1,10000:1,40000:1,10000 afp!=0 > afq ~uf 1.0,3.0 # nonliterals_in_clause_weight -av=on > nicw ~cat off:600,on:76 +av=on > nicw ~cat off:100,on:1 # split_at_activation av=on > sac ~cat off:3,on:1 @@ -294,20 +294,20 @@ av=on > sac ~cat off:3,on:1 # AVATAR SPLIT QUEUE # avatar_split_queue -av=on > avsq ~cat off:5,on:1 +av=on > avsq ~cat off:8,on:1 # avatar_split_queue_layered_arrangement -avsq=on > avsql ~cat off:4,on:1 +avsq=on > avsql ~cat off:8,on:1 # avatar_split_queue_cutoffs -avsq=on > avsqc ~cat 0:80,1:30,2:20,3:20,4:10,5:5 +avsq=on > avsqc ~cat 0:20,1:1,2:1,3:1,4:1,5:1 # avatar_split_queue_ratios avsq=on > avsqr ~u2r -5;3;, # GLOBAL SUBSUMPTION (only after AVATAR -- careful of dependencies!) -> gs ~cat off:5,on:1 +> gs ~cat off:15,on:1 # global_subsumption_explicit_minim gs=on > gsem ~cat randomized:50,on:5,off:17 @@ -325,62 +325,65 @@ gs=on av=on > gsaa ~cat off:30,from_current:11,full_model:3 # HIGHER ORDER STUFF # complex_bool_reasoning -> cbe ~cat off:1,on:1 +> cbe ~cat on:100,off:65 # add_proxy_axioms -> apa ~cat off:1,on:1 +> apa ~cat off:100,on:13 # bool_eq_trick -> bet ~cat off:1,on:1 +> bet ~cat off:100,on:19 # cases -> c ~cat off:1,on:1 +> c ~cat off:100,on:31 # cases_simp -c=off > cs ~cat off:1,on:1 +c=off > cs ~cat off:100,on:14 # choice_ax -> cha ~cat off:1,on:1 +> cha ~cat off:100,on:16 # choice_reasoning -cha=off > chr ~cat off:1,on:1 +cha=off > chr ~cat off:100,on:15 # cnf_on_the_fly apa=on > cnfonf ~cat off:1 -apa=off > cnfonf ~cat eager:1,lazy_gen:1,lazy_simp:1,lazy_not_gen:1,lazy_not_gen_be_off:1,lazy_not_be_gen:1,lazy_pi_sigma_gen:1,conj_eager:1,off:1 +apa=off > cnfonf ~cat eager:111,off:43,lazy_gen:29,conj_eager:19,lazy_not_gen_be_off:15,lazy_pi_sigma_gen:26,lazy_not_be_gen:12,lazy_simp:19,lazy_not_gen:12 # heur_inst -cnfonf=conj_eager > hi ~cat off:1,on:1 +cnfonf=conj_eager > hi ~cat off:100,on:5 # bool_inst (disable for now) # cnfonf!=off > bi ~cat off:1,abs:1,abs_sub:1 # equality_to_equiv -> e2e ~cat off:1,on:1 +> e2e ~cat off:222,on:64 # func_ext -> fe ~cat off:1,axiom:1,abstraction:1 +> fe ~cat abstraction:172,off:74,axiom:40 # hol_unif_depth -> hud ~ui 0,15 +> hud ~ui 0,25 # lam_free_hol # > lfh ~cat off:1,on:1 # iff_xor_rewriter -> ixr ~cat off:1,on:1 +> ixr ~cat on:100,off:21 # new_taut_del -> ntd ~cat off:1,on:1 +> ntd ~cat off:100,on:60 # pos_ext -func_ext!=axiom > pe ~cat off:1,on:1 +func_ext!=axiom > pe ~cat off:20,on:1 # prim_inst_set -> piset ~cat all:1,all_but_not_eq:1,not:1,small_set:1,pragmatic:1,and:1,or:1,equals:1,pi_sigma:1 +> piset ~cat pragmatic:214,or:14,equals:19,and:15,not:3,pi_sigma:8,all:3,small_set:7,all_but_not_eq:3 # pragmatic hud!=0 > prag ~cat off:1,on:1 # applicative_unif -> au ~cat off:1,on:1 +> au ~cat off:10,on:3 + +# take_n_unifiers +au=off > tnu ~ui 0,9 From 1d331da6c1f0ada43f997ba64b2740414d97242c Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Wed, 14 Jun 2023 22:27:31 +0200 Subject: [PATCH 166/210] some Wednesday schedule --- CASC/Schedules.cpp | 647 +++++++++++++++++++++++---------------------- 1 file changed, 335 insertions(+), 312 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index fd8ee14d98..702a69e016 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5135,323 +5135,346 @@ void Schedules::getSnakeTptpSatSchedule(const Shell::Property& property, Schedul } void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick) { - // Champion singleton-schedule for 100000Mi - quick.push("lrs+1010_1:1_chr=on:ntd=on:i=98874:si=on:rtra=on_0"); - // Improves by expected 2034.99796500208 probs costing 98873 Mi - // Sub-schedule for 50Mi strat cap / 400Mi overall limit - quick.push("ott+2_1:128_au=on:bd=off:cnfonf=off:fsr=off:nm=4:piset=or:sp=weighted_frequency:i=39:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:hud=15:piset=equals:i=8:si=on:rtra=on_0"); + // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit + quick.push("dis+10_1:128_hud=1:i=93:si=on:rtra=on_0"); + quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=29759:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:i=3:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=419:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=4010:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=392:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:fsr=off:ixr=off:kws=precedence:nm=40:ntd=on:i=1142:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=294:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=lazy_gen:ins=3:sac=on:sp=unary_frequency:uhcvi=on:i=57364:si=on:rtra=on_0"); + quick.push("dis+10_3:2_av=off:bsd=on:hud=9:nm=0:plsq=on:plsqc=1:plsql=on:prag=on:i=1495:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=1678:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cs=on:sd=1:sgt=8:ss=axioms:i=1400:si=on:rtra=on_0"); + quick.push("lrs+1002_1:28_bd=off:cnfonf=lazy_simp:plsq=on:plsqr=1,1:prag=on:i=1003:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:bd=preordered:cnfonf=conj_eager:fe=off:tgt=ground:i=7732:si=on:rtra=on_0"); + quick.push("dis-31_1:128_c=on:chr=on:cnfonf=lazy_not_gen:e2e=on:erd=off:fd=off:fe=off:hud=1:ins=2:piset=not:prag=on:sp=frequency:spb=goal:i=162:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); + quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_bsr=unit_only:cnfonf=lazy_not_be_gen:fe=off:ntd=on:i=13529:si=on:rtra=on_0"); + quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3140:si=on:rtra=on_0"); + quick.push("dis+2_1:4_au=on:cbe=off:i=21810:si=on:rtra=on_0"); + quick.push("ott+1002_1:1024_au=on:avsq=on:c=on:cnfonf=lazy_not_gen_be_off:sos=all:i=14611:si=on:rtra=on_0"); + quick.push("dis+1010_913633:131072_aac=none:apa=on:au=on:awrs=converge:awrsf=150:bd=off:c=on:cbe=off:chr=on:cnfonf=off:e2e=on:fe=off:hud=13:kws=precedence:lma=on:nm=13:ntd=on:pe=on:plsq=on:sgt=15:sp=frequency:ss=axioms:tgt=ground:uhcvi=on:i=2:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=14199:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=41:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bet=on:bsd=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:fs=off:fsr=off:ixr=off:nwc=5.0:prag=on:i=16:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=599:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:hud=15:prag=on:i=48:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=2:sos=all:ss=axioms:i=177:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=458:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); + quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=2151:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=2221:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:e2e=on:nm=2:sos=all:sp=const_min:spb=non_intro:i=9526:si=on:rtra=on_0"); + quick.push("dis+666_1:594_bd=off:c=on:cnfonf=lazy_pi_sigma_gen:fde=none:fe=axiom:piset=all_but_not_eq:rawr=on:rp=on:s2a=on:sos=all:sp=const_frequency:i=1011:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=29673:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=97:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); + quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=348:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5401:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:s2a=on:sp=weighted_frequency:ss=axioms:i=297:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=1201:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=54710:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_chr=on:cnfonf=lazy_gen:hud=5:ins=1:ntd=on:prag=on:i=211:si=on:rtra=on_0"); quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:cs=on:tgt=ground:i=25:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_anc=all_dependent:au=on:bd=off:e2e=on:fsr=off:sac=on:ss=axioms:i=14:si=on:rtra=on_0"); - quick.push("lrs+1666_1:14_er=filter:fsr=off:i=18:si=on:rtra=on_0"); - quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=15:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fd=preordered:prag=on:sos=on:i=18:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:i=48:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=2:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=2:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:i=48:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:e2e=on:fde=unused:ixr=off:sp=reverse_arity:i=14:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:i=2:si=on:rtra=on_0"); + quick.push("dis+10_1:1_bsr=on:cnfonf=lazy_pi_sigma_gen:fe=off:fsr=off:plsq=on:plsqc=2:plsqr=32,1:i=9:si=on:rtra=on_0"); + quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=33:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=14314:si=on:rtra=on_0"); + quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=247:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_anc=all_dependent:au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:piset=not:i=27944:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=5424:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=129217:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2278:si=on:rtra=on_0"); + quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=2928:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sgt=16:ss=axioms:i=294:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=preordered:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=10:ixr=off:prag=on:i=2182:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=8250:si=on:rtra=on_0"); + quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=901:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=4:piset=pi_sigma:i=1858:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=393:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fs=off:fsr=off:hud=0:i=45:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_anc=all_dependent:au=on:bd=off:e2e=on:fsr=off:sac=on:ss=axioms:i=143:si=on:rtra=on_0"); + quick.push("ott+10_1:128_c=on:cbe=off:cha=on:cnfonf=lazy_not_gen_be_off:e2e=on:fe=axiom:hud=10:nm=0:nwc=10.0:piset=and:prag=on:rawr=on:i=2672:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_bd=off:e2e=on:fde=unused:kws=precedence:sac=on:sos=on:ss=axioms:i=434:si=on:rtra=on_0"); + quick.push("lrs+1666_1:14_er=filter:fsr=off:i=832:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=43570:si=on:rtra=on_0"); + quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=21:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=1110:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fd=preordered:prag=on:sos=on:i=9527:si=on:rtra=on_0"); + quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15783:si=on:rtra=on_0"); + quick.push("dis+10_8:1_apa=on:cnfonf=off:e2e=on:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=783:si=on:rtra=on_0"); + quick.push("lrs+2_3:1_chr=on:sp=reverse_arity:i=12:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_amm=off:au=on:bsd=on:cbe=off:cnfonf=lazy_gen:sp=unary_frequency:i=808:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:apa=on:au=on:cnfonf=off:fsd=on:hud=5:ins=2:piset=all:rawr=on:sos=on:spb=units:uhcvi=on:i=549:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=1:sgt=32:ss=axioms:i=24918:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=17179:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=9801:si=on:rtra=on_0"); + quick.push("lrs-3_4:1_au=on:kws=arity_squared:nm=2:sos=on:i=23:si=on:rtra=on_0"); + quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_cnfonf=off:fsr=off:ins=2:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=58969:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=27:si=on:rtra=on_0"); + quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=334:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:nwc=7.0:sup=off:i=6325:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_apa=on:chr=on:cnfonf=off:fe=off:piset=not:prag=on:sos=all:sp=frequency:i=13001:si=on:rtra=on_0"); + quick.push("dis+21_3:56_abs=on:anc=all:bsr=unit_only:cbe=off:chr=on:cnfonf=lazy_simp:cond=fast:fe=off:hud=15:kws=inv_arity:nm=46:ntd=on:pe=on:piset=or:plsq=on:plsqc=2:plsqr=32,1:rawr=on:rp=on:s2a=on:s2at=-1.0:i=329:si=on:rtra=on_0"); + quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=preordered:cnfonf=lazy_gen:fe=off:ins=1:ixr=off:ntd=on:piset=pi_sigma:plsq=on:plsqc=1:plsql=on:plsqr=9,8:s2a=on:i=12596:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2631:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:i=1094:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=29789:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=8382:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=6101:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=150:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=2295:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=1360:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=700:si=on:rtra=on_0"); + quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=20122:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_atotf=0.3:bd=off:cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3,1:i=1276:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:cs=on:sd=1:sgt=64:ss=axioms:i=21660:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=3174:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:fsr=off:i=886:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_chr=on:hud=3:ins=2:kws=precedence:ntd=on:prag=on:i=68:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=82:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_chr=on:hud=5:prag=on:i=8:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:ss=axioms:st=1.2:i=180:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:fe=off:ins=1:piset=and:i=351:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:cs=on:sos=on:i=835:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3882:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_apa=on:cnfonf=off:cond=on:e2e=on:gs=on:hud=7:piset=equals:prag=on:s2agt=32:s2at=5.0:s2pl=no:sos=on:sp=const_max:ss=axioms:i=27001:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fd=preordered:fde=none:plsq=on:plsqr=32,1:i=697:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fde=none:s2a=on:s2agt=32:i=11228:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_amm=sco:atotf=0.1:c=on:cnfonf=lazy_simp:piset=and:sp=reverse_arity:i=4:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=66825:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=off:e2e=on:ile=on:kws=inv_frequency:nm=0:piset=all:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sd=1:sp=unary_first:spb=intro:ss=axioms:st=3.0:uhcvi=on:i=2175:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:er=filter:fe=off:flr=on:ixr=off:nm=4:s2a=on:s2at=2.0:i=7562:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=498:si=on:rtra=on_0"); + quick.push("ott+1010_1:6_aac=none:cbe=off:cnfonf=off:hud=5:nm=2:prag=on:spb=goal:i=2:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=all_dependent:au=on:cbe=off:fde=unused:ntd=on:i=756:si=on:rtra=on_0"); + quick.push("dis+1002_4:1_bd=off:cnfonf=off:cs=on:e2e=on:i=7027:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=2570:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=8:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:i=3:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=45798:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=10170:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=9690:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=17767:si=on:rtra=on_0"); quick.push("lrs-1666_1:1_bsr=unit_only:cbe=off:cnfonf=lazy_not_gen_be_off:hud=6:kws=inv_arity:prag=on:i=4:si=on:rtra=on_0"); - quick.push("lrs+2_4:1_bd=preordered:cnfonf=lazy_pi_sigma_gen:fe=off:fs=off:fsr=off:kws=inv_frequency:plsq=on:plsqc=1:plsqr=32,1:i=2:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cbe=off:chr=on:fde=unused:hud=10:prag=on:i=26:si=on:rtra=on_0"); - quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=6:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:i=3:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:prag=on:i=34:si=on:rtra=on_0"); - quick.push("lrs+1010_2:1_anc=none:atotf=0.308:bd=preordered:fe=off:nm=2:nwc=10.0:s2agt=30:s2pl=on:i=15:si=on:rtra=on_0"); - quick.push("lrs-1666_1:1_bet=on:chr=on:fe=off:hud=5:ntd=on:i=7:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=12:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_av=off:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:i=2:si=on:rtra=on_0"); - quick.push("ott+10_1:1_aac=none:apa=on:au=on:cnfonf=off:ntd=on:nwc=12.0:sos=on:i=3:si=on:rtra=on_0"); - quick.push("dis+1004_1:230_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:fsr=off:ntd=on:prag=on:spb=goal_then_units:i=49:si=on:rtra=on_0"); - // Improves by expected 116.00133199856381 probs costing 394 Mi - // Sub-schedule for 100Mi strat cap / 800Mi overall limit - quick.push("ott+1002_1:1_au=on:cbe=off:cond=on:sp=occurrence:i=28:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=41:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=conj_eager:hi=on:ntd=on:i=25:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=101:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=20:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:fsr=off:i=69:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:i=67:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=77:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=83:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=92:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=conj_eager:nwc=10.0:ss=axioms:i=92:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_plsq=on:plsqc=1:plsqr=32,1:sd=1:ss=axioms:i=73:si=on:rtra=on_0"); - quick.push("dis+10_1:1_aac=none:cs=on:i=35:si=on:rtra=on_0"); - // Improves by expected 26.000137499859665 probs costing 790 Mi - // Sub-schedule for 150Mi strat cap / 1200Mi overall limit - quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=148:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=52:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=136:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=preordered:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=10:ixr=off:prag=on:i=47:si=on:rtra=on_0"); - quick.push("dis+1010_1:128_cbe=off:cnfonf=lazy_simp:fd=off:hud=5:ntd=on:i=147:si=on:rtra=on_0"); - quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=148:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_av=off:fd=off:sos=on:ss=axioms:i=146:si=on:rtra=on_0"); - quick.push("dis+10_1:128_cnfonf=lazy_not_gen:fe=off:kws=inv_frequency:prag=on:sd=2:ss=axioms:st=3.0:i=138:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=123:si=on:rtra=on_0"); - quick.push("dis+10_1:64_au=on:cnfonf=off:fd=off:fs=off:fsr=off:nm=2:piset=equals:i=84:si=on:rtra=on_0"); - // Improves by expected 35.000088499890325 probs costing 1159 Mi - // Sub-schedule for 500Mi strat cap / 4000Mi overall limit - quick.push("dis+1002_1:1024_fsd=on:hud=1:nm=32:piset=or:i=102:si=on:rtra=on_0"); - quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=98:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=332:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_cond=on:e2e=on:i=61:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=84:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=441:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=1:sgt=32:ss=axioms:i=246:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fde=unused:s2a=on:s2agt=8:i=344:si=on:rtra=on_0"); - quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=57:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:i=243:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=406:si=on:rtra=on_0"); - quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=89:si=on:rtra=on_0"); - quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=420:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:hud=8:prag=on:i=99:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=76:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=381:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=model:avsq=on:ntd=on:i=1212:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=3:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=16:si=on:rtra=on_0"); + quick.push("ott+1004_64217:1048576_cnfonf=lazy_simp:fe=off:fsr=off:piset=and:rawr=on:sp=frequency:spb=units:i=4736:si=on:rtra=on_0"); + quick.push("dis+1003_1:6_acc=on:avsq=on:ccuc=small_ones:fe=off:i=8774:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bsd=on:cbe=off:cnfonf=conj_eager:hi=on:i=119:si=on:rtra=on_0"); + quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=15134:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=571:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_pe=on:i=1761:si=on:rtra=on_0"); + quick.push("lrs+1004_1:4_av=off:bsd=on:e2e=on:i=3368:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=all:cbe=off:cnfonf=lazy_not_gen_be_off:fe=off:hud=5:nwc=10.0:plsq=on:plsqr=32,1:prag=on:sp=unary_first:i=198:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_bd=preordered:cnfonf=conj_eager:etr=on:ntd=on:prag=on:i=11264:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=5910:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=14145:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:erd=off:s2a=on:s2at=3.0:sos=all:i=1174:si=on:rtra=on_0"); + quick.push("ott+1002_1:4_c=on:chr=on:cnfonf=lazy_not_be_gen:hud=10:nm=10:piset=all_but_not_eq:rp=on:spb=goal:uhcvi=on:i=4573:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=16164:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1024_apa=on:av=off:cnfonf=off:hud=5:nwc=10.0:piset=all_but_not_eq:i=7366:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=21829:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=890:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bsd=on:cbe=off:cnfonf=conj_eager:fd=off:fsr=off:hi=on:i=71:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_av=off:fd=off:sos=on:ss=axioms:i=6:si=on:rtra=on_0"); + quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=221:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:prag=on:i=686:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=1702:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:bd=preordered:ixr=off:i=3673:si=on:rtra=on_0"); + quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=6645:si=on:rtra=on_0"); quick.push("ott+10_4:219_abs=on:alpa=random:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:ixr=off:kws=inv_frequency:sos=all:i=95:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:ss=axioms:st=1.5:i=214:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=96:si=on:rtra=on_0"); - quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=119:si=on:rtra=on_0"); - // Improves by expected 79.5001324998535 probs costing 3983 Mi - // Sub-schedule for 1000Mi strat cap / 8000Mi overall limit - quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=215:si=on:rtra=on_0"); - quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:cnfonf=off:e2e=on:plsq=on:i=463:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=conj_eager:hi=on:ntd=on:i=201:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=913:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:s2a=on:sp=weighted_frequency:ss=axioms:i=297:si=on:rtra=on_0"); - quick.push("dis+1002_1:4_chr=on:cnfonf=lazy_gen:hud=5:ins=1:ntd=on:prag=on:i=156:si=on:rtra=on_0"); - quick.push("dis+2_1:1024_cnfonf=off:e2e=on:nwc=5.0:i=168:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=982:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=849:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:fsr=off:i=567:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1024_fde=none:kws=precedence:prag=on:sac=on:sos=on:i=495:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:cnfonf=off:fe=off:hud=10:prag=on:s2a=on:ss=axioms:st=2.0:i=161:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=129:si=on:rtra=on_0"); - quick.push("lrs+1002_1:40_awrs=converge:c=on:cbe=off:fe=axiom:hud=3:prag=on:sos=all:sp=const_frequency:i=373:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=150:si=on:rtra=on_0"); - quick.push("lrs+1003_1:8_cnfonf=lazy_pi_sigma_gen:fe=off:ins=1:ixr=off:spb=non_intro:i=304:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=306:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_av=off:fe=off:hud=5:piset=or:prag=on:i=429:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=conj_eager:s2a=on:sd=4:sgt=16:ss=axioms:i=574:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cbe=off:cnfonf=lazy_not_gen_be_off:fe=off:i=127:si=on:rtra=on_0"); - // Improves by expected 63.50007662492973 probs costing 7992 Mi - // Sub-schedule for 1500Mi strat cap / 12000Mi overall limit - quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=398:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=294:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:hud=15:piset=equals:i=423:si=on:rtra=on_0"); - quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=103:si=on:rtra=on_0"); - quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=223:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_bsd=on:cnfonf=lazy_gen:erd=off:fe=off:hud=1:ins=2:kws=arity_squared:nm=30:ntd=on:piset=equals:prag=on:rp=on:s2a=on:sac=on:sp=unary_first:i=446:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=4:piset=pi_sigma:i=340:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_cs=on:fde=unused:fe=axiom:nm=0:ntd=on:prag=on:s2a=on:s2at=1.2:i=229:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:ixr=off:kws=inv_frequency:nwc=10.0:rnwc=on:sos=on:sp=occurrence:i=269:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_amm=off:cs=on:kws=precedence:nwc=10.0:piset=all:s2a=on:sac=on:sp=unary_frequency:spb=goal:ss=axioms:st=3.0:i=357:si=on:rtra=on_0"); - quick.push("lrs+1010_1:2_br=off:cnfonf=lazy_not_gen:i=242:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_cbe=off:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ins=1:piset=small_set:rp=on:spb=goal_then_units:i=374:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1172:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_atotf=0.3:bd=off:cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3,1:i=502:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=off:sd=3:sgt=10:ss=axioms:st=1.5:i=283:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_apa=on:cnfonf=off:cond=on:e2e=on:gs=on:hud=7:piset=equals:prag=on:s2agt=32:s2at=5.0:s2pl=no:sos=on:sp=const_max:ss=axioms:i=1283:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=312:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_av=off:bet=on:c=on:cnfonf=lazy_gen:fe=axiom:rawr=on:s2a=on:s2agt=15:sp=reverse_arity:i=573:si=on:rtra=on_0"); - quick.push("ott+1010_1:3_av=off:cbe=off:cnfonf=lazy_not_gen:hud=5:ins=3:spb=goal_then_units:i=321:si=on:rtra=on_0"); - quick.push("lrs-1010_1:32_bet=on:br=off:c=on:cnfonf=lazy_simp:e2e=on:fe=axiom:hud=1:nm=0:ntd=on:nwc=10.0:piset=small_set:prag=on:rawr=on:sp=occurrence:i=270:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:i=284:si=on:rtra=on_0"); - quick.push("lrs+1010_1:32_cnfonf=lazy_simp:fsr=off:piset=equals:i=973:si=on:rtra=on_0"); - quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=220:si=on:rtra=on_0"); - quick.push("dis+1002_4:1_cha=on:cnfonf=lazy_not_gen:fd=off:hud=8:ntd=on:nwc=5.0:prag=on:rnwc=on:s2a=on:s2agt=8:i=317:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=886:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all:c=on:cnfonf=off:fsr=off:kws=inv_frequency:nwc=5.0:sos=on:sp=occurrence:i=328:si=on:rtra=on_0"); - quick.push("dis+1004_1:230_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:fsr=off:ntd=on:prag=on:spb=goal_then_units:i=567:si=on:rtra=on_0"); - // Improves by expected 45.5000091250097 probs costing 11962 Mi - // Sub-schedule for 5000Mi strat cap / 40000Mi overall limit - quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=396:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=4311:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=920:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=conj_eager:hi=on:ntd=on:i=350:si=on:rtra=on_0"); - quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=817:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=212:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=899:si=on:rtra=on_0"); - quick.push("ott+1004_1:1_alpa=true:fde=none:ins=3:piset=small_set:i=395:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_bd=preordered:chr=on:cnfonf=lazy_simp:ntd=on:sp=const_frequency:i=572:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=382:si=on:rtra=on_0"); - quick.push("lrs+1010_1:5_cnfonf=lazy_not_be_gen:e2e=on:fe=off:hud=10:kws=precedence:rawr=on:sos=on:i=819:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_anc=all_dependent:au=on:bd=off:e2e=on:fsr=off:sac=on:ss=axioms:i=2926:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_amm=sco:bd=off:bet=on:cnfonf=lazy_not_gen:e2e=on:fde=none:fe=axiom:nicw=on:rawr=on:s2a=on:sos=all:spb=goal_then_units:i=1011:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=1:sgt=32:ss=axioms:i=4734:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=491:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:i=658:si=on:rtra=on_0"); - quick.push("lrs+21_1:1024_cnfonf=lazy_not_gen:fd=preordered:fe=off:hud=5:kws=inv_arity_squared:ntd=on:plsq=on:plsql=on:s2a=on:i=496:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:cnfonf=off:fe=off:hud=10:prag=on:s2a=on:ss=axioms:st=2.0:i=485:si=on:rtra=on_0"); - quick.push("ott+1004_64217:1048576_cnfonf=lazy_simp:fe=off:fsr=off:piset=and:rawr=on:sp=frequency:spb=units:i=3752:si=on:rtra=on_0"); - quick.push("lrs-1010_1:32_bet=on:br=off:c=on:cnfonf=lazy_simp:e2e=on:fe=axiom:hud=1:nm=0:ntd=on:nwc=10.0:piset=small_set:prag=on:rawr=on:sp=occurrence:i=885:si=on:rtra=on_0"); - quick.push("lrs+1004_1:4_av=off:bsd=on:e2e=on:i=3591:si=on:rtra=on_0"); - quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=641:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=412:si=on:rtra=on_0"); - quick.push("dis+10_1:1_apa=on:bsd=on:c=on:cnfonf=off:e2e=on:er=filter:fsr=off:gs=on:hud=5:kws=inv_precedence:ntd=on:piset=pi_sigma:prag=on:sgt=16:spb=intro:ss=axioms:i=746:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=3861:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_av=off:hud=10:i=375:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=4291:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=484:si=on:rtra=on_0"); - // Improves by expected 104.83335374998916 probs costing 39884 Mi - // Sub-schedule for 10000Mi strat cap / 80000Mi overall limit - quick.push("ott+21_5:1_au=on:c=on:cbe=off:e2e=on:ins=3:nm=16:plsq=on:plsqc=2:plsqr=17,1:ss=axioms:st=3.0:i=1855:si=on:rtra=on_0"); - quick.push("ott+21_1:64_bd=off:cnfonf=off:kws=precedence:piset=not:sd=1:sos=all:ss=axioms:st=3.0:i=5727:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=396:si=on:rtra=on_0"); - quick.push("dis+10_3:2_av=off:bsd=on:hud=9:nm=0:plsq=on:plsqc=1:plsql=on:prag=on:i=1485:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cs=on:sd=1:sgt=8:ss=axioms:i=1032:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cbe=off:cond=on:sp=occurrence:i=1613:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_apa=on:cnfonf=off:hud=10:nm=30:ntd=on:nwc=12.0:sp=occurrence:i=589:si=on:rtra=on_0"); - quick.push("dis+10_3:1_anc=all:avsq=on:c=on:cnfonf=off:e2e=on:fd=off:fde=none:ins=3:nwc=5.0:plsq=on:plsqc=1:plsqr=4964065,131072:prag=on:s2a=on:s2agt=64:i=2724:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:anc=all_dependent:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=on:fe=axiom:fsd=on:hud=5:kws=arity_squared:prag=on:sd=10:ss=axioms:i=623:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=conj_eager:hi=on:ntd=on:i=1417:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=3966:si=on:rtra=on_0"); - quick.push("ott+1004_1:1_alpa=true:fde=none:ins=3:piset=small_set:i=395:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1512:si=on:rtra=on_0"); - quick.push("lrs+1002_1:2_au=on:bd=off:bet=on:cbe=off:cnfonf=lazy_not_gen_be_off:cond=on:cs=on:kws=precedence:sp=const_max:tgt=ground:i=2750:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=1079:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=1279:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=1439:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=2073:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=7655:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1614:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=2979:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:bsr=unit_only:prag=on:sos=all:i=2514:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=2970:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=5775:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=6747:si=on:rtra=on_0"); - quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=2267:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:i=702:si=on:rtra=on_0"); - quick.push("dis+1003_1:3_av=off:bd=off:cnfonf=lazy_gen:fe=off:kws=arity_squared:sp=const_max:i=488:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_amm=sco:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:piset=or:sos=on:sp=occurrence:i=3672:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_fe=off:hud=10:nwc=5.0:sos=on:ss=axioms:i=544:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cbe=off:sp=occurrence:i=80020:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=9400:si=on:rtra=on_0"); + quick.push("dis+1002_4:1_cha=on:cnfonf=lazy_not_gen:fd=off:hud=8:ntd=on:nwc=5.0:prag=on:rnwc=on:s2a=on:s2agt=8:i=332:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_amm=sco:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:piset=or:sos=on:sp=occurrence:i=4163:si=on:rtra=on_0"); + quick.push("dis+1003_1:1_hud=1:ins=1:i=15:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_simp:sgt=5:sos=on:ss=axioms:i=319:si=on:rtra=on_0"); + quick.push("lrs+10_121:10_aac=none:abs=on:alpa=false:apa=on:bd=preordered:bs=unit_only:c=on:cbe=off:cha=on:cnfonf=off:e2e=on:fe=off:hud=10:ntd=on:pe=on:piset=all:s2agt=30:s2at=3.5:sd=5:sgt=10:slsq=on:slsqr=2,1:spb=goal_then_units:ss=axioms:uhcvi=on:i=175:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_chr=on:e2e=on:fde=none:fe=off:nwc=10.0:rp=on:s2at=2.0:slsq=on:slsqc=1:sp=const_min:i=32:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=37256:si=on:rtra=on_0"); + quick.push("dis+1002_1:128_acc=on:er=filter:i=17:si=on:rtra=on_0"); + quick.push("lrs+10_1:3_cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=2:i=1746:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=conj_eager:fde=none:s2a=on:s2agt=16:sd=1:ss=axioms:st=1.5:i=14612:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=770:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=31900:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=24321:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=29365:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_cbe=off:cnfonf=lazy_not_gen_be_off:ins=1:i=3686:si=on:rtra=on_0"); + quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=1213:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=1548:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=8517:si=on:rtra=on_0"); + quick.push("dis+10_1:1_aac=none:cs=on:i=47:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=18:si=on:rtra=on_0"); + quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=2073:si=on:rtra=on_0"); quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); - quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=1167:si=on:rtra=on_0"); + quick.push("dis+1004_1:1_amm=off:anc=all:avsq=on:avsqr=1,16:cbe=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:kws=frequency:piset=small_set:rawr=on:sp=reverse_arity:i=10487:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=423:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_c=on:cnfonf=lazy_not_gen_be_off:hud=10:i=24:si=on:rtra=on_0"); + quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=1472:si=on:rtra=on_0"); + quick.push("lrs+1003_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sp=const_max:i=180:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=conj_eager:s2a=on:sd=4:sgt=16:ss=axioms:i=18293:si=on:rtra=on_0"); + quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=2199:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cbe=off:cnfonf=lazy_not_gen_be_off:fe=off:i=258:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_bs=on:cha=on:cnfonf=lazy_pi_sigma_gen:hud=15:kws=inv_precedence:prag=on:sac=on:i=1978:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2510:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_acc=on:bsr=on:cha=on:cnfonf=lazy_not_gen_be_off:fde=unused:ntd=on:piset=all_but_not_eq:s2a=on:s2at=3.0:sfv=off:spb=goal_then_units:i=25758:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:av=off:nwc=5.0:tgt=ground:i=2448:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1516:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=5883:si=on:rtra=on_0"); - // Improves by expected 68.4375457707899 probs costing 79948 Mi - // Sub-schedule for 15000Mi strat cap / 120000Mi overall limit - quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=2904:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=348:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=1123:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=5579:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:cnfonf=off:e2e=on:plsq=on:i=562:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:anc=all_dependent:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=on:fe=axiom:fsd=on:hud=5:kws=arity_squared:prag=on:sd=10:ss=axioms:i=613:si=on:rtra=on_0"); - quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=2151:si=on:rtra=on_0"); - quick.push("ott+1004_1:1_alpa=true:fde=none:ins=3:piset=small_set:i=395:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_bsd=on:cnfonf=lazy_gen:erd=off:fe=off:hud=1:ins=2:kws=arity_squared:nm=30:ntd=on:piset=equals:prag=on:rp=on:s2a=on:sac=on:sp=unary_first:i=7122:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=4:piset=pi_sigma:i=2187:si=on:rtra=on_0"); - quick.push("lrs+1010_1:5_cnfonf=lazy_not_be_gen:e2e=on:fe=off:hud=10:kws=precedence:rawr=on:sos=on:i=4259:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=12184:si=on:rtra=on_0"); - quick.push("dis+1010_2:3_alpa=false:cbe=off:fe=off:fsr=off:gs=on:gsaa=full_model:hud=10:piset=and:s2a=on:sac=on:sp=const_frequency:i=3030:si=on:rtra=on_0"); - quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=2770:si=on:rtra=on_0"); - quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=8298:si=on:rtra=on_0"); - quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4057:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:ss=axioms:st=1.2:i=2081:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=10845:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:cond=fast:e2e=on:fd=off:nm=16:nwc=5.0:prag=on:i=2465:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cbe=off:chr=on:fde=unused:hud=10:prag=on:i=3840:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:i=700:si=on:rtra=on_0"); - quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=2925:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=7373:si=on:rtra=on_0"); - quick.push("dis+1002_1:16_anc=all_dependent:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=5:sp=reverse_arity:i=2871:si=on:rtra=on_0"); - quick.push("lrs+1010_1:32_cnfonf=lazy_simp:fsr=off:piset=equals:i=3779:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_av=off:fd=off:sos=on:ss=axioms:i=9463:si=on:rtra=on_0"); - quick.push("dis+1010_1:1024_awrs=converge:awrsf=40:c=on:cnfonf=off:fe=axiom:hud=5:ins=3:nm=2:piset=and:prag=on:sos=all:spb=goal_then_units:i=5036:si=on:rtra=on_0"); - quick.push("dis+1002_1:4_apa=on:av=off:awrs=converge:awrsf=130:c=on:cnfonf=off:e2e=on:fde=none:fe=axiom:ntd=on:nwc=3.0:prag=on:s2a=on:s2at=3.0:spb=goal_then_units:tgt=ground:i=3437:si=on:rtra=on_0"); - quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=3771:si=on:rtra=on_0"); - quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3625:si=on:rtra=on_0"); - // Improves by expected 36.25002762498634 probs costing 119763 Mi - // Sub-schedule for 50000Mi strat cap / 400000Mi overall limit - quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=1119:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3862:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_bsr=unit_only:cnfonf=lazy_not_be_gen:fe=off:ntd=on:i=15948:si=on:rtra=on_0"); - quick.push("dis+10_3:1_anc=all:avsq=on:c=on:cnfonf=off:e2e=on:fd=off:fde=none:ins=3:nwc=5.0:plsq=on:plsqc=1:plsqr=4964065,131072:prag=on:s2a=on:s2agt=64:i=1714:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=conj_eager:hi=on:ntd=on:i=1415:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=13832:si=on:rtra=on_0"); - quick.push("lrs+1002_1:2_au=on:bd=off:bet=on:cbe=off:cnfonf=lazy_not_gen_be_off:cond=on:cs=on:kws=precedence:sp=const_max:tgt=ground:i=10990:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_bsd=on:cnfonf=lazy_gen:erd=off:fe=off:hud=1:ins=2:kws=arity_squared:nm=30:ntd=on:piset=equals:prag=on:rp=on:s2a=on:sac=on:sp=unary_first:i=15467:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=13530:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=9757:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=preordered:cnfonf=lazy_gen:fe=off:ins=1:ixr=off:ntd=on:piset=pi_sigma:plsq=on:plsqc=1:plsql=on:plsqr=9,8:s2a=on:i=1525:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=13236:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=26737:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:ss=axioms:st=1.2:i=11376:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_apa=on:cnfonf=off:cond=on:e2e=on:gs=on:hud=7:piset=equals:prag=on:s2agt=32:s2at=5.0:s2pl=no:sos=on:sp=const_max:ss=axioms:i=22070:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_gen:fde=none:s2a=on:s2agt=32:i=10385:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=43342:si=on:rtra=on_0"); - quick.push("ott+1002_1:32_abs=on:cnfonf=conj_eager:fe=off:nm=0:i=9574:si=on:rtra=on_0"); - quick.push("dis+1002_4:1_bd=off:cnfonf=off:cs=on:e2e=on:i=6953:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=11365:si=on:rtra=on_0"); + quick.push("dis+2_1:1_abs=on:cbe=off:chr=on:hud=10:ntd=on:slsq=on:slsqr=7,3:uhcvi=on:i=15391:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4218:si=on:rtra=on_0"); + quick.push("dis+1010_1:1024_nwc=10.0:i=3265:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_av=off:cnfonf=lazy_not_be_gen:fd=preordered:hud=5:nm=10:ntd=on:nwc=10.0:piset=and:i=614:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=496:si=on:rtra=on_0"); + // Improves by expected 2713.2081566622014 probs costing 1593017 Mi + // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit + quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=110001:si=on:rtra=on_0"); + quick.push("dis+33_1:128_apa=on:au=on:cnfonf=off:e2e=on:fde=none:kws=inv_frequency:nm=30:ntd=on:plsq=on:sos=on:tgt=ground:i=25001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=94100:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=21432:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5401:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=17754:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=1902:si=on:rtra=on_0"); + quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=938:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=149:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5844:si=on:rtra=on_0"); + quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15630:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=9801:si=on:rtra=on_0"); + quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=30816:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4246:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=48065:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_bd=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=137969:si=on:rtra=on_0"); + quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_atotf=0.3:bd=off:cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3,1:i=1273:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_apa=on:cnfonf=off:cond=on:e2e=on:gs=on:hud=7:piset=equals:prag=on:s2agt=32:s2at=5.0:s2pl=no:sos=on:sp=const_max:ss=axioms:i=17317:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=66825:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=115308:si=on:rtra=on_0"); + quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=15134:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=571:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=12389:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1024_apa=on:av=off:cnfonf=off:hud=5:nwc=10.0:piset=all_but_not_eq:i=6382:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=21829:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); + quick.push("dis+10_1:1_apa=on:bd=off:cnfonf=off:cond=fast:e2e=on:ntd=on:s2a=on:i=84255:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=9265:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=14741:si=on:rtra=on_0"); + quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=93711:si=on:rtra=on_0"); + quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=26966:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:fsr=off:ntd=on:prag=on:i=43406:si=on:rtra=on_0"); + quick.push("dis+2_1:1_abs=on:cbe=off:chr=on:hud=10:ntd=on:slsq=on:slsqr=7,3:uhcvi=on:i=15391:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=56980:si=on:rtra=on_0"); + // Improves by expected 15.146714889137225 probs costing 1588719 Mi + // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit + quick.push("dis+1002_1:1_au=on:cnfonf=lazy_gen:ins=3:sac=on:sp=unary_frequency:uhcvi=on:i=57364:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=33036:si=on:rtra=on_0"); + quick.push("dis+33_1:128_apa=on:au=on:cnfonf=off:e2e=on:fde=none:kws=inv_frequency:nm=30:ntd=on:plsq=on:sos=on:tgt=ground:i=25001:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=82591:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=57872:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=5424:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=178:si=on:rtra=on_0"); + quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15630:si=on:rtra=on_0"); + quick.push("dis-2_1:16_aac=none:e2e=on:fe=off:hud=5:ntd=on:piset=and:rawr=on:spb=units:i=180001:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=48767:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=8893:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cbe=off:cnfonf=conj_eager:fd=off:fe=off:hud=10:prag=on:i=74333:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_i=92664:si=on:rtra=on_0"); + quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=51199:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=48065:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_bd=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=27252:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=45798:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=571:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); quick.push("lrs+1666_1:1024_apa=on:av=off:cnfonf=off:hud=5:nwc=10.0:piset=all_but_not_eq:i=7366:si=on:rtra=on_0"); - quick.push("lrs+1003_1:8_cnfonf=lazy_pi_sigma_gen:fe=off:ins=1:ixr=off:spb=non_intro:i=8982:si=on:rtra=on_0"); - quick.push("lrs+10_1:50_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:plsq=on:plsqr=1,32:sos=all:i=2561:si=on:rtra=on_0"); - quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=6275:si=on:rtra=on_0"); - quick.push("dis+1002_4:1_cha=on:cnfonf=lazy_not_gen:fd=off:hud=8:ntd=on:nwc=5.0:prag=on:rnwc=on:s2a=on:s2agt=8:i=3674:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=conj_eager:s2a=on:sd=4:sgt=16:ss=axioms:i=15204:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:fsr=off:ntd=on:prag=on:i=34565:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=47219:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=25245:si=on:rtra=on_0"); - // Improves by expected 46.642402649263126 probs costing 395259 Mi - // Sub-schedule for 100000Mi strat cap / 800000Mi overall limit - quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=29318:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:ss=axioms:i=45899:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cs=on:sd=1:sgt=8:ss=axioms:i=24623:si=on:rtra=on_0"); - quick.push("lrs-1010_1:5_aac=none:alpa=true:c=on:cbe=off:cnfonf=off:fe=off:ntd=on:pe=on:piset=and:prag=on:i=4728:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=9811:si=on:rtra=on_0"); - quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=32242:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=44144:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:hud=15:piset=equals:i=33033:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:anc=all_dependent:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=on:fe=axiom:fsd=on:hud=5:kws=arity_squared:prag=on:sd=10:ss=axioms:i=18697:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=56282:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=52383:si=on:rtra=on_0"); - quick.push("lrs-1004_1:1_au=on:cbe=off:ins=1:nm=0:piset=or:i=32973:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_av=off:cbe=off:hud=10:ntd=on:prag=on:i=22913:si=on:rtra=on_0"); - quick.push("lrs+2_1241:205_abs=on:alpa=true:anc=all:bd=off:cha=on:cs=on:e2e=on:er=known:fd=preordered:fe=axiom:hud=9:lcm=predicate:piset=and:rawr=on:rp=on:sac=on:sp=frequency:i=41132:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=44280:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_av=off:bet=on:c=on:cnfonf=lazy_gen:fe=axiom:rawr=on:s2a=on:s2agt=15:sp=reverse_arity:i=15935:si=on:rtra=on_0"); - quick.push("ott+1002_1:32_abs=on:cnfonf=conj_eager:fe=off:nm=0:i=36251:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=78592:si=on:rtra=on_0"); - quick.push("lrs-1666_1:1_bsr=unit_only:cbe=off:cnfonf=lazy_not_gen_be_off:hud=6:kws=inv_arity:prag=on:i=16593:si=on:rtra=on_0"); - quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=28934:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=87700:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=31402:si=on:rtra=on_0"); - // Improves by expected 28.578143999992292 probs costing 787843 Mi - // Sub-schedule for 150000Mi strat cap / 1200000Mi overall limit - quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=93119:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_bsd=on:c=on:cnfonf=off:e2e=on:kws=inv_frequency:lwlo=on:nwc=10.0:piset=all:prag=on:i=63693:si=on:rtra=on_0"); - quick.push("dis+2_1:4_au=on:cbe=off:i=53114:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:anc=all_dependent:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=on:fe=axiom:fsd=on:hud=5:kws=arity_squared:prag=on:sd=10:ss=axioms:i=18695:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=97140:si=on:rtra=on_0"); - quick.push("lrs-1010_1:128_apa=on:awrs=converge:awrsf=30:cnfonf=off:hud=4:ins=1:ntd=on:prag=on:i=60471:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=12554:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_bsd=on:cnfonf=lazy_gen:erd=off:fe=off:hud=1:ins=2:kws=arity_squared:nm=30:ntd=on:piset=equals:prag=on:rp=on:s2a=on:sac=on:sp=unary_first:i=82496:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=93028:si=on:rtra=on_0"); - quick.push("lrs+2_1241:205_abs=on:alpa=true:anc=all:bd=off:cha=on:cs=on:e2e=on:er=known:fd=preordered:fe=axiom:hud=9:lcm=predicate:piset=and:rawr=on:rp=on:sac=on:sp=frequency:i=98063:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=139380:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=58631:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:cond=fast:e2e=on:fd=off:nm=16:nwc=5.0:prag=on:i=57903:si=on:rtra=on_0"); - quick.push("lrs-1010_1:32_bet=on:br=off:c=on:cnfonf=lazy_simp:e2e=on:fe=axiom:hud=1:nm=0:ntd=on:nwc=10.0:piset=small_set:prag=on:rawr=on:sp=occurrence:i=57706:si=on:rtra=on_0"); - quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=103689:si=on:rtra=on_0"); - quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=84620:si=on:rtra=on_0"); - // Improves by expected 14.132819945314214 probs costing 1174286 Mi - // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit - quick.push("lrs+21_8:1_bsd=on:c=on:cnfonf=off:e2e=on:kws=inv_frequency:lwlo=on:nwc=10.0:piset=all:prag=on:i=63592:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:anc=all_dependent:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=on:fe=axiom:fsd=on:hud=5:kws=arity_squared:prag=on:sd=10:ss=axioms:i=18695:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=95100:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_av=off:cnfonf=lazy_pi_sigma_gen:lwlo=on:nwc=2.0:piset=equals:i=124793:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=150008:si=on:rtra=on_0"); - quick.push("dis-2_1:16_aac=none:e2e=on:fe=off:hud=5:ntd=on:piset=and:rawr=on:spb=units:i=159324:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=170242:si=on:rtra=on_0"); - quick.push("dis+10_1:128_amm=off:cnfonf=conj_eager:fsr=off:ntd=on:nwc=10.0:i=146239:si=on:rtra=on_0"); - // Improves by expected 4.875005953119484 probs costing 927985 Mi - // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit - quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=95100:si=on:rtra=on_0"); - // Improves by expected 0.18750024999974996 probs costing 95099 Mi - // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=15536:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cbe=off:sp=occurrence:i=68079:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=29296:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); + // Improves by expected 6.35945889483717 probs costing 1585431 Mi + // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=182589:si=on:rtra=on_0"); + quick.push("dis+33_1:128_apa=on:au=on:cnfonf=off:e2e=on:fde=none:kws=inv_frequency:nm=30:ntd=on:plsq=on:sos=on:tgt=ground:i=25001:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=82591:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=63269:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); + quick.push("dis-2_1:16_aac=none:e2e=on:fe=off:hud=5:ntd=on:piset=and:rawr=on:spb=units:i=180001:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cbe=off:cnfonf=conj_eager:fd=off:fe=off:hud=10:prag=on:i=74333:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=104812:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=48065:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=19526:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:kws=precedence:i=80853:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=579:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=55706:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); + quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=93711:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); + // Improves by expected 3.419785872813273 probs costing 1590183 Mi + // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit + quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=182589:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=152851:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); + quick.push("dis-2_1:16_aac=none:e2e=on:fe=off:hud=5:ntd=on:piset=and:rawr=on:spb=units:i=180001:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cbe=off:cnfonf=conj_eager:fd=off:fe=off:hud=10:prag=on:i=74333:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=98045:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=148622:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); + // Improves by expected 1.9996532316703617 probs costing 1475256 Mi + // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=193338:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=152851:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cbe=off:cnfonf=conj_eager:fd=off:fe=off:hud=10:prag=on:i=74333:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=98045:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:kws=precedence:i=197362:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); + // Improves by expected 1.1675539326676254 probs costing 1132540 Mi + // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit + quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=152851:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=98045:si=on:rtra=on_0"); + // Improves by expected 0.28954789664162184 probs costing 250894 Mi + // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=98045:si=on:rtra=on_0"); + // Improves by expected 0.14061730184115986 probs costing 98044 Mi + // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=98045:si=on:rtra=on_0"); + // Improves by expected 0.11641935625168334 probs costing 98044 Mi + // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit // Improves by expected 0.0 probs costing 0 Mi - // Overall score 2704.4365411936406 probs on average / budget 3745220 Mi + // Overall score 2741.8479080380616 probs on average / budget 9412128 Mi } \ No newline at end of file From 7808c821247fd50c7164a973eb52516ccc22b65c Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 15 Jun 2023 13:09:08 +0100 Subject: [PATCH 167/210] fixing printing issue that was causing SIGSEG on a few proof prints --- Kernel/Term.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index d8a7b60505..1f3869106a 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -1305,7 +1305,7 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const bool hasArgs = args.size(); vstring headStr; - if(head.isVar() || (head.deBruijnIndex().isSome() && !db) || head.isLambdaTerm()){ + if(head.isVar() || (head.deBruijnIndex().isSome() && !db) || head.isLambdaTerm() || head.term()->isSpecial()){ headStr = termToStr(head,false,st); } else if(head.isNot()){ headStr = pretty ? "¬" : "~"; } @@ -1319,7 +1319,7 @@ vstring Term::toString(bool topLevel, IndexVarStack& st) const else if(head.isIff() || head.isEquals()){ headStr = pretty ? "≈" : "="; } // @=??? else if(ApplicativeHelper::isTrue(head)){ headStr = pretty ? "⊤" : "$true"; } else if(ApplicativeHelper::isFalse(head)){ headStr = pretty ? "⊥" : "$false"; } - else { + else { headStr = head.term()->functionName(); if(head.deBruijnIndex().isSome()){ headStr = headStr + "_" + Int::toString(head.deBruijnIndex().unwrap()); From 1648041f201f98611b850edf703f54a4283e5b09 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 16 Jun 2023 12:10:50 +0100 Subject: [PATCH 168/210] adding injectivity reasoning --- CMakeLists.txt | 4 +- Inferences/Injectivity.cpp | 60 +++++++++++++----------------- Inferences/Injectivity.hpp | 2 +- Saturation/SaturationAlgorithm.cpp | 9 +++-- Shell/Options.cpp | 4 +- Shell/Options.hpp | 4 +- 6 files changed, 37 insertions(+), 46 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 85106b488c..77b8aa873d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -332,8 +332,8 @@ set(VAMPIRE_KERNEL_SOURCES Inferences/ElimLeibniz.hpp Inferences/Choice.cpp Inferences/Choice.hpp -# Inferences/Injectivity.hpp -# Inferences/Injectivity.cpp + Inferences/Injectivity.hpp + Inferences/Injectivity.cpp Inferences/BoolSimp.hpp Inferences/BoolSimp.cpp Inferences/CasesSimp.cpp diff --git a/Inferences/Injectivity.cpp b/Inferences/Injectivity.cpp index b371248ef9..d1e5e357de 100644 --- a/Inferences/Injectivity.cpp +++ b/Inferences/Injectivity.cpp @@ -54,27 +54,34 @@ ClauseIterator Injectivity::generateClauses(Clause* premise) { TermList lhsM = *(mainLit->nthArgument(0)); TermList rhsM = *(mainLit->nthArgument(1)); + if(lhsM.isLambdaTerm() || rhsM.isLambdaTerm()) + { return ClauseIterator::getEmpty(); } + TermList lhsS = *(sideLit->nthArgument(0)); TermList rhsS = *(sideLit->nthArgument(1)); static TermStack argsLhs;//No need to reset because getHeadAndArgs resets + static TermStack argSorts; static TermStack argsRhs; TermStack termArgs; - TermList argLhs, argRhs, headLhs, headRhs, differingArg; + TermStack termArgSorts; + TermList headLhs, headRhs, differingArg, differingArgSort; - ApplicativeHelper::getHeadAndArgs(lhsM, headLhs, argsLhs); - ApplicativeHelper::getHeadAndArgs(rhsM, headRhs, argsRhs); - if(headLhs != headRhs || headLhs.isVar()){ - return ClauseIterator::getEmpty(); - } + ApplicativeHelper::getHeadArgsAndArgSorts(lhsM, headLhs, argsLhs, argSorts); + ApplicativeHelper::getHeadAndArgs (rhsM, headRhs, argsRhs); + + if(headLhs != headRhs || headLhs.isVar()) + { return ClauseIterator::getEmpty(); } + // assertion below holds, since lhsM and rhsM have same types and neither is a lambda term ASS(argsLhs.size() == argsRhs.size()); bool differingArgFound = false; - unsigned index = 0; termArgs.push(lhsM); + termArgSorts.push(SortHelper::getResultSort(lhsM.term())); while(!argsLhs.isEmpty()){ - argLhs = argsLhs.pop(); - argRhs = argsRhs.pop(); + TermList argLhs = argsLhs.pop(); + TermList argRhs = argsRhs.pop(); + TermList sort = argSorts.pop(); if(!argLhs.isVar() || !argRhs.isVar()){ return ClauseIterator::getEmpty(); } @@ -84,22 +91,21 @@ ClauseIterator Injectivity::generateClauses(Clause* premise) { } if((argLhs == lhsS && argRhs == rhsS) || (argLhs == rhsS && argRhs == lhsS)){ - differingArg = argLhs; + differingArg = argLhs; + differingArgSort = sort; differingArgFound = true; } else { return ClauseIterator::getEmpty(); } } else { termArgs.push(argLhs); + termArgSorts.push(sort); } - if(!differingArgFound){ index++; } } - //at this point, we know the clause is of the form f x1 y x2... = f x1 z x2 ... \/ x != y - //index holds the index of the different argument - TermList newLhs = createNewLhs(headLhs, termArgs, index); - TermList sort = SortHelper::getResultSort(newLhs.term()); - Literal* lit = Literal::createEquality(true, newLhs, differingArg, sort); + //at this point, we know the clause is of the form f x1 y x2... != f x1 z x2 ... \/ x = y + TermList newLhs = createNewLhs(headLhs, termArgs, AtomicSort::arrowSort(termArgSorts, differingArgSort)); + Literal* lit = Literal::createEquality(true, newLhs, differingArg, differingArgSort); Clause* conclusion = new(1) Clause(1, GeneratingInference1(InferenceRule::INJECTIVITY, premise)); @@ -108,7 +114,7 @@ ClauseIterator Injectivity::generateClauses(Clause* premise) { return pvi(getSingletonIterator(conclusion)); } -TermList Injectivity::createNewLhs(TermList oldhead, TermStack& termArgs, unsigned index){ +TermList Injectivity::createNewLhs(TermList oldhead, TermStack& termArgs, TermList invFunSort){ CALL("Injectivity::createNewLhs"); TermList* typeArg = oldhead.term()->args(); @@ -118,27 +124,11 @@ TermList Injectivity::createNewLhs(TermList oldhead, TermStack& termArgs, unsign typeArg = typeArg->next(); } + Signature::Symbol* func = env.signature->getFunction(oldhead.term()->functor()); vstring pref = "inv_" + func->name() + "_"; unsigned iFunc = env.signature->addFreshFunction(oldhead.term()->arity(), pref.c_str() ); - TermList type = SortHelper::getResultSort(oldhead.term()); - - TermList oldResult = ApplicativeHelper::getResultApplieadToNArgs(type, termArgs.size()); - TermStack sorts; - TermList newResult; - - sorts.push(oldResult); - for(unsigned i = 1; i <= termArgs.size(); i++){ - if(i - 1 != index){ - sorts.push(ApplicativeHelper::getNthArg(type,i)); - } else { - newResult = ApplicativeHelper::getNthArg(type,i); - } - } - - TermList inverseType = AtomicSort::arrowSort(sorts, newResult); - - OperatorType* invFuncType = OperatorType::getConstantsType(inverseType, funcType->numTypeArguments()); + OperatorType* invFuncType = OperatorType::getConstantsType(invFunSort, oldhead.term()->arity()); Signature::Symbol* invFunc = env.signature->getFunction(iFunc); invFunc->setType(invFuncType); TermList invFuncHead = TermList(Term::create(iFunc, func->arity(), typeArgs.begin())); diff --git a/Inferences/Injectivity.hpp b/Inferences/Injectivity.hpp index 03abcf2813..12ac901cfc 100644 --- a/Inferences/Injectivity.hpp +++ b/Inferences/Injectivity.hpp @@ -28,7 +28,7 @@ class Injectivity : public GeneratingInferenceEngine { ClauseIterator generateClauses(Clause* premise); private: - TermList createNewLhs(TermList oldhead, TermStack& termArgs, unsigned index); + TermList createNewLhs(TermList oldhead, TermStack& termArgs, TermList sort); }; } diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 21606bc663..eea50f6ff5 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -83,7 +83,7 @@ #include "Inferences/Cases.hpp" #include "Inferences/ImitateProject.hpp" #include "Inferences/BoolEqToDiseq.hpp" -//#include "Inferences/Injectivity.hpp" +#include "Inferences/Injectivity.hpp" #include "Inferences/BetaEtaISE.hpp" #include "Inferences/FlexFlexSimplify.hpp" #include "Inferences/PositiveExt.hpp" @@ -1616,6 +1616,10 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const gie->addFront(new LazyClausificationGIE()); } } + + if (prb.higherOrder() && opt.injectivityReasoning()) { + gie->addFront(new Injectivity()); + } #endif gie->addFront(new Factoring()); @@ -1659,9 +1663,6 @@ SaturationAlgorithm* SaturationAlgorithm::createFromOptions(Problem& prb, const #endif } - /*if (opt.injectivityReasoning()) { - gie->addFront(new Injectivity()); - }*/ if(prb.hasEquality() && env.signature->hasTermAlgebras()) { if (opt.termAlgebraCyclicityCheck() == Options::TACyclicityCheck::RULE) { gie->addFront(new AcyclicityGIE()); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index e4e5cd57a5..c8f912f3c4 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1845,13 +1845,13 @@ void Options::init() _priortyToLongReducts.description="give priority to clauses produced by lengthy reductions"; _lookup.insert(&_priortyToLongReducts); _priortyToLongReducts.addProblemConstraint(hasHigherOrder()); - _priortyToLongReducts.tag(OptionTag::HIGHER_ORDER); + _priortyToLongReducts.tag(OptionTag::HIGHER_ORDER);*/ _injectivity = BoolOptionValue("injectivity","inj",false); _injectivity.description="Attempts to identify injective functions and postulates a left-inverse"; _lookup.insert(&_injectivity); _injectivity.addProblemConstraint(hasHigherOrder()); - _injectivity.tag(OptionTag::HIGHER_ORDER);*/ + _injectivity.tag(OptionTag::HIGHER_ORDER); _pragmatic = BoolOptionValue("pragmatic","prag",false); _pragmatic.description="Modifes various parameters to help Vampire solve 'hard' higher-order"; diff --git a/Shell/Options.hpp b/Shell/Options.hpp index f42b5a67bc..03f1ad2be3 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2423,7 +2423,7 @@ bool _hard; #if VHOL bool addProxyAxioms() const { return _addProxyAxioms.actualValue; } bool choiceAxiom() const { return _choiceAxiom.actualValue; } - // bool injectivityReasoning() const { return _injectivity.actualValue; } + bool injectivityReasoning() const { return _injectivity.actualValue; } bool pragmatic() const { return _pragmatic.actualValue; } bool choiceReasoning() const { return _choiceReasoning.actualValue; } // bool prioritiseClausesProducedByLongReduction() const { return _priortyToLongReducts.actualValue; } @@ -2876,7 +2876,7 @@ bool _hard; //Higher-order options BoolOptionValue _addProxyAxioms; BoolOptionValue _choiceAxiom; - // BoolOptionValue _injectivity; + BoolOptionValue _injectivity; BoolOptionValue _pragmatic; BoolOptionValue _choiceReasoning; // BoolOptionValue _priortyToLongReducts; From 18cf4959d176c19148e568520ba991b3f88e8b7f Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 16 Jun 2023 16:05:39 +0200 Subject: [PATCH 169/210] some Thursday schedule --- CASC/Schedules.cpp | 650 ++++++++++++++++++++++++++------------------- 1 file changed, 374 insertions(+), 276 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 702a69e016..5a82a0e103 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5135,346 +5135,444 @@ void Schedules::getSnakeTptpSatSchedule(const Shell::Property& property, Schedul } void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick) { - // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit - quick.push("dis+10_1:128_hud=1:i=93:si=on:rtra=on_0"); - quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=29759:si=on:rtra=on_0"); +// Sub-schedule for 1200Mi strat cap / 9600Mi overall limit quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:i=3:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_au=on:c=on:fsr=off:piset=equals:i=52:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=449:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=1160:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cbe=off:cond=on:sp=occurrence:i=102:si=on:rtra=on_0"); + quick.push("dis+2_1:4_au=on:cbe=off:i=3:si=on:rtra=on_0"); + quick.push("dis+1010_913633:131072_aac=none:apa=on:au=on:awrs=converge:awrsf=150:bd=off:c=on:cbe=off:chr=on:cnfonf=off:e2e=on:fe=off:hud=13:kws=precedence:lma=on:nm=13:ntd=on:pe=on:plsq=on:sgt=15:sp=frequency:ss=axioms:tgt=ground:uhcvi=on:i=6:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=2:si=on:rtra=on_0"); + quick.push("dis+1002_1:1024_fsd=on:hud=1:nm=32:piset=or:i=3:si=on:rtra=on_0"); + quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=110:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=283:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bs=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:fsd=on:hud=5:prag=on:i=3:si=on:rtra=on_0"); + quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=preordered:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=10:ixr=off:prag=on:i=26:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=182:si=on:rtra=on_0"); + quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=41:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=275:si=on:rtra=on_0"); + quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=21:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=218:si=on:rtra=on_0"); + quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_apa=on:au=on:bd=preordered:cnfonf=off:cs=on:ixr=off:sos=on:i=3:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=3:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=149:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=150:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=6:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:hud=7:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=103:si=on:rtra=on_0"); + quick.push("ott+21_1:5_bsd=on:sp=weighted_frequency:i=2:si=on:rtra=on_0"); + quick.push("lrs+21_1:16_au=on:bd=off:piset=and:i=39:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=1174:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=8:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=all_dependent:au=on:cbe=off:fde=unused:ntd=on:i=6:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:c=on:sac=on:slsq=on:slsqc=2:i=206:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=28:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:i=3:si=on:rtra=on_0"); + quick.push("lrs+10_1:64_abs=on:bsd=on:fe=off:hud=10:ntd=on:tgt=ground:tnu=1:i=15:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_cnfonf=lazy_pi_sigma_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=const_min:i=3:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=7:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=16:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bsd=on:cbe=off:cnfonf=conj_eager:hi=on:i=149:si=on:rtra=on_0"); + quick.push("lrs+10_1:10_au=on:av=off:cbe=off:cnfonf=lazy_pi_sigma_gen:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=103:si=on:rtra=on_0"); + quick.push("lrs+1004_1:4_av=off:bsd=on:e2e=on:i=27:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_av=off:bd=off:fd=off:kws=precedence:nwc=3.0:prag=on:rawr=on:sos=all:sp=reverse_frequency:i=654:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_chr=on:prag=on:i=8:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=102:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1126:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cbe=off:fd=off:fs=off:fsr=off:nm=0:i=15:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bsd=on:cbe=off:cnfonf=conj_eager:fd=off:fsr=off:hi=on:i=19:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=710:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=lazy_not_gen:ntd=on:piset=and:ss=axioms:st=1.5:i=665:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=254:si=on:rtra=on_0"); + quick.push("lrs+10_1:50_fe=off:kws=frequency:nm=64:ntd=on:sp=frequency:i=18:si=on:rtra=on_0"); + quick.push("dis+1002_1:128_acc=on:er=filter:i=17:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=401:si=on:rtra=on_0"); + quick.push("dis+10_1:1_aac=none:cs=on:i=47:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_cnfonf=lazy_pi_sigma_gen:nwc=3.0:ss=axioms:st=1.2:i=322:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=18:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=37:si=on:rtra=on_0"); + quick.push("lrs+1003_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sp=const_max:i=2:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_av=off:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:i=3:si=on:rtra=on_0"); + quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=23:si=on:rtra=on_0"); + // Improves by expected 2293.194267929746 probs costing 9588 Mi + // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit + quick.push("dis+1002_1:1_cha=on:hud=10:nwc=10.0:prag=on:tnu=1:i=96:si=on:rtra=on_0"); + quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=424:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=2:sos=all:ss=axioms:i=177:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=165:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:s2a=on:sd=7:ss=axioms:st=1.5:i=1076:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=472:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=130:si=on:rtra=on_0"); + quick.push("lrs+21_1:16_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=7,4:i=484:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=40:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:nm=2:i=59:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=189:si=on:rtra=on_0"); + quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); + quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=33:si=on:rtra=on_0"); + quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=247:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sgt=16:ss=axioms:i=301:si=on:rtra=on_0"); + quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=549:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sos=on:ss=axioms:i=203:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=279:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:i=1111:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=408:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_hud=1:ss=axioms:i=85:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=83:si=on:rtra=on_0"); + quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=197:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_fde=none:kws=precedence:prag=on:sac=on:sos=on:i=409:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=879:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=129:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=all:cbe=off:cnfonf=lazy_not_gen_be_off:fe=off:hud=5:nwc=10.0:plsq=on:plsqr=32,1:prag=on:sp=unary_first:i=202:si=on:rtra=on_0"); + quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=164:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=371:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=102:si=on:rtra=on_0"); + // Improves by expected 72.73105914379634 probs costing 9563 Mi + // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit + quick.push("lrs+10_1:64_hud=5:plsq=on:plsqr=2011171,524288:i=584:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cha=on:hud=10:nwc=10.0:prag=on:tnu=1:i=96:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=419:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=4010:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=392:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:c=on:fsr=off:ixr=off:kws=precedence:nm=40:ntd=on:i=1142:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=294:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cnfonf=lazy_gen:ins=3:sac=on:sp=unary_frequency:uhcvi=on:i=57364:si=on:rtra=on_0"); - quick.push("dis+10_3:2_av=off:bsd=on:hud=9:nm=0:plsq=on:plsqc=1:plsql=on:prag=on:i=1495:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=1678:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cs=on:sd=1:sgt=8:ss=axioms:i=1400:si=on:rtra=on_0"); - quick.push("lrs+1002_1:28_bd=off:cnfonf=lazy_simp:plsq=on:plsqr=1,1:prag=on:i=1003:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:bd=preordered:cnfonf=conj_eager:fe=off:tgt=ground:i=7732:si=on:rtra=on_0"); - quick.push("dis-31_1:128_c=on:chr=on:cnfonf=lazy_not_gen:e2e=on:erd=off:fd=off:fe=off:hud=1:ins=2:piset=not:prag=on:sp=frequency:spb=goal:i=162:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); - quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); + quick.push("ott+1002_1:256_anc=all_dependent:awrs=converge:awrsf=60:bd=off:cbe=off:fe=off:nwc=10.0:s2a=on:s2agt=10:sac=on:i=914:si=on:rtra=on_0"); quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_bsr=unit_only:cnfonf=lazy_not_be_gen:fe=off:ntd=on:i=13529:si=on:rtra=on_0"); - quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3140:si=on:rtra=on_0"); - quick.push("dis+2_1:4_au=on:cbe=off:i=21810:si=on:rtra=on_0"); - quick.push("ott+1002_1:1024_au=on:avsq=on:c=on:cnfonf=lazy_not_gen_be_off:sos=all:i=14611:si=on:rtra=on_0"); - quick.push("dis+1010_913633:131072_aac=none:apa=on:au=on:awrs=converge:awrsf=150:bd=off:c=on:cbe=off:chr=on:cnfonf=off:e2e=on:fe=off:hud=13:kws=precedence:lma=on:nm=13:ntd=on:pe=on:plsq=on:sgt=15:sp=frequency:ss=axioms:tgt=ground:uhcvi=on:i=2:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=14199:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=41:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bet=on:bsd=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:fs=off:fsr=off:ixr=off:nwc=5.0:prag=on:i=16:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=599:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:hud=15:prag=on:i=48:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=2:sos=all:ss=axioms:i=177:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=458:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); - quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=2151:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=2221:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:e2e=on:nm=2:sos=all:sp=const_min:spb=non_intro:i=9526:si=on:rtra=on_0"); - quick.push("dis+666_1:594_bd=off:c=on:cnfonf=lazy_pi_sigma_gen:fde=none:fe=axiom:piset=all_but_not_eq:rawr=on:rp=on:s2a=on:sos=all:sp=const_frequency:i=1011:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=29673:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1655:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=1207:si=on:rtra=on_0"); + quick.push("dis+1002_1:14_au=on:kws=precedence:nwc=10.0:piset=and:i=623:si=on:rtra=on_0"); quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=97:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=348:si=on:rtra=on_0"); - quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5401:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:s2a=on:sp=weighted_frequency:ss=axioms:i=297:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=1201:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=54710:si=on:rtra=on_0"); - quick.push("dis+1002_1:4_chr=on:cnfonf=lazy_gen:hud=5:ins=1:ntd=on:prag=on:i=211:si=on:rtra=on_0"); - quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); - quick.push("dis+10_1:1_bsr=on:cnfonf=lazy_pi_sigma_gen:fe=off:fsr=off:plsq=on:plsqc=2:plsqr=32,1:i=9:si=on:rtra=on_0"); - quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=33:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=14314:si=on:rtra=on_0"); - quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=247:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_anc=all_dependent:au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:piset=not:i=27944:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=5424:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=129217:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2278:si=on:rtra=on_0"); - quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=2928:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sgt=16:ss=axioms:i=294:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=preordered:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=10:ixr=off:prag=on:i=2182:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_chr=on:cnfonf=lazy_gen:hud=5:ins=1:ntd=on:prag=on:i=190:si=on:rtra=on_0"); + quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=111:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=668:si=on:rtra=on_0"); + quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=938:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=8250:si=on:rtra=on_0"); - quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=901:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=4:piset=pi_sigma:i=1858:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=393:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fs=off:fsr=off:hud=0:i=45:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_anc=all_dependent:au=on:bd=off:e2e=on:fsr=off:sac=on:ss=axioms:i=143:si=on:rtra=on_0"); - quick.push("ott+10_1:128_c=on:cbe=off:cha=on:cnfonf=lazy_not_gen_be_off:e2e=on:fe=axiom:hud=10:nm=0:nwc=10.0:piset=and:prag=on:rawr=on:i=2672:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_bd=off:e2e=on:fde=unused:kws=precedence:sac=on:sos=on:ss=axioms:i=434:si=on:rtra=on_0"); - quick.push("lrs+1666_1:14_er=filter:fsr=off:i=832:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=43570:si=on:rtra=on_0"); - quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=21:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5411:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cbe=off:fde=unused:fe=axiom:prag=on:s2a=on:s2agt=30:sp=frequency:i=316:si=on:rtra=on_0"); quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=1110:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fd=preordered:prag=on:sos=on:i=9527:si=on:rtra=on_0"); - quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15783:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_amm=off:cs=on:kws=precedence:nwc=10.0:piset=all:s2a=on:sac=on:sp=unary_frequency:spb=goal:ss=axioms:st=3.0:i=584:si=on:rtra=on_0"); quick.push("dis+10_8:1_apa=on:cnfonf=off:e2e=on:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=783:si=on:rtra=on_0"); - quick.push("lrs+2_3:1_chr=on:sp=reverse_arity:i=12:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_amm=off:au=on:bsd=on:cbe=off:cnfonf=lazy_gen:sp=unary_frequency:i=808:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:apa=on:au=on:cnfonf=off:fsd=on:hud=5:ins=2:piset=all:rawr=on:sos=on:spb=units:uhcvi=on:i=549:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=2:plsqr=32,1:i=445:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); + quick.push("lrs+2_1:1024_anc=all:cnfonf=off:cs=on:e2e=on:nm=20:s2at=1.5:slsq=on:slsqr=1,2:spb=goal:i=340:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_cnfonf=off:fsr=off:ins=2:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=5390:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=1103:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=2028:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=283:si=on:rtra=on_0"); + quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=1992:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3882:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=146:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=3768:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fd=preordered:fde=none:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=746:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bsd=on:bsr=unit_only:fd=off:hud=8:nm=16:prag=on:i=713:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1762:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=11942:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=model:avsq=on:ntd=on:i=1234:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_cnfonf=lazy_pi_sigma_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=const_min:i=3515:si=on:rtra=on_0"); + quick.push("lrs+1010_1:10_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:sp=occurrence:i=420:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=1001:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=4436:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3789:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:erd=off:s2a=on:s2at=3.0:sos=all:i=1174:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2870:si=on:rtra=on_0"); + quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=171:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=390:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); + quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=739:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=432:si=on:rtra=on_0"); + quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=1480:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=423:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_av=off:fe=off:hud=5:piset=or:prag=on:i=441:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=conj_eager:s2a=on:sd=4:sgt=16:ss=axioms:i=786:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=89:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1810:si=on:rtra=on_0"); + quick.push("ott+10_1:1_aac=none:apa=on:au=on:cnfonf=off:ntd=on:nwc=12.0:sos=on:i=865:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4350:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=496:si=on:rtra=on_0"); + // Improves by expected 209.52517752282986 probs costing 95997 Mi + // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit + quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=2475:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=419:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=137:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cs=on:sd=1:sgt=8:ss=axioms:i=1400:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=3883:si=on:rtra=on_0"); + quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=2151:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=939:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=3098:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); + quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=348:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=1201:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=1976:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=3037:si=on:rtra=on_0"); + quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=2928:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=149:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=393:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=8,1:sp=weighted_frequency:i=3520:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=4543:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=1483:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=534:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=2012:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=8216:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_anc=none:avsq=on:bd=off:fd=off:kws=frequency:i=1184:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=5061:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1871:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_atotf=0.3:bd=off:cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3,1:i=1273:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:cs=on:sd=1:sgt=64:ss=axioms:i=4935:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=3174:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_bd=off:sd=1:sgt=16:ss=axioms:i=4604:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=3461:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:cs=on:sos=on:i=835:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=492:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fd=preordered:fde=none:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:cnfonf=off:fe=off:hud=10:prag=on:s2a=on:ss=axioms:st=2.0:i=535:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=571:si=on:rtra=on_0"); + quick.push("ott+1002_1:4_c=on:chr=on:cnfonf=lazy_not_be_gen:hud=10:nm=10:piset=all_but_not_eq:rp=on:spb=goal:uhcvi=on:i=2655:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); + quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=882:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=466:si=on:rtra=on_0"); + quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_apa=on:au=on:av=off:cnfonf=off:e2e=on:nm=0:nwc=10.0:i=2780:si=on:rtra=on_0"); + quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=739:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=754:si=on:rtra=on_0"); + quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=423:si=on:rtra=on_0"); + quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=1472:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=871:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2616:si=on:rtra=on_0"); + quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1516:si=on:rtra=on_0"); + // Improves by expected 51.003424385479114 probs costing 95790 Mi + // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit + quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=2860:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=conj_eager:sd=1:ss=axioms:i=10980:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=435:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=4010:si=on:rtra=on_0"); + quick.push("ott+30_4:1_bsr=unit_only:cond=fast:plsq=on:sac=on:i=1901:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=3883:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_prag=on:i=8631:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_bsr=unit_only:cnfonf=lazy_not_be_gen:fe=off:ntd=on:i=13529:si=on:rtra=on_0"); + quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3201:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cs=on:e2e=on:sos=all:i=9071:si=on:rtra=on_0"); + quick.push("ott+1002_1:1024_au=on:avsq=on:c=on:cnfonf=lazy_not_gen_be_off:sos=all:i=14611:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=7527:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=7311:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=15453:si=on:rtra=on_0"); + quick.push("lrs+21_1:16_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=7,4:i=3941:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:e2e=on:nm=2:sos=all:sp=const_min:spb=non_intro:i=3003:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=13832:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=54710:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:cnfonf=off:plsq=on:plsqc=1:plsqr=3,1:i=6017:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=14596:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_anc=all_dependent:au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:piset=not:i=27944:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=5474:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=82696:si=on:rtra=on_0"); + quick.push("dis+1003_1:1_cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1647:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=178:si=on:rtra=on_0"); + quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=406:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=43570:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cbe=off:fde=unused:fe=axiom:prag=on:s2a=on:s2agt=30:sp=frequency:i=14926:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=8,1:sp=weighted_frequency:i=12732:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=5974:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sos=on:ss=axioms:i=13001:si=on:rtra=on_0"); + quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); + quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); quick.push("lrs+10_1:1_sd=1:sgt=32:ss=axioms:i=24918:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=17179:si=on:rtra=on_0"); quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=9801:si=on:rtra=on_0"); - quick.push("lrs-3_4:1_au=on:kws=arity_squared:nm=2:sos=on:i=23:si=on:rtra=on_0"); - quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_cnfonf=off:fsr=off:ins=2:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=58969:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=27:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bsd=on:cha=on:cnfonf=lazy_not_gen_be_off:piset=small_set:s2a=on:s2at=7.0:i=24107:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=22947:si=on:rtra=on_0"); quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=334:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:nwc=7.0:sup=off:i=6325:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_apa=on:chr=on:cnfonf=off:fe=off:piset=not:prag=on:sos=all:sp=frequency:i=13001:si=on:rtra=on_0"); - quick.push("dis+21_3:56_abs=on:anc=all:bsr=unit_only:cbe=off:chr=on:cnfonf=lazy_simp:cond=fast:fe=off:hud=15:kws=inv_arity:nm=46:ntd=on:pe=on:piset=or:plsq=on:plsqc=2:plsqr=32,1:rawr=on:rp=on:s2a=on:s2at=-1.0:i=329:si=on:rtra=on_0"); - quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:nwc=10.0:sac=on:i=27021:si=on:rtra=on_0"); quick.push("dis+1002_1:1_bd=preordered:cnfonf=lazy_gen:fe=off:ins=1:ixr=off:ntd=on:piset=pi_sigma:plsq=on:plsqc=1:plsql=on:plsqr=9,8:s2a=on:i=12596:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2631:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:i=1094:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=29789:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_anc=none:avsq=on:bd=off:fd=off:kws=frequency:i=6312:si=on:rtra=on_0"); quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=8382:si=on:rtra=on_0"); - quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=6101:si=on:rtra=on_0"); - quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=150:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4925:si=on:rtra=on_0"); quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=2295:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=1360:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=700:si=on:rtra=on_0"); quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=20122:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_atotf=0.3:bd=off:cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3,1:i=1276:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:cs=on:sd=1:sgt=64:ss=axioms:i=21660:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=3174:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:fsr=off:i=886:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_chr=on:hud=3:ins=2:kws=precedence:ntd=on:prag=on:i=68:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=82:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_chr=on:hud=5:prag=on:i=8:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:ss=axioms:st=1.2:i=180:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:c=on:fe=off:ins=1:piset=and:i=351:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:cs=on:sos=on:i=835:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3882:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_apa=on:cnfonf=off:cond=on:e2e=on:gs=on:hud=7:piset=equals:prag=on:s2agt=32:s2at=5.0:s2pl=no:sos=on:sp=const_max:ss=axioms:i=27001:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fd=preordered:fde=none:plsq=on:plsqr=32,1:i=697:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_gen:fde=none:s2a=on:s2agt=32:i=11228:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_amm=sco:atotf=0.1:c=on:cnfonf=lazy_simp:piset=and:sp=reverse_arity:i=4:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=66825:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=off:e2e=on:ile=on:kws=inv_frequency:nm=0:piset=all:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sd=1:sp=unary_first:spb=intro:ss=axioms:st=3.0:uhcvi=on:i=2175:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:er=filter:fe=off:flr=on:ixr=off:nm=4:s2a=on:s2at=2.0:i=7562:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=498:si=on:rtra=on_0"); - quick.push("ott+1010_1:6_aac=none:cbe=off:cnfonf=off:hud=5:nm=2:prag=on:spb=goal:i=2:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_anc=all_dependent:au=on:cbe=off:fde=unused:ntd=on:i=756:si=on:rtra=on_0"); - quick.push("dis+1002_4:1_bd=off:cnfonf=off:cs=on:e2e=on:i=7027:si=on:rtra=on_0"); - quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=2570:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=8:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:i=3:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=45798:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=10170:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=9690:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=17767:si=on:rtra=on_0"); - quick.push("lrs-1666_1:1_bsr=unit_only:cbe=off:cnfonf=lazy_not_gen_be_off:hud=6:kws=inv_arity:prag=on:i=4:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=model:avsq=on:ntd=on:i=1212:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=3:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=16:si=on:rtra=on_0"); - quick.push("ott+1004_64217:1048576_cnfonf=lazy_simp:fe=off:fsr=off:piset=and:rawr=on:sp=frequency:spb=units:i=4736:si=on:rtra=on_0"); - quick.push("dis+1003_1:6_acc=on:avsq=on:ccuc=small_ones:fe=off:i=8774:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bsd=on:cbe=off:cnfonf=conj_eager:hi=on:i=119:si=on:rtra=on_0"); - quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=15134:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35700:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=492:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=5115:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=3772:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=13593:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:cnfonf=off:fe=off:hud=10:prag=on:s2a=on:ss=axioms:st=2.0:i=535:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:avsq=on:avsqr=1,16:cbe=off:sac=on:i=6454:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=1936:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=13735:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=7469:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_cnfonf=lazy_pi_sigma_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=const_min:i=2864:si=on:rtra=on_0"); + quick.push("ott+1004_64217:1048576_cnfonf=lazy_simp:fe=off:fsr=off:piset=and:rawr=on:sp=frequency:spb=units:i=4710:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=5439:si=on:rtra=on_0"); quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=571:si=on:rtra=on_0"); - quick.push("lrs+1002_1:32_pe=on:i=1761:si=on:rtra=on_0"); - quick.push("lrs+1004_1:4_av=off:bsd=on:e2e=on:i=3368:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_anc=all:cbe=off:cnfonf=lazy_not_gen_be_off:fe=off:hud=5:nwc=10.0:plsq=on:plsqr=32,1:prag=on:sp=unary_first:i=198:si=on:rtra=on_0"); - quick.push("dis+1010_4:1_bd=preordered:cnfonf=conj_eager:etr=on:ntd=on:prag=on:i=11264:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=5910:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=14145:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:erd=off:s2a=on:s2at=3.0:sos=all:i=1174:si=on:rtra=on_0"); - quick.push("ott+1002_1:4_c=on:chr=on:cnfonf=lazy_not_be_gen:hud=10:nm=10:piset=all_but_not_eq:rp=on:spb=goal:uhcvi=on:i=4573:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_anc=all_dependent:au=on:bd=off:e2e=on:fde=unused:fs=off:fsr=off:s2a=on:sos=on:i=10369:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3661:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=16164:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1024_apa=on:av=off:cnfonf=off:hud=5:nwc=10.0:piset=all_but_not_eq:i=7366:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=21829:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=890:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bsd=on:cbe=off:cnfonf=conj_eager:fd=off:fsr=off:hi=on:i=71:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_av=off:fd=off:sos=on:ss=axioms:i=6:si=on:rtra=on_0"); - quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=221:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:prag=on:i=686:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=1702:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:bd=preordered:ixr=off:i=3673:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=38797:si=on:rtra=on_0"); + quick.push("dis+10_5:1_av=off:ntd=on:s2a=on:s2at=3.0:sgt=16:sp=unary_frequency:ss=axioms:i=7186:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=15715:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); + quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=14611:si=on:rtra=on_0"); quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=6645:si=on:rtra=on_0"); - quick.push("ott+10_4:219_abs=on:alpa=random:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:ixr=off:kws=inv_frequency:sos=all:i=95:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cbe=off:sp=occurrence:i=80020:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=9400:si=on:rtra=on_0"); - quick.push("dis+1002_4:1_cha=on:cnfonf=lazy_not_gen:fd=off:hud=8:ntd=on:nwc=5.0:prag=on:rnwc=on:s2a=on:s2agt=8:i=332:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_amm=sco:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:piset=or:sos=on:sp=occurrence:i=4163:si=on:rtra=on_0"); - quick.push("dis+1003_1:1_hud=1:ins=1:i=15:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_simp:sgt=5:sos=on:ss=axioms:i=319:si=on:rtra=on_0"); - quick.push("lrs+10_121:10_aac=none:abs=on:alpa=false:apa=on:bd=preordered:bs=unit_only:c=on:cbe=off:cha=on:cnfonf=off:e2e=on:fe=off:hud=10:ntd=on:pe=on:piset=all:s2agt=30:s2at=3.5:sd=5:sgt=10:slsq=on:slsqr=2,1:spb=goal_then_units:ss=axioms:uhcvi=on:i=175:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_chr=on:e2e=on:fde=none:fe=off:nwc=10.0:rp=on:s2at=2.0:slsq=on:slsqc=1:sp=const_min:i=32:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=37256:si=on:rtra=on_0"); - quick.push("dis+1002_1:128_acc=on:er=filter:i=17:si=on:rtra=on_0"); - quick.push("lrs+10_1:3_cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=2:i=1746:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=conj_eager:fde=none:s2a=on:s2agt=16:sd=1:ss=axioms:st=1.5:i=14612:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=770:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=31900:si=on:rtra=on_0"); - quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=24321:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=29365:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_cbe=off:cnfonf=lazy_not_gen_be_off:ins=1:i=3686:si=on:rtra=on_0"); - quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=1213:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=14741:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=13193:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_cbe=off:cnfonf=lazy_not_gen_be_off:ins=1:i=4147:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=1548:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=8517:si=on:rtra=on_0"); - quick.push("dis+10_1:1_aac=none:cs=on:i=47:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=18:si=on:rtra=on_0"); - quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=2073:si=on:rtra=on_0"); - quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); - quick.push("dis+1004_1:1_amm=off:anc=all:avsq=on:avsqr=1,16:cbe=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:kws=frequency:piset=small_set:rawr=on:sp=reverse_arity:i=10487:si=on:rtra=on_0"); + quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=1480:si=on:rtra=on_0"); quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=423:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_c=on:cnfonf=lazy_not_gen_be_off:hud=10:i=24:si=on:rtra=on_0"); + quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=1472:si=on:rtra=on_0"); - quick.push("lrs+1003_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sp=const_max:i=180:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=conj_eager:s2a=on:sd=4:sgt=16:ss=axioms:i=18293:si=on:rtra=on_0"); - quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=2199:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cbe=off:cnfonf=lazy_not_gen_be_off:fe=off:i=258:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_bs=on:cha=on:cnfonf=lazy_pi_sigma_gen:hud=15:kws=inv_precedence:prag=on:sac=on:i=1978:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2510:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_acc=on:bsr=on:cha=on:cnfonf=lazy_not_gen_be_off:fde=unused:ntd=on:piset=all_but_not_eq:s2a=on:s2at=3.0:sfv=off:spb=goal_then_units:i=25758:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:av=off:nwc=5.0:tgt=ground:i=2448:si=on:rtra=on_0"); - quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1516:si=on:rtra=on_0"); - quick.push("dis+2_1:1_abs=on:cbe=off:chr=on:hud=10:ntd=on:slsq=on:slsqr=7,3:uhcvi=on:i=15391:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4218:si=on:rtra=on_0"); - quick.push("dis+1010_1:1024_nwc=10.0:i=3265:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_av=off:cnfonf=lazy_not_be_gen:fd=preordered:hud=5:nm=10:ntd=on:nwc=10.0:piset=and:i=614:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=840:si=on:rtra=on_0"); + quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=5473:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:nwc=10.0:s2a=on:i=1426:si=on:rtra=on_0"); + quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1267:si=on:rtra=on_0"); + quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3625:si=on:rtra=on_0"); quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=496:si=on:rtra=on_0"); - // Improves by expected 2713.2081566622014 probs costing 1593017 Mi - // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit - quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=110001:si=on:rtra=on_0"); - quick.push("dis+33_1:128_apa=on:au=on:cnfonf=off:e2e=on:fde=none:kws=inv_frequency:nm=30:ntd=on:plsq=on:sos=on:tgt=ground:i=25001:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=94100:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=21432:si=on:rtra=on_0"); - quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5401:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:fde=unused:i=11062:si=on:rtra=on_0"); + // Improves by expected 98.48336766889406 probs costing 955826 Mi + // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit + quick.push("lrs+1010_1:1_ntd=on:s2a=on:ss=axioms:i=57572:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:fde=none:ins=2:i=91905:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=7002:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=1863:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=17754:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=1902:si=on:rtra=on_0"); - quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=938:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=149:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5844:si=on:rtra=on_0"); - quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15630:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=5474:si=on:rtra=on_0"); + quick.push("dis+1003_1:1_cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2725:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=8,1:sp=weighted_frequency:i=12631:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=5974:si=on:rtra=on_0"); + quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); + quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15783:si=on:rtra=on_0"); quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=9801:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bsd=on:cha=on:cnfonf=lazy_not_gen_be_off:piset=small_set:s2a=on:s2at=7.0:i=24107:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=22899:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_cnfonf=off:fsr=off:ins=2:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=58969:si=on:rtra=on_0"); + quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=24372:si=on:rtra=on_0"); quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=30816:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); - quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4246:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=8216:si=on:rtra=on_0"); quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=48065:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_bd=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=137969:si=on:rtra=on_0"); - quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_atotf=0.3:bd=off:cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3,1:i=1273:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_apa=on:cnfonf=off:cond=on:e2e=on:gs=on:hud=7:piset=equals:prag=on:s2agt=32:s2at=5.0:s2pl=no:sos=on:sp=const_max:ss=axioms:i=17317:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=66825:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=115308:si=on:rtra=on_0"); - quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=15134:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=9527:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=45798:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:cond=fast:e2e=on:fd=off:nm=16:nwc=5.0:prag=on:i=64127:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=97713:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=1868:si=on:rtra=on_0"); + quick.push("lrs+10_1:64_abs=on:bsd=on:fe=off:hud=10:ntd=on:tgt=ground:tnu=1:i=59589:si=on:rtra=on_0"); quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=571:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3789:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=12389:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1024_apa=on:av=off:cnfonf=off:hud=5:nwc=10.0:piset=all_but_not_eq:i=6382:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=21829:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("dis+10_1:1_apa=on:bd=off:cnfonf=off:cond=fast:e2e=on:ntd=on:s2a=on:i=84255:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); + quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=10993:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=9265:si=on:rtra=on_0"); quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=14741:si=on:rtra=on_0"); - quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=93711:si=on:rtra=on_0"); - quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=26966:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:fsr=off:ntd=on:prag=on:i=43406:si=on:rtra=on_0"); - quick.push("dis+2_1:1_abs=on:cbe=off:chr=on:hud=10:ntd=on:slsq=on:slsqr=7,3:uhcvi=on:i=15391:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=7768:si=on:rtra=on_0"); + quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=56980:si=on:rtra=on_0"); - // Improves by expected 15.146714889137225 probs costing 1588719 Mi - // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit - quick.push("dis+1002_1:1_au=on:cnfonf=lazy_gen:ins=3:sac=on:sp=unary_frequency:uhcvi=on:i=57364:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=33036:si=on:rtra=on_0"); - quick.push("dis+33_1:128_apa=on:au=on:cnfonf=off:e2e=on:fde=none:kws=inv_frequency:nm=30:ntd=on:plsq=on:sos=on:tgt=ground:i=25001:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:fde=unused:i=11062:si=on:rtra=on_0"); + // Improves by expected 15.939604502306919 probs costing 957648 Mi + // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit + quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=29759:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=210001:si=on:rtra=on_0"); + quick.push("dis+10_1:1_amm=sco:au=on:cbe=off:nm=0:i=33863:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_ntd=on:s2a=on:ss=axioms:i=82733:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=82591:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=57872:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=5424:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=178:si=on:rtra=on_0"); - quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15630:si=on:rtra=on_0"); - quick.push("dis-2_1:16_aac=none:e2e=on:fe=off:hud=5:ntd=on:piset=and:rawr=on:spb=units:i=180001:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=48767:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=8893:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cbe=off:cnfonf=conj_eager:fd=off:fe=off:hud=10:prag=on:i=74333:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_i=92664:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_au=on:cnfonf=lazy_simp:i=18738:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=9867:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=162850:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=80644:si=on:rtra=on_0"); + quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=19233:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=46248:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); + quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); + quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15783:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=9801:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bsd=on:cha=on:cnfonf=lazy_not_gen_be_off:piset=small_set:s2a=on:s2at=7.0:i=200001:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=24372:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:nwc=10.0:sac=on:i=22890:si=on:rtra=on_0"); quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=51199:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=104812:si=on:rtra=on_0"); quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=48065:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_bd=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=27252:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:kws=precedence:i=39735:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35001:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ss=axioms:i=61571:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=89805:si=on:rtra=on_0"); quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=45798:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=571:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=25498:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=62412:si=on:rtra=on_0"); + quick.push("lrs+10_1:64_abs=on:bsd=on:fe=off:hud=10:ntd=on:tgt=ground:tnu=1:i=102759:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=38843:si=on:rtra=on_0"); + quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=93333:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1024_apa=on:av=off:cnfonf=off:hud=5:nwc=10.0:piset=all_but_not_eq:i=7366:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=15536:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cbe=off:sp=occurrence:i=68079:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=69001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=38797:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=12072:si=on:rtra=on_0"); quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=29296:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=224352:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:fsr=off:piset=or:sp=weighted_frequency:i=197488:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=30417:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=56516:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=12939:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); + quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=20955:si=on:rtra=on_0"); + quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=55093:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - // Improves by expected 6.35945889483717 probs costing 1585431 Mi - // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit + // Improves by expected 12.477386319606756 probs costing 3384970 Mi + // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit + quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=182589:si=on:rtra=on_0"); - quick.push("dis+33_1:128_apa=on:au=on:cnfonf=off:e2e=on:fde=none:kws=inv_frequency:nm=30:ntd=on:plsq=on:sos=on:tgt=ground:i=25001:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=82591:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=63269:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=143300:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis-2_1:16_aac=none:e2e=on:fe=off:hud=5:ntd=on:piset=and:rawr=on:spb=units:i=180001:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cbe=off:cnfonf=conj_eager:fd=off:fe=off:hud=10:prag=on:i=74333:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=104812:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=24372:si=on:rtra=on_0"); + quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=48065:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=19526:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:kws=precedence:i=80853:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ss=axioms:i=61571:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=38843:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=579:si=on:rtra=on_0"); quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); - quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=55706:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=224352:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:fsr=off:piset=or:sp=weighted_frequency:i=192754:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); - quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=93711:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - // Improves by expected 3.419785872813273 probs costing 1590183 Mi - // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit - quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); + // Improves by expected 3.3735699273399193 probs costing 1810162 Mi + // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=182589:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=152851:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=82591:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis-2_1:16_aac=none:e2e=on:fe=off:hud=5:ntd=on:piset=and:rawr=on:spb=units:i=180001:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cbe=off:cnfonf=conj_eager:fd=off:fe=off:hud=10:prag=on:i=74333:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=98045:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); - quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=148622:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ss=axioms:i=61571:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=38843:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=224352:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - // Improves by expected 1.9996532316703617 probs costing 1475256 Mi - // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=193338:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=152851:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cbe=off:cnfonf=conj_eager:fd=off:fe=off:hud=10:prag=on:i=74333:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=98045:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:kws=precedence:i=197362:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); - // Improves by expected 1.1675539326676254 probs costing 1132540 Mi - // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit - quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=152851:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=98045:si=on:rtra=on_0"); - // Improves by expected 0.28954789664162184 probs costing 250894 Mi - // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=98045:si=on:rtra=on_0"); - // Improves by expected 0.14061730184115986 probs costing 98044 Mi - // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=98045:si=on:rtra=on_0"); - // Improves by expected 0.11641935625168334 probs costing 98044 Mi - // Sub-schedule for 200000Mi strat cap / 1600000Mi overall limit - // Improves by expected 0.0 probs costing 0 Mi - // Overall score 2741.8479080380616 probs on average / budget 9412128 Mi + // Improves by expected 1.6920481140418748 probs costing 1320837 Mi + // Overall score 2758.4199055140407 probs on average / budget 8640381 Mi } \ No newline at end of file From 934bd2fae52ceb98fc71d59e8883233d4848eaee Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 16 Jun 2023 16:02:09 +0100 Subject: [PATCH 170/210] fixing injectivity in the presence of polymorphism --- Inferences/Injectivity.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/Inferences/Injectivity.cpp b/Inferences/Injectivity.cpp index d1e5e357de..c40a2269d0 100644 --- a/Inferences/Injectivity.cpp +++ b/Inferences/Injectivity.cpp @@ -61,14 +61,24 @@ ClauseIterator Injectivity::generateClauses(Clause* premise) { TermList rhsS = *(sideLit->nthArgument(1)); static TermStack argsLhs;//No need to reset because getHeadAndArgs resets - static TermStack argSorts; - static TermStack argsRhs; + static TermStack argsRhs; TermStack termArgs; + + TermStack argSorts; // sorts of argsLhs and argsRhs (not instantiated!) TermStack termArgSorts; TermList headLhs, headRhs, differingArg, differingArgSort; - ApplicativeHelper::getHeadArgsAndArgSorts(lhsM, headLhs, argsLhs, argSorts); - ApplicativeHelper::getHeadAndArgs (rhsM, headRhs, argsRhs); + ApplicativeHelper::getHeadAndArgs(lhsM, headLhs, argsLhs); + ApplicativeHelper::getHeadAndArgs(rhsM, headRhs, argsRhs); + + // TODO inelegant stuff here + // THe reason we get the sorts from the type instead of using getHeadArgsAndSorts + // is become we want the original non-instantiated sorts... + TermList headLhsSort = env.signature->getFunction(headLhs.term()->functor())->fnType()->result(); + for(unsigned i = 0; i < argsLhs.size(); i++){ + argSorts.push(headLhsSort.domain()); + headLhsSort = headLhsSort.result(); + } if(headLhs != headRhs || headLhs.isVar()) { return ClauseIterator::getEmpty(); } @@ -77,11 +87,12 @@ ClauseIterator Injectivity::generateClauses(Clause* premise) { bool differingArgFound = false; termArgs.push(lhsM); - termArgSorts.push(SortHelper::getResultSort(lhsM.term())); + termArgSorts.push(headLhsSort); + int idx = argSorts.size() - 1; while(!argsLhs.isEmpty()){ TermList argLhs = argsLhs.pop(); TermList argRhs = argsRhs.pop(); - TermList sort = argSorts.pop(); + TermList sort = argSorts[idx]; if(!argLhs.isVar() || !argRhs.isVar()){ return ClauseIterator::getEmpty(); } @@ -101,6 +112,7 @@ ClauseIterator Injectivity::generateClauses(Clause* premise) { termArgs.push(argLhs); termArgSorts.push(sort); } + idx--; } //at this point, we know the clause is of the form f x1 y x2... != f x1 z x2 ... \/ x = y @@ -130,6 +142,7 @@ TermList Injectivity::createNewLhs(TermList oldhead, TermStack& termArgs, TermLi OperatorType* invFuncType = OperatorType::getConstantsType(invFunSort, oldhead.term()->arity()); Signature::Symbol* invFunc = env.signature->getFunction(iFunc); + invFunc->setType(invFuncType); TermList invFuncHead = TermList(Term::create(iFunc, func->arity(), typeArgs.begin())); From 3e43c45364f8007e127823ca33ef35cd44e75542 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 16 Jun 2023 17:01:15 +0100 Subject: [PATCH 171/210] adding options to permit clause selection to take into account how higher-order a clause is --- Kernel/Term.cpp | 37 ++++++++++ Kernel/Term.hpp | 4 ++ .../PredicateSplitPassiveClauseContainer.cpp | 27 +++++++ .../PredicateSplitPassiveClauseContainer.hpp | 12 ++++ Saturation/SaturationAlgorithm.cpp | 12 ++++ Shell/Options.cpp | 72 +++++++++++++++++++ Shell/Options.hpp | 14 ++++ 7 files changed, 178 insertions(+) diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 1f3869106a..d134ee7e9f 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -709,6 +709,33 @@ bool TermList::containsLooseIndex() const { return false; } +unsigned TermList::numOfAppVarsAndLambdas() const { + CALL("TermList::numOfAppVarsAndLambdas"); + + unsigned res = 0; + TermStack toDo; + toDo.push(*this); + + while(!toDo.isEmpty()){ + TermList t = toDo.pop(); + if(t.isLambdaTerm()){ + res++; + toDo.push(t.lambdaBody()); + } + if(t.isApplication()){ + TermList head; + TermStack args; + ApplicativeHelper::getHeadAndArgs(t, head, args); + ASS(!head.isLambdaTerm()); // should be beta-reduced + if(head.isVar()) res++; + while(!args.isEmpty()){ + toDo.push(args.pop()); + } + } + } + return res; +} + Option TermList::deBruijnIndex() const { CALL("TermList::deBruijnIndex"); return isVar() ? Option() : term()->deBruijnIndex(); @@ -2432,6 +2459,16 @@ bool Literal::isRigidRigid() const return lhs.head().isTerm() && rhs.head().isTerm(); } +unsigned Literal::numOfAppVarsAndLambdas() const +{ + CALL("Literal::numOfAppVarsAndLambdas"); + ASS(isEquality()); + + TermList lhs = *nthArgument(0); + TermList rhs = *nthArgument(1); + return lhs.numOfAppVarsAndLambdas() + rhs.numOfAppVarsAndLambdas(); +} + #endif /** create a new term and copy from t the relevant part of t's content */ diff --git a/Kernel/Term.hpp b/Kernel/Term.hpp index e7660cc8e0..ef45666e0b 100644 --- a/Kernel/Term.hpp +++ b/Kernel/Term.hpp @@ -264,6 +264,9 @@ class TermList { bool isPlaceholder() const; bool isChoice() const; bool containsLooseIndex() const; + // used in clause selection + // nuber of applued variables and lambdas in the term + unsigned numOfAppVarsAndLambdas() const; Option deBruijnIndex() const; TermList lhs() const; TermList rhs() const; @@ -1211,6 +1214,7 @@ class Literal bool isFlexFlex() const; bool isFlexRigid() const; bool isRigidRigid() const; + unsigned numOfAppVarsAndLambdas() const; #endif /** true if positive */ diff --git a/Saturation/PredicateSplitPassiveClauseContainer.cpp b/Saturation/PredicateSplitPassiveClauseContainer.cpp index f3de768c16..9d483aec1a 100644 --- a/Saturation/PredicateSplitPassiveClauseContainer.cpp +++ b/Saturation/PredicateSplitPassiveClauseContainer.cpp @@ -506,6 +506,33 @@ float TheoryMultiSplitPassiveClauseContainer::evaluateFeatureEstimate(unsigned, return inf.th_ancestors * expectedRatioDenominator - inf.all_ancestors; } +#if VHOL + +HoFeaturesMultiSplitPassiveClauseContainer::HoFeaturesMultiSplitPassiveClauseContainer(bool isOutermost, const Shell::Options &opt, Lib::vstring name, Lib::vvector> queues) : +PredicateSplitPassiveClauseContainer(isOutermost, opt, name, std::move(queues), opt.hoFeaturesSplitQueueCutoffs(), opt.hoFeaturesSplitQueueRatios(), opt.hoFeaturesSplitQueueLayeredArrangement()) {} + +float HoFeaturesMultiSplitPassiveClauseContainer::evaluateFeature(Clause* cl) const +{ + CALL("HoFeaturesMultiSplitPassiveClauseContainer::evaluateFeature"); + + //calculate the number of huigher-order features (applied variable and lambdas) in the clause; + unsigned res = 0; + for(unsigned i = 0; i < cl->size(); i++){ + res = res + (*cl)[i]->numOfAppVarsAndLambdas(); + } + return res; +} + +float HoFeaturesMultiSplitPassiveClauseContainer::evaluateFeatureEstimate(unsigned, const Inference& inf) const +{ + CALL("HoFeaturesMultiSplitPassiveClauseContainer::evaluateFeatureEstimate"); + + // from the information provided we cannot estimate the feature sadly... + return 0; +} + +#endif + AvatarMultiSplitPassiveClauseContainer::AvatarMultiSplitPassiveClauseContainer(bool isOutermost, const Shell::Options &opt, Lib::vstring name, Lib::vvector> queues) : PredicateSplitPassiveClauseContainer(isOutermost, opt, name, std::move(queues), opt.avatarSplitQueueCutoffs(), opt.avatarSplitQueueRatios(), opt.avatarSplitQueueLayeredArrangement()) {} diff --git a/Saturation/PredicateSplitPassiveClauseContainer.hpp b/Saturation/PredicateSplitPassiveClauseContainer.hpp index 794fc00c53..a983739e09 100644 --- a/Saturation/PredicateSplitPassiveClauseContainer.hpp +++ b/Saturation/PredicateSplitPassiveClauseContainer.hpp @@ -100,6 +100,18 @@ class TheoryMultiSplitPassiveClauseContainer : public PredicateSplitPassiveClaus float evaluateFeatureEstimate(unsigned numPositiveLiterals, const Inference& inf) const override; }; +#if VHOL +class HoFeaturesMultiSplitPassiveClauseContainer : public PredicateSplitPassiveClauseContainer +{ +public: + HoFeaturesMultiSplitPassiveClauseContainer(bool isOutermost, const Shell::Options &opt, Lib::vstring name, Lib::vvector> queues); + +private: + float evaluateFeature(Clause* cl) const override; + float evaluateFeatureEstimate(unsigned numPositiveLiterals, const Inference& inf) const override; +}; +#endif + class AvatarMultiSplitPassiveClauseContainer : public PredicateSplitPassiveClauseContainer { public: diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index eea50f6ff5..872adb0420 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -171,6 +171,18 @@ std::unique_ptr makeLevel2(bool isOutermost, const Optio } return std::make_unique(isOutermost, opt, name + "AvSQ", std::move(queues)); } +#if VHOL + else if(opt.hoFeaturesSplitQueues()){ + Lib::vvector> queues; + auto cutoffs = opt.hoFeaturesSplitQueueCutoffs(); + for (unsigned i = 0; i < cutoffs.size(); i++) + { + auto queueName = name + "HoFSQ" + Int::toString(cutoffs[i]) + ":"; + queues.push_back(makeLevel1(false, opt, queueName)); + } + return std::make_unique(isOutermost, opt, name + "HoFSQ", std::move(queues)); + } +#endif else { return makeLevel1(isOutermost, opt, name); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index c8f912f3c4..888917f347 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1010,6 +1010,35 @@ void Options::init() _theorySplitQueueLayeredArrangement.onlyUsefulWith(_useTheorySplitQueues.is(equal(true))); _theorySplitQueueLayeredArrangement.tag(OptionTag::SATURATION); +#if VHOL + + _hoFeaturesSplitQueues = BoolOptionValue("ho_feature_split_queue","hfsq",false); + _hoFeaturesSplitQueues.description = "Turn on clause selection using multiple queues containing different clauses (split by amount of higher-order featues)"; + _hoFeaturesSplitQueues.onlyUsefulWith(ProperSaturationAlgorithm()); // could be "IncludingInstgen"? (not with theories...) + _hoFeaturesSplitQueues.addProblemConstraint(hasHigherOrder()); + _lookup.insert(&_hoFeaturesSplitQueues); + _hoFeaturesSplitQueues.tag(OptionTag::SATURATION); + + _hoFeaturesSplitQueueCutoffs = StringOptionValue("ho_feature_split_queue_cutoffs", "hfsqc", "0"); + _hoFeaturesSplitQueueCutoffs.description = "The cutoff-values for the split-queues (the cutoff value for the last queue has to be omitted, as it is always infinity). Any split-queue contains all clauses which are assigned a feature-value less or equal to the cutoff-value of the queue. If no custom value for this option is set, the implementation will use cutoffs 0,4*d,10*d,infinity (where d denotes the theory split queue expected ratio denominator)."; + _lookup.insert(&_hoFeaturesSplitQueueCutoffs); + _hoFeaturesSplitQueueCutoffs.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); + _hoFeaturesSplitQueueCutoffs.tag(OptionTag::SATURATION); + + _hoFeaturesSplitQueueRatios = StringOptionValue("ho_features_split_queue_ratios", "hfsqr", "1,1"); + _hoFeaturesSplitQueueRatios.description = "The ratios for picking clauses from the split-queues using weighted round robin. If a queue is empty, the clause will be picked from the next non-empty queue to the right. Note that this option implicitly also sets the number of queues."; + _lookup.insert(&_hoFeaturesSplitQueueRatios); + _hoFeaturesSplitQueueRatios.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); + _hoFeaturesSplitQueueRatios.tag(OptionTag::AVATAR); + + _hoFeaturesSplitQueueLayeredArrangement = BoolOptionValue("ho_features_split_queue_layered_arrangement","hfsql",true); + _hoFeaturesSplitQueueLayeredArrangement.description = "If turned on, use a layered arrangement to split clauses into queues. Otherwise use a tammet-style-arrangement."; + _lookup.insert(&_hoFeaturesSplitQueueLayeredArrangement); + _hoFeaturesSplitQueueLayeredArrangement.onlyUsefulWith(_useTheorySplitQueues.is(equal(true))); + _hoFeaturesSplitQueueLayeredArrangement.tag(OptionTag::SATURATION); + +#endif + _useAvatarSplitQueues = BoolOptionValue("avatar_split_queue","avsq",false); _useAvatarSplitQueues.description = "Turn on experiments: clause selection with multiple queues containing different clauses (split by amount of avatar-split-set-size)"; _lookup.insert(&_useAvatarSplitQueues); @@ -4025,6 +4054,49 @@ Lib::vvector Options::theorySplitQueueCutoffs() const return cutoffs; } +#if VHOL + +Lib::vvector Options::hoFeaturesSplitQueueRatios() const +{ + CALL("Options::hoFeaturesSplitQueueRatios"); + Lib::vvector inputRatios = parseCommaSeparatedList(_hoFeaturesSplitQueueRatios.actualValue); + + // sanity checks + if (inputRatios.size() < 2) { + USER_ERROR("Wrong usage of option '-hfsqr'. Needs to have at least two values (e.g. '10,1')"); + } + for (unsigned i = 0; i < inputRatios.size(); i++) { + if(inputRatios[i] <= 0) { + USER_ERROR("Each ratio (supplied by option '-hfsqr') needs to be a positive integer"); + } + } + + return inputRatios; +} + +Lib::vvector Options::hoFeaturesSplitQueueCutoffs() const +{ + CALL("Options::hoFeaturesSplitQueueCutoffs"); + // initialize cutoffs and add float-max as last value + auto cutoffs = parseCommaSeparatedList(_hoFeaturesSplitQueueCutoffs.actualValue); + cutoffs.push_back(std::numeric_limits::max()); + + // sanity checks + for (unsigned i = 0; i < cutoffs.size(); i++) + { + auto cutoff = cutoffs[i]; + + if (i > 0 && cutoff <= cutoffs[i-1]) + { + USER_ERROR("The cutoff values (supplied by option '-hfsqc') must be strictly increasing"); + } + } + + return cutoffs; +} + +#endif + Lib::vvector Options::avatarSplitQueueRatios() const { CALL("Options::avatarSplitQueueRatios"); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 03f1ad2be3..bea5842c0f 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2273,6 +2273,14 @@ bool _hard; Lib::vvector theorySplitQueueCutoffs() const; int theorySplitQueueExpectedRatioDenom() const { return _theorySplitQueueExpectedRatioDenom.actualValue; } bool theorySplitQueueLayeredArrangement() const { return _theorySplitQueueLayeredArrangement.actualValue; } + +#if VHOL + bool hoFeaturesSplitQueues() const { return _hoFeaturesSplitQueues.actualValue; } + Lib::vvector hoFeaturesSplitQueueRatios() const; + Lib::vvector hoFeaturesSplitQueueCutoffs() const; + bool hoFeaturesSplitQueueLayeredArrangement() const { return _hoFeaturesSplitQueueLayeredArrangement.actualValue; } +#endif + bool useAvatarSplitQueues() const { return _useAvatarSplitQueues.actualValue; } Lib::vvector avatarSplitQueueRatios() const; Lib::vvector avatarSplitQueueCutoffs() const; @@ -2567,6 +2575,12 @@ bool _hard; StringOptionValue _theorySplitQueueCutoffs; IntOptionValue _theorySplitQueueExpectedRatioDenom; BoolOptionValue _theorySplitQueueLayeredArrangement; +#if VHOL + BoolOptionValue _hoFeaturesSplitQueues; + StringOptionValue _hoFeaturesSplitQueueRatios; + StringOptionValue _hoFeaturesSplitQueueCutoffs; + BoolOptionValue _hoFeaturesSplitQueueLayeredArrangement; +#endif BoolOptionValue _useAvatarSplitQueues; StringOptionValue _avatarSplitQueueRatios; StringOptionValue _avatarSplitQueueCutoffs; From 2d420df37bcad23616700a9599598b7be88b6bb3 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 16 Jun 2023 19:33:31 +0100 Subject: [PATCH 172/210] bug fix --- Inferences/Injectivity.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Inferences/Injectivity.cpp b/Inferences/Injectivity.cpp index c40a2269d0..a61f51181e 100644 --- a/Inferences/Injectivity.cpp +++ b/Inferences/Injectivity.cpp @@ -71,6 +71,12 @@ ClauseIterator Injectivity::generateClauses(Clause* premise) { ApplicativeHelper::getHeadAndArgs(lhsM, headLhs, argsLhs); ApplicativeHelper::getHeadAndArgs(rhsM, headRhs, argsRhs); + if(headLhs != headRhs || headLhs.isVar()) + { return ClauseIterator::getEmpty(); } + // assertion below holds, since lhsM and rhsM have same types and neither is a lambda term + ASS(argsLhs.size() == argsRhs.size()); + + // TODO inelegant stuff here // THe reason we get the sorts from the type instead of using getHeadArgsAndSorts // is become we want the original non-instantiated sorts... @@ -80,11 +86,6 @@ ClauseIterator Injectivity::generateClauses(Clause* premise) { headLhsSort = headLhsSort.result(); } - if(headLhs != headRhs || headLhs.isVar()) - { return ClauseIterator::getEmpty(); } - // assertion below holds, since lhsM and rhsM have same types and neither is a lambda term - ASS(argsLhs.size() == argsRhs.size()); - bool differingArgFound = false; termArgs.push(lhsM); termArgSorts.push(headLhsSort); From ad16b5816537ec2765fcff9d09a7b4695763ffb1 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 16 Jun 2023 22:50:55 +0200 Subject: [PATCH 173/210] Friday schedule --- CASC/Schedules.cpp | 757 ++++++++++++++++++++++++--------------------- 1 file changed, 410 insertions(+), 347 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 5a82a0e103..bdf0058a10 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5135,444 +5135,507 @@ void Schedules::getSnakeTptpSatSchedule(const Shell::Property& property, Schedul } void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick) { -// Sub-schedule for 1200Mi strat cap / 9600Mi overall limit - quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:i=3:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_au=on:c=on:fsr=off:piset=equals:i=52:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=449:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=1160:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cbe=off:cond=on:sp=occurrence:i=102:si=on:rtra=on_0"); - quick.push("dis+2_1:4_au=on:cbe=off:i=3:si=on:rtra=on_0"); - quick.push("dis+1010_913633:131072_aac=none:apa=on:au=on:awrs=converge:awrsf=150:bd=off:c=on:cbe=off:chr=on:cnfonf=off:e2e=on:fe=off:hud=13:kws=precedence:lma=on:nm=13:ntd=on:pe=on:plsq=on:sgt=15:sp=frequency:ss=axioms:tgt=ground:uhcvi=on:i=6:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=2:si=on:rtra=on_0"); - quick.push("dis+1002_1:1024_fsd=on:hud=1:nm=32:piset=or:i=3:si=on:rtra=on_0"); - quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=110:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=283:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bs=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:fsd=on:hud=5:prag=on:i=3:si=on:rtra=on_0"); + // Champion singleton-schedule for 100000Mi + quick.push("lrs+1010_1:1_chr=on:ntd=on:i=99890:si=on:rtra=on_0"); + // Improves by expected 2036.1064401970548 probs costing 99889 Mi + // Sub-schedule for 50Mi strat cap / 400Mi overall limit + quick.push("dis+1002_1:128_acc=on:er=filter:i=10:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=2:si=on:rtra=on_0"); quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=preordered:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=10:ixr=off:prag=on:i=26:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=182:si=on:rtra=on_0"); - quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=41:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=275:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=29:si=on:rtra=on_0"); quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=21:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=218:si=on:rtra=on_0"); - quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); + quick.push("lrs+1003_1:1_au=on:e2e=on:kws=inv_frequency:i=4:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=3:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=21:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=14:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=51:si=on:rtra=on_0"); + quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=35:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=10:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_acc=on:bd=off:er=filter:fsr=off:nwc=3.0:piset=and:i=8:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=18:si=on:rtra=on_0"); + quick.push("lrs-3_4:1_au=on:kws=arity_squared:nm=2:sos=on:i=26:si=on:rtra=on_0"); + quick.push("ott+21_1:1_apa=on:au=on:cnfonf=off:sos=on:i=3:si=on:rtra=on_0"); quick.push("lrs+2_1:1_apa=on:au=on:bd=preordered:cnfonf=off:cs=on:ixr=off:sos=on:i=3:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=3:si=on:rtra=on_0"); - quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=149:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=5:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:fsr=off:i=51:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=all_dependent:au=on:cbe=off:fde=unused:ntd=on:i=7:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:i=3:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=6:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=18:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:prag=on:i=24:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bsd=on:cbe=off:cnfonf=conj_eager:fd=off:fsr=off:hi=on:i=33:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=4:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:i=4:si=on:rtra=on_0"); + // Improves by expected 115.21851314081785 probs costing 397 Mi + // Sub-schedule for 100Mi strat cap / 800Mi overall limit + quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); + quick.push("lrs+1010_1:40_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=3,1:sac=on:i=89:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=51:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:bd=off:cnfonf=lazy_pi_sigma_gen:s2a=on:sac=on:sd=1:sgt=20:ss=axioms:i=100:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=100:si=on:rtra=on_0"); + quick.push("lrs+1002_1:4_au=on:av=off:bsr=on:cbe=off:nm=2:i=56:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=100:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=80:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=35:si=on:rtra=on_0"); + quick.push("dis+10_1:6_au=on:bd=off:plsq=on:plsqr=1,32:sd=1:sgt=100:ss=axioms:i=65:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=25:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=conj_eager:nwc=3.0:s2a=on:ss=axioms:st=1.5:i=101:si=on:rtra=on_0"); + // Improves by expected 42.665333251487866 probs costing 796 Mi + // Sub-schedule for 150Mi strat cap / 1200Mi overall limit + quick.push("dis+1002_1:20_au=on:e2e=on:ss=axioms:uhcvi=on:i=98:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=151:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=151:si=on:rtra=on_0"); quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=150:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=6:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:hud=7:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=103:si=on:rtra=on_0"); - quick.push("ott+21_1:5_bsd=on:sp=weighted_frequency:i=2:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:hud=7:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=105:si=on:rtra=on_0"); quick.push("lrs+21_1:16_au=on:bd=off:piset=and:i=39:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=1174:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=8:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_anc=all_dependent:au=on:cbe=off:fde=unused:ntd=on:i=6:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:c=on:sac=on:slsq=on:slsqc=2:i=206:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=28:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:i=3:si=on:rtra=on_0"); - quick.push("lrs+10_1:64_abs=on:bsd=on:fe=off:hud=10:ntd=on:tgt=ground:tnu=1:i=15:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_cnfonf=lazy_pi_sigma_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=const_min:i=3:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=7:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=16:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bsd=on:cbe=off:cnfonf=conj_eager:hi=on:i=149:si=on:rtra=on_0"); - quick.push("lrs+10_1:10_au=on:av=off:cbe=off:cnfonf=lazy_pi_sigma_gen:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=103:si=on:rtra=on_0"); - quick.push("lrs+1004_1:4_av=off:bsd=on:e2e=on:i=27:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_av=off:bd=off:fd=off:kws=precedence:nwc=3.0:prag=on:rawr=on:sos=all:sp=reverse_frequency:i=654:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_chr=on:prag=on:i=8:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=102:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1126:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cbe=off:fd=off:fs=off:fsr=off:nm=0:i=15:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bsd=on:cbe=off:cnfonf=conj_eager:fd=off:fsr=off:hi=on:i=19:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=710:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=lazy_not_gen:ntd=on:piset=and:ss=axioms:st=1.5:i=665:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=254:si=on:rtra=on_0"); - quick.push("lrs+10_1:50_fe=off:kws=frequency:nm=64:ntd=on:sp=frequency:i=18:si=on:rtra=on_0"); - quick.push("dis+1002_1:128_acc=on:er=filter:i=17:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=401:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=150:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=151:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:c=on:fsr=off:ntd=on:prag=on:sd=1:sos=all:ss=axioms:st=5.0:i=23:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=lazy_not_gen:ntd=on:piset=and:ss=axioms:st=1.5:i=144:si=on:rtra=on_0"); quick.push("dis+10_1:1_aac=none:cs=on:i=47:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_cnfonf=lazy_pi_sigma_gen:nwc=3.0:ss=axioms:st=1.2:i=322:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=18:si=on:rtra=on_0"); + // Improves by expected 45.8718568158491 probs costing 1198 Mi + // Sub-schedule for 500Mi strat cap / 4000Mi overall limit + quick.push("lrs+1002_1:5_er=filter:fsr=off:i=15:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=500:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=303:si=on:rtra=on_0"); + quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=110:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_cond=on:e2e=on:i=61:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=495:si=on:rtra=on_0"); + quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=96:si=on:rtra=on_0"); + quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=118:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=149:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=498:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_hud=1:ss=axioms:i=85:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=83:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_gen:fsr=off:kws=precedence:nwc=5.0:s2a=on:ss=axioms:st=1.5:i=448:si=on:rtra=on_0"); + quick.push("lrs+10_1:10_au=on:av=off:cbe=off:cnfonf=lazy_pi_sigma_gen:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=98:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=88:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=438:si=on:rtra=on_0"); + quick.push("lrs+10_1:50_fe=off:kws=frequency:nm=64:ntd=on:sp=frequency:i=18:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=302:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=37:si=on:rtra=on_0"); - quick.push("lrs+1003_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sp=const_max:i=2:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_av=off:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:i=3:si=on:rtra=on_0"); - quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=23:si=on:rtra=on_0"); - // Improves by expected 2293.194267929746 probs costing 9588 Mi - // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit + // Improves by expected 97.0840642045528 probs costing 3984 Mi + // Sub-schedule for 1000Mi strat cap / 8000Mi overall limit quick.push("dis+1002_1:1_cha=on:hud=10:nwc=10.0:prag=on:tnu=1:i=96:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=981:si=on:rtra=on_0"); quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=424:si=on:rtra=on_0"); + quick.push("lrs+1003_1:1_e2e=on:i=149:si=on:rtra=on_0"); quick.push("lrs+10_1:1_sd=2:sos=all:ss=axioms:i=177:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=165:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:s2a=on:sd=7:ss=axioms:st=1.5:i=1076:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=472:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=287:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=129:si=on:rtra=on_0"); quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=130:si=on:rtra=on_0"); - quick.push("lrs+21_1:16_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=7,4:i=484:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=40:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:nm=2:i=59:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=189:si=on:rtra=on_0"); - quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=283:si=on:rtra=on_0"); quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=33:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:s2a=on:sp=weighted_frequency:ss=axioms:i=297:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=189:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=1000:si=on:rtra=on_0"); + quick.push("lrs+1002_1:4_au=on:av=off:bsr=on:cbe=off:nm=2:i=56:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=457:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=335:si=on:rtra=on_0"); + quick.push("lrs+2_1:8_erd=off:plsq=on:plsqr=32,1:sos=on:i=152:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=770:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bsd=on:fe=axiom:fsd=on:ntd=on:nwc=10.0:i=166:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cbe=off:cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=148:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=104:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=770:si=on:rtra=on_0"); + quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=164:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=392:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_simp:sgt=5:sos=on:ss=axioms:i=278:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=324:si=on:rtra=on_0"); + // Improves by expected 64.69592254381683 probs costing 7995 Mi + // Sub-schedule for 1500Mi strat cap / 12000Mi overall limit + quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=294:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=471:si=on:rtra=on_0"); + quick.push("dis+21_1:5_au=on:ntd=on:nwc=5.0:s2a=on:ss=axioms:st=5.0:i=201:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_cnfonf=conj_eager:fsr=off:prag=on:sd=4:sgt=10:ss=axioms:i=490:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:s2a=on:sd=7:ss=axioms:st=1.5:i=342:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1456:si=on:rtra=on_0"); + quick.push("lrs+21_1:16_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=7,4:i=658:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=40:si=on:rtra=on_0"); + quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=65:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=401:si=on:rtra=on_0"); quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=247:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sgt=16:ss=axioms:i=301:si=on:rtra=on_0"); + quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=353:si=on:rtra=on_0"); quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=549:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sos=on:ss=axioms:i=203:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:plsq=on:plsqr=32,1:prag=on:i=187:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_av=off:fe=off:hud=5:piset=or:prag=on:i=452:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=1149:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:nwc=5.0:s2a=on:s2at=2.0:sac=on:sd=7:ss=axioms:st=2.0:i=358:si=on:rtra=on_0"); quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=279:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:i=1111:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=408:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_hud=1:ss=axioms:i=85:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=83:si=on:rtra=on_0"); - quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=197:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1024_fde=none:kws=precedence:prag=on:sac=on:sos=on:i=409:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=879:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=129:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_anc=all:cbe=off:cnfonf=lazy_not_gen_be_off:fe=off:hud=5:nwc=10.0:plsq=on:plsqr=32,1:prag=on:sp=unary_first:i=202:si=on:rtra=on_0"); - quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=164:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=371:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=102:si=on:rtra=on_0"); - // Improves by expected 72.73105914379634 probs costing 9563 Mi - // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit - quick.push("lrs+10_1:64_hud=5:plsq=on:plsqr=2011171,524288:i=584:si=on:rtra=on_0"); + quick.push("lrs+1_1:1_au=on:cbe=off:ntd=on:i=161:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=1487:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sp=unary_first:i=153:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:fde=none:slsq=on:i=258:si=on:rtra=on_0"); + quick.push("dis+10_1:1_bd=off:fsr=off:ixr=off:nwc=10.0:plsq=on:plsqc=1:plsqr=5977431,65536:rnwc=on:i=844:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=382:si=on:rtra=on_0"); + quick.push("lrs+2_11:1_bsr=unit_only:cnfonf=off:e2e=on:hud=10:nm=64:sos=all:i=50:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:nwc=10.0:s2a=on:i=460:si=on:rtra=on_0"); + // Improves by expected 41.07809882068872 probs costing 11987 Mi + // Sub-schedule for 5000Mi strat cap / 40000Mi overall limit quick.push("dis+1002_1:1_cha=on:hud=10:nwc=10.0:prag=on:tnu=1:i=96:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=419:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=294:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=1678:si=on:rtra=on_0"); - quick.push("ott+1002_1:256_anc=all_dependent:awrs=converge:awrsf=60:bd=off:cbe=off:fe=off:nwc=10.0:s2a=on:s2agt=10:sac=on:i=914:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=599:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1655:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=1207:si=on:rtra=on_0"); - quick.push("dis+1002_1:14_au=on:kws=precedence:nwc=10.0:piset=and:i=623:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=97:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_fde=none:kws=precedence:prag=on:sac=on:sos=on:i=409:si=on:rtra=on_0"); + quick.push("ott+1010_5:1_av=off:fe=off:ins=1:kws=precedence:sp=reverse_arity:i=794:si=on:rtra=on_0"); quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=348:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:s2a=on:sp=weighted_frequency:ss=axioms:i=297:si=on:rtra=on_0"); - quick.push("dis+1002_1:4_chr=on:cnfonf=lazy_gen:hud=5:ins=1:ntd=on:prag=on:i=190:si=on:rtra=on_0"); - quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=111:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=668:si=on:rtra=on_0"); - quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=938:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=8250:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=1372:si=on:rtra=on_0"); + quick.push("lrs+1002_1:40_au=on:bsd=on:cbe=off:cnfonf=lazy_gen:ntd=on:i=247:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=599:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=4913:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=746:si=on:rtra=on_0"); + quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=106:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_cha=on:cnfonf=off:hud=10:kws=inv_frequency:lcm=predicate:sgt=32:sos=on:sp=occurrence:ss=axioms:i=136:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=386:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=3756:si=on:rtra=on_0"); + quick.push("dis+10_1:1_atotf=0.1:cbe=off:sd=3:ss=axioms:st=2.0:i=372:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:plsq=on:plsqr=32,1:prag=on:i=187:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=393:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5411:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cbe=off:fde=unused:fe=axiom:prag=on:s2a=on:s2agt=30:sp=frequency:i=316:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:fde=unused:i=636:si=on:rtra=on_0"); quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=1110:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_amm=off:cs=on:kws=precedence:nwc=10.0:piset=all:s2a=on:sac=on:sp=unary_frequency:spb=goal:ss=axioms:st=3.0:i=584:si=on:rtra=on_0"); + quick.push("lrs+1010_1:64_aac=none:acc=on:au=on:c=on:cbe=off:ccuc=small_ones:chr=on:cnfonf=lazy_not_gen:fde=unused:hud=10:kws=precedence:nicw=on:piset=all_but_not_eq:sd=2:sp=reverse_arity:ss=axioms:i=536:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4218:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fde=none:sd=1:ss=axioms:st=3.0:i=4405:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:ixr=off:i=578:si=on:rtra=on_0"); + quick.push("dis+10_1:1_apa=on:au=on:avsq=on:cnfonf=off:kws=inv_arity:ntd=on:i=412:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bsd=on:bsr=unit_only:fd=off:hud=8:nm=16:prag=on:i=715:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1387:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_cnfonf=lazy_pi_sigma_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=const_min:i=3183:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=503:si=on:rtra=on_0"); + quick.push("lrs+1010_1:10_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:sp=occurrence:i=414:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=770:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=474:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:bd=off:bsr=unit_only:sd=2:sgt=32:sos=all:ss=axioms:i=454:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2183:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1133:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_cbe=off:cnfonf=lazy_not_gen_be_off:ins=1:i=569:si=on:rtra=on_0"); + quick.push("dis+10_1:1_sd=2:sgt=20:slsq=on:ss=axioms:st=6.0:i=443:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=556:si=on:rtra=on_0"); + // Improves by expected 106.3086921640514 probs costing 39908 Mi + // Sub-schedule for 10000Mi strat cap / 80000Mi overall limit + quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=651:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=1511:si=on:rtra=on_0"); + quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=301:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_nm=20:s2a=on:s2at=3.0:sp=const_frequency:i=871:si=on:rtra=on_0"); + quick.push("lrs+1010_1:2_au=on:e2e=on:sd=3:ss=axioms:st=3.0:i=1208:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:cnfonf=off:e2e=on:plsq=on:i=584:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=3174:si=on:rtra=on_0"); + quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=244:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=386:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=1201:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=2020:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=643:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=8787:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5605:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_av=off:cnfonf=lazy_not_be_gen:fd=preordered:hud=5:nm=10:ntd=on:nwc=10.0:piset=and:i=748:si=on:rtra=on_0"); quick.push("dis+10_8:1_apa=on:cnfonf=off:e2e=on:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=783:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=2:plsqr=32,1:i=445:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); - quick.push("lrs+2_1:1024_anc=all:cnfonf=off:cs=on:e2e=on:nm=20:s2at=1.5:slsq=on:slsqr=1,2:spb=goal:i=340:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=534:si=on:rtra=on_0"); + quick.push("dis+10_16:1_hud=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sd=1:sgt=64:ss=axioms:i=4637:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=1321:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=101:si=on:rtra=on_0"); quick.push("dis+1002_8:1_cnfonf=off:fsr=off:ins=2:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=5390:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=1103:si=on:rtra=on_0"); - quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=2028:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=283:si=on:rtra=on_0"); - quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=1992:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3882:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=146:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=3768:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fd=preordered:fde=none:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=746:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:bsd=on:bsr=unit_only:fd=off:hud=8:nm=16:prag=on:i=713:si=on:rtra=on_0"); - quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1762:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=11942:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=model:avsq=on:ntd=on:i=1234:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_cnfonf=lazy_pi_sigma_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=const_min:i=3515:si=on:rtra=on_0"); - quick.push("lrs+1010_1:10_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:sp=occurrence:i=420:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:ixr=off:i=578:si=on:rtra=on_0"); + quick.push("ott+1010_2:1_cha=on:cnfonf=lazy_not_gen_be_off:hud=22:nwc=10.0:piset=and:prag=on:i=327:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:ntd=on:s2a=on:ss=axioms:st=1.5:i=1244:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4925:si=on:rtra=on_0"); + quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3671:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=147:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=2401:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bsd=on:fe=axiom:fsd=on:ntd=on:nwc=10.0:i=166:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=9970:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sp=unary_first:i=153:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=644:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=1001:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=4436:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3789:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:erd=off:s2a=on:s2at=3.0:sos=all:i=1174:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2870:si=on:rtra=on_0"); - quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=171:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=390:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); - quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=739:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=432:si=on:rtra=on_0"); - quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=1480:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=423:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_av=off:fe=off:hud=5:piset=or:prag=on:i=441:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=conj_eager:s2a=on:sd=4:sgt=16:ss=axioms:i=786:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=89:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1810:si=on:rtra=on_0"); - quick.push("ott+10_1:1_aac=none:apa=on:au=on:cnfonf=off:ntd=on:nwc=12.0:sos=on:i=865:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4350:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=496:si=on:rtra=on_0"); - // Improves by expected 209.52517752282986 probs costing 95997 Mi - // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit - quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=2475:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); + quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=882:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=1229:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:hud=4:nm=60:i=453:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:fde=none:ins=1:sp=const_max:i=858:si=on:rtra=on_0"); + quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1302:si=on:rtra=on_0"); + quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=556:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1312:si=on:rtra=on_0"); + // Improves by expected 76.459461923398 probs costing 79826 Mi + // Sub-schedule for 15000Mi strat cap / 120000Mi overall limit + quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=2860:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=419:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=137:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cs=on:sd=1:sgt=8:ss=axioms:i=1400:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=3883:si=on:rtra=on_0"); - quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=2151:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=939:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=3098:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=464:si=on:rtra=on_0"); + quick.push("dis+1002_1:14_anc=none:bs=unit_only:nm=32:ntd=on:s2a=on:sos=on:i=599:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5856:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=2295:si=on:rtra=on_0"); + quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3201:si=on:rtra=on_0"); + quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=4895:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_au=on:ins=2:nm=16:ntd=on:piset=all_but_not_eq:sp=occurrence:i=2962:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=1972:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); - quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=348:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=1201:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=1976:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=3037:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=386:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all:c=on:cnfonf=off:fsr=off:kws=inv_frequency:nwc=5.0:sos=on:sp=occurrence:i=344:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:cnfonf=off:plsq=on:plsqc=1:plsqr=3,1:i=4962:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=631:si=on:rtra=on_0"); quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=2928:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=149:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=393:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=8,1:sp=weighted_frequency:i=3520:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=4543:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=1483:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=534:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=2012:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5271:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=5974:si=on:rtra=on_0"); quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=8216:si=on:rtra=on_0"); - quick.push("lrs+1002_3:1_anc=none:avsq=on:bd=off:fd=off:kws=frequency:i=1184:si=on:rtra=on_0"); - quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=5061:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1871:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_atotf=0.3:bd=off:cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3,1:i=1273:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:cs=on:sd=1:sgt=64:ss=axioms:i=4935:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=3174:si=on:rtra=on_0"); + quick.push("ott+1010_2:1_cha=on:cnfonf=lazy_not_gen_be_off:hud=22:nwc=10.0:piset=and:prag=on:i=327:si=on:rtra=on_0"); quick.push("dis+1002_8:1_bd=off:sd=1:sgt=16:ss=axioms:i=4604:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=3461:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:cs=on:sos=on:i=835:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=492:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fd=preordered:fde=none:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:cnfonf=off:fe=off:hud=10:prag=on:s2a=on:ss=axioms:st=2.0:i=535:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=571:si=on:rtra=on_0"); - quick.push("ott+1002_1:4_c=on:chr=on:cnfonf=lazy_not_be_gen:hud=10:nm=10:piset=all_but_not_eq:rp=on:spb=goal:uhcvi=on:i=2655:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=3321:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=5115:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1762:si=on:rtra=on_0"); + quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=5185:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=631:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=831:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1219:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=877:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=882:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=466:si=on:rtra=on_0"); - quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_apa=on:au=on:av=off:cnfonf=off:e2e=on:nm=0:nwc=10.0:i=2780:si=on:rtra=on_0"); - quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=739:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=754:si=on:rtra=on_0"); - quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=423:si=on:rtra=on_0"); - quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=1472:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=871:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2616:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); + quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=13994:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:hud=4:nm=60:i=453:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:fde=none:ins=1:sp=const_max:i=2325:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2573:si=on:rtra=on_0"); + quick.push("lrs+1002_1:20_afp=1000:au=on:bsd=on:cnfonf=lazy_not_gen_be_off:sos=all:sp=const_max:i=2236:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_apa=on:au=on:av=off:cnfonf=off:e2e=on:nm=0:nwc=10.0:i=4683:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=468:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=556:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2561:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1516:si=on:rtra=on_0"); - // Improves by expected 51.003424385479114 probs costing 95790 Mi - // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit - quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=2860:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=conj_eager:sd=1:ss=axioms:i=10980:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=435:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=4010:si=on:rtra=on_0"); - quick.push("ott+30_4:1_bsr=unit_only:cond=fast:plsq=on:sac=on:i=1901:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=3883:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_prag=on:i=8631:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); + // Improves by expected 45.15315786953146 probs costing 119573 Mi + // Sub-schedule for 50000Mi strat cap / 400000Mi overall limit + quick.push("lrs+1002_1:28_bd=off:cnfonf=lazy_simp:plsq=on:plsqr=1,1:prag=on:i=1003:si=on:rtra=on_0"); + quick.push("dis-1010_4:1_c=on:fe=axiom:nwc=10.0:prag=on:sd=2:ss=axioms:st=5.0:i=8711:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:nm=2:i=1748:si=on:rtra=on_0"); quick.push("ott+1010_1:1_bsr=unit_only:cnfonf=lazy_not_be_gen:fe=off:ntd=on:i=13529:si=on:rtra=on_0"); - quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3201:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cs=on:e2e=on:sos=all:i=9071:si=on:rtra=on_0"); quick.push("ott+1002_1:1024_au=on:avsq=on:c=on:cnfonf=lazy_not_gen_be_off:sos=all:i=14611:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=7527:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=7311:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=15453:si=on:rtra=on_0"); - quick.push("lrs+21_1:16_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=7,4:i=3941:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:e2e=on:nm=2:sos=all:sp=const_min:spb=non_intro:i=3003:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=13832:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=6604:si=on:rtra=on_0"); + quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=3397:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=9808:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=10516:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=5059:si=on:rtra=on_0"); + quick.push("lrs+1003_1:1_au=on:e2e=on:kws=inv_frequency:i=1332:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:e2e=on:nm=2:sos=all:sp=const_min:spb=non_intro:i=9526:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=11933:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=12400:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:bd=off:cnfonf=lazy_pi_sigma_gen:s2a=on:sac=on:sd=1:sgt=20:ss=axioms:i=33583:si=on:rtra=on_0"); quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=54710:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:cnfonf=off:plsq=on:plsqc=1:plsqr=3,1:i=6017:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=14596:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_anc=all_dependent:au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:piset=not:i=27944:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=5474:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=82696:si=on:rtra=on_0"); - quick.push("dis+1003_1:1_cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1647:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=15557:si=on:rtra=on_0"); + quick.push("lrs+10_1:2_ntd=on:nwc=10.0:plsq=on:plsqc=1:plsqr=2,1:ss=axioms:i=9078:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=631:si=on:rtra=on_0"); + quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=938:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=178:si=on:rtra=on_0"); - quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=406:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:bd=off:cnfonf=conj_eager:nwc=5.0:sgt=5:sp=reverse_arity:ss=axioms:i=5786:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=43570:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cbe=off:fde=unused:fe=axiom:prag=on:s2a=on:s2agt=30:sp=frequency:i=14926:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=8,1:sp=weighted_frequency:i=12732:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=5974:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sos=on:ss=axioms:i=13001:si=on:rtra=on_0"); quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=1:sgt=32:ss=axioms:i=24918:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=9801:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bsd=on:cha=on:cnfonf=lazy_not_gen_be_off:piset=small_set:s2a=on:s2at=7.0:i=24107:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=22947:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=2014:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4218:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=6576:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=21060:si=on:rtra=on_0"); quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:nwc=7.0:sup=off:i=6325:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:nwc=10.0:sac=on:i=27021:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=preordered:cnfonf=lazy_gen:fe=off:ins=1:ixr=off:ntd=on:piset=pi_sigma:plsq=on:plsqc=1:plsql=on:plsqr=9,8:s2a=on:i=12596:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:ixr=off:i=578:si=on:rtra=on_0"); quick.push("lrs+1002_3:1_anc=none:avsq=on:bd=off:fd=off:kws=frequency:i=6312:si=on:rtra=on_0"); quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=8382:si=on:rtra=on_0"); quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4925:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=2295:si=on:rtra=on_0"); - quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35700:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=492:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=5115:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=3772:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=13593:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:cnfonf=off:fe=off:hud=10:prag=on:s2a=on:ss=axioms:st=2.0:i=535:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:avsq=on:avsqr=1,16:cbe=off:sac=on:i=6454:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=1936:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=13735:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=7469:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_cnfonf=lazy_pi_sigma_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=const_min:i=2864:si=on:rtra=on_0"); - quick.push("ott+1004_64217:1048576_cnfonf=lazy_simp:fe=off:fsr=off:piset=and:rawr=on:sp=frequency:spb=units:i=4710:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=5439:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=571:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_anc=all_dependent:au=on:bd=off:e2e=on:fde=unused:fs=off:fsr=off:s2a=on:sos=on:i=10369:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3661:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=2765:si=on:rtra=on_0"); + quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=1868:si=on:rtra=on_0"); + quick.push("lrs+10_1:50_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:plsq=on:plsqr=1,32:sos=all:i=2971:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_cnfonf=lazy_pi_sigma_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=const_min:i=3515:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1219:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3789:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=16164:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=38797:si=on:rtra=on_0"); - quick.push("dis+10_5:1_av=off:ntd=on:s2a=on:s2at=3.0:sgt=16:sp=unary_frequency:ss=axioms:i=7186:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=15715:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2077:si=on:rtra=on_0"); + quick.push("dis+10_5:1_av=off:ntd=on:s2a=on:s2at=3.0:sgt=16:sp=unary_frequency:ss=axioms:i=8390:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=14611:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=5201:si=on:rtra=on_0"); quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=6645:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=31900:si=on:rtra=on_0"); - quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=14741:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=13193:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_cbe=off:cnfonf=lazy_not_gen_be_off:ins=1:i=4147:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=1548:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=466:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=12597:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2011:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=8517:si=on:rtra=on_0"); - quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=1480:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=423:si=on:rtra=on_0"); - quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); - quick.push("dis+1002_1:20_c=on:e2e=on:er=filter:piset=pi_sigma:sac=on:i=1472:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=840:si=on:rtra=on_0"); + quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=3174:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=5473:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:nwc=10.0:s2a=on:i=1426:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=556:si=on:rtra=on_0"); + quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3629:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1267:si=on:rtra=on_0"); - quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3625:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:fde=unused:i=11062:si=on:rtra=on_0"); - // Improves by expected 98.48336766889406 probs costing 955826 Mi - // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit - quick.push("lrs+1010_1:1_ntd=on:s2a=on:ss=axioms:i=57572:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:fde=none:ins=2:i=91905:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=7002:si=on:rtra=on_0"); + // Improves by expected 54.905594552162924 probs costing 398841 Mi + // Sub-schedule for 100000Mi strat cap / 800000Mi overall limit + quick.push("lrs+10_1:1_cs=on:sd=1:sgt=8:ss=axioms:i=4020:si=on:rtra=on_0"); + quick.push("dis-1010_4:1_c=on:fe=axiom:nwc=10.0:prag=on:sd=2:ss=axioms:st=5.0:i=7625:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:nm=2:i=1748:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=54710:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5756:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cs=on:e2e=on:sos=all:i=9071:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=13682:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=4895:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=6806:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=33498:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=12400:si=on:rtra=on_0"); quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=1863:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=17754:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=5474:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=2607:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:cnfonf=off:plsq=on:plsqc=1:plsqr=3,1:i=4962:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=14041:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_av=off:awrs=converge:awrsf=200:kws=precedence:i=30351:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_anc=all_dependent:au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:piset=not:i=27944:si=on:rtra=on_0"); + quick.push("dis+1010_1:128_au=on:awrs=converge:plsq=on:plsqc=1:tgt=full:i=10220:si=on:rtra=on_0"); quick.push("dis+1003_1:1_cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2725:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=8,1:sp=weighted_frequency:i=12631:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=3743:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5207:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=3884:si=on:rtra=on_0"); + quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); + quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); + quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=17549:si=on:rtra=on_0"); + quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:nwc=10.0:sac=on:i=27021:si=on:rtra=on_0"); + quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=6101:si=on:rtra=on_0"); + quick.push("lrs+1010_2:1_au=on:cnfonf=off:e2e=on:fd=off:plsq=on:plsqc=1:plsqr=32,1:i=31318:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_au=on:cnfonf=off:e2e=on:fde=none:nicw=on:s2a=on:s2at=5.0:tgt=full:i=7616:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:sd=3:sgt=10:ss=axioms:st=1.5:i=2801:si=on:rtra=on_0"); + quick.push("lrs+1_1:1_au=on:cbe=off:ntd=on:i=19350:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=2570:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=97713:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:c=on:fsr=off:ntd=on:prag=on:sd=1:sos=all:ss=axioms:st=5.0:i=50967:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3942:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=5419:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_av=off:hud=10:i=3847:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=15536:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=579:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=58848:si=on:rtra=on_0"); + quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=10993:si=on:rtra=on_0"); + quick.push("lrs+1002_1:20_afp=1000:au=on:bsd=on:cnfonf=lazy_not_gen_be_off:sos=all:sp=const_max:i=33085:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2011:si=on:rtra=on_0"); + quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); + quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3629:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1810:si=on:rtra=on_0"); + // Improves by expected 26.42704028288048 probs costing 798251 Mi + // Sub-schedule for 150000Mi strat cap / 1200000Mi overall limit + quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5756:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:cbe=off:i=89965:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:fde=none:ins=2:i=91905:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=50164:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=33734:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=11933:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=35698:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=17804:si=on:rtra=on_0"); + quick.push("dis+1010_1:128_au=on:awrs=converge:plsq=on:plsqc=1:tgt=full:i=10220:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=4919:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=133450:si=on:rtra=on_0"); quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=5974:si=on:rtra=on_0"); quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15783:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=9801:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bsd=on:cha=on:cnfonf=lazy_not_gen_be_off:piset=small_set:s2a=on:s2at=7.0:i=24107:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=22899:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_cnfonf=off:fsr=off:ins=2:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=58969:si=on:rtra=on_0"); - quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=24372:si=on:rtra=on_0"); + quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=20385:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=8216:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=48065:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_cnfonf=conj_eager:i=18038:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=58631:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=9527:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=45798:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:cond=fast:e2e=on:fd=off:nm=16:nwc=5.0:prag=on:i=64127:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=97713:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=1868:si=on:rtra=on_0"); - quick.push("lrs+10_1:64_abs=on:bsd=on:fe=off:hud=10:ntd=on:tgt=ground:tnu=1:i=59589:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=571:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3789:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=25498:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=12389:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=21829:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=10993:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=9265:si=on:rtra=on_0"); - quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=14741:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=7768:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=41327:si=on:rtra=on_0"); + quick.push("dis+1_1:1_amm=off:au=on:piset=and:i=15559:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:fde=unused:i=11062:si=on:rtra=on_0"); - // Improves by expected 15.939604502306919 probs costing 957648 Mi + quick.push("lrs+1002_1:15_add=large:au=on:cbe=off:ntd=on:i=31057:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=56980:si=on:rtra=on_0"); + // Improves by expected 11.751493524682386 probs costing 1179452 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=29759:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=210001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=182589:si=on:rtra=on_0"); quick.push("dis+10_1:1_amm=sco:au=on:cbe=off:nm=0:i=33863:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_ntd=on:s2a=on:ss=axioms:i=82733:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=82591:si=on:rtra=on_0"); - quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_au=on:cnfonf=lazy_simp:i=18738:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=9867:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=162850:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=80644:si=on:rtra=on_0"); - quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=19233:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=46248:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:cbe=off:i=90301:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=49089:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=101333:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=17804:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_av=off:awrs=converge:awrsf=200:kws=precedence:i=49053:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=83865:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=133450:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); - quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15783:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=9801:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bsd=on:cha=on:cnfonf=lazy_not_gen_be_off:piset=small_set:s2a=on:s2at=7.0:i=200001:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=24372:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:nwc=10.0:sac=on:i=22890:si=on:rtra=on_0"); - quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=4978:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=104812:si=on:rtra=on_0"); quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=48065:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_cnfonf=conj_eager:i=73522:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:kws=precedence:i=39735:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35001:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ss=axioms:i=61571:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=89805:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:kws=precedence:i=204173:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=133059:si=on:rtra=on_0"); quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=45798:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=25498:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=62412:si=on:rtra=on_0"); - quick.push("lrs+10_1:64_abs=on:bsd=on:fe=off:hud=10:ntd=on:tgt=ground:tnu=1:i=102759:si=on:rtra=on_0"); quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=38843:si=on:rtra=on_0"); - quick.push("lrs-1002_8:1_bd=off:bsd=on:e2e=on:fd=off:prag=on:s2a=on:i=93333:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=69001:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=38797:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=12072:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=14027:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=120493:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=224352:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:fsr=off:piset=or:sp=weighted_frequency:i=197488:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=30417:si=on:rtra=on_0"); - quick.push("lrs+10_1:16_aac=none:au=on:cnfonf=lazy_simp:kws=inv_frequency:nwc=10.0:s2a=on:i=56516:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=12939:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=70674:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); - quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=20955:si=on:rtra=on_0"); - quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=55093:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - // Improves by expected 12.477386319606756 probs costing 3384970 Mi + quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_awrs=converge:awrsf=80:bs=on:c=on:cbe=off:cnfonf=conj_eager:fsr=off:gs=on:pe=on:piset=and:sac=on:sd=1:sp=frequency:spb=goal:ss=included:i=254848:si=on:rtra=on_0"); + // Improves by expected 7.6847994483280955 probs costing 3025219 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit - quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=182589:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=82591:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=143300:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=24372:si=on:rtra=on_0"); - quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_cnfonf=conj_eager:i=73522:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ss=axioms:i=61571:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=38843:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=214497:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=224352:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:fsr=off:piset=or:sp=weighted_frequency:i=192754:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=70674:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - // Improves by expected 3.3735699273399193 probs costing 1810162 Mi + quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); + // Improves by expected 2.8680061743442784 probs costing 1636682 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=182589:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=82591:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ss=axioms:i=61571:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=38843:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_bd=off:c=on:cbe=off:cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=98861:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=224352:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); - // Improves by expected 1.6920481140418748 probs costing 1320837 Mi - // Overall score 2758.4199055140407 probs on average / budget 8640381 Mi + quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); + // Improves by expected 1.2885448149069414 probs costing 869881 Mi + // Fri: Overall score 2775.567019728554 probs on average / budget 8273879 Mi + + // Tue: Overall score 2758.4199055140407 probs on average / budget 8640381 Mi } \ No newline at end of file From 8d01dabb879efb31b4936a3ad6c5cca545c7cdfa Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Sat, 17 Jun 2023 09:00:29 +0000 Subject: [PATCH 174/210] sample new options --- samplerEx.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/samplerEx.txt b/samplerEx.txt index 736e8cccf8..ce0e17f8d4 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -387,3 +387,12 @@ hud!=0 > prag ~cat off:1,on:1 # take_n_unifiers au=off > tnu ~ui 0,9 + +# injectivity +> inj ~cat off:4,off:1 + +# higher order split queue +> hfsq ~cat off:3,on:1 +hfsq=on > hfsql ~cat off:4,on:1 +hfsq=on > hfsqc ~cat 0:80,1:30,2:20,3:20,4:10,5:5 +hfsq=on > hfsqr ~u2r -5;3;, From 2850370d37453c4a716d4d6b48dffc5d0da5b8d5 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 19 Jun 2023 13:58:36 +0000 Subject: [PATCH 175/210] in the end hardwiring Sun18 HOL3 schedule (also known as sched2) --- CASC/Schedules.cpp | 702 ++++++++++++++++++++++----------------------- 1 file changed, 337 insertions(+), 365 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index bdf0058a10..1b32877f84 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5135,507 +5135,479 @@ void Schedules::getSnakeTptpSatSchedule(const Shell::Property& property, Schedul } void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick) { - // Champion singleton-schedule for 100000Mi - quick.push("lrs+1010_1:1_chr=on:ntd=on:i=99890:si=on:rtra=on_0"); - // Improves by expected 2036.1064401970548 probs costing 99889 Mi - // Sub-schedule for 50Mi strat cap / 400Mi overall limit - quick.push("dis+1002_1:128_acc=on:er=filter:i=10:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=2:si=on:rtra=on_0"); + // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit + quick.push("dis+10_1:128_hud=1:i=96:si=on:rtra=on_0"); + quick.push("dis+1002_1:1024_fsd=on:hud=1:nm=32:piset=or:i=3:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:i=5:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_au=on:c=on:fsr=off:piset=equals:i=303:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=385:si=on:rtra=on_0"); + quick.push("dis+1002_1:128_acc=on:er=filter:i=17:si=on:rtra=on_0"); quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=29:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=915:si=on:rtra=on_0"); quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=21:si=on:rtra=on_0"); - quick.push("lrs+1003_1:1_au=on:e2e=on:kws=inv_frequency:i=4:si=on:rtra=on_0"); + quick.push("lrs-3_1:1024_cbe=off:chr=on:tnu=1:i=31:si=on:rtra=on_0"); + quick.push("dis+1010_913633:131072_aac=none:apa=on:au=on:awrs=converge:awrsf=150:bd=off:c=on:cbe=off:chr=on:cnfonf=off:e2e=on:fe=off:hud=13:kws=precedence:lma=on:nm=13:ntd=on:pe=on:plsq=on:sgt=15:sp=frequency:ss=axioms:tgt=ground:uhcvi=on:i=6:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=6:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=1044:si=on:rtra=on_0"); + quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=127:si=on:rtra=on_0"); quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=3:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=21:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_cond=on:e2e=on:i=61:si=on:rtra=on_0"); quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=14:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=51:si=on:rtra=on_0"); - quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=35:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=10:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_acc=on:bd=off:er=filter:fsr=off:nwc=3.0:piset=and:i=8:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=1041:si=on:rtra=on_0"); + quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=96:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_cnfonf=lazy_not_gen_be_off:hud=1:ins=1:i=11:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sgt=16:ss=axioms:i=140:si=on:rtra=on_0"); + quick.push("lrs+1002_1:4_au=on:av=off:bsr=on:cbe=off:nm=2:i=56:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=275:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=18:si=on:rtra=on_0"); - quick.push("lrs-3_4:1_au=on:kws=arity_squared:nm=2:sos=on:i=26:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=44:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=191:si=on:rtra=on_0"); + quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=100:si=on:rtra=on_0"); quick.push("ott+21_1:1_apa=on:au=on:cnfonf=off:sos=on:i=3:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=238:si=on:rtra=on_0"); quick.push("lrs+2_1:1_apa=on:au=on:bd=preordered:cnfonf=off:cs=on:ixr=off:sos=on:i=3:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=5:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:fsr=off:i=51:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_anc=all_dependent:au=on:cbe=off:fde=unused:ntd=on:i=7:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:i=3:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=6:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=18:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:prag=on:i=24:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bsd=on:cbe=off:cnfonf=conj_eager:fd=off:fsr=off:hi=on:i=33:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=4:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:i=4:si=on:rtra=on_0"); - // Improves by expected 115.21851314081785 probs costing 397 Mi - // Sub-schedule for 100Mi strat cap / 800Mi overall limit - quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); - quick.push("lrs+1010_1:40_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=3,1:sac=on:i=89:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=51:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:bd=off:cnfonf=lazy_pi_sigma_gen:s2a=on:sac=on:sd=1:sgt=20:ss=axioms:i=100:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=100:si=on:rtra=on_0"); - quick.push("lrs+1002_1:4_au=on:av=off:bsr=on:cbe=off:nm=2:i=56:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=100:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=80:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=35:si=on:rtra=on_0"); - quick.push("dis+10_1:6_au=on:bd=off:plsq=on:plsqr=1,32:sd=1:sgt=100:ss=axioms:i=65:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=25:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=conj_eager:nwc=3.0:s2a=on:ss=axioms:st=1.5:i=101:si=on:rtra=on_0"); - // Improves by expected 42.665333251487866 probs costing 796 Mi - // Sub-schedule for 150Mi strat cap / 1200Mi overall limit - quick.push("dis+1002_1:20_au=on:e2e=on:ss=axioms:uhcvi=on:i=98:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=151:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=151:si=on:rtra=on_0"); - quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=150:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:hud=7:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=105:si=on:rtra=on_0"); - quick.push("lrs+21_1:16_au=on:bd=off:piset=and:i=39:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=150:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=151:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:c=on:fsr=off:ntd=on:prag=on:sd=1:sos=all:ss=axioms:st=5.0:i=23:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=lazy_not_gen:ntd=on:piset=and:ss=axioms:st=1.5:i=144:si=on:rtra=on_0"); - quick.push("dis+10_1:1_aac=none:cs=on:i=47:si=on:rtra=on_0"); - // Improves by expected 45.8718568158491 probs costing 1198 Mi - // Sub-schedule for 500Mi strat cap / 4000Mi overall limit - quick.push("lrs+1002_1:5_er=filter:fsr=off:i=15:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=500:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=303:si=on:rtra=on_0"); - quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=110:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_cond=on:e2e=on:i=61:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=495:si=on:rtra=on_0"); - quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=96:si=on:rtra=on_0"); - quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=118:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=4:si=on:rtra=on_0"); quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=149:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=498:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_hud=1:ss=axioms:i=85:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=150:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=199:si=on:rtra=on_0"); quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=83:si=on:rtra=on_0"); + quick.push("lrs+21_1:16_au=on:bd=off:piset=and:i=39:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=721:si=on:rtra=on_0"); + quick.push("lrs+2_1:1024_cnfonf=lazy_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:i=39:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=all_dependent:au=on:cbe=off:fde=unused:ntd=on:i=6:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:c=on:sac=on:slsq=on:slsqc=2:i=206:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=lazy_not_gen:fsr=off:kws=precedence:nwc=5.0:s2a=on:ss=axioms:st=1.5:i=448:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:i=3:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=7:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=16:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=42:si=on:rtra=on_0"); quick.push("lrs+10_1:10_au=on:av=off:cbe=off:cnfonf=lazy_pi_sigma_gen:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=98:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=88:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=438:si=on:rtra=on_0"); - quick.push("lrs+10_1:50_fe=off:kws=frequency:nm=64:ntd=on:sp=frequency:i=18:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=302:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_chr=on:prag=on:i=8:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=94:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=90:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cbe=off:fd=off:fs=off:fsr=off:nm=0:i=12:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=432:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=274:si=on:rtra=on_0"); + quick.push("dis+10_1:1_aac=none:cs=on:i=47:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=37:si=on:rtra=on_0"); - // Improves by expected 97.0840642045528 probs costing 3984 Mi - // Sub-schedule for 1000Mi strat cap / 8000Mi overall limit - quick.push("dis+1002_1:1_cha=on:hud=10:nwc=10.0:prag=on:tnu=1:i=96:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=981:si=on:rtra=on_0"); + quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=23:si=on:rtra=on_0"); + quick.push("lrs+2_16:1_acc=model:au=on:bd=off:c=on:e2e=on:nm=2:sos=all:i=15:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=1021:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=2:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_au=on:bsd=on:cbe=off:cnfonf=off:fe=axiom:fsd=on:i=71:si=on:rtra=on_0"); + // Improves by expected 2307.356128646384 probs costing 9597 Mi + // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit + quick.push("dis+2_1:1_cha=on:hud=7:nwc=3.0:prag=on:tnu=2:i=134:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=337:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=362:si=on:rtra=on_0"); + quick.push("dis+21_1:5_au=on:ntd=on:nwc=5.0:s2a=on:ss=axioms:st=5.0:i=204:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=5:si=on:rtra=on_0"); quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); - quick.push("lrs+1003_1:1_e2e=on:i=149:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=2:sos=all:ss=axioms:i=177:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=287:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=129:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=424:si=on:rtra=on_0"); + quick.push("dis+1004_16:1_avsq=on:avsqr=1,16:cnfonf=lazy_gen:cs=on:fe=off:tgt=ground:tnu=1:i=231:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=297:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=182:si=on:rtra=on_0"); quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=130:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=283:si=on:rtra=on_0"); + quick.push("lrs+21_1:16_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=7,4:i=570:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=310:si=on:rtra=on_0"); quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=33:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:s2a=on:sp=weighted_frequency:ss=axioms:i=297:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=189:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=1000:si=on:rtra=on_0"); - quick.push("lrs+1002_1:4_au=on:av=off:bsr=on:cbe=off:nm=2:i=56:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=457:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=335:si=on:rtra=on_0"); - quick.push("lrs+2_1:8_erd=off:plsq=on:plsqr=32,1:sos=on:i=152:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=770:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bsd=on:fe=axiom:fsd=on:ntd=on:nwc=10.0:i=166:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=190:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=104:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=182:si=on:rtra=on_0"); + quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); + quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=390:si=on:rtra=on_0"); + quick.push("lrs+2_1:8_erd=off:plsq=on:plsqr=32,1:sos=on:i=189:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=279:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:i=36:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=940:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=422:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_au=on:bd=off:cnfonf=lazy_not_gen_be_off:nwc=10.0:piset=and:i=182:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_av=off:bd=off:fd=off:kws=precedence:nwc=3.0:prag=on:rawr=on:sos=all:sp=reverse_frequency:i=230:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cbe=off:cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=148:si=on:rtra=on_0"); quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=104:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=770:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1200:si=on:rtra=on_0"); quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=164:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=392:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_simp:sgt=5:sos=on:ss=axioms:i=278:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:sgt=100:sos=all:ss=axioms:i=324:si=on:rtra=on_0"); - // Improves by expected 64.69592254381683 probs costing 7995 Mi - // Sub-schedule for 1500Mi strat cap / 12000Mi overall limit + quick.push("lrs+10_1:1_au=on:sd=1:sgt=32:sos=on:ss=axioms:i=141:si=on:rtra=on_0"); + // Improves by expected 70.9985008982394 probs costing 9575 Mi + // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit + quick.push("lrs+10_1:64_hud=5:plsq=on:plsqr=2011171,524288:i=593:si=on:rtra=on_0"); + quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=4759:si=on:rtra=on_0"); + quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=906:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=668:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=1670:si=on:rtra=on_0"); + quick.push("ott+1010_5:1_av=off:fe=off:ins=1:kws=precedence:sp=reverse_arity:i=794:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=294:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=471:si=on:rtra=on_0"); - quick.push("dis+21_1:5_au=on:ntd=on:nwc=5.0:s2a=on:ss=axioms:st=5.0:i=201:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_cnfonf=conj_eager:fsr=off:prag=on:sd=4:sgt=10:ss=axioms:i=490:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:s2a=on:sd=7:ss=axioms:st=1.5:i=342:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1456:si=on:rtra=on_0"); - quick.push("lrs+21_1:16_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=7,4:i=658:si=on:rtra=on_0"); + quick.push("dis+1002_1:14_anc=none:bs=unit_only:nm=32:ntd=on:s2a=on:sos=on:i=599:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=970:si=on:rtra=on_0"); + quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=383:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_nm=20:s2a=on:s2at=3.0:sp=const_frequency:i=1083:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=1398:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_cnfonf=conj_eager:fsr=off:prag=on:sd=4:sgt=10:ss=axioms:i=562:si=on:rtra=on_0"); + quick.push("lrs+1010_1:2_au=on:e2e=on:sd=3:ss=axioms:st=3.0:i=1208:si=on:rtra=on_0"); + quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:s2a=on:sd=7:ss=axioms:st=1.5:i=343:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1655:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=6454:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=501:si=on:rtra=on_0"); quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=40:si=on:rtra=on_0"); - quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=65:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=401:si=on:rtra=on_0"); - quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=247:si=on:rtra=on_0"); - quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=353:si=on:rtra=on_0"); - quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:plsq=on:plsqr=32,1:prag=on:i=187:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_av=off:fe=off:hud=5:piset=or:prag=on:i=452:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=1149:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:nwc=5.0:s2a=on:s2at=2.0:sac=on:sd=7:ss=axioms:st=2.0:i=358:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=279:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=408:si=on:rtra=on_0"); - quick.push("lrs+1_1:1_au=on:cbe=off:ntd=on:i=161:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=1487:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sp=unary_first:i=153:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_au=on:fde=none:slsq=on:i=258:si=on:rtra=on_0"); - quick.push("dis+10_1:1_bd=off:fsr=off:ixr=off:nwc=10.0:plsq=on:plsqc=1:plsqr=5977431,65536:rnwc=on:i=844:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=382:si=on:rtra=on_0"); - quick.push("lrs+2_11:1_bsr=unit_only:cnfonf=off:e2e=on:hud=10:nm=64:sos=all:i=50:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:nwc=10.0:s2a=on:i=460:si=on:rtra=on_0"); - // Improves by expected 41.07809882068872 probs costing 11987 Mi - // Sub-schedule for 5000Mi strat cap / 40000Mi overall limit - quick.push("dis+1002_1:1_cha=on:hud=10:nwc=10.0:prag=on:tnu=1:i=96:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1024_fde=none:kws=precedence:prag=on:sac=on:sos=on:i=409:si=on:rtra=on_0"); - quick.push("ott+1010_5:1_av=off:fe=off:ins=1:kws=precedence:sp=reverse_arity:i=794:si=on:rtra=on_0"); - quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=348:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=1372:si=on:rtra=on_0"); - quick.push("lrs+1002_1:40_au=on:bsd=on:cbe=off:cnfonf=lazy_gen:ntd=on:i=247:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=599:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=4913:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=746:si=on:rtra=on_0"); quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=106:si=on:rtra=on_0"); quick.push("lrs+21_1:1_cha=on:cnfonf=off:hud=10:kws=inv_frequency:lcm=predicate:sgt=32:sos=on:sp=occurrence:ss=axioms:i=136:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=386:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=3756:si=on:rtra=on_0"); - quick.push("dis+10_1:1_atotf=0.1:cbe=off:sd=3:ss=axioms:st=2.0:i=372:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=4810:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=2020:si=on:rtra=on_0"); + quick.push("dis+10_1:1_atotf=0.1:cbe=off:sd=3:ss=axioms:st=2.0:i=375:si=on:rtra=on_0"); + quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=353:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=8250:si=on:rtra=on_0"); quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:plsq=on:plsqr=32,1:prag=on:i=187:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=393:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:fde=unused:i=636:si=on:rtra=on_0"); + quick.push("lrs+1010_2:3_au=on:fsr=off:sd=4:ss=axioms:st=1.5:i=371:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_bd=off:e2e=on:fde=unused:kws=precedence:sac=on:sos=on:ss=axioms:i=434:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_av=off:fe=off:hud=5:piset=or:prag=on:i=452:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5411:si=on:rtra=on_0"); quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=1110:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_amm=off:cs=on:kws=precedence:nwc=10.0:piset=all:s2a=on:sac=on:sp=unary_frequency:spb=goal:ss=axioms:st=3.0:i=590:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=432:si=on:rtra=on_0"); + quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=2517:si=on:rtra=on_0"); + quick.push("dis+10_8:1_apa=on:cnfonf=off:e2e=on:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=783:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_amm=off:au=on:bsd=on:cbe=off:cnfonf=lazy_gen:sp=unary_frequency:i=481:si=on:rtra=on_0"); quick.push("lrs+1010_1:64_aac=none:acc=on:au=on:c=on:cbe=off:ccuc=small_ones:chr=on:cnfonf=lazy_not_gen:fde=unused:hud=10:kws=precedence:nicw=on:piset=all_but_not_eq:sd=2:sp=reverse_arity:ss=axioms:i=536:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4218:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:fde=none:sd=1:ss=axioms:st=3.0:i=4405:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:ixr=off:i=578:si=on:rtra=on_0"); - quick.push("dis+10_1:1_apa=on:au=on:avsq=on:cnfonf=off:kws=inv_arity:ntd=on:i=412:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4350:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:nwc=5.0:s2a=on:s2at=2.0:sac=on:sd=7:ss=axioms:st=2.0:i=358:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=102:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=700:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=283:si=on:rtra=on_0"); + quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=147:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=932:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=2401:si=on:rtra=on_0"); + quick.push("lrs+2_1:1024_cnfonf=lazy_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:i=576:si=on:rtra=on_0"); quick.push("dis+10_1:1_av=off:bsd=on:bsr=unit_only:fd=off:hud=8:nm=16:prag=on:i=715:si=on:rtra=on_0"); - quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1387:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_cnfonf=lazy_pi_sigma_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=const_min:i=3183:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1762:si=on:rtra=on_0"); quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=503:si=on:rtra=on_0"); - quick.push("lrs+1010_1:10_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:sp=occurrence:i=414:si=on:rtra=on_0"); + quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=5104:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=312:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sp=unary_first:i=153:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:fde=none:slsq=on:i=258:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=770:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=474:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=1001:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=4436:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=90:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:bd=off:bsr=unit_only:sd=2:sgt=32:sos=all:ss=axioms:i=454:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2183:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1133:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_cbe=off:cnfonf=lazy_not_gen_be_off:ins=1:i=569:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=1229:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=466:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1335:si=on:rtra=on_0"); + quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=1213:si=on:rtra=on_0"); + quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=4528:si=on:rtra=on_0"); quick.push("dis+10_1:1_sd=2:sgt=20:slsq=on:ss=axioms:st=6.0:i=443:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=556:si=on:rtra=on_0"); - // Improves by expected 106.3086921640514 probs costing 39908 Mi - // Sub-schedule for 10000Mi strat cap / 80000Mi overall limit - quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=651:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=1511:si=on:rtra=on_0"); - quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=301:si=on:rtra=on_0"); - quick.push("ott+1010_3:1_nm=20:s2a=on:s2at=3.0:sp=const_frequency:i=871:si=on:rtra=on_0"); - quick.push("lrs+1010_1:2_au=on:e2e=on:sd=3:ss=axioms:st=3.0:i=1208:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:cnfonf=off:e2e=on:plsq=on:i=584:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=fast:fsr=off:piset=or:sp=const_frequency:uhcvi=on:updr=off:i=314:si=on:rtra=on_0"); + quick.push("ott+10_1:1_aac=none:apa=on:au=on:cnfonf=off:ntd=on:nwc=12.0:sos=on:i=865:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_acc=model:avsq=on:ixr=off:prag=on:s2a=on:sac=on:i=1702:si=on:rtra=on_0"); + // Improves by expected 222.00339648111566 probs costing 95907 Mi + // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=454:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=517:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1871:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); + quick.push("lrs-3_1:1024_cbe=off:chr=on:tnu=1:i=464:si=on:rtra=on_0"); quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=3174:si=on:rtra=on_0"); quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=244:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=1972:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=386:si=on:rtra=on_0"); quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=1201:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=2020:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all:c=on:cnfonf=off:fsr=off:kws=inv_frequency:nwc=5.0:sos=on:sp=occurrence:i=344:si=on:rtra=on_0"); quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=643:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=8787:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5605:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_av=off:cnfonf=lazy_not_be_gen:fd=preordered:hud=5:nm=10:ntd=on:nwc=10.0:piset=and:i=748:si=on:rtra=on_0"); - quick.push("dis+10_8:1_apa=on:cnfonf=off:e2e=on:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=783:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=534:si=on:rtra=on_0"); - quick.push("dis+10_16:1_hud=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sd=1:sgt=64:ss=axioms:i=4637:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=149:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=765:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); + quick.push("lrs+2_1:1024_anc=all:cnfonf=off:cs=on:e2e=on:nm=20:s2at=1.5:slsq=on:slsqr=1,2:spb=goal:i=340:si=on:rtra=on_0"); + quick.push("dis+10_16:1_hud=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sd=1:sgt=64:ss=axioms:i=8480:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=1321:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=101:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_cnfonf=off:fsr=off:ins=2:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=5390:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:ixr=off:i=578:si=on:rtra=on_0"); - quick.push("ott+1010_2:1_cha=on:cnfonf=lazy_not_gen_be_off:hud=22:nwc=10.0:piset=and:prag=on:i=327:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:ntd=on:s2a=on:ss=axioms:st=1.5:i=1244:si=on:rtra=on_0"); - quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4925:si=on:rtra=on_0"); - quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3671:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=5061:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_bd=off:sd=1:sgt=16:ss=axioms:i=4604:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3665:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=147:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=2401:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bsd=on:fe=axiom:fsd=on:ntd=on:nwc=10.0:i=166:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=9970:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sp=unary_first:i=153:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=3710:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=10148:si=on:rtra=on_0"); quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=644:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=1001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:10_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:sp=occurrence:i=307:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=831:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=474:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:erd=off:s2a=on:s2at=3.0:sos=all:i=1174:si=on:rtra=on_0"); + quick.push("ott+1002_1:4_c=on:chr=on:cnfonf=lazy_not_be_gen:hud=10:nm=10:piset=all_but_not_eq:rp=on:spb=goal:uhcvi=on:i=2678:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2105:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); - quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=882:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=1229:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:hud=4:nm=60:i=453:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:fde=none:ins=1:sp=const_max:i=858:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:fde=none:ins=1:sp=const_max:i=2325:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2573:si=on:rtra=on_0"); quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1302:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_apa=on:au=on:av=off:cnfonf=off:e2e=on:nm=0:nwc=10.0:i=2781:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=554:si=on:rtra=on_0"); quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=556:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2561:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1312:si=on:rtra=on_0"); - // Improves by expected 76.459461923398 probs costing 79826 Mi - // Sub-schedule for 15000Mi strat cap / 120000Mi overall limit - quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=2860:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=419:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=464:si=on:rtra=on_0"); - quick.push("dis+1002_1:14_anc=none:bs=unit_only:nm=32:ntd=on:s2a=on:sos=on:i=599:si=on:rtra=on_0"); + quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1516:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=5045:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=5271:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=3915:si=on:rtra=on_0"); + // Improves by expected 55.1760158232652 probs costing 95981 Mi + // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=454:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=18808:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=951:si=on:rtra=on_0"); quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5856:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=2295:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1658:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:avsqr=9,8:cnfonf=lazy_gen:fe=off:ntd=on:i=3186:si=on:rtra=on_0"); quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3201:si=on:rtra=on_0"); - quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=4895:si=on:rtra=on_0"); - quick.push("lrs+1002_1:32_au=on:ins=2:nm=16:ntd=on:piset=all_but_not_eq:sp=occurrence:i=2962:si=on:rtra=on_0"); - quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=1972:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=386:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all:c=on:cnfonf=off:fsr=off:kws=inv_frequency:nwc=5.0:sos=on:sp=occurrence:i=344:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:cnfonf=off:plsq=on:plsqc=1:plsqr=3,1:i=4962:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=631:si=on:rtra=on_0"); - quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=2928:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=149:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5271:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=5974:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=8216:si=on:rtra=on_0"); - quick.push("ott+1010_2:1_cha=on:cnfonf=lazy_not_gen_be_off:hud=22:nwc=10.0:piset=and:prag=on:i=327:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_bd=off:sd=1:sgt=16:ss=axioms:i=4604:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=3321:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=5115:si=on:rtra=on_0"); - quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1762:si=on:rtra=on_0"); - quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=5185:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=631:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=831:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1219:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=877:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); - quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=13994:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_chr=on:hud=4:nm=60:i=453:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:fde=none:ins=1:sp=const_max:i=2325:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2573:si=on:rtra=on_0"); - quick.push("lrs+1002_1:20_afp=1000:au=on:bsd=on:cnfonf=lazy_not_gen_be_off:sos=all:sp=const_max:i=2236:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_apa=on:au=on:av=off:cnfonf=off:e2e=on:nm=0:nwc=10.0:i=4683:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=468:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=556:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2561:si=on:rtra=on_0"); - quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1516:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); - // Improves by expected 45.15315786953146 probs costing 119573 Mi - // Sub-schedule for 50000Mi strat cap / 400000Mi overall limit - quick.push("lrs+1002_1:28_bd=off:cnfonf=lazy_simp:plsq=on:plsqr=1,1:prag=on:i=1003:si=on:rtra=on_0"); - quick.push("dis-1010_4:1_c=on:fe=axiom:nwc=10.0:prag=on:sd=2:ss=axioms:st=5.0:i=8711:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:nm=2:i=1748:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_bsr=unit_only:cnfonf=lazy_not_be_gen:fe=off:ntd=on:i=13529:si=on:rtra=on_0"); - quick.push("ott+1002_1:1024_au=on:avsq=on:c=on:cnfonf=lazy_not_gen_be_off:sos=all:i=14611:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=6604:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=6525:si=on:rtra=on_0"); quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=3397:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=9808:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=14014:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=7311:si=on:rtra=on_0"); quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=10516:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=5059:si=on:rtra=on_0"); - quick.push("lrs+1003_1:1_au=on:e2e=on:kws=inv_frequency:i=1332:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=32887:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:e2e=on:nm=2:sos=all:sp=const_min:spb=non_intro:i=9526:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=11933:si=on:rtra=on_0"); - quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=12400:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=13832:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_au=on:ins=2:nm=16:ntd=on:piset=all_but_not_eq:sp=occurrence:i=3049:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=13163:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:au=on:bd=off:cnfonf=lazy_pi_sigma_gen:s2a=on:sac=on:sd=1:sgt=20:ss=axioms:i=33583:si=on:rtra=on_0"); quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=15557:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bs=on:c=on:fe=axiom:hud=5:ins=1:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=all:tnu=1:i=2580:si=on:rtra=on_0"); quick.push("lrs+10_1:2_ntd=on:nwc=10.0:plsq=on:plsqc=1:plsqr=2,1:ss=axioms:i=9078:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:cnfonf=off:plsq=on:plsqc=1:plsqr=3,1:i=6017:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=14041:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_anc=all_dependent:au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:piset=not:i=27944:si=on:rtra=on_0"); quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=631:si=on:rtra=on_0"); - quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=938:si=on:rtra=on_0"); + quick.push("dis+1003_1:1_cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1647:si=on:rtra=on_0"); + quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=2928:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=178:si=on:rtra=on_0"); + quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=407:si=on:rtra=on_0"); quick.push("dis+1002_1:1_aac=none:au=on:bd=off:cnfonf=conj_eager:nwc=5.0:sgt=5:sp=reverse_arity:ss=axioms:i=5786:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=43570:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=765:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sos=on:ss=axioms:i=13001:si=on:rtra=on_0"); quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=2014:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4218:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=6576:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=21060:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=6594:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=24965:si=on:rtra=on_0"); quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:ixr=off:i=578:si=on:rtra=on_0"); - quick.push("lrs+1002_3:1_anc=none:avsq=on:bd=off:fd=off:kws=frequency:i=6312:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:nwc=10.0:sac=on:i=27021:si=on:rtra=on_0"); + quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=5643:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=8216:si=on:rtra=on_0"); quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=8382:si=on:rtra=on_0"); quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4925:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=2765:si=on:rtra=on_0"); + quick.push("lrs+1010_2:1_au=on:cnfonf=off:e2e=on:fd=off:plsq=on:plsqc=1:plsqr=32,1:i=31909:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=5576:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_au=on:cnfonf=off:e2e=on:fde=none:nicw=on:s2a=on:s2at=5.0:tgt=full:i=8883:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=1868:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=5115:si=on:rtra=on_0"); + quick.push("dis+10_1:10_bd=preordered:e2e=on:fde=none:fe=axiom:hud=3:kws=precedence:nwc=3.0:prag=on:sp=const_max:tgt=full:i=4165:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=2570:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=1895:si=on:rtra=on_0"); quick.push("lrs+10_1:50_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:plsq=on:plsqr=1,32:sos=all:i=2971:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_cnfonf=lazy_pi_sigma_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=const_min:i=3515:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1219:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3789:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=4301:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=631:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:c=on:fsr=off:ntd=on:prag=on:sd=1:sos=all:ss=axioms:st=5.0:i=50967:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=4041:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=474:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=16164:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fde=none:kws=precedence:piset=not:prag=on:slsq=on:slsqc=1:sp=unary_frequency:i=23684:si=on:rtra=on_0"); quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2077:si=on:rtra=on_0"); - quick.push("dis+10_5:1_av=off:ntd=on:s2a=on:s2at=3.0:sgt=16:sp=unary_frequency:ss=axioms:i=8390:si=on:rtra=on_0"); + quick.push("dis+10_5:1_av=off:ntd=on:s2a=on:s2at=3.0:sgt=16:sp=unary_frequency:ss=axioms:i=8425:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=15536:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=5201:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=6534:si=on:rtra=on_0"); + quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=14881:si=on:rtra=on_0"); + quick.push("lrs+30_1:1_aac=none:au=on:cbe=off:cs=on:nm=2:rawr=on:sos=on:i=3107:si=on:rtra=on_0"); quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=6645:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=466:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=12597:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2011:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=15668:si=on:rtra=on_0"); + quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); + quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=28397:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=8517:si=on:rtra=on_0"); - quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=3174:si=on:rtra=on_0"); + quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=5473:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=556:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3629:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1810:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1267:si=on:rtra=on_0"); - // Improves by expected 54.905594552162924 probs costing 398841 Mi - // Sub-schedule for 100000Mi strat cap / 800000Mi overall limit - quick.push("lrs+10_1:1_cs=on:sd=1:sgt=8:ss=axioms:i=4020:si=on:rtra=on_0"); - quick.push("dis-1010_4:1_c=on:fe=axiom:nwc=10.0:prag=on:sd=2:ss=axioms:st=5.0:i=7625:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:nm=2:i=1748:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=54710:si=on:rtra=on_0"); + quick.push("lrs+1004_1:24_i=5433:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); + quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=4929:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=8781:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=2618:si=on:rtra=on_0"); + quick.push("lrs+1_1:1_au=on:cbe=off:cs=on:nm=4:i=14341:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_pi_sigma_gen:fsr=off:ins=1:kws=inv_precedence:nwc=10.0:ss=axioms:st=2.0:i=41234:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=axiom:hud=10:prag=on:ss=axioms:i=20712:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=5271:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=2343:si=on:rtra=on_0"); + quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=6901:si=on:rtra=on_0"); + // Improves by expected 98.96101312504828 probs costing 956359 Mi + // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit + quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=11612:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=117046:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=54712:si=on:rtra=on_0"); quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5756:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cs=on:e2e=on:sos=all:i=9071:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=13682:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=4895:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=6806:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=33498:si=on:rtra=on_0"); - quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=12400:si=on:rtra=on_0"); - quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=1863:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=14014:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=35698:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=2607:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:cnfonf=off:plsq=on:plsqc=1:plsqr=3,1:i=4962:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=14041:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_av=off:awrs=converge:awrsf=200:kws=precedence:i=30351:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_anc=all_dependent:au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:piset=not:i=27944:si=on:rtra=on_0"); - quick.push("dis+1010_1:128_au=on:awrs=converge:plsq=on:plsqc=1:tgt=full:i=10220:si=on:rtra=on_0"); - quick.push("dis+1003_1:1_cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2725:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=3743:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bs=on:c=on:fe=axiom:hud=5:ins=1:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=all:tnu=1:i=2580:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=17804:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_av=off:awrs=converge:awrsf=200:kws=precedence:i=40767:si=on:rtra=on_0"); + quick.push("dis+1010_1:128_au=on:awrs=converge:plsq=on:plsqc=1:tgt=full:i=11111:si=on:rtra=on_0"); + quick.push("dis+1003_1:1_cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=9745:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=4408:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5207:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=3884:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cbe=off:fde=unused:fe=axiom:prag=on:s2a=on:s2agt=30:sp=frequency:i=17020:si=on:rtra=on_0"); quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=17549:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=17538:si=on:rtra=on_0"); quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:nwc=10.0:sac=on:i=27021:si=on:rtra=on_0"); - quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=6101:si=on:rtra=on_0"); - quick.push("lrs+1010_2:1_au=on:cnfonf=off:e2e=on:fd=off:plsq=on:plsqc=1:plsqr=32,1:i=31318:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_au=on:cnfonf=off:e2e=on:fde=none:nicw=on:s2a=on:s2at=5.0:tgt=full:i=7616:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=off:sd=3:sgt=10:ss=axioms:st=1.5:i=2801:si=on:rtra=on_0"); - quick.push("lrs+1_1:1_au=on:cbe=off:ntd=on:i=19350:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=2570:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=97713:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:c=on:fsr=off:ntd=on:prag=on:sd=1:sos=all:ss=axioms:st=5.0:i=50967:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3942:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=5419:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_av=off:hud=10:i=3847:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=15536:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=579:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=58848:si=on:rtra=on_0"); - quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=10993:si=on:rtra=on_0"); - quick.push("lrs+1002_1:20_afp=1000:au=on:bsd=on:cnfonf=lazy_not_gen_be_off:sos=all:sp=const_max:i=33085:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2011:si=on:rtra=on_0"); - quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); - quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3629:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1810:si=on:rtra=on_0"); - // Improves by expected 26.42704028288048 probs costing 798251 Mi - // Sub-schedule for 150000Mi strat cap / 1200000Mi overall limit - quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5756:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:cbe=off:i=89965:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:fde=none:ins=2:i=91905:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=50164:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=33734:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=11933:si=on:rtra=on_0"); - quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=35698:si=on:rtra=on_0"); - quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=17804:si=on:rtra=on_0"); - quick.push("dis+1010_1:128_au=on:awrs=converge:plsq=on:plsqc=1:tgt=full:i=10220:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=4919:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=133450:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_anc=none:au=on:cnfonf=off:ins=3:sd=1:ss=axioms:i=5974:si=on:rtra=on_0"); - quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); - quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=15783:si=on:rtra=on_0"); - quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=20385:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); + quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=16580:si=on:rtra=on_0"); quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); quick.push("dis+1010_1:16_cnfonf=conj_eager:i=18038:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=58631:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_add=off:cnfonf=lazy_not_gen:kws=frequency:piset=all:i=8801:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=8878:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=45798:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=25498:si=on:rtra=on_0"); + quick.push("dis+10_1:10_bd=preordered:e2e=on:fde=none:fe=axiom:hud=3:kws=precedence:nwc=3.0:prag=on:sp=const_max:tgt=full:i=4165:si=on:rtra=on_0"); + quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=28153:si=on:rtra=on_0"); quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=10001:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3942:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=5419:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=12389:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=21829:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=41327:si=on:rtra=on_0"); - quick.push("dis+1_1:1_amm=off:au=on:piset=and:i=15559:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fde=none:kws=precedence:piset=not:prag=on:slsq=on:slsqc=1:sp=unary_frequency:i=23684:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=8192:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=76334:si=on:rtra=on_0"); + quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=10993:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); + quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=28397:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); - quick.push("lrs+1002_1:15_add=large:au=on:cbe=off:ntd=on:i=31057:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=56980:si=on:rtra=on_0"); - // Improves by expected 11.751493524682386 probs costing 1179452 Mi + quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=14001:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); + quick.push("lrs+1004_1:24_i=5433:si=on:rtra=on_0"); + quick.push("lrs+1_1:1_au=on:cbe=off:cs=on:nm=4:i=14341:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=2343:si=on:rtra=on_0"); + // Improves by expected 18.65331901531936 probs costing 958899 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=29759:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=95893:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=171310:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=182589:si=on:rtra=on_0"); - quick.push("dis+10_1:1_amm=sco:au=on:cbe=off:nm=0:i=33863:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:cbe=off:i=90301:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=49089:si=on:rtra=on_0"); - quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=101333:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=17804:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_av=off:awrs=converge:awrsf=200:kws=precedence:i=49053:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=220001:si=on:rtra=on_0"); + quick.push("dis+10_1:1_amm=sco:au=on:cbe=off:nm=0:i=30667:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=77525:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=33734:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_fe=off:hud=5:nm=2:i=216759:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=9867:si=on:rtra=on_0"); quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=83865:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=133450:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=173649:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=4978:si=on:rtra=on_0"); + quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=15424:si=on:rtra=on_0"); + quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); + quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=50861:si=on:rtra=on_0"); + quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=104812:si=on:rtra=on_0"); quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_cnfonf=conj_eager:i=73522:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_cnfonf=conj_eager:i=18038:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_add=off:cnfonf=lazy_not_gen:kws=frequency:piset=all:i=8801:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=22706:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_bd=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=137969:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:kws=precedence:i=204173:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=133059:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=45798:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=38843:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=97391:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=74319:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=36665:si=on:rtra=on_0"); quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=14027:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=34181:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=120493:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=224352:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=70674:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=240001:si=on:rtra=on_0"); + quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=28397:si=on:rtra=on_0"); + quick.push("dis+1_1:1_amm=off:au=on:piset=and:i=54193:si=on:rtra=on_0"); + quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_awrs=converge:awrsf=80:bs=on:c=on:cbe=off:cnfonf=conj_eager:fsr=off:gs=on:pe=on:piset=and:sac=on:sd=1:sp=frequency:spb=goal:ss=included:i=254848:si=on:rtra=on_0"); - // Improves by expected 7.6847994483280955 probs costing 3025219 Mi + quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); + quick.push("lrs+1004_1:24_i=198698:si=on:rtra=on_0"); + quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=56159:si=on:rtra=on_0"); + quick.push("lrs+2_16:1_acc=model:au=on:bd=off:c=on:e2e=on:nm=2:sos=all:i=84973:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=axiom:hud=10:prag=on:ss=axioms:i=37349:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=2343:si=on:rtra=on_0"); + quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); + // Improves by expected 14.674110326642243 probs costing 3639705 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=182589:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=171310:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=183300:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_fe=off:hud=5:nm=2:i=216759:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); + quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=50861:si=on:rtra=on_0"); + quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_cnfonf=conj_eager:i=73522:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=38843:si=on:rtra=on_0"); quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=214497:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=224352:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=70674:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=39108:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=240001:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); - // Improves by expected 2.8680061743442784 probs costing 1636682 Mi + quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); + quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=64385:si=on:rtra=on_0"); + // Improves by expected 2.47886902012368 probs costing 1680195 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=182589:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=220001:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=164895:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=79792:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); - // Improves by expected 1.2885448149069414 probs costing 869881 Mi - // Fri: Overall score 2775.567019728554 probs on average / budget 8273879 Mi + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=176763:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=240001:si=on:rtra=on_0"); + // Improves by expected 1.049164574553217 probs costing 1065404 Mi + // Sun HOL3 Overall score 2791.350517910691 probs on average / budget 8511622 Mi + + // Fri: Overall score 2775.567019728554 probs on average / budget 8273879 Mi // Tue: Overall score 2758.4199055140407 probs on average / budget 8640381 Mi } \ No newline at end of file From ae902d282e01b432bfe0bd520bf302348b2bdeee Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 19 Jun 2023 15:02:20 +0000 Subject: [PATCH 176/210] added slh schedule --- CASC/PortfolioMode.cpp | 4 ++ CASC/Schedules.cpp | 129 +++++++++++++++++++++++++++++++++++++++++ CASC/Schedules.hpp | 1 + Shell/Options.cpp | 1 + Shell/Options.hpp | 1 + 5 files changed, 136 insertions(+) diff --git a/CASC/PortfolioMode.cpp b/CASC/PortfolioMode.cpp index ee5d6bc587..9889ca86b7 100644 --- a/CASC/PortfolioMode.cpp +++ b/CASC/PortfolioMode.cpp @@ -373,6 +373,10 @@ void PortfolioMode::getSchedules(const Property& prop, Schedule& quick, Schedule case Options::Schedule::SNAKE_TPTP_HOL: Schedules::getSnakeTptpHolSchedule(prop,quick); break; + case Options::Schedule::SNAKE_SLH: + Schedules::getSnakeSlhSchedule(prop,quick); + break; + case Options::Schedule::CASC_2019: case Options::Schedule::CASC: diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 1b32877f84..c0a7992e0c 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5610,4 +5610,133 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul // Fri: Overall score 2775.567019728554 probs on average / budget 8273879 Mi // Tue: Overall score 2758.4199055140407 probs on average / budget 8640381 Mi +} + +void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick) { + // sledgehammering/sledgeTH0.txt + // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit + quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=362:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:sd=2:ss=axioms:st=3.0:i=828:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=449:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=670:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_acc=on:afp=1:au=on:avsq=on:avsqc=1:fd=off:fde=unused:ntd=on:piset=not:sac=on:sos=all:i=625:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:nm=2:sd=2:sos=all:ss=axioms:i=997:si=on:rtra=on_0"); + quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=232:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fde=none:fe=off:hud=5:prag=on:s2pl=no:slsq=on:sos=on:i=529:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1474:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_amm=sco:au=on:bd=off:fde=none:gs=on:hud=5:sos=on:sp=weighted_frequency:i=1054:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:fd=off:nwc=10.0:sos=on:i=671:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:fde=none:sd=1:sos=on:ss=axioms:i=286:si=on:rtra=on_0"); + quick.push("dis+10_1:1_nwc=10.0:sd=1:sgt=32:ss=axioms:i=497:si=on:rtra=on_0"); + quick.push("ott+1002_16:1_aac=none:au=on:fd=off:fde=unused:fsr=off:ins=4:nm=16:ntd=on:sos=on:i=512:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:cnfonf=lazy_pi_sigma_gen:fde=none:i=307:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_hfsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sd=1:sos=on:ss=axioms:uhcvi=on:i=394:si=on:rtra=on_0"); + // Improves by expected 453.6301661906032 probs costing 9871 Mi + // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit + quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=182:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_abs=on:au=on:fde=none:fe=off:ins=2:sos=on:i=400:si=on:rtra=on_0"); + quick.push("lrs+32_1:1_bd=off:hud=10:sos=on:ss=axioms:i=463:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=570:si=on:rtra=on_0"); + quick.push("ott+10_1:1_fde=none:hud=15:piset=all:prag=on:sd=1:sos=on:ss=axioms:st=3.0:i=899:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=1018:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=277:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_au=on:cnfonf=off:hfsq=on:sd=2:sgt=8:ss=axioms:i=543:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_nm=2:sd=2:sos=on:ss=axioms:st=3.0:i=514:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=2993:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_au=on:bd=off:cnfonf=off:e2e=on:ins=3:nm=2:sac=on:sos=all:i=810:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cbe=off:cnfonf=off:fe=axiom:fsr=off:hud=5:ins=2:prag=on:sd=2:ss=axioms:i=422:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=1406:si=on:rtra=on_0"); + quick.push("dis+1002_1:128_au=on:awrs=converge:cnfonf=off:fd=off:ntd=on:s2a=on:sos=on:i=1339:si=on:rtra=on_0"); + quick.push("dis+10_8:1_s2a=on:s2agt=32:sac=on:ss=axioms:i=453:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:fe=off:hud=5:ins=3:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=on:i=514:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:cnfonf=off:fsr=off:hfsq=on:ss=axioms:i=396:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:bd=off:e2e=on:sos=all:ss=axioms:i=347:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_amm=off:anc=all_dependent:cnfonf=lazy_pi_sigma_gen:ins=3:sd=1:sos=on:sp=const_max:ss=axioms:st=4.0:i=390:si=on:rtra=on_0"); + quick.push("ott+1010_1:2_cnfonf=lazy_pi_sigma_gen:cond=fast:fe=axiom:nwc=10.0:sd=1:ss=axioms:i=1032:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_kws=inv_frequency:sd=2:sos=all:ss=axioms:st=1.5:i=470:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bsr=unit_only:kws=precedence:prag=on:sos=on:sp=reverse_arity:ss=axioms:st=3.0:i=1030:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_bd=off:hfsq=on:hfsqr=2,1:ins=2:sd=1:spb=goal_then_units:ss=axioms:i=252:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fde=unused:sd=1:sos=on:ss=axioms:st=2.0:i=312:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_cnfonf=off:sd=2:sgt=8:ss=axioms:st=2.0:tgt=ground:i=509:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1622:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_au=on:cnfonf=off:sd=2:sos=all:sp=frequency:ss=axioms:i=746:si=on:rtra=on_0"); + // Improves by expected 57.2965107727296 probs costing 19882 Mi + // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit + quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1963:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fde=unused:s2a=on:s2at=3.0:i=665:si=on:rtra=on_0"); + quick.push("lrs+10_1:50_au=on:bd=off:e2e=on:fde=unused:lma=on:sos=all:sp=reverse_arity:i=1275:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=599:si=on:rtra=on_0"); + quick.push("dis+10_5:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:sd=2:ss=axioms:i=982:si=on:rtra=on_0"); + quick.push("dis+1002_3:1_cbe=off:fd=off:fde=none:fsr=off:nm=0:nwc=7.0:prag=on:s2a=on:s2at=2.5:sac=on:ss=axioms:st=3.0:i=977:si=on:rtra=on_0"); + quick.push("lrs+1010_4:3_cnfonf=lazy_gen:fe=axiom:nwc=5.0:sos=all:sp=reverse_arity:i=741:si=on:rtra=on_0"); + quick.push("dis+1010_1:1024_cnfonf=off:nm=32:sac=on:sd=1:ss=axioms:i=541:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_not_gen_be_off:fe=axiom:hud=10:sd=1:ss=axioms:i=1138:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_fde=unused:fe=off:kws=precedence:prag=on:sp=const_frequency:ss=axioms:i=3948:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_add=off:au=on:avsq=on:avsqr=3,4:bd=off:cs=on:nwc=5.0:prag=on:sos=on:sp=occurrence:i=716:si=on:rtra=on_0"); + quick.push("dis+1010_3:2_amm=sco:cnfonf=off:nwc=10.0:prag=on:sp=const_frequency:ss=axioms:i=632:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:nwc=10.0:s2a=on:ss=axioms:i=750:si=on:rtra=on_0"); + quick.push("lrs+10_1:40_cnfonf=off:hud=1:ins=3:nm=16:prag=on:sac=on:sos=all:i=783:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:cnfonf=off:fd=off:fe=off:sos=on:i=1016:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=490:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_prag=on:sd=1:sp=const_frequency:ss=axioms:tgt=ground:i=2413:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_atotf=0.3:fd=off:fe=off:ntd=on:sos=on:i=489:si=on:rtra=on_0"); + quick.push("ott+10_1:1024_c=on:fsr=off:hud=15:ins=3:kws=precedence:nwc=8.0:sp=reverse_arity:i=682:si=on:rtra=on_0"); + quick.push("dis+21_1:8_aac=none:cnfonf=lazy_pi_sigma_gen:fd=off:hud=10:lma=on:nm=50:sos=all:i=2178:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=3530:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=3446:si=on:rtra=on_0"); + // Improves by expected 33.787293400423636 probs costing 29932 Mi + // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit + quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_acc=on:au=on:cnfonf=off:fde=none:fe=axiom:fsr=off:hfsq=on:ins=2:nm=64:ntd=on:plsq=on:plsqc=1:plsqr=15,1:sac=on:i=8493:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=2901:si=on:rtra=on_0"); + quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1367:si=on:rtra=on_0"); + quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:fde=none:fe=off:nm=32:prag=on:sos=on:i=2744:si=on:rtra=on_0"); + quick.push("lrs+1002_5:1_bd=preordered:cnfonf=off:fe=off:plsq=on:plsql=on:prag=on:sd=1:ss=axioms:i=979:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1030:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1405:si=on:rtra=on_0"); + quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=272:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bs=unit_only:fd=off:fe=axiom:fsr=off:hfsq=on:hfsqc=1:ins=3:piset=all_but_not_eq:sos=on:i=1549:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1172:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=1424:si=on:rtra=on_0"); + quick.push("dis+1010_3:2_amm=sco:cnfonf=off:nwc=10.0:prag=on:sp=const_frequency:ss=axioms:i=632:si=on:rtra=on_0"); + quick.push("dis+1002_3:2_apa=on:au=on:cnfonf=off:hfsq=on:ntd=on:s2a=on:s2agt=8:i=2746:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_atotf=0.1:e2e=on:fde=unused:nwc=10.0:s2a=on:i=2054:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=off:sd=2:sgt=16:ss=axioms:i=1580:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_fde=none:fe=axiom:hud=5:nm=2:prag=on:sos=all:i=2490:si=on:rtra=on_0"); + quick.push("dis+1002_4:1_amm=sco:apa=on:au=on:bsr=on:cnfonf=off:fde=none:ins=1:nwc=5.0:plsq=on:sac=on:sgt=20:sos=on:ss=axioms:i=1322:si=on:rtra=on_0"); + quick.push("lrs+20_1:2_hfsq=on:ins=3:nwc=5.0:piset=all_but_not_eq:sd=1:sos=on:ss=axioms:st=1.5:i=1701:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=6491:si=on:rtra=on_0"); + quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:av=off:ins=1:sd=2:sos=on:sp=frequency:ss=axioms:i=2109:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:avsql=on:avsqr=16,1:bd=off:sos=all:i=2234:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:cs=on:fsr=off:s2a=on:i=2356:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); + quick.push("dis+10_1:1_apa=on:au=on:cnfonf=off:ins=1:ntd=on:sd=1:sgt=16:ss=axioms:tgt=ground:i=3558:si=on:rtra=on_0"); + // Improves by expected 20.95850413027136 probs costing 59729 Mi + // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit + quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); + quick.push("dis+10_1:128_cnfonf=off:sd=1:sgt=64:ss=axioms:i=4063:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:hud=10:kws=inv_precedence:ntd=on:sos=all:sp=const_max:spb=goal:i=9791:si=on:rtra=on_0"); + quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=10525:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1299:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=4735:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=4554:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=11219:si=on:rtra=on_0"); + quick.push("ott+10_1:1_acc=on:add=large:avsq=on:cnfonf=off:fde=none:nwc=10.0:i=2492:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:i=3201:si=on:rtra=on_0"); + quick.push("lrs+21_3:1_amm=off:fe=off:hud=10:ntd=on:sos=on:uhcvi=on:i=1579:si=on:rtra=on_0"); + quick.push("dis+1002_4:1_amm=sco:apa=on:au=on:bsr=on:cnfonf=off:fde=none:ins=1:nwc=5.0:plsq=on:sac=on:sgt=20:sos=on:ss=axioms:i=1322:si=on:rtra=on_0"); + quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); + quick.push("dis+1010_8:15_au=on:cbe=off:cnfonf=off:fsr=off:kws=frequency:ntd=on:plsq=on:rawr=on:sp=const_min:tgt=ground:i=5455:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:sos=on:ss=axioms:i=13332:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=3948:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=9159:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_anc=all_dependent:fde=none:kws=precedence:prag=on:sac=on:sos=on:tnu=2:uhcvi=on:i=5501:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_av=off:cnfonf=off:e2e=on:fe=axiom:hud=10:nm=2:sos=all:sp=frequency:i=16834:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1622:si=on:rtra=on_0"); + // Improves by expected 12.261416048415864 probs costing 117756 Mi + // Mon19 Overall score 577.9338905424436 probs on average / budget 237170 Mi } \ No newline at end of file diff --git a/CASC/Schedules.hpp b/CASC/Schedules.hpp index 031ceb43c5..16c50c7606 100644 --- a/CASC/Schedules.hpp +++ b/CASC/Schedules.hpp @@ -50,6 +50,7 @@ class Schedules static void getSnakeTptpUnsSchedule(const Shell::Property& property, Schedule& quick); static void getSnakeTptpSatSchedule(const Shell::Property& property, Schedule& quick); static void getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick); + static void getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick); }; } diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 888917f347..e23cd2a489 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -171,6 +171,7 @@ void Options::init() "snake_tptp_uns", "snake_tptp_sat", "snake_tptp_hol", + "snake_slh", "struct_induction"}); _schedule.description = "Schedule to be run by the portfolio mode. casc and smtcomp usually point to the most recent schedule in that category. file loads the schedule from a file specified in --schedule_file. Note that some old schedules may contain option values that are no longer supported - see ignore_missing."; _lookup.insert(&_schedule); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index bea5842c0f..f102fd7f06 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -425,6 +425,7 @@ class Options SNAKE_TPTP_UNS, SNAKE_TPTP_SAT, SNAKE_TPTP_HOL, + SNAKE_SLH, STRUCT_INDUCTION }; From ce4f29576a67978553563ef3fde81376d5bcbf66 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 20 Jun 2023 10:00:42 +0200 Subject: [PATCH 177/210] fix a wrong warning --- Shell/Options.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shell/Options.cpp b/Shell/Options.cpp index e23cd2a489..30db7ae7df 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -1035,7 +1035,7 @@ void Options::init() _hoFeaturesSplitQueueLayeredArrangement = BoolOptionValue("ho_features_split_queue_layered_arrangement","hfsql",true); _hoFeaturesSplitQueueLayeredArrangement.description = "If turned on, use a layered arrangement to split clauses into queues. Otherwise use a tammet-style-arrangement."; _lookup.insert(&_hoFeaturesSplitQueueLayeredArrangement); - _hoFeaturesSplitQueueLayeredArrangement.onlyUsefulWith(_useTheorySplitQueues.is(equal(true))); + _hoFeaturesSplitQueueLayeredArrangement.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); _hoFeaturesSplitQueueLayeredArrangement.tag(OptionTag::SATURATION); #endif From 72dfb4dfd4b46e937f8b8348d21ae0d058eaf01a Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 20 Jun 2023 08:11:49 +0000 Subject: [PATCH 178/210] Thuesday SLH schedule --- CASC/Schedules.cpp | 147 ++++++++++++++++++++++++--------------------- 1 file changed, 78 insertions(+), 69 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index c0a7992e0c..09c9dbcf3b 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5615,128 +5615,137 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick) { // sledgehammering/sledgeTH0.txt // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit + quick.push("dis+10_1:1_apa=on:au=on:bsr=unit_only:cbe=off:cnfonf=off:fd=off:fde=unused:ntd=on:plsq=on:plsqc=1:plsqr=21,1:s2agt=8:slsq=on:slsqc=1:i=584:si=on:rtra=on_0"); quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=362:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:sd=2:ss=axioms:st=3.0:i=828:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=449:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=532:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_gen:nwc=3.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=912:si=on:rtra=on_0"); quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=670:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_e2e=on:sd=2:ss=axioms:st=1.5:i=310:si=on:rtra=on_0"); quick.push("dis+1010_8:1_acc=on:afp=1:au=on:avsq=on:avsqc=1:fd=off:fde=unused:ntd=on:piset=not:sac=on:sos=all:i=625:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:nm=2:sd=2:sos=all:ss=axioms:i=997:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:nm=2:sd=2:sos=all:ss=axioms:i=844:si=on:rtra=on_0"); quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=232:si=on:rtra=on_0"); quick.push("dis+1002_1:1_bd=off:fde=none:fe=off:hud=5:prag=on:s2pl=no:slsq=on:sos=on:i=529:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1474:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1016:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_amm=sco:au=on:bd=off:fde=none:gs=on:hud=5:sos=on:sp=weighted_frequency:i=1054:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:fd=off:nwc=10.0:sos=on:i=671:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_acc=on:fde=none:sd=1:sos=on:ss=axioms:i=286:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:fd=off:nwc=10.0:sos=on:i=651:si=on:rtra=on_0"); quick.push("dis+10_1:1_nwc=10.0:sd=1:sgt=32:ss=axioms:i=497:si=on:rtra=on_0"); - quick.push("ott+1002_16:1_aac=none:au=on:fd=off:fde=unused:fsr=off:ins=4:nm=16:ntd=on:sos=on:i=512:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_acc=on:cnfonf=lazy_pi_sigma_gen:fde=none:i=307:si=on:rtra=on_0"); + quick.push("ott+1002_16:1_aac=none:au=on:fd=off:fde=unused:fsr=off:ins=4:nm=16:ntd=on:sos=on:i=447:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_hfsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sd=1:sos=on:ss=axioms:uhcvi=on:i=394:si=on:rtra=on_0"); - // Improves by expected 453.6301661906032 probs costing 9871 Mi + quick.push("lrs+10_1:1_kws=precedence:sd=1:sgt=16:sos=on:sp=frequency:ss=axioms:i=296:si=on:rtra=on_0"); + // Improves by expected 458.9009337349063 probs costing 9938 Mi // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit - quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=182:si=on:rtra=on_0"); quick.push("ott+1010_1:1_abs=on:au=on:fde=none:fe=off:ins=2:sos=on:i=400:si=on:rtra=on_0"); - quick.push("lrs+32_1:1_bd=off:hud=10:sos=on:ss=axioms:i=463:si=on:rtra=on_0"); + quick.push("lrs+32_1:1_bd=off:hud=10:sos=on:ss=axioms:i=458:si=on:rtra=on_0"); quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=570:si=on:rtra=on_0"); - quick.push("ott+10_1:1_fde=none:hud=15:piset=all:prag=on:sd=1:sos=on:ss=axioms:st=3.0:i=899:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:fd=off:fe=off:hud=23:sos=on:i=404:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bsd=on:cnfonf=off:erd=off:nwc=10.0:sd=1:sgt=16:sp=const_frequency:ss=axioms:st=2.0:i=461:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1024_bd=off:fde=unused:hfsq=on:hfsqr=1,16:plsq=on:plsqc=1:plsqr=32,1:prag=on:rawr=on:s2a=on:sos=on:ss=axioms:i=687:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=1018:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=277:si=on:rtra=on_0"); + quick.push("lrs+1002_1:2_bd=off:erd=off:hud=10:ins=2:nm=64:nwc=6.0:piset=small_set:sd=1:sos=on:ss=axioms:st=2.0:i=528:si=on:rtra=on_0"); + quick.push("dis+1010_1:32_au=on:av=off:cnfonf=off:ins=1:sd=1:ss=axioms:st=3.0:tgt=full:i=581:si=on:rtra=on_0"); quick.push("dis+1002_8:1_au=on:cnfonf=off:hfsq=on:sd=2:sgt=8:ss=axioms:i=543:si=on:rtra=on_0"); + quick.push("dis+10_1:1_aac=none:acc=model:fde=unused:hfsq=on:sd=1:ss=axioms:i=303:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=off:bsr=unit_only:fd=off:fde=unused:fe=axiom:hud=5:nm=10:piset=equals:sos=on:sp=unary_frequency:spb=non_intro:ss=axioms:i=539:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:sos=all:ss=axioms:st=2.0:i=437:si=on:rtra=on_0"); quick.push("lrs+10_1:1_nm=2:sd=2:sos=on:ss=axioms:st=3.0:i=514:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=2993:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_au=on:bd=off:cnfonf=off:e2e=on:ins=3:nm=2:sac=on:sos=all:i=810:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cbe=off:cnfonf=off:fe=axiom:fsr=off:hud=5:ins=2:prag=on:sd=2:ss=axioms:i=422:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=1406:si=on:rtra=on_0"); quick.push("dis+1002_1:128_au=on:awrs=converge:cnfonf=off:fd=off:ntd=on:s2a=on:sos=on:i=1339:si=on:rtra=on_0"); quick.push("dis+10_8:1_s2a=on:s2agt=32:sac=on:ss=axioms:i=453:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:nwc=10.0:s2a=on:ss=axioms:i=637:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_av=off:fe=off:hud=5:ins=3:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=on:i=514:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=on:cnfonf=off:fsr=off:hfsq=on:ss=axioms:i=396:si=on:rtra=on_0"); + quick.push("lrs+10_3:2_au=on:bd=off:cnfonf=off:e2e=on:sd=1:sos=all:ss=axioms:st=2.0:i=351:si=on:rtra=on_0"); quick.push("ott+10_1:1_au=on:bd=off:e2e=on:sos=all:ss=axioms:i=347:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_add=off:apa=on:au=on:cnfonf=off:e2e=on:er=tagged:kws=inv_precedence:s2a=on:sos=on:sp=occurrence:ss=axioms:st=1.2:i=759:si=on:rtra=on_0"); + quick.push("ott+21_1:1_cnfonf=off:nm=2:nwc=10.0:sgt=10:ss=axioms:i=777:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_amm=off:anc=all_dependent:cnfonf=lazy_pi_sigma_gen:ins=3:sd=1:sos=on:sp=const_max:ss=axioms:st=4.0:i=390:si=on:rtra=on_0"); - quick.push("ott+1010_1:2_cnfonf=lazy_pi_sigma_gen:cond=fast:fe=axiom:nwc=10.0:sd=1:ss=axioms:i=1032:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_av=off:bd=off:fd=off:fs=off:fsr=off:sd=1:sos=on:ss=axioms:st=3.0:i=254:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:plsq=on:sd=1:sos=on:ss=axioms:st=1.5:i=296:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1801:si=on:rtra=on_0"); quick.push("lrs+10_1:1_kws=inv_frequency:sd=2:sos=all:ss=axioms:st=1.5:i=470:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_au=on:cnfonf=off:sd=2:sos=all:sp=frequency:ss=axioms:i=771:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_bsr=unit_only:kws=precedence:prag=on:sos=on:sp=reverse_arity:ss=axioms:st=3.0:i=1030:si=on:rtra=on_0"); quick.push("dis+1010_1:1_bd=off:hfsq=on:hfsqr=2,1:ins=2:sd=1:spb=goal_then_units:ss=axioms:i=252:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:fde=unused:sd=1:sos=on:ss=axioms:st=2.0:i=312:si=on:rtra=on_0"); quick.push("dis+10_1:1024_cnfonf=off:sd=2:sgt=8:ss=axioms:st=2.0:tgt=ground:i=509:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1622:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_au=on:cnfonf=off:sd=2:sos=all:sp=frequency:ss=axioms:i=746:si=on:rtra=on_0"); - // Improves by expected 57.2965107727296 probs costing 19882 Mi + quick.push("lrs+1010_1:1024_bd=off:cnfonf=off:rp=on:sd=1:sp=unary_frequency:ss=axioms:i=556:si=on:rtra=on_0"); + quick.push("ott+1002_1:128_av=off:fde=none:hud=10:sd=2:sgt=16:sos=on:sp=const_frequency:ss=axioms:i=1076:si=on:rtra=on_0"); + // Improves by expected 61.06416849212749 probs costing 19992 Mi // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit - quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1963:si=on:rtra=on_0"); quick.push("dis+10_1:1_fde=unused:s2a=on:s2at=3.0:i=665:si=on:rtra=on_0"); - quick.push("lrs+10_1:50_au=on:bd=off:e2e=on:fde=unused:lma=on:sos=all:sp=reverse_arity:i=1275:si=on:rtra=on_0"); quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=599:si=on:rtra=on_0"); + quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1154:si=on:rtra=on_0"); quick.push("dis+10_5:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:sd=2:ss=axioms:i=982:si=on:rtra=on_0"); - quick.push("dis+1002_3:1_cbe=off:fd=off:fde=none:fsr=off:nm=0:nwc=7.0:prag=on:s2a=on:s2at=2.5:sac=on:ss=axioms:st=3.0:i=977:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_nm=2:nwc=6.0:s2a=on:sd=2:ss=axioms:st=1.5:i=1812:si=on:rtra=on_0"); quick.push("lrs+1010_4:3_cnfonf=lazy_gen:fe=axiom:nwc=5.0:sos=all:sp=reverse_arity:i=741:si=on:rtra=on_0"); - quick.push("dis+1010_1:1024_cnfonf=off:nm=32:sac=on:sd=1:ss=axioms:i=541:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_not_gen_be_off:fe=axiom:hud=10:sd=1:ss=axioms:i=1138:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_fde=unused:fe=off:kws=precedence:prag=on:sp=const_frequency:ss=axioms:i=3948:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1032:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1299:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1024_bd=off:fde=unused:hfsq=on:hfsqr=1,16:plsq=on:plsqc=1:plsqr=32,1:prag=on:rawr=on:s2a=on:sos=on:ss=axioms:i=1949:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_fde=unused:fe=off:kws=precedence:prag=on:sp=const_frequency:ss=axioms:i=3798:si=on:rtra=on_0"); quick.push("lrs+10_1:1_add=off:au=on:avsq=on:avsqr=3,4:bd=off:cs=on:nwc=5.0:prag=on:sos=on:sp=occurrence:i=716:si=on:rtra=on_0"); - quick.push("dis+1010_3:2_amm=sco:cnfonf=off:nwc=10.0:prag=on:sp=const_frequency:ss=axioms:i=632:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:nwc=10.0:s2a=on:ss=axioms:i=750:si=on:rtra=on_0"); + quick.push("dis+21_1:1024_av=off:e2e=on:sos=on:i=1201:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=3195:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=1262:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_amm=off:au=on:bd=off:cnfonf=off:hfsq=on:nm=2:sd=2:ss=axioms:st=2.0:i=820:si=on:rtra=on_0"); quick.push("lrs+10_1:40_cnfonf=off:hud=1:ins=3:nm=16:prag=on:sac=on:sos=all:i=783:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:cnfonf=off:fd=off:fe=off:sos=on:i=1016:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=490:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_prag=on:sd=1:sp=const_frequency:ss=axioms:tgt=ground:i=2413:si=on:rtra=on_0"); - quick.push("lrs+10_1:16_atotf=0.3:fd=off:fe=off:ntd=on:sos=on:i=489:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_add=off:apa=on:au=on:cnfonf=off:e2e=on:er=tagged:kws=inv_precedence:s2a=on:sos=on:sp=occurrence:ss=axioms:st=1.2:i=509:si=on:rtra=on_0"); + quick.push("ott+1010_1:2_cnfonf=lazy_pi_sigma_gen:cond=fast:fe=axiom:nwc=10.0:sd=1:ss=axioms:i=1032:si=on:rtra=on_0"); quick.push("ott+10_1:1024_c=on:fsr=off:hud=15:ins=3:kws=precedence:nwc=8.0:sp=reverse_arity:i=682:si=on:rtra=on_0"); quick.push("dis+21_1:8_aac=none:cnfonf=lazy_pi_sigma_gen:fd=off:hud=10:lma=on:nm=50:sos=all:i=2178:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=3530:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=3446:si=on:rtra=on_0"); - // Improves by expected 33.787293400423636 probs costing 29932 Mi + // Improves by expected 35.153584769349564 probs costing 29834 Mi // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); - quick.push("lrs+1010_5:1_acc=on:au=on:cnfonf=off:fde=none:fe=axiom:fsr=off:hfsq=on:ins=2:nm=64:ntd=on:plsq=on:plsqc=1:plsqr=15,1:sac=on:i=8493:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=2901:si=on:rtra=on_0"); - quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1367:si=on:rtra=on_0"); + quick.push("dis+10_1:1_apa=on:au=on:bsr=unit_only:cbe=off:cnfonf=off:fd=off:fde=unused:ntd=on:plsq=on:plsqc=1:plsqr=21,1:s2agt=8:slsq=on:slsqc=1:i=1951:si=on:rtra=on_0"); quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:fde=none:fe=off:nm=32:prag=on:sos=on:i=2744:si=on:rtra=on_0"); - quick.push("lrs+1002_5:1_bd=preordered:cnfonf=off:fe=off:plsq=on:plsql=on:prag=on:sd=1:ss=axioms:i=979:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1030:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1405:si=on:rtra=on_0"); - quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=272:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1032:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1328:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_anc=all_dependent:fde=none:kws=precedence:prag=on:sac=on:sos=on:tnu=2:uhcvi=on:i=5501:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=off:bsr=unit_only:fd=off:fde=unused:fe=axiom:hud=5:nm=10:piset=equals:sos=on:sp=unary_frequency:spb=non_intro:ss=axioms:i=539:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fde=none:fe=off:hud=5:prag=on:s2pl=no:slsq=on:sos=on:i=529:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:bs=unit_only:fd=off:fe=axiom:fsr=off:hfsq=on:hfsqc=1:ins=3:piset=all_but_not_eq:sos=on:i=1549:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1172:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=1424:si=on:rtra=on_0"); - quick.push("dis+1010_3:2_amm=sco:cnfonf=off:nwc=10.0:prag=on:sp=const_frequency:ss=axioms:i=632:si=on:rtra=on_0"); - quick.push("dis+1002_3:2_apa=on:au=on:cnfonf=off:hfsq=on:ntd=on:s2a=on:s2agt=8:i=2746:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_atotf=0.1:e2e=on:fde=unused:nwc=10.0:s2a=on:i=2054:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=off:sd=2:sgt=16:ss=axioms:i=1580:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_cnfonf=off:fde=unused:fe=off:nm=10:ntd=on:piset=pi_sigma:sos=on:i=2675:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_au=on:bd=off:cnfonf=off:e2e=on:ins=3:nm=2:sac=on:sos=all:i=707:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:cnfonf=off:fsr=off:hfsq=on:ss=axioms:i=900:si=on:rtra=on_0"); quick.push("lrs+10_5:1_fde=none:fe=axiom:hud=5:nm=2:prag=on:sos=all:i=2490:si=on:rtra=on_0"); - quick.push("dis+1002_4:1_amm=sco:apa=on:au=on:bsr=on:cnfonf=off:fde=none:ins=1:nwc=5.0:plsq=on:sac=on:sgt=20:sos=on:ss=axioms:i=1322:si=on:rtra=on_0"); quick.push("lrs+20_1:2_hfsq=on:ins=3:nwc=5.0:piset=all_but_not_eq:sd=1:sos=on:ss=axioms:st=1.5:i=1701:si=on:rtra=on_0"); quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=6491:si=on:rtra=on_0"); quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:av=off:ins=1:sd=2:sos=on:sp=frequency:ss=axioms:i=2109:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:avsq=on:avsql=on:avsqr=16,1:bd=off:sos=all:i=2234:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_av=off:e2e=on:ntd=on:sd=2:sgt=16:ss=axioms:i=3752:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:cs=on:fsr=off:s2a=on:i=2356:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=4401:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:av=off:cnfonf=lazy_gen:nwc=10.0:s2a=on:s2at=3.0:ss=axioms:i=2409:si=on:rtra=on_0"); quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); - quick.push("dis+10_1:1_apa=on:au=on:cnfonf=off:ins=1:ntd=on:sd=1:sgt=16:ss=axioms:tgt=ground:i=3558:si=on:rtra=on_0"); - // Improves by expected 20.95850413027136 probs costing 59729 Mi + quick.push("ott+2_1:1_au=on:bsd=on:bsr=unit_only:cnfonf=off:nm=32:s2a=on:sp=unary_first:i=2025:si=on:rtra=on_0"); + quick.push("dis+1004_1:1_apa=on:au=on:av=off:bsd=on:cnfonf=off:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=occurrence:tgt=ground:i=6699:si=on:rtra=on_0"); + // Improves by expected 19.712235757325942 probs costing 59380 Mi // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); - quick.push("dis+10_1:128_cnfonf=off:sd=1:sgt=64:ss=axioms:i=4063:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:hud=10:kws=inv_precedence:ntd=on:sos=all:sp=const_max:spb=goal:i=9791:si=on:rtra=on_0"); + quick.push("ott+10_1:32_au=on:fd=off:nm=32:s2a=on:s2agt=64:s2at=3.0:sd=1:sos=all:sp=const_frequency:ss=axioms:st=5.0:i=6069:si=on:rtra=on_0"); + quick.push("dis+10_1:12_acc=on:alpa=false:au=on:cnfonf=off:fd=off:lma=on:ntd=on:plsq=on:plsqr=32,1:sos=all:sp=const_max:i=2626:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_acc=on:au=on:cnfonf=off:fde=none:fe=axiom:fsr=off:hfsq=on:ins=2:nm=64:ntd=on:plsq=on:plsqc=1:plsqr=15,1:sac=on:i=8176:si=on:rtra=on_0"); + quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1367:si=on:rtra=on_0"); quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=10525:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1299:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=14044:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1457:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=929:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=4735:si=on:rtra=on_0"); + quick.push("dis+10_1:1_aac=none:acc=model:fde=unused:hfsq=on:sd=1:ss=axioms:i=1064:si=on:rtra=on_0"); quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=4554:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=11219:si=on:rtra=on_0"); - quick.push("ott+10_1:1_acc=on:add=large:avsq=on:cnfonf=off:fde=none:nwc=10.0:i=2492:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:i=3201:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_cnfonf=off:fde=unused:fe=off:nm=10:ntd=on:piset=pi_sigma:sos=on:i=5166:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=11230:si=on:rtra=on_0"); quick.push("lrs+21_3:1_amm=off:fe=off:hud=10:ntd=on:sos=on:uhcvi=on:i=1579:si=on:rtra=on_0"); - quick.push("dis+1002_4:1_amm=sco:apa=on:au=on:bsr=on:cnfonf=off:fde=none:ins=1:nwc=5.0:plsq=on:sac=on:sgt=20:sos=on:ss=axioms:i=1322:si=on:rtra=on_0"); + quick.push("dis+21_1:16_e2e=on:fe=axiom:nm=2:sos=on:sp=reverse_arity:uhcvi=on:i=5701:si=on:rtra=on_0"); + quick.push("ott+21_1:1_cnfonf=off:nm=2:nwc=10.0:sgt=10:ss=axioms:i=843:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_prag=on:sd=1:sp=const_frequency:ss=axioms:tgt=ground:i=2077:si=on:rtra=on_0"); quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); quick.push("dis+1010_8:15_au=on:cbe=off:cnfonf=off:fsr=off:kws=frequency:ntd=on:plsq=on:rawr=on:sp=const_min:tgt=ground:i=5455:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:sos=on:ss=axioms:i=13332:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=3948:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1703:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:s2a=on:sos=all:i=6628:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:sos=on:ss=axioms:i=12232:si=on:rtra=on_0"); quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=9159:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_anc=all_dependent:fde=none:kws=precedence:prag=on:sac=on:sos=on:tnu=2:uhcvi=on:i=5501:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_av=off:cnfonf=off:e2e=on:fe=axiom:hud=10:nm=2:sos=all:sp=frequency:i=16834:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1622:si=on:rtra=on_0"); - // Improves by expected 12.261416048415864 probs costing 117756 Mi + quick.push("ott+2_1:1_au=on:bsd=on:bsr=unit_only:cnfonf=off:nm=32:s2a=on:sp=unary_first:i=2025:si=on:rtra=on_0"); + // Improves by expected 10.798310963931263 probs costing 115940 Mi + // Tue20 Overall score 585.6292337176405 probs on average / budget 235084 Mi + // Mon19 Overall score 577.9338905424436 probs on average / budget 237170 Mi } \ No newline at end of file From b96460b0bcc9131fe4e181da256ae2d359d8d44e Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 20 Jun 2023 12:30:54 +0200 Subject: [PATCH 179/210] Revert "Thuesday SLH schedule" This reverts commit 72dfb4dfd4b46e937f8b8348d21ae0d058eaf01a. --- CASC/Schedules.cpp | 147 +++++++++++++++++++++------------------------ 1 file changed, 69 insertions(+), 78 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 09c9dbcf3b..c0a7992e0c 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5615,137 +5615,128 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick) { // sledgehammering/sledgeTH0.txt // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit - quick.push("dis+10_1:1_apa=on:au=on:bsr=unit_only:cbe=off:cnfonf=off:fd=off:fde=unused:ntd=on:plsq=on:plsqc=1:plsqr=21,1:s2agt=8:slsq=on:slsqc=1:i=584:si=on:rtra=on_0"); quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=362:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=532:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_gen:nwc=3.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=912:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:sd=2:ss=axioms:st=3.0:i=828:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=449:si=on:rtra=on_0"); quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=670:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_e2e=on:sd=2:ss=axioms:st=1.5:i=310:si=on:rtra=on_0"); quick.push("dis+1010_8:1_acc=on:afp=1:au=on:avsq=on:avsqc=1:fd=off:fde=unused:ntd=on:piset=not:sac=on:sos=all:i=625:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:nm=2:sd=2:sos=all:ss=axioms:i=844:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:nm=2:sd=2:sos=all:ss=axioms:i=997:si=on:rtra=on_0"); quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=232:si=on:rtra=on_0"); quick.push("dis+1002_1:1_bd=off:fde=none:fe=off:hud=5:prag=on:s2pl=no:slsq=on:sos=on:i=529:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1474:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_amm=sco:au=on:bd=off:fde=none:gs=on:hud=5:sos=on:sp=weighted_frequency:i=1054:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:fd=off:nwc=10.0:sos=on:i=651:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:fd=off:nwc=10.0:sos=on:i=671:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:fde=none:sd=1:sos=on:ss=axioms:i=286:si=on:rtra=on_0"); quick.push("dis+10_1:1_nwc=10.0:sd=1:sgt=32:ss=axioms:i=497:si=on:rtra=on_0"); - quick.push("ott+1002_16:1_aac=none:au=on:fd=off:fde=unused:fsr=off:ins=4:nm=16:ntd=on:sos=on:i=447:si=on:rtra=on_0"); + quick.push("ott+1002_16:1_aac=none:au=on:fd=off:fde=unused:fsr=off:ins=4:nm=16:ntd=on:sos=on:i=512:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:cnfonf=lazy_pi_sigma_gen:fde=none:i=307:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_hfsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sd=1:sos=on:ss=axioms:uhcvi=on:i=394:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_kws=precedence:sd=1:sgt=16:sos=on:sp=frequency:ss=axioms:i=296:si=on:rtra=on_0"); - // Improves by expected 458.9009337349063 probs costing 9938 Mi + // Improves by expected 453.6301661906032 probs costing 9871 Mi // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit + quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=182:si=on:rtra=on_0"); quick.push("ott+1010_1:1_abs=on:au=on:fde=none:fe=off:ins=2:sos=on:i=400:si=on:rtra=on_0"); - quick.push("lrs+32_1:1_bd=off:hud=10:sos=on:ss=axioms:i=458:si=on:rtra=on_0"); + quick.push("lrs+32_1:1_bd=off:hud=10:sos=on:ss=axioms:i=463:si=on:rtra=on_0"); quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=570:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:fd=off:fe=off:hud=23:sos=on:i=404:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bsd=on:cnfonf=off:erd=off:nwc=10.0:sd=1:sgt=16:sp=const_frequency:ss=axioms:st=2.0:i=461:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1024_bd=off:fde=unused:hfsq=on:hfsqr=1,16:plsq=on:plsqc=1:plsqr=32,1:prag=on:rawr=on:s2a=on:sos=on:ss=axioms:i=687:si=on:rtra=on_0"); + quick.push("ott+10_1:1_fde=none:hud=15:piset=all:prag=on:sd=1:sos=on:ss=axioms:st=3.0:i=899:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=1018:si=on:rtra=on_0"); - quick.push("lrs+1002_1:2_bd=off:erd=off:hud=10:ins=2:nm=64:nwc=6.0:piset=small_set:sd=1:sos=on:ss=axioms:st=2.0:i=528:si=on:rtra=on_0"); - quick.push("dis+1010_1:32_au=on:av=off:cnfonf=off:ins=1:sd=1:ss=axioms:st=3.0:tgt=full:i=581:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=277:si=on:rtra=on_0"); quick.push("dis+1002_8:1_au=on:cnfonf=off:hfsq=on:sd=2:sgt=8:ss=axioms:i=543:si=on:rtra=on_0"); - quick.push("dis+10_1:1_aac=none:acc=model:fde=unused:hfsq=on:sd=1:ss=axioms:i=303:si=on:rtra=on_0"); - quick.push("ott+10_1:1_bd=off:bsr=unit_only:fd=off:fde=unused:fe=axiom:hud=5:nm=10:piset=equals:sos=on:sp=unary_frequency:spb=non_intro:ss=axioms:i=539:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:sos=all:ss=axioms:st=2.0:i=437:si=on:rtra=on_0"); quick.push("lrs+10_1:1_nm=2:sd=2:sos=on:ss=axioms:st=3.0:i=514:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=2993:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_au=on:bd=off:cnfonf=off:e2e=on:ins=3:nm=2:sac=on:sos=all:i=810:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cbe=off:cnfonf=off:fe=axiom:fsr=off:hud=5:ins=2:prag=on:sd=2:ss=axioms:i=422:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=1406:si=on:rtra=on_0"); quick.push("dis+1002_1:128_au=on:awrs=converge:cnfonf=off:fd=off:ntd=on:s2a=on:sos=on:i=1339:si=on:rtra=on_0"); quick.push("dis+10_8:1_s2a=on:s2agt=32:sac=on:ss=axioms:i=453:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:nwc=10.0:s2a=on:ss=axioms:i=637:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_av=off:fe=off:hud=5:ins=3:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=on:i=514:si=on:rtra=on_0"); - quick.push("lrs+10_3:2_au=on:bd=off:cnfonf=off:e2e=on:sd=1:sos=all:ss=axioms:st=2.0:i=351:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:cnfonf=off:fsr=off:hfsq=on:ss=axioms:i=396:si=on:rtra=on_0"); quick.push("ott+10_1:1_au=on:bd=off:e2e=on:sos=all:ss=axioms:i=347:si=on:rtra=on_0"); - quick.push("lrs+1002_1:3_add=off:apa=on:au=on:cnfonf=off:e2e=on:er=tagged:kws=inv_precedence:s2a=on:sos=on:sp=occurrence:ss=axioms:st=1.2:i=759:si=on:rtra=on_0"); - quick.push("ott+21_1:1_cnfonf=off:nm=2:nwc=10.0:sgt=10:ss=axioms:i=777:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_amm=off:anc=all_dependent:cnfonf=lazy_pi_sigma_gen:ins=3:sd=1:sos=on:sp=const_max:ss=axioms:st=4.0:i=390:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_av=off:bd=off:fd=off:fs=off:fsr=off:sd=1:sos=on:ss=axioms:st=3.0:i=254:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:plsq=on:sd=1:sos=on:ss=axioms:st=1.5:i=296:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1801:si=on:rtra=on_0"); + quick.push("ott+1010_1:2_cnfonf=lazy_pi_sigma_gen:cond=fast:fe=axiom:nwc=10.0:sd=1:ss=axioms:i=1032:si=on:rtra=on_0"); quick.push("lrs+10_1:1_kws=inv_frequency:sd=2:sos=all:ss=axioms:st=1.5:i=470:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_au=on:cnfonf=off:sd=2:sos=all:sp=frequency:ss=axioms:i=771:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_bsr=unit_only:kws=precedence:prag=on:sos=on:sp=reverse_arity:ss=axioms:st=3.0:i=1030:si=on:rtra=on_0"); quick.push("dis+1010_1:1_bd=off:hfsq=on:hfsqr=2,1:ins=2:sd=1:spb=goal_then_units:ss=axioms:i=252:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fde=unused:sd=1:sos=on:ss=axioms:st=2.0:i=312:si=on:rtra=on_0"); quick.push("dis+10_1:1024_cnfonf=off:sd=2:sgt=8:ss=axioms:st=2.0:tgt=ground:i=509:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_bd=off:cnfonf=off:rp=on:sd=1:sp=unary_frequency:ss=axioms:i=556:si=on:rtra=on_0"); - quick.push("ott+1002_1:128_av=off:fde=none:hud=10:sd=2:sgt=16:sos=on:sp=const_frequency:ss=axioms:i=1076:si=on:rtra=on_0"); - // Improves by expected 61.06416849212749 probs costing 19992 Mi + quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1622:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_au=on:cnfonf=off:sd=2:sos=all:sp=frequency:ss=axioms:i=746:si=on:rtra=on_0"); + // Improves by expected 57.2965107727296 probs costing 19882 Mi // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit + quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1963:si=on:rtra=on_0"); quick.push("dis+10_1:1_fde=unused:s2a=on:s2at=3.0:i=665:si=on:rtra=on_0"); + quick.push("lrs+10_1:50_au=on:bd=off:e2e=on:fde=unused:lma=on:sos=all:sp=reverse_arity:i=1275:si=on:rtra=on_0"); quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=599:si=on:rtra=on_0"); - quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1154:si=on:rtra=on_0"); quick.push("dis+10_5:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:sd=2:ss=axioms:i=982:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_nm=2:nwc=6.0:s2a=on:sd=2:ss=axioms:st=1.5:i=1812:si=on:rtra=on_0"); + quick.push("dis+1002_3:1_cbe=off:fd=off:fde=none:fsr=off:nm=0:nwc=7.0:prag=on:s2a=on:s2at=2.5:sac=on:ss=axioms:st=3.0:i=977:si=on:rtra=on_0"); quick.push("lrs+1010_4:3_cnfonf=lazy_gen:fe=axiom:nwc=5.0:sos=all:sp=reverse_arity:i=741:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1032:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1299:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1024_bd=off:fde=unused:hfsq=on:hfsqr=1,16:plsq=on:plsqc=1:plsqr=32,1:prag=on:rawr=on:s2a=on:sos=on:ss=axioms:i=1949:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_fde=unused:fe=off:kws=precedence:prag=on:sp=const_frequency:ss=axioms:i=3798:si=on:rtra=on_0"); + quick.push("dis+1010_1:1024_cnfonf=off:nm=32:sac=on:sd=1:ss=axioms:i=541:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_not_gen_be_off:fe=axiom:hud=10:sd=1:ss=axioms:i=1138:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_fde=unused:fe=off:kws=precedence:prag=on:sp=const_frequency:ss=axioms:i=3948:si=on:rtra=on_0"); quick.push("lrs+10_1:1_add=off:au=on:avsq=on:avsqr=3,4:bd=off:cs=on:nwc=5.0:prag=on:sos=on:sp=occurrence:i=716:si=on:rtra=on_0"); - quick.push("dis+21_1:1024_av=off:e2e=on:sos=on:i=1201:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=3195:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=1262:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_amm=off:au=on:bd=off:cnfonf=off:hfsq=on:nm=2:sd=2:ss=axioms:st=2.0:i=820:si=on:rtra=on_0"); + quick.push("dis+1010_3:2_amm=sco:cnfonf=off:nwc=10.0:prag=on:sp=const_frequency:ss=axioms:i=632:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:nwc=10.0:s2a=on:ss=axioms:i=750:si=on:rtra=on_0"); quick.push("lrs+10_1:40_cnfonf=off:hud=1:ins=3:nm=16:prag=on:sac=on:sos=all:i=783:si=on:rtra=on_0"); - quick.push("lrs+1002_1:3_add=off:apa=on:au=on:cnfonf=off:e2e=on:er=tagged:kws=inv_precedence:s2a=on:sos=on:sp=occurrence:ss=axioms:st=1.2:i=509:si=on:rtra=on_0"); - quick.push("ott+1010_1:2_cnfonf=lazy_pi_sigma_gen:cond=fast:fe=axiom:nwc=10.0:sd=1:ss=axioms:i=1032:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:cnfonf=off:fd=off:fe=off:sos=on:i=1016:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=490:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_prag=on:sd=1:sp=const_frequency:ss=axioms:tgt=ground:i=2413:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_atotf=0.3:fd=off:fe=off:ntd=on:sos=on:i=489:si=on:rtra=on_0"); quick.push("ott+10_1:1024_c=on:fsr=off:hud=15:ins=3:kws=precedence:nwc=8.0:sp=reverse_arity:i=682:si=on:rtra=on_0"); quick.push("dis+21_1:8_aac=none:cnfonf=lazy_pi_sigma_gen:fd=off:hud=10:lma=on:nm=50:sos=all:i=2178:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=3530:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=3446:si=on:rtra=on_0"); - // Improves by expected 35.153584769349564 probs costing 29834 Mi + // Improves by expected 33.787293400423636 probs costing 29932 Mi // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("dis+10_1:1_apa=on:au=on:bsr=unit_only:cbe=off:cnfonf=off:fd=off:fde=unused:ntd=on:plsq=on:plsqc=1:plsqr=21,1:s2agt=8:slsq=on:slsqc=1:i=1951:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_acc=on:au=on:cnfonf=off:fde=none:fe=axiom:fsr=off:hfsq=on:ins=2:nm=64:ntd=on:plsq=on:plsqc=1:plsqr=15,1:sac=on:i=8493:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=2901:si=on:rtra=on_0"); + quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1367:si=on:rtra=on_0"); quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:fde=none:fe=off:nm=32:prag=on:sos=on:i=2744:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1032:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1328:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_anc=all_dependent:fde=none:kws=precedence:prag=on:sac=on:sos=on:tnu=2:uhcvi=on:i=5501:si=on:rtra=on_0"); - quick.push("ott+10_1:1_bd=off:bsr=unit_only:fd=off:fde=unused:fe=axiom:hud=5:nm=10:piset=equals:sos=on:sp=unary_frequency:spb=non_intro:ss=axioms:i=539:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=off:fde=none:fe=off:hud=5:prag=on:s2pl=no:slsq=on:sos=on:i=529:si=on:rtra=on_0"); + quick.push("lrs+1002_5:1_bd=preordered:cnfonf=off:fe=off:plsq=on:plsql=on:prag=on:sd=1:ss=axioms:i=979:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1030:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1405:si=on:rtra=on_0"); + quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=272:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:bs=unit_only:fd=off:fe=axiom:fsr=off:hfsq=on:hfsqc=1:ins=3:piset=all_but_not_eq:sos=on:i=1549:si=on:rtra=on_0"); - quick.push("lrs-1004_1:1_cnfonf=off:fde=unused:fe=off:nm=10:ntd=on:piset=pi_sigma:sos=on:i=2675:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_au=on:bd=off:cnfonf=off:e2e=on:ins=3:nm=2:sac=on:sos=all:i=707:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=on:cnfonf=off:fsr=off:hfsq=on:ss=axioms:i=900:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1172:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=1424:si=on:rtra=on_0"); + quick.push("dis+1010_3:2_amm=sco:cnfonf=off:nwc=10.0:prag=on:sp=const_frequency:ss=axioms:i=632:si=on:rtra=on_0"); + quick.push("dis+1002_3:2_apa=on:au=on:cnfonf=off:hfsq=on:ntd=on:s2a=on:s2agt=8:i=2746:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_atotf=0.1:e2e=on:fde=unused:nwc=10.0:s2a=on:i=2054:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=off:sd=2:sgt=16:ss=axioms:i=1580:si=on:rtra=on_0"); quick.push("lrs+10_5:1_fde=none:fe=axiom:hud=5:nm=2:prag=on:sos=all:i=2490:si=on:rtra=on_0"); + quick.push("dis+1002_4:1_amm=sco:apa=on:au=on:bsr=on:cnfonf=off:fde=none:ins=1:nwc=5.0:plsq=on:sac=on:sgt=20:sos=on:ss=axioms:i=1322:si=on:rtra=on_0"); quick.push("lrs+20_1:2_hfsq=on:ins=3:nwc=5.0:piset=all_but_not_eq:sd=1:sos=on:ss=axioms:st=1.5:i=1701:si=on:rtra=on_0"); quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=6491:si=on:rtra=on_0"); quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:av=off:ins=1:sd=2:sos=on:sp=frequency:ss=axioms:i=2109:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_av=off:e2e=on:ntd=on:sd=2:sgt=16:ss=axioms:i=3752:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:avsql=on:avsqr=16,1:bd=off:sos=all:i=2234:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:cs=on:fsr=off:s2a=on:i=2356:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=4401:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:av=off:cnfonf=lazy_gen:nwc=10.0:s2a=on:s2at=3.0:ss=axioms:i=2409:si=on:rtra=on_0"); quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:bsd=on:bsr=unit_only:cnfonf=off:nm=32:s2a=on:sp=unary_first:i=2025:si=on:rtra=on_0"); - quick.push("dis+1004_1:1_apa=on:au=on:av=off:bsd=on:cnfonf=off:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=occurrence:tgt=ground:i=6699:si=on:rtra=on_0"); - // Improves by expected 19.712235757325942 probs costing 59380 Mi + quick.push("dis+10_1:1_apa=on:au=on:cnfonf=off:ins=1:ntd=on:sd=1:sgt=16:ss=axioms:tgt=ground:i=3558:si=on:rtra=on_0"); + // Improves by expected 20.95850413027136 probs costing 59729 Mi // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); - quick.push("ott+10_1:32_au=on:fd=off:nm=32:s2a=on:s2agt=64:s2at=3.0:sd=1:sos=all:sp=const_frequency:ss=axioms:st=5.0:i=6069:si=on:rtra=on_0"); - quick.push("dis+10_1:12_acc=on:alpa=false:au=on:cnfonf=off:fd=off:lma=on:ntd=on:plsq=on:plsqr=32,1:sos=all:sp=const_max:i=2626:si=on:rtra=on_0"); - quick.push("lrs+1010_5:1_acc=on:au=on:cnfonf=off:fde=none:fe=axiom:fsr=off:hfsq=on:ins=2:nm=64:ntd=on:plsq=on:plsqc=1:plsqr=15,1:sac=on:i=8176:si=on:rtra=on_0"); - quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1367:si=on:rtra=on_0"); + quick.push("dis+10_1:128_cnfonf=off:sd=1:sgt=64:ss=axioms:i=4063:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:hud=10:kws=inv_precedence:ntd=on:sos=all:sp=const_max:spb=goal:i=9791:si=on:rtra=on_0"); quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=14044:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1457:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=929:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=10525:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1299:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=4735:si=on:rtra=on_0"); - quick.push("dis+10_1:1_aac=none:acc=model:fde=unused:hfsq=on:sd=1:ss=axioms:i=1064:si=on:rtra=on_0"); quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=4554:si=on:rtra=on_0"); - quick.push("lrs-1004_1:1_cnfonf=off:fde=unused:fe=off:nm=10:ntd=on:piset=pi_sigma:sos=on:i=5166:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=11230:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=11219:si=on:rtra=on_0"); + quick.push("ott+10_1:1_acc=on:add=large:avsq=on:cnfonf=off:fde=none:nwc=10.0:i=2492:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:i=3201:si=on:rtra=on_0"); quick.push("lrs+21_3:1_amm=off:fe=off:hud=10:ntd=on:sos=on:uhcvi=on:i=1579:si=on:rtra=on_0"); - quick.push("dis+21_1:16_e2e=on:fe=axiom:nm=2:sos=on:sp=reverse_arity:uhcvi=on:i=5701:si=on:rtra=on_0"); - quick.push("ott+21_1:1_cnfonf=off:nm=2:nwc=10.0:sgt=10:ss=axioms:i=843:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_prag=on:sd=1:sp=const_frequency:ss=axioms:tgt=ground:i=2077:si=on:rtra=on_0"); + quick.push("dis+1002_4:1_amm=sco:apa=on:au=on:bsr=on:cnfonf=off:fde=none:ins=1:nwc=5.0:plsq=on:sac=on:sgt=20:sos=on:ss=axioms:i=1322:si=on:rtra=on_0"); quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); quick.push("dis+1010_8:15_au=on:cbe=off:cnfonf=off:fsr=off:kws=frequency:ntd=on:plsq=on:rawr=on:sp=const_min:tgt=ground:i=5455:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1703:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cnfonf=off:s2a=on:sos=all:i=6628:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:sos=on:ss=axioms:i=12232:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:sos=on:ss=axioms:i=13332:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=3948:si=on:rtra=on_0"); quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=9159:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:bsd=on:bsr=unit_only:cnfonf=off:nm=32:s2a=on:sp=unary_first:i=2025:si=on:rtra=on_0"); - // Improves by expected 10.798310963931263 probs costing 115940 Mi - // Tue20 Overall score 585.6292337176405 probs on average / budget 235084 Mi - + quick.push("lrs+1002_8:1_anc=all_dependent:fde=none:kws=precedence:prag=on:sac=on:sos=on:tnu=2:uhcvi=on:i=5501:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_av=off:cnfonf=off:e2e=on:fe=axiom:hud=10:nm=2:sos=all:sp=frequency:i=16834:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1622:si=on:rtra=on_0"); + // Improves by expected 12.261416048415864 probs costing 117756 Mi // Mon19 Overall score 577.9338905424436 probs on average / budget 237170 Mi } \ No newline at end of file From cee9252c091e87b78220ee0bba78ba871c2a0afa Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 20 Jun 2023 11:42:20 +0200 Subject: [PATCH 180/210] fix bug in sampling inj --- samplerEx.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samplerEx.txt b/samplerEx.txt index ce0e17f8d4..fdbc7cf2fd 100644 --- a/samplerEx.txt +++ b/samplerEx.txt @@ -389,7 +389,7 @@ hud!=0 > prag ~cat off:1,on:1 au=off > tnu ~ui 0,9 # injectivity -> inj ~cat off:4,off:1 +> inj ~cat off:4,on:1 # higher order split queue > hfsq ~cat off:3,on:1 From d68afb12b569ea95710688a9a3c31eb7af60be26 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 20 Jun 2023 15:49:53 +0000 Subject: [PATCH 181/210] a first Tue schedule, with inj in --- CASC/Schedules.cpp | 300 +++++++++++++++++++++++---------------------- 1 file changed, 151 insertions(+), 149 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index c0a7992e0c..cc120cc612 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5137,139 +5137,143 @@ void Schedules::getSnakeTptpSatSchedule(const Shell::Property& property, Schedul void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick) { // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit quick.push("dis+10_1:128_hud=1:i=96:si=on:rtra=on_0"); - quick.push("dis+1002_1:1024_fsd=on:hud=1:nm=32:piset=or:i=3:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:i=5:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_au=on:c=on:fsr=off:piset=equals:i=303:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_au=on:c=on:fsr=off:piset=equals:i=34:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=385:si=on:rtra=on_0"); quick.push("dis+1002_1:128_acc=on:er=filter:i=17:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:kws=inv_arity:plsq=on:plsqc=1:plsqr=32,1:prag=on:sp=const_frequency:i=74:si=on:rtra=on_0"); quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=915:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=1145:si=on:rtra=on_0"); quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=21:si=on:rtra=on_0"); - quick.push("lrs-3_1:1024_cbe=off:chr=on:tnu=1:i=31:si=on:rtra=on_0"); - quick.push("dis+1010_913633:131072_aac=none:apa=on:au=on:awrs=converge:awrsf=150:bd=off:c=on:cbe=off:chr=on:cnfonf=off:e2e=on:fe=off:hud=13:kws=precedence:lma=on:nm=13:ntd=on:pe=on:plsq=on:sgt=15:sp=frequency:ss=axioms:tgt=ground:uhcvi=on:i=6:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=6:si=on:rtra=on_0"); + quick.push("lrs-3_1:1024_cbe=off:chr=on:tnu=1:i=7:si=on:rtra=on_0"); + quick.push("lrs+1010_1:8_cnfonf=off:hud=1:inj=on:tnu=5:i=30:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=1021:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_au=on:bsd=on:cbe=off:cnfonf=off:fe=axiom:fsd=on:i=71:si=on:rtra=on_0"); + quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=9:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=1044:si=on:rtra=on_0"); - quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=127:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=3:si=on:rtra=on_0"); + quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=128:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=40:si=on:rtra=on_0"); quick.push("lrs+21_1:1_cond=on:e2e=on:i=61:si=on:rtra=on_0"); quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=14:si=on:rtra=on_0"); + quick.push("lrs+2_5:1_cnfonf=lazy_not_be_gen:hud=10:inj=on:ntd=on:tnu=1:i=2:si=on:rtra=on_0"); + quick.push("ott+1010_1:128_cnfonf=lazy_not_gen_be_off:plsq=on:plsqc=1:i=25:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=1041:si=on:rtra=on_0"); - quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=96:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bs=on:c=on:fe=axiom:hud=5:ins=1:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=all:tnu=1:i=7:si=on:rtra=on_0"); quick.push("lrs+10_1:128_cnfonf=lazy_not_gen_be_off:hud=1:ins=1:i=11:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sgt=16:ss=axioms:i=140:si=on:rtra=on_0"); quick.push("lrs+1002_1:4_au=on:av=off:bsr=on:cbe=off:nm=2:i=56:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=275:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=18:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:inj=on:i=3:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=19:si=on:rtra=on_0"); quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=44:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=191:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=183:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_afp=1000:cnfonf=off:hud=1:inj=on:nm=64:i=3:si=on:rtra=on_0"); quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=100:si=on:rtra=on_0"); quick.push("ott+21_1:1_apa=on:au=on:cnfonf=off:sos=on:i=3:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=238:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=770:si=on:rtra=on_0"); quick.push("lrs+2_1:1_apa=on:au=on:bd=preordered:cnfonf=off:cs=on:ixr=off:sos=on:i=3:si=on:rtra=on_0"); quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=4:si=on:rtra=on_0"); quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=149:si=on:rtra=on_0"); quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=150:si=on:rtra=on_0"); quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=199:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=83:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:hud=7:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=103:si=on:rtra=on_0"); quick.push("lrs+21_1:16_au=on:bd=off:piset=and:i=39:si=on:rtra=on_0"); quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=721:si=on:rtra=on_0"); - quick.push("lrs+2_1:1024_cnfonf=lazy_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:i=39:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_anc=all_dependent:au=on:cbe=off:fde=unused:ntd=on:i=6:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:c=on:sac=on:slsq=on:slsqc=2:i=206:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=3:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=all_dependent:au=on:cbe=off:fde=unused:ntd=on:i=18:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:c=on:sac=on:slsq=on:slsqc=2:i=218:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=lazy_not_gen:fsr=off:kws=precedence:nwc=5.0:s2a=on:ss=axioms:st=1.5:i=448:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:i=3:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=lazy_not_gen_be_off:cs=on:fe=off:hud=10:inj=on:ins=3:plsq=on:plsqc=1:sd=10:ss=axioms:tnu=1:i=6:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=7:si=on:rtra=on_0"); quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=16:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=42:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=40:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:inj=on:i=2:si=on:rtra=on_0"); quick.push("lrs+10_1:10_au=on:av=off:cbe=off:cnfonf=lazy_pi_sigma_gen:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=98:si=on:rtra=on_0"); quick.push("lrs+1004_1:1_chr=on:prag=on:i=8:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=94:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=90:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cbe=off:fd=off:fs=off:fsr=off:nm=0:i=12:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=432:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=274:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=86:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:hud=10:ntd=on:ss=included:i=270:si=on:rtra=on_0"); quick.push("dis+10_1:1_aac=none:cs=on:i=47:si=on:rtra=on_0"); + quick.push("dis+1666_2:3_afp=41000:au=on:bd=off:cbe=off:cnfonf=lazy_not_be_gen:ins=2:i=2:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=37:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_av=off:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:i=3:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=23:si=on:rtra=on_0"); - quick.push("lrs+2_16:1_acc=model:au=on:bd=off:c=on:e2e=on:nm=2:sos=all:i=15:si=on:rtra=on_0"); - quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=1021:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=2:si=on:rtra=on_0"); - quick.push("lrs-1004_1:1_au=on:bsd=on:cbe=off:cnfonf=off:fe=axiom:fsd=on:i=71:si=on:rtra=on_0"); - // Improves by expected 2307.356128646384 probs costing 9597 Mi + quick.push("lrs+21_1:1_bd=off:cbe=off:cnfonf=off:hud=5:inj=on:prag=on:sp=frequency:i=2:si=on:rtra=on_0"); + quick.push("ott+21_1:1_au=on:fsr=off:inj=on:tgt=full:i=2:si=on:rtra=on_0"); + // Improves by expected 2315.054353734496 probs costing 9592 Mi // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit quick.push("dis+2_1:1_cha=on:hud=7:nwc=3.0:prag=on:tnu=2:i=134:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=337:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=362:si=on:rtra=on_0"); quick.push("dis+21_1:5_au=on:ntd=on:nwc=5.0:s2a=on:ss=axioms:st=5.0:i=204:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=5:si=on:rtra=on_0"); quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=424:si=on:rtra=on_0"); quick.push("dis+1004_16:1_avsq=on:avsqr=1,16:cnfonf=lazy_gen:cs=on:fe=off:tgt=ground:tnu=1:i=231:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=297:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=353:si=on:rtra=on_0"); quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=182:si=on:rtra=on_0"); quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=130:si=on:rtra=on_0"); quick.push("lrs+21_1:16_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=7,4:i=570:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=310:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=283:si=on:rtra=on_0"); quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=33:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_amm=off:au=on:bd=off:nm=2:sac=on:sos=all:i=210:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:s2a=on:sp=weighted_frequency:ss=axioms:i=297:si=on:rtra=on_0"); quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=190:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=104:si=on:rtra=on_0"); + quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=96:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=182:si=on:rtra=on_0"); quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=390:si=on:rtra=on_0"); - quick.push("lrs+2_1:8_erd=off:plsq=on:plsqr=32,1:sos=on:i=189:si=on:rtra=on_0"); + quick.push("lrs+2_1:8_erd=off:plsq=on:plsqr=32,1:sos=on:i=192:si=on:rtra=on_0"); quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=279:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:i=36:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=940:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:ixr=off:i=25:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=422:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_au=on:bd=off:cnfonf=lazy_not_gen_be_off:nwc=10.0:piset=and:i=182:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_av=off:bd=off:fd=off:kws=precedence:nwc=3.0:prag=on:rawr=on:sos=all:sp=reverse_frequency:i=230:si=on:rtra=on_0"); + quick.push("ott-21_5:4_atotf=0.3:e2e=on:hud=15:ins=1:plsq=on:plsqc=1:plsqr=32,1:sp=unary_frequency:tnu=2:i=91:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=83:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cbe=off:cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=148:si=on:rtra=on_0"); quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=104:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1200:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=90:si=on:rtra=on_0"); quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=164:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=679:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=392:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_simp:sgt=5:sos=on:ss=axioms:i=278:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=302:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:av=off:bd=preordered:bs=on:chr=on:cnfonf=lazy_not_gen:ntd=on:piset=and:i=226:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:sd=1:sgt=32:sos=on:ss=axioms:i=141:si=on:rtra=on_0"); - // Improves by expected 70.9985008982394 probs costing 9575 Mi + // Improves by expected 74.7612039457264 probs costing 9553 Mi // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit - quick.push("lrs+10_1:64_hud=5:plsq=on:plsqr=2011171,524288:i=593:si=on:rtra=on_0"); quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=4759:si=on:rtra=on_0"); quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=906:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=668:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=1670:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=430:si=on:rtra=on_0"); quick.push("ott+1010_5:1_av=off:fe=off:ins=1:kws=precedence:sp=reverse_arity:i=794:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=294:si=on:rtra=on_0"); quick.push("dis+1002_1:14_anc=none:bs=unit_only:nm=32:ntd=on:s2a=on:sos=on:i=599:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=970:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=2141:si=on:rtra=on_0"); quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=383:si=on:rtra=on_0"); - quick.push("ott+1010_3:1_nm=20:s2a=on:s2at=3.0:sp=const_frequency:i=1083:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=1398:si=on:rtra=on_0"); quick.push("lrs+1010_1:3_cnfonf=conj_eager:fsr=off:prag=on:sd=4:sgt=10:ss=axioms:i=562:si=on:rtra=on_0"); quick.push("lrs+1010_1:2_au=on:e2e=on:sd=3:ss=axioms:st=3.0:i=1208:si=on:rtra=on_0"); quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=70:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:s2a=on:sd=7:ss=axioms:st=1.5:i=343:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1655:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1512:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=6454:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_acc=model:avsq=on:ixr=off:prag=on:s2a=on:sac=on:i=1539:si=on:rtra=on_0"); quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=501:si=on:rtra=on_0"); quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=40:si=on:rtra=on_0"); - quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=106:si=on:rtra=on_0"); + quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=111:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=97:si=on:rtra=on_0"); quick.push("lrs+21_1:1_cha=on:cnfonf=off:hud=10:kws=inv_frequency:lcm=predicate:sgt=32:sos=on:sp=occurrence:ss=axioms:i=136:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=4810:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=5205:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=2020:si=on:rtra=on_0"); quick.push("dis+10_1:1_atotf=0.1:cbe=off:sd=3:ss=axioms:st=2.0:i=375:si=on:rtra=on_0"); - quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=353:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=8250:si=on:rtra=on_0"); quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:plsq=on:plsqr=32,1:prag=on:i=187:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=393:si=on:rtra=on_0"); quick.push("lrs+1010_2:3_au=on:fsr=off:sd=4:ss=axioms:st=1.5:i=371:si=on:rtra=on_0"); quick.push("lrs+1002_1:16_bd=off:e2e=on:fde=unused:kws=precedence:sac=on:sos=on:ss=axioms:i=434:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_av=off:fe=off:hud=5:piset=or:prag=on:i=452:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5411:si=on:rtra=on_0"); quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=1110:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_amm=off:cs=on:kws=precedence:nwc=10.0:piset=all:s2a=on:sac=on:sp=unary_frequency:spb=goal:ss=axioms:st=3.0:i=590:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=432:si=on:rtra=on_0"); quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=2517:si=on:rtra=on_0"); quick.push("dis+10_8:1_apa=on:cnfonf=off:e2e=on:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=783:si=on:rtra=on_0"); @@ -5278,17 +5282,18 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4350:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:nwc=5.0:s2a=on:s2at=2.0:sac=on:sd=7:ss=axioms:st=2.0:i=358:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=2088:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=102:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=700:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=848:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=283:si=on:rtra=on_0"); quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3698:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=147:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=932:si=on:rtra=on_0"); quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=2401:si=on:rtra=on_0"); quick.push("lrs+2_1:1024_cnfonf=lazy_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:i=576:si=on:rtra=on_0"); quick.push("dis+10_1:1_av=off:bsd=on:bsr=unit_only:fd=off:hud=8:nm=16:prag=on:i=715:si=on:rtra=on_0"); - quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1762:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1613:si=on:rtra=on_0"); quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=503:si=on:rtra=on_0"); quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=5104:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=312:si=on:rtra=on_0"); @@ -5300,114 +5305,116 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=90:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:bd=off:bsr=unit_only:sd=2:sgt=32:sos=all:ss=axioms:i=454:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1133:si=on:rtra=on_0"); quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=1229:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=466:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1335:si=on:rtra=on_0"); + quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=1213:si=on:rtra=on_0"); quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=4528:si=on:rtra=on_0"); quick.push("dis+10_1:1_sd=2:sgt=20:slsq=on:ss=axioms:st=6.0:i=443:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=556:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=fast:fsr=off:piset=or:sp=const_frequency:uhcvi=on:updr=off:i=314:si=on:rtra=on_0"); quick.push("ott+10_1:1_aac=none:apa=on:au=on:cnfonf=off:ntd=on:nwc=12.0:sos=on:i=865:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_acc=model:avsq=on:ixr=off:prag=on:s2a=on:sac=on:i=1702:si=on:rtra=on_0"); - // Improves by expected 222.00339648111566 probs costing 95907 Mi + // Improves by expected 219.83325007283187 probs costing 95930 Mi // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=454:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=517:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=430:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_nm=20:s2a=on:s2at=3.0:sp=const_frequency:i=1083:si=on:rtra=on_0"); quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1871:si=on:rtra=on_0"); quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); - quick.push("lrs-3_1:1024_cbe=off:chr=on:tnu=1:i=464:si=on:rtra=on_0"); + quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3201:si=on:rtra=on_0"); quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=3174:si=on:rtra=on_0"); quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=244:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=5045:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=70:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=283:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=3672:si=on:rtra=on_0"); quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=1972:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=386:si=on:rtra=on_0"); quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=1201:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all:c=on:cnfonf=off:fsr=off:kws=inv_frequency:nwc=5.0:sos=on:sp=occurrence:i=344:si=on:rtra=on_0"); quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=643:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=149:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=765:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=326:si=on:rtra=on_0"); quick.push("lrs+2_1:1024_anc=all:cnfonf=off:cs=on:e2e=on:nm=20:s2at=1.5:slsq=on:slsqr=1,2:spb=goal:i=340:si=on:rtra=on_0"); - quick.push("dis+10_16:1_hud=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sd=1:sgt=64:ss=axioms:i=8480:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=1321:si=on:rtra=on_0"); + quick.push("dis+10_16:1_hud=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sd=1:sgt=64:ss=axioms:i=8062:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:ntd=on:s2a=on:ss=axioms:st=1.5:i=334:si=on:rtra=on_0"); quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=5061:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_apa=on:bsd=on:cnfonf=off:hud=10:sac=on:sos=on:ss=axioms:i=7240:si=on:rtra=on_0"); quick.push("dis+1002_8:1_bd=off:sd=1:sgt=16:ss=axioms:i=4604:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3665:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=147:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=3710:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=10148:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=9872:si=on:rtra=on_0"); quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=644:si=on:rtra=on_0"); quick.push("lrs+1010_1:10_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:sp=occurrence:i=307:si=on:rtra=on_0"); quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=831:si=on:rtra=on_0"); quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=474:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:erd=off:s2a=on:s2at=3.0:sos=all:i=1174:si=on:rtra=on_0"); quick.push("ott+1002_1:4_c=on:chr=on:cnfonf=lazy_not_be_gen:hud=10:nm=10:piset=all_but_not_eq:rp=on:spb=goal:uhcvi=on:i=2678:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=307:si=on:rtra=on_0"); quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2105:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=5271:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:hud=4:nm=60:i=453:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:cbe=off:fde=none:ins=1:sp=const_max:i=2325:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2573:si=on:rtra=on_0"); - quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_apa=on:au=on:av=off:cnfonf=off:e2e=on:nm=0:nwc=10.0:i=2781:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=554:si=on:rtra=on_0"); + quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=911:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2561:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1312:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1516:si=on:rtra=on_0"); - quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=5045:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=5271:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=3915:si=on:rtra=on_0"); - // Improves by expected 55.1760158232652 probs costing 95981 Mi + // Improves by expected 55.21431245529061 probs costing 95930 Mi // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit + quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=6801:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=454:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=18808:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=951:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=566:si=on:rtra=on_0"); quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5856:si=on:rtra=on_0"); quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1658:si=on:rtra=on_0"); quick.push("dis+10_1:1_avsq=on:avsqr=9,8:cnfonf=lazy_gen:fe=off:ntd=on:i=3186:si=on:rtra=on_0"); - quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3201:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=6525:si=on:rtra=on_0"); + quick.push("lrs-3_1:1024_cbe=off:chr=on:tnu=1:i=2100:si=on:rtra=on_0"); quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=3397:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=14014:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=8785:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=7311:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=2618:si=on:rtra=on_0"); + quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=5656:si=on:rtra=on_0"); quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=10516:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=32887:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=939:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:e2e=on:nm=2:sos=all:sp=const_min:spb=non_intro:i=9526:si=on:rtra=on_0"); quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=13832:si=on:rtra=on_0"); quick.push("lrs+1002_1:32_au=on:ins=2:nm=16:ntd=on:piset=all_but_not_eq:sp=occurrence:i=3049:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=6901:si=on:rtra=on_0"); quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=13163:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:au=on:bd=off:cnfonf=lazy_pi_sigma_gen:s2a=on:sac=on:sd=1:sgt=20:ss=axioms:i=33583:si=on:rtra=on_0"); quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=15557:si=on:rtra=on_0"); + quick.push("lrs+2_5:1_cnfonf=lazy_not_be_gen:hud=10:inj=on:ntd=on:tnu=1:i=3939:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=10235:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bs=on:c=on:fe=axiom:hud=5:ins=1:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=all:tnu=1:i=2580:si=on:rtra=on_0"); quick.push("lrs+10_1:2_ntd=on:nwc=10.0:plsq=on:plsqc=1:plsqr=2,1:ss=axioms:i=9078:si=on:rtra=on_0"); quick.push("lrs+21_1:1_au=on:cnfonf=off:plsq=on:plsqc=1:plsqr=3,1:i=6017:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=14041:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=9867:si=on:rtra=on_0"); quick.push("ott+1002_1:1_anc=all_dependent:au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:piset=not:i=27944:si=on:rtra=on_0"); quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=631:si=on:rtra=on_0"); - quick.push("dis+1003_1:1_cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1647:si=on:rtra=on_0"); - quick.push("dis+1004_1:16_cnfonf=lazy_gen:fe=off:fsr=off:hud=10:ntd=on:nwc=10.0:prag=on:tgt=ground:i=2928:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=178:si=on:rtra=on_0"); quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=407:si=on:rtra=on_0"); quick.push("dis+1002_1:1_aac=none:au=on:bd=off:cnfonf=conj_eager:nwc=5.0:sgt=5:sp=reverse_arity:ss=axioms:i=5786:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=43570:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=765:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=1548:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sos=on:ss=axioms:i=13001:si=on:rtra=on_0"); + quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=1685:si=on:rtra=on_0"); quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); - quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=2014:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4218:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=6594:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=24965:si=on:rtra=on_0"); quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_pi_sigma_gen:fsr=off:ins=1:kws=inv_precedence:nwc=10.0:ss=axioms:st=2.0:i=41234:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:nwc=10.0:sac=on:i=27021:si=on:rtra=on_0"); quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=5643:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); @@ -5415,19 +5422,21 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=8382:si=on:rtra=on_0"); quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4925:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=2765:si=on:rtra=on_0"); - quick.push("lrs+1010_2:1_au=on:cnfonf=off:e2e=on:fd=off:plsq=on:plsqc=1:plsqr=32,1:i=31909:si=on:rtra=on_0"); quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=5576:si=on:rtra=on_0"); + quick.push("ott-21_5:4_atotf=0.3:e2e=on:hud=15:ins=1:plsq=on:plsqc=1:plsqr=32,1:sp=unary_frequency:tnu=2:i=12157:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_au=on:cnfonf=off:e2e=on:fde=none:nicw=on:s2a=on:s2at=5.0:tgt=full:i=8883:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_au=on:cnfonf=off:e2e=on:fde=none:nicw=on:s2a=on:s2at=5.0:tgt=full:i=4155:si=on:rtra=on_0"); quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); + quick.push("lrs+1010_2:1_amm=off:c=on:cbe=off:e2e=on:fsr=off:hfsq=on:hfsqr=4,7:ins=3:s2a=on:s2at=-1.0:i=15705:si=on:rtra=on_0"); quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=axiom:hud=10:prag=on:ss=axioms:i=20712:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=5115:si=on:rtra=on_0"); quick.push("dis+10_1:10_bd=preordered:e2e=on:fde=none:fe=axiom:hud=3:kws=precedence:nwc=3.0:prag=on:sp=const_max:tgt=full:i=4165:si=on:rtra=on_0"); quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=2570:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:sd=2:ss=axioms:st=2.0:i=2947:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=1895:si=on:rtra=on_0"); quick.push("lrs+10_1:50_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:plsq=on:plsqr=1,32:sos=all:i=2971:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=4301:si=on:rtra=on_0"); quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=631:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bd=off:c=on:fsr=off:ntd=on:prag=on:sd=1:sos=all:ss=axioms:st=5.0:i=50967:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=4041:si=on:rtra=on_0"); @@ -5436,15 +5445,16 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("dis+10_1:1_fde=none:kws=precedence:piset=not:prag=on:slsq=on:slsqc=1:sp=unary_frequency:i=23684:si=on:rtra=on_0"); quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2077:si=on:rtra=on_0"); quick.push("dis+10_5:1_av=off:ntd=on:s2a=on:s2at=3.0:sgt=16:sp=unary_frequency:ss=axioms:i=8425:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=15536:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=8192:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=5271:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=6534:si=on:rtra=on_0"); - quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=14881:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=58848:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:hud=4:nm=60:i=453:si=on:rtra=on_0"); quick.push("lrs+30_1:1_aac=none:au=on:cbe=off:cs=on:nm=2:rawr=on:sos=on:i=3107:si=on:rtra=on_0"); quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=6645:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2573:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=15668:si=on:rtra=on_0"); - quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_apa=on:au=on:av=off:cnfonf=off:e2e=on:nm=0:nwc=10.0:i=2781:si=on:rtra=on_0"); quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=28397:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=8517:si=on:rtra=on_0"); @@ -5452,51 +5462,42 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=5473:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=3362:si=on:rtra=on_0"); quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3629:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1810:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1267:si=on:rtra=on_0"); + quick.push("ott+21_1:16_cnfonf=lazy_gen:fde=unused:kws=frequency:sims=off:i=2926:si=on:rtra=on_0"); quick.push("lrs+1004_1:24_i=5433:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); - quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=4929:si=on:rtra=on_0"); - quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=8781:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=2618:si=on:rtra=on_0"); - quick.push("lrs+1_1:1_au=on:cbe=off:cs=on:nm=4:i=14341:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_pi_sigma_gen:fsr=off:ins=1:kws=inv_precedence:nwc=10.0:ss=axioms:st=2.0:i=41234:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=axiom:hud=10:prag=on:ss=axioms:i=20712:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=5271:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=2343:si=on:rtra=on_0"); quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=6901:si=on:rtra=on_0"); - // Improves by expected 98.96101312504828 probs costing 956359 Mi + quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); + // Improves by expected 98.7274017366007 probs costing 958934 Mi // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit - quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=11612:si=on:rtra=on_0"); + quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=6102:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=117046:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=54712:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=54710:si=on:rtra=on_0"); quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5756:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=6525:si=on:rtra=on_0"); + quick.push("dis+10_3:1_anc=all:avsq=on:c=on:cnfonf=off:e2e=on:fd=off:fde=none:ins=3:nwc=5.0:plsq=on:plsqc=1:plsqr=4964065,131072:prag=on:s2a=on:s2agt=64:i=8801:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=14014:si=on:rtra=on_0"); + quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=47347:si=on:rtra=on_0"); quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=35698:si=on:rtra=on_0"); - quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=2607:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bs=on:c=on:fe=axiom:hud=5:ins=1:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=all:tnu=1:i=2580:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=17804:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_av=off:awrs=converge:awrsf=200:kws=precedence:i=40767:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=9867:si=on:rtra=on_0"); quick.push("dis+1010_1:128_au=on:awrs=converge:plsq=on:plsqc=1:tgt=full:i=11111:si=on:rtra=on_0"); - quick.push("dis+1003_1:1_cnfonf=lazy_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=9745:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=4408:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=3743:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5207:si=on:rtra=on_0"); quick.push("dis+1010_1:1_cbe=off:fde=unused:fe=axiom:prag=on:s2a=on:s2agt=30:sp=frequency:i=17020:si=on:rtra=on_0"); quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); - quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); + quick.push("lrs+1_1:1_au=on:cbe=off:cs=on:nm=4:i=14341:si=on:rtra=on_0"); quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=17538:si=on:rtra=on_0"); - quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=16580:si=on:rtra=on_0"); quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_cnfonf=conj_eager:i=18038:si=on:rtra=on_0"); quick.push("dis+1010_1:28_add=off:cnfonf=lazy_not_gen:kws=frequency:piset=all:i=8801:si=on:rtra=on_0"); - quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=8878:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=6698:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); @@ -5509,104 +5510,105 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=5419:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=12389:si=on:rtra=on_0"); quick.push("dis+10_1:1_fde=none:kws=precedence:piset=not:prag=on:slsq=on:slsqc=1:sp=unary_frequency:i=23684:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=8192:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=12135:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=76334:si=on:rtra=on_0"); - quick.push("lrs+21_1:3_apa=on:cnfonf=off:prag=on:sac=on:sos=on:ss=axioms:i=10993:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=41881:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=1314:si=on:rtra=on_0"); quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=28397:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); - quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=14001:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=3362:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); quick.push("lrs+1004_1:24_i=5433:si=on:rtra=on_0"); - quick.push("lrs+1_1:1_au=on:cbe=off:cs=on:nm=4:i=14341:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=2343:si=on:rtra=on_0"); - // Improves by expected 18.65331901531936 probs costing 958899 Mi + // Improves by expected 17.502840360953996 probs costing 948938 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit + quick.push("lrs+1002_1:1_chr=on:hud=5:prag=on:i=103422:si=on:rtra=on_0"); + quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=11612:si=on:rtra=on_0"); quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=29759:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=95893:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=171310:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=220001:si=on:rtra=on_0"); - quick.push("dis+10_1:1_amm=sco:au=on:cbe=off:nm=0:i=30667:si=on:rtra=on_0"); + quick.push("dis+10_1:1_amm=sco:au=on:cbe=off:nm=0:i=34001:si=on:rtra=on_0"); + quick.push("lrs+2_16:1_acc=model:au=on:bd=off:c=on:e2e=on:nm=2:sos=all:i=84973:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=77525:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=33734:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_fe=off:hud=5:nm=2:i=216759:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=9867:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=68414:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=5396:si=on:rtra=on_0"); quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=83865:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=173649:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=15424:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bsd=on:cha=on:cnfonf=lazy_not_gen_be_off:piset=small_set:s2a=on:s2at=7.0:i=200001:si=on:rtra=on_0"); quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=17538:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=50861:si=on:rtra=on_0"); quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=104812:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_cnfonf=conj_eager:i=18038:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=63615:si=on:rtra=on_0"); quick.push("dis+1010_1:28_add=off:cnfonf=lazy_not_gen:kws=frequency:piset=all:i=8801:si=on:rtra=on_0"); quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=22706:si=on:rtra=on_0"); quick.push("dis+1010_1:1_bd=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=137969:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:kws=precedence:i=204173:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=axiom:hud=10:prag=on:ss=axioms:i=20712:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:ntd=on:i=26214:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=97391:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=74319:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=15312:si=on:rtra=on_0"); + quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=28153:si=on:rtra=on_0"); quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=36665:si=on:rtra=on_0"); quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=34181:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=38977:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=120493:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=240001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:hud=10:ntd=on:ss=included:i=153718:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=28397:si=on:rtra=on_0"); - quick.push("dis+1_1:1_amm=off:au=on:piset=and:i=54193:si=on:rtra=on_0"); + quick.push("dis+1_1:1_amm=off:au=on:piset=and:i=61251:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=3362:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); - quick.push("lrs+1004_1:24_i=198698:si=on:rtra=on_0"); - quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=56159:si=on:rtra=on_0"); - quick.push("lrs+2_16:1_acc=model:au=on:bd=off:c=on:e2e=on:nm=2:sos=all:i=84973:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=axiom:hud=10:prag=on:ss=axioms:i=37349:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=2343:si=on:rtra=on_0"); + quick.push("lrs+1004_1:24_i=32865:si=on:rtra=on_0"); quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); - // Improves by expected 14.674110326642243 probs costing 3639705 Mi + // Improves by expected 14.039963971993178 probs costing 3331877 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=171310:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=183300:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_fe=off:hud=5:nm=2:i=216759:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); + quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=4978:si=on:rtra=on_0"); quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=50861:si=on:rtra=on_0"); quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=99319:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=73001:si=on:rtra=on_0"); quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=39108:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=101734:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=240001:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=64385:si=on:rtra=on_0"); - // Improves by expected 2.47886902012368 probs costing 1680195 Mi + // Improves by expected 2.555387732721593 probs costing 1606614 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=220001:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=176763:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=240001:si=on:rtra=on_0"); - // Improves by expected 1.049164574553217 probs costing 1065404 Mi + // Improves by expected 0.8421699791047241 probs costing 786041 Mi + // Tue: HOL3 Overall score 2798.5308839897193 probs on average / budget 7843409 Mi - // Sun HOL3 Overall score 2791.350517910691 probs on average / budget 8511622 Mi + // Sun: HOL3 Overall score 2791.350517910691 probs on average / budget 8511622 Mi // Fri: Overall score 2775.567019728554 probs on average / budget 8273879 Mi // Tue: Overall score 2758.4199055140407 probs on average / budget 8640381 Mi From 36a09163ba18e29ef985c9c65ea1146eafc5bfd8 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 20 Jun 2023 20:43:04 +0000 Subject: [PATCH 182/210] have two SLH scheds and push the HOL one over 2800 --- CASC/PortfolioMode.cpp | 4 +- CASC/Schedules.cpp | 412 +++++++++++++++++++++++++++-------------- CASC/Schedules.hpp | 1 + Shell/Options.cpp | 1 + Shell/Options.hpp | 1 + 5 files changed, 274 insertions(+), 145 deletions(-) diff --git a/CASC/PortfolioMode.cpp b/CASC/PortfolioMode.cpp index 9889ca86b7..86a03b103b 100644 --- a/CASC/PortfolioMode.cpp +++ b/CASC/PortfolioMode.cpp @@ -376,7 +376,9 @@ void PortfolioMode::getSchedules(const Property& prop, Schedule& quick, Schedule case Options::Schedule::SNAKE_SLH: Schedules::getSnakeSlhSchedule(prop,quick); break; - + case Options::Schedule::SNAKE_SLH2: + Schedules::getSnakeSlh2Schedule(prop,quick); + break; case Options::Schedule::CASC_2019: case Options::Schedule::CASC: diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index cc120cc612..057b914562 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5137,48 +5137,42 @@ void Schedules::getSnakeTptpSatSchedule(const Shell::Property& property, Schedul void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick) { // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit quick.push("dis+10_1:128_hud=1:i=96:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:i=5:si=on:rtra=on_0"); + quick.push("lrs+10_1:2_cnfonf=off:hud=1:inj=on:i=36:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_au=on:c=on:fsr=off:piset=equals:i=34:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=385:si=on:rtra=on_0"); quick.push("dis+1002_1:128_acc=on:er=filter:i=17:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:kws=inv_arity:plsq=on:plsqc=1:plsqr=32,1:prag=on:sp=const_frequency:i=74:si=on:rtra=on_0"); quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=1145:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=915:si=on:rtra=on_0"); quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=21:si=on:rtra=on_0"); quick.push("lrs-3_1:1024_cbe=off:chr=on:tnu=1:i=7:si=on:rtra=on_0"); - quick.push("lrs+1010_1:8_cnfonf=off:hud=1:inj=on:tnu=5:i=30:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=1021:si=on:rtra=on_0"); quick.push("lrs-1004_1:1_au=on:bsd=on:cbe=off:cnfonf=off:fe=axiom:fsd=on:i=71:si=on:rtra=on_0"); quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=9:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=1044:si=on:rtra=on_0"); quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=128:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=40:si=on:rtra=on_0"); quick.push("lrs+21_1:1_cond=on:e2e=on:i=61:si=on:rtra=on_0"); quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=14:si=on:rtra=on_0"); quick.push("lrs+2_5:1_cnfonf=lazy_not_be_gen:hud=10:inj=on:ntd=on:tnu=1:i=2:si=on:rtra=on_0"); - quick.push("ott+1010_1:128_cnfonf=lazy_not_gen_be_off:plsq=on:plsqc=1:i=25:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=1041:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bs=on:c=on:fe=axiom:hud=5:ins=1:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=all:tnu=1:i=7:si=on:rtra=on_0"); quick.push("lrs+10_1:128_cnfonf=lazy_not_gen_be_off:hud=1:ins=1:i=11:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sgt=16:ss=axioms:i=140:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=preordered:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=10:ixr=off:prag=on:i=26:si=on:rtra=on_0"); quick.push("lrs+1002_1:4_au=on:av=off:bsr=on:cbe=off:nm=2:i=56:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=275:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:inj=on:i=3:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=19:si=on:rtra=on_0"); quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=44:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=183:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_afp=1000:cnfonf=off:hud=1:inj=on:nm=64:i=3:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=191:si=on:rtra=on_0"); quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=100:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=105:si=on:rtra=on_0"); quick.push("ott+21_1:1_apa=on:au=on:cnfonf=off:sos=on:i=3:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=770:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=238:si=on:rtra=on_0"); quick.push("lrs+2_1:1_apa=on:au=on:bd=preordered:cnfonf=off:cs=on:ixr=off:sos=on:i=3:si=on:rtra=on_0"); quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=4:si=on:rtra=on_0"); quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=149:si=on:rtra=on_0"); quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=150:si=on:rtra=on_0"); quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=199:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:hud=7:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=103:si=on:rtra=on_0"); quick.push("lrs+21_1:16_au=on:bd=off:piset=and:i=39:si=on:rtra=on_0"); quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=721:si=on:rtra=on_0"); quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=3:si=on:rtra=on_0"); @@ -5186,36 +5180,37 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+10_1:1_au=on:c=on:sac=on:slsq=on:slsqc=2:i=218:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=lazy_not_gen:fsr=off:kws=precedence:nwc=5.0:s2a=on:ss=axioms:st=1.5:i=448:si=on:rtra=on_0"); quick.push("lrs+2_1:1_cnfonf=lazy_not_gen_be_off:cs=on:fe=off:hud=10:inj=on:ins=3:plsq=on:plsqc=1:sd=10:ss=axioms:tnu=1:i=6:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=7:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=9:si=on:rtra=on_0"); quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=16:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=40:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:inj=on:i=2:si=on:rtra=on_0"); quick.push("lrs+10_1:10_au=on:av=off:cbe=off:cnfonf=lazy_pi_sigma_gen:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=98:si=on:rtra=on_0"); quick.push("lrs+1004_1:1_chr=on:prag=on:i=8:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=86:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:hud=10:ntd=on:ss=included:i=270:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:cnfonf=off:fd=preordered:fe=off:fsr=off:hud=11:inj=on:kws=precedence:s2pl=no:sp=weighted_frequency:tgt=full:i=3:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:hud=10:ntd=on:ss=included:i=294:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=274:si=on:rtra=on_0"); quick.push("dis+10_1:1_aac=none:cs=on:i=47:si=on:rtra=on_0"); - quick.push("dis+1666_2:3_afp=41000:au=on:bd=off:cbe=off:cnfonf=lazy_not_be_gen:ins=2:i=2:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=37:si=on:rtra=on_0"); quick.push("lrs+1002_1:16_av=off:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:i=3:si=on:rtra=on_0"); - quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=23:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_bd=off:cbe=off:cnfonf=off:hud=5:inj=on:prag=on:sp=frequency:i=2:si=on:rtra=on_0"); - quick.push("ott+21_1:1_au=on:fsr=off:inj=on:tgt=full:i=2:si=on:rtra=on_0"); - // Improves by expected 2315.054353734496 probs costing 9592 Mi + quick.push("lrs+10_8:1_au=on:e2e=on:hfsq=on:hfsqc=1:ins=3:s2a=on:s2at=3.0:ss=axioms:i=19:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=5:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:gs=on:hud=10:prag=on:tnu=1:i=44:si=on:rtra=on_0"); + quick.push("ott+21_1:3_bd=off:cnfonf=lazy_gen:fe=off:hfsq=on:hfsqc=3:hud=10:ixr=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=450:si=on:rtra=on_0"); + quick.push("dis+1004_1:128_au=on:cbe=off:e2e=on:sac=on:i=102:si=on:rtra=on_0"); + // Improves by expected 2315.393835274976 probs costing 9586 Mi // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit quick.push("dis+2_1:1_cha=on:hud=7:nwc=3.0:prag=on:tnu=2:i=134:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=337:si=on:rtra=on_0"); quick.push("dis+21_1:5_au=on:ntd=on:nwc=5.0:s2a=on:ss=axioms:st=5.0:i=204:si=on:rtra=on_0"); quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=424:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=41:si=on:rtra=on_0"); quick.push("dis+1004_16:1_avsq=on:avsqr=1,16:cnfonf=lazy_gen:cs=on:fe=off:tgt=ground:tnu=1:i=231:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=353:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=70:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=297:si=on:rtra=on_0"); quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=182:si=on:rtra=on_0"); quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=130:si=on:rtra=on_0"); quick.push("lrs+21_1:16_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=7,4:i=570:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=283:si=on:rtra=on_0"); - quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=33:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_amm=off:au=on:bd=off:nm=2:sac=on:sos=all:i=210:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:s2a=on:sp=weighted_frequency:ss=axioms:i=297:si=on:rtra=on_0"); quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=190:si=on:rtra=on_0"); quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=96:si=on:rtra=on_0"); @@ -5225,46 +5220,50 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+2_1:8_erd=off:plsq=on:plsqr=32,1:sos=on:i=192:si=on:rtra=on_0"); quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=279:si=on:rtra=on_0"); quick.push("lrs+1010_1:1024_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:ixr=off:i=25:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=940:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=422:si=on:rtra=on_0"); - quick.push("ott-21_5:4_atotf=0.3:e2e=on:hud=15:ins=1:plsq=on:plsqc=1:plsqr=32,1:sp=unary_frequency:tnu=2:i=91:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:hud=7:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=103:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_au=on:bd=off:cnfonf=lazy_not_gen_be_off:nwc=10.0:piset=and:i=182:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_av=off:bd=off:fd=off:kws=precedence:nwc=3.0:prag=on:rawr=on:sos=all:sp=reverse_frequency:i=230:si=on:rtra=on_0"); quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=83:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=all:cbe=off:cnfonf=lazy_not_gen_be_off:fe=off:hud=5:nwc=10.0:plsq=on:plsqr=32,1:prag=on:sp=unary_first:i=202:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cbe=off:cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=148:si=on:rtra=on_0"); quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=104:si=on:rtra=on_0"); quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1200:si=on:rtra=on_0"); quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=90:si=on:rtra=on_0"); quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=164:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=679:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=392:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_simp:sgt=5:sos=on:ss=axioms:i=278:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=302:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:av=off:bd=preordered:bs=on:chr=on:cnfonf=lazy_not_gen:ntd=on:piset=and:i=226:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_simp:sgt=5:sos=on:ss=axioms:i=279:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:av=off:bd=preordered:bs=on:chr=on:cnfonf=lazy_not_gen:ntd=on:piset=and:i=59:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:sd=1:sgt=32:sos=on:ss=axioms:i=141:si=on:rtra=on_0"); - // Improves by expected 74.7612039457264 probs costing 9553 Mi + quick.push("dis+1004_1:128_au=on:cbe=off:e2e=on:sac=on:i=389:si=on:rtra=on_0"); + // Improves by expected 72.08099721262818 probs costing 9552 Mi // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit + quick.push("lrs+10_1:64_hud=5:plsq=on:plsqr=2011171,524288:i=593:si=on:rtra=on_0"); quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=4759:si=on:rtra=on_0"); quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=906:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=668:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=430:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=1670:si=on:rtra=on_0"); quick.push("ott+1010_5:1_av=off:fe=off:ins=1:kws=precedence:sp=reverse_arity:i=794:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=294:si=on:rtra=on_0"); - quick.push("dis+1002_1:14_anc=none:bs=unit_only:nm=32:ntd=on:s2a=on:sos=on:i=599:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=2141:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=970:si=on:rtra=on_0"); quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=383:si=on:rtra=on_0"); + quick.push("dis+21_1:5_au=on:ntd=on:nwc=5.0:s2a=on:ss=axioms:st=5.0:i=961:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_nm=20:s2a=on:s2at=3.0:sp=const_frequency:i=1083:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=1398:si=on:rtra=on_0"); quick.push("lrs+1010_1:3_cnfonf=conj_eager:fsr=off:prag=on:sd=4:sgt=10:ss=axioms:i=562:si=on:rtra=on_0"); quick.push("lrs+1010_1:2_au=on:e2e=on:sd=3:ss=axioms:st=3.0:i=1208:si=on:rtra=on_0"); quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=70:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:s2a=on:sd=7:ss=axioms:st=1.5:i=343:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1512:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1655:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=6454:si=on:rtra=on_0"); quick.push("dis+1010_1:1_acc=model:avsq=on:ixr=off:prag=on:s2a=on:sac=on:i=1539:si=on:rtra=on_0"); quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=501:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=40:si=on:rtra=on_0"); - quick.push("lrs+1004_1:64_amm=sco:bd=off:chr=on:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:ins=3:ntd=on:rawr=on:uhcvi=on:i=111:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_abs=on:acc=on:cbe=off:cnfonf=off:cs=on:fde=unused:ins=2:prag=on:i=97:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=277:si=on:rtra=on_0"); quick.push("lrs+21_1:1_cha=on:cnfonf=off:hud=10:kws=inv_frequency:lcm=predicate:sgt=32:sos=on:sp=occurrence:ss=axioms:i=136:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=5205:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=401:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=4810:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=2020:si=on:rtra=on_0"); quick.push("dis+10_1:1_atotf=0.1:cbe=off:sd=3:ss=axioms:st=2.0:i=375:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=8250:si=on:rtra=on_0"); @@ -5272,8 +5271,10 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=393:si=on:rtra=on_0"); quick.push("lrs+1010_2:3_au=on:fsr=off:sd=4:ss=axioms:st=1.5:i=371:si=on:rtra=on_0"); quick.push("lrs+1002_1:16_bd=off:e2e=on:fde=unused:kws=precedence:sac=on:sos=on:ss=axioms:i=434:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_av=off:fe=off:hud=5:piset=or:prag=on:i=452:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5411:si=on:rtra=on_0"); quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=1110:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_amm=off:cs=on:kws=precedence:nwc=10.0:piset=all:s2a=on:sac=on:sp=unary_frequency:spb=goal:ss=axioms:st=3.0:i=590:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=432:si=on:rtra=on_0"); quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=2517:si=on:rtra=on_0"); quick.push("dis+10_8:1_apa=on:cnfonf=off:e2e=on:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=783:si=on:rtra=on_0"); @@ -5282,18 +5283,16 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4350:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:nwc=5.0:s2a=on:s2at=2.0:sac=on:sd=7:ss=axioms:st=2.0:i=358:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=2088:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=102:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=848:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=700:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=283:si=on:rtra=on_0"); quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3698:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=147:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=932:si=on:rtra=on_0"); quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=2401:si=on:rtra=on_0"); quick.push("lrs+2_1:1024_cnfonf=lazy_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:i=576:si=on:rtra=on_0"); quick.push("dis+10_1:1_av=off:bsd=on:bsr=unit_only:fd=off:hud=8:nm=16:prag=on:i=715:si=on:rtra=on_0"); - quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1613:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1762:si=on:rtra=on_0"); quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=503:si=on:rtra=on_0"); quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=5104:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=312:si=on:rtra=on_0"); @@ -5305,43 +5304,40 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=90:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:bd=off:bsr=unit_only:sd=2:sgt=32:sos=all:ss=axioms:i=454:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1133:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=1229:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=466:si=on:rtra=on_0"); - quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1335:si=on:rtra=on_0"); quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=1213:si=on:rtra=on_0"); quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=4528:si=on:rtra=on_0"); quick.push("dis+10_1:1_sd=2:sgt=20:slsq=on:ss=axioms:st=6.0:i=443:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=556:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=fast:fsr=off:piset=or:sp=const_frequency:uhcvi=on:updr=off:i=314:si=on:rtra=on_0"); quick.push("ott+10_1:1_aac=none:apa=on:au=on:cnfonf=off:ntd=on:nwc=12.0:sos=on:i=865:si=on:rtra=on_0"); - // Improves by expected 219.83325007283187 probs costing 95930 Mi + // Improves by expected 222.12863537796528 probs costing 95989 Mi // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit - quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=454:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=430:si=on:rtra=on_0"); - quick.push("ott+1010_3:1_nm=20:s2a=on:s2at=3.0:sp=const_frequency:i=1083:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=668:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=517:si=on:rtra=on_0"); quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1871:si=on:rtra=on_0"); quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); - quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3201:si=on:rtra=on_0"); quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=3174:si=on:rtra=on_0"); quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=5045:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=70:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=283:si=on:rtra=on_0"); quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=3672:si=on:rtra=on_0"); - quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=1972:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=386:si=on:rtra=on_0"); quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=1201:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all:c=on:cnfonf=off:fsr=off:kws=inv_frequency:nwc=5.0:sos=on:sp=occurrence:i=344:si=on:rtra=on_0"); quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=643:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=149:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=326:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); quick.push("lrs+2_1:1024_anc=all:cnfonf=off:cs=on:e2e=on:nm=20:s2at=1.5:slsq=on:slsqr=1,2:spb=goal:i=340:si=on:rtra=on_0"); quick.push("dis+10_16:1_hud=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sd=1:sgt=64:ss=axioms:i=8062:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=1321:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:ntd=on:s2a=on:ss=axioms:st=1.5:i=334:si=on:rtra=on_0"); quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=5061:si=on:rtra=on_0"); - quick.push("lrs+1010_1:16_apa=on:bsd=on:cnfonf=off:hud=10:sac=on:sos=on:ss=axioms:i=7240:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_apa=on:bsd=on:cnfonf=off:hud=10:sac=on:sos=on:ss=axioms:i=7257:si=on:rtra=on_0"); quick.push("dis+1002_8:1_bd=off:sd=1:sgt=16:ss=axioms:i=4604:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3665:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=147:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=3710:si=on:rtra=on_0"); quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=9872:si=on:rtra=on_0"); @@ -5350,51 +5346,51 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=831:si=on:rtra=on_0"); quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=474:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:erd=off:s2a=on:s2at=3.0:sos=all:i=1174:si=on:rtra=on_0"); - quick.push("ott+1002_1:4_c=on:chr=on:cnfonf=lazy_not_be_gen:hud=10:nm=10:piset=all_but_not_eq:rp=on:spb=goal:uhcvi=on:i=2678:si=on:rtra=on_0"); - quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=307:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2105:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2077:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=5271:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_chr=on:hud=4:nm=60:i=453:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:cbe=off:fde=none:ins=1:sp=const_max:i=2325:si=on:rtra=on_0"); - quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=911:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2573:si=on:rtra=on_0"); + quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2561:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1312:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1516:si=on:rtra=on_0"); - // Improves by expected 55.21431245529061 probs costing 95930 Mi + quick.push("dis+21_1:1024_au=on:cnfonf=lazy_pi_sigma_gen:nm=32:ss=axioms:i=1307:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:gs=on:hud=10:prag=on:tnu=1:i=2537:si=on:rtra=on_0"); + // Improves by expected 56.92877887514161 probs costing 95960 Mi // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit - quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=6801:si=on:rtra=on_0"); + quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=6102:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=454:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=430:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=18808:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=566:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5856:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=951:si=on:rtra=on_0"); + quick.push("lrs+1002_1:28_bd=off:cnfonf=lazy_simp:plsq=on:plsqr=1,1:prag=on:i=1003:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=14651:si=on:rtra=on_0"); quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1658:si=on:rtra=on_0"); quick.push("dis+10_1:1_avsq=on:avsqr=9,8:cnfonf=lazy_gen:fe=off:ntd=on:i=3186:si=on:rtra=on_0"); - quick.push("lrs-3_1:1024_cbe=off:chr=on:tnu=1:i=2100:si=on:rtra=on_0"); - quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=3397:si=on:rtra=on_0"); + quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3201:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=5729:si=on:rtra=on_0"); + quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=14014:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=8785:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=7311:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=2618:si=on:rtra=on_0"); - quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=5656:si=on:rtra=on_0"); + quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=12192:si=on:rtra=on_0"); quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=10516:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=32887:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=939:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:e2e=on:nm=2:sos=all:sp=const_min:spb=non_intro:i=9526:si=on:rtra=on_0"); quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=13832:si=on:rtra=on_0"); quick.push("lrs+1002_1:32_au=on:ins=2:nm=16:ntd=on:piset=all_but_not_eq:sp=occurrence:i=3049:si=on:rtra=on_0"); quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=6901:si=on:rtra=on_0"); quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=13163:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:bd=off:cnfonf=lazy_pi_sigma_gen:s2a=on:sac=on:sd=1:sgt=20:ss=axioms:i=33583:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:bd=off:cnfonf=lazy_pi_sigma_gen:s2a=on:sac=on:sd=1:sgt=20:ss=axioms:i=10380:si=on:rtra=on_0"); quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); - quick.push("lrs+2_5:1_cnfonf=lazy_not_be_gen:hud=10:inj=on:ntd=on:tnu=1:i=3939:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=10235:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=15557:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bs=on:c=on:fe=axiom:hud=5:ins=1:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=all:tnu=1:i=2580:si=on:rtra=on_0"); quick.push("lrs+10_1:2_ntd=on:nwc=10.0:plsq=on:plsqc=1:plsqr=2,1:ss=axioms:i=9078:si=on:rtra=on_0"); quick.push("lrs+21_1:1_au=on:cnfonf=off:plsq=on:plsqc=1:plsqr=3,1:i=6017:si=on:rtra=on_0"); @@ -5405,11 +5401,12 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=407:si=on:rtra=on_0"); quick.push("dis+1002_1:1_aac=none:au=on:bd=off:cnfonf=conj_eager:nwc=5.0:sgt=5:sp=reverse_arity:ss=axioms:i=5786:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=43570:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cbe=off:fde=unused:fe=axiom:prag=on:s2a=on:s2agt=30:sp=frequency:i=17020:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=1548:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sos=on:ss=axioms:i=13001:si=on:rtra=on_0"); - quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=1685:si=on:rtra=on_0"); - quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); + quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=2014:si=on:rtra=on_0"); + quick.push("lrs+1_1:1_au=on:cbe=off:cs=on:nm=4:i=14341:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4218:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=6594:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=24965:si=on:rtra=on_0"); @@ -5423,41 +5420,35 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4925:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=2765:si=on:rtra=on_0"); quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=5576:si=on:rtra=on_0"); - quick.push("ott-21_5:4_atotf=0.3:e2e=on:hud=15:ins=1:plsq=on:plsqc=1:plsqr=32,1:sp=unary_frequency:tnu=2:i=12157:si=on:rtra=on_0"); + quick.push("ott-21_5:4_atotf=0.3:e2e=on:hud=15:ins=1:plsq=on:plsqc=1:plsqr=32,1:sp=unary_frequency:tnu=2:i=12276:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_au=on:cnfonf=off:e2e=on:fde=none:nicw=on:s2a=on:s2at=5.0:tgt=full:i=4155:si=on:rtra=on_0"); quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); - quick.push("lrs+1010_2:1_amm=off:c=on:cbe=off:e2e=on:fsr=off:hfsq=on:hfsqr=4,7:ins=3:s2a=on:s2at=-1.0:i=15705:si=on:rtra=on_0"); quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=axiom:hud=10:prag=on:ss=axioms:i=20712:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=5115:si=on:rtra=on_0"); quick.push("dis+10_1:10_bd=preordered:e2e=on:fde=none:fe=axiom:hud=3:kws=precedence:nwc=3.0:prag=on:sp=const_max:tgt=full:i=4165:si=on:rtra=on_0"); quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=2570:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:sd=2:ss=axioms:st=2.0:i=2947:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=1895:si=on:rtra=on_0"); - quick.push("lrs+10_1:50_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:plsq=on:plsqr=1,32:sos=all:i=2971:si=on:rtra=on_0"); quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=631:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:c=on:fsr=off:ntd=on:prag=on:sd=1:sos=all:ss=axioms:st=5.0:i=50967:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=4041:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=474:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=5419:si=on:rtra=on_0"); + quick.push("ott+1002_1:4_c=on:chr=on:cnfonf=lazy_not_be_gen:hud=10:nm=10:piset=all_but_not_eq:rp=on:spb=goal:uhcvi=on:i=2678:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=16164:si=on:rtra=on_0"); quick.push("dis+10_1:1_fde=none:kws=precedence:piset=not:prag=on:slsq=on:slsqc=1:sp=unary_frequency:i=23684:si=on:rtra=on_0"); quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2077:si=on:rtra=on_0"); quick.push("dis+10_5:1_av=off:ntd=on:s2a=on:s2at=3.0:sgt=16:sp=unary_frequency:ss=axioms:i=8425:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=8192:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=15536:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=5271:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=58848:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_chr=on:hud=4:nm=60:i=453:si=on:rtra=on_0"); quick.push("lrs+30_1:1_aac=none:au=on:cbe=off:cs=on:nm=2:rawr=on:sos=on:i=3107:si=on:rtra=on_0"); quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=6645:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2573:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=15668:si=on:rtra=on_0"); quick.push("dis+1002_16:1_apa=on:au=on:av=off:cnfonf=off:e2e=on:nm=0:nwc=10.0:i=2781:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); - quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=28397:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=8517:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=3:plsqr=32,1:i=1337:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=5473:si=on:rtra=on_0"); @@ -5466,146 +5457,144 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3629:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1810:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1267:si=on:rtra=on_0"); - quick.push("ott+21_1:16_cnfonf=lazy_gen:fde=unused:kws=frequency:sims=off:i=2926:si=on:rtra=on_0"); - quick.push("lrs+1004_1:24_i=5433:si=on:rtra=on_0"); + quick.push("lrs+1004_1:24_i=5508:si=on:rtra=on_0"); quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); - // Improves by expected 98.7274017366007 probs costing 958934 Mi + quick.push("dis+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=63457:si=on:rtra=on_0"); + quick.push("lrs+1010_1:8_au=on:bd=off:cnfonf=lazy_not_be_gen:fsr=off:kws=inv_arity_squared:piset=or:sp=weighted_frequency:i=737:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_simp:fsr=off:hfsq=on:ntd=on:nwc=10.0:sp=reverse_frequency:ss=axioms:st=1.5:i=15283:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=19906:si=on:rtra=on_0"); + // Improves by expected 100.96227733242402 probs costing 959325 Mi // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit + quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=11612:si=on:rtra=on_0"); quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=6102:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=117046:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:i=54710:si=on:rtra=on_0"); quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5756:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=6525:si=on:rtra=on_0"); quick.push("dis+10_3:1_anc=all:avsq=on:c=on:cnfonf=off:e2e=on:fd=off:fde=none:ins=3:nwc=5.0:plsq=on:plsqc=1:plsqr=4964065,131072:prag=on:s2a=on:s2agt=64:i=8801:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=14014:si=on:rtra=on_0"); - quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=47347:si=on:rtra=on_0"); + quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=12066:si=on:rtra=on_0"); quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=35698:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=2607:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bs=on:c=on:fe=axiom:hud=5:ins=1:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=all:tnu=1:i=2580:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=9867:si=on:rtra=on_0"); quick.push("dis+1010_1:128_au=on:awrs=converge:plsq=on:plsqc=1:tgt=full:i=11111:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=3743:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5207:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cbe=off:fde=unused:fe=axiom:prag=on:s2a=on:s2agt=30:sp=frequency:i=17020:si=on:rtra=on_0"); - quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); - quick.push("lrs+1_1:1_au=on:cbe=off:cs=on:nm=4:i=14341:si=on:rtra=on_0"); + quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); - quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=16580:si=on:rtra=on_0"); + quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=21027:si=on:rtra=on_0"); quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_cnfonf=conj_eager:i=18038:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=6101:si=on:rtra=on_0"); quick.push("dis+1010_1:28_add=off:cnfonf=lazy_not_gen:kws=frequency:piset=all:i=8801:si=on:rtra=on_0"); - quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=6698:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=3365:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("dis+10_1:10_bd=preordered:e2e=on:fde=none:fe=axiom:hud=3:kws=precedence:nwc=3.0:prag=on:sp=const_max:tgt=full:i=4165:si=on:rtra=on_0"); - quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=28153:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=12369:si=on:rtra=on_0"); quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=10001:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:c=on:fsr=off:ntd=on:prag=on:sd=1:sos=all:ss=axioms:st=5.0:i=42749:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3942:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=5419:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=12389:si=on:rtra=on_0"); quick.push("dis+10_1:1_fde=none:kws=precedence:piset=not:prag=on:slsq=on:slsqc=1:sp=unary_frequency:i=23684:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=12135:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=21829:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=41881:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=1314:si=on:rtra=on_0"); - quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=28397:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=3362:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); quick.push("lrs+1004_1:24_i=5433:si=on:rtra=on_0"); - // Improves by expected 17.502840360953996 probs costing 948938 Mi + quick.push("dis+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=12787:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=56694:si=on:rtra=on_0"); + // Improves by expected 15.691880499614891 probs costing 947322 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit - quick.push("lrs+1002_1:1_chr=on:hud=5:prag=on:i=103422:si=on:rtra=on_0"); - quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=11612:si=on:rtra=on_0"); quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=29759:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=98380:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=171310:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=220001:si=on:rtra=on_0"); - quick.push("dis+10_1:1_amm=sco:au=on:cbe=off:nm=0:i=34001:si=on:rtra=on_0"); - quick.push("lrs+2_16:1_acc=model:au=on:bd=off:c=on:e2e=on:nm=2:sos=all:i=84973:si=on:rtra=on_0"); + quick.push("dis+10_1:1_amm=sco:au=on:cbe=off:nm=0:i=26747:si=on:rtra=on_0"); + quick.push("lrs+2_16:1_acc=model:au=on:bd=off:c=on:e2e=on:nm=2:sos=all:i=84804:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=12731:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=77525:si=on:rtra=on_0"); quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=33734:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=68414:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=5396:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=7805:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=14041:si=on:rtra=on_0"); quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=83865:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=173649:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=161913:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=5166:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=15424:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_bd=preordered:cnfonf=conj_eager:etr=on:ntd=on:prag=on:i=44612:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=77282:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:bsd=on:cha=on:cnfonf=lazy_not_gen_be_off:piset=small_set:s2a=on:s2at=7.0:i=200001:si=on:rtra=on_0"); quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=17538:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=50861:si=on:rtra=on_0"); quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=63615:si=on:rtra=on_0"); quick.push("dis+1010_1:28_add=off:cnfonf=lazy_not_gen:kws=frequency:piset=all:i=8801:si=on:rtra=on_0"); - quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=22706:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=38526:si=on:rtra=on_0"); quick.push("dis+1010_1:1_bd=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=137969:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=axiom:hud=10:prag=on:ss=axioms:i=20712:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_chr=on:ntd=on:i=26214:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=97391:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=15312:si=on:rtra=on_0"); - quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=28153:si=on:rtra=on_0"); quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=36665:si=on:rtra=on_0"); quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=13432:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=38977:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=12135:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=120493:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=240001:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:hud=10:ntd=on:ss=included:i=153718:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); - quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=28397:si=on:rtra=on_0"); - quick.push("dis+1_1:1_amm=off:au=on:piset=and:i=61251:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:hud=10:ntd=on:ss=included:i=166390:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=6077:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); + quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=25962:si=on:rtra=on_0"); quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=3362:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=63430:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); - quick.push("lrs+1004_1:24_i=32865:si=on:rtra=on_0"); + quick.push("lrs+1004_1:24_i=198698:si=on:rtra=on_0"); quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); - // Improves by expected 14.039963971993178 probs costing 3331877 Mi + quick.push("lrs+1010_1:8_au=on:bd=off:cnfonf=lazy_not_be_gen:fsr=off:kws=inv_arity_squared:piset=or:sp=weighted_frequency:i=31367:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=158832:si=on:rtra=on_0"); + // Improves by expected 13.773932066734542 probs costing 3122762 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=171310:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=183300:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=154574:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis-1010_1:40_cnfonf=lazy_simp:fe=off:ntd=on:s2a=on:sac=on:ss=axioms:st=1.5:i=4978:si=on:rtra=on_0"); quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=50861:si=on:rtra=on_0"); quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=102602:si=on:rtra=on_0"); - quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=99319:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=118297:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=73001:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=36665:si=on:rtra=on_0"); quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=101734:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=240001:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=72226:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=64385:si=on:rtra=on_0"); - // Improves by expected 2.555387732721593 probs costing 1606614 Mi + quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=170931:si=on:rtra=on_0"); + // Improves by expected 2.5628576884420435 probs costing 1573274 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=220001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=232233:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=240001:si=on:rtra=on_0"); - // Improves by expected 0.8421699791047241 probs costing 786041 Mi + // Improves by expected 0.7373774406757846 probs costing 558273 Mi + // Tue: HOL3 2 Overall score 2800.260571768602 probs on average / budget 7372043 Mi + // Tue: HOL3 Overall score 2798.5308839897193 probs on average / budget 7843409 Mi // Sun: HOL3 Overall score 2791.350517910691 probs on average / budget 8511622 Mi @@ -5741,4 +5730,139 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1622:si=on:rtra=on_0"); // Improves by expected 12.261416048415864 probs costing 117756 Mi // Mon19 Overall score 577.9338905424436 probs on average / budget 237170 Mi +} + +void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick) { + // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit + quick.push("dis+10_1:1_apa=on:au=on:bsr=unit_only:cbe=off:cnfonf=off:fd=off:fde=unused:ntd=on:plsq=on:plsqc=1:plsqr=21,1:s2agt=8:slsq=on:slsqc=1:i=584:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=362:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=532:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_gen:nwc=3.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=912:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=670:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_e2e=on:sd=2:ss=axioms:st=1.5:i=310:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_acc=on:afp=1:au=on:avsq=on:avsqc=1:fd=off:fde=unused:ntd=on:piset=not:sac=on:sos=all:i=625:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:nm=2:sd=2:sos=all:ss=axioms:i=844:si=on:rtra=on_0"); + quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=232:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fde=none:fe=off:hud=5:prag=on:s2pl=no:slsq=on:sos=on:i=529:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_amm=sco:au=on:bd=off:fde=none:gs=on:hud=5:sos=on:sp=weighted_frequency:i=1054:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:fd=off:nwc=10.0:sos=on:i=651:si=on:rtra=on_0"); + quick.push("dis+10_1:1_nwc=10.0:sd=1:sgt=32:ss=axioms:i=497:si=on:rtra=on_0"); + quick.push("ott+1002_16:1_aac=none:au=on:fd=off:fde=unused:fsr=off:ins=4:nm=16:ntd=on:sos=on:i=447:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_hfsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sd=1:sos=on:ss=axioms:uhcvi=on:i=394:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_kws=precedence:sd=1:sgt=16:sos=on:sp=frequency:ss=axioms:i=296:si=on:rtra=on_0"); + // Improves by expected 458.9009337349063 probs costing 9938 Mi + // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit + quick.push("ott+1010_1:1_abs=on:au=on:fde=none:fe=off:ins=2:sos=on:i=400:si=on:rtra=on_0"); + quick.push("lrs+32_1:1_bd=off:hud=10:sos=on:ss=axioms:i=458:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=570:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:fd=off:fe=off:hud=23:sos=on:i=404:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bsd=on:cnfonf=off:erd=off:nwc=10.0:sd=1:sgt=16:sp=const_frequency:ss=axioms:st=2.0:i=461:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1024_bd=off:fde=unused:hfsq=on:hfsqr=1,16:plsq=on:plsqc=1:plsqr=32,1:prag=on:rawr=on:s2a=on:sos=on:ss=axioms:i=687:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=1018:si=on:rtra=on_0"); + quick.push("lrs+1002_1:2_bd=off:erd=off:hud=10:ins=2:nm=64:nwc=6.0:piset=small_set:sd=1:sos=on:ss=axioms:st=2.0:i=528:si=on:rtra=on_0"); + quick.push("dis+1010_1:32_au=on:av=off:cnfonf=off:ins=1:sd=1:ss=axioms:st=3.0:tgt=full:i=581:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_au=on:cnfonf=off:hfsq=on:sd=2:sgt=8:ss=axioms:i=543:si=on:rtra=on_0"); + quick.push("dis+10_1:1_aac=none:acc=model:fde=unused:hfsq=on:sd=1:ss=axioms:i=303:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=off:bsr=unit_only:fd=off:fde=unused:fe=axiom:hud=5:nm=10:piset=equals:sos=on:sp=unary_frequency:spb=non_intro:ss=axioms:i=539:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:sos=all:ss=axioms:st=2.0:i=437:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_nm=2:sd=2:sos=on:ss=axioms:st=3.0:i=514:si=on:rtra=on_0"); + quick.push("dis+1002_1:128_au=on:awrs=converge:cnfonf=off:fd=off:ntd=on:s2a=on:sos=on:i=1339:si=on:rtra=on_0"); + quick.push("dis+10_8:1_s2a=on:s2agt=32:sac=on:ss=axioms:i=453:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:nwc=10.0:s2a=on:ss=axioms:i=637:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:fe=off:hud=5:ins=3:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=on:i=514:si=on:rtra=on_0"); + quick.push("lrs+10_3:2_au=on:bd=off:cnfonf=off:e2e=on:sd=1:sos=all:ss=axioms:st=2.0:i=351:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:bd=off:e2e=on:sos=all:ss=axioms:i=347:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_add=off:apa=on:au=on:cnfonf=off:e2e=on:er=tagged:kws=inv_precedence:s2a=on:sos=on:sp=occurrence:ss=axioms:st=1.2:i=759:si=on:rtra=on_0"); + quick.push("ott+21_1:1_cnfonf=off:nm=2:nwc=10.0:sgt=10:ss=axioms:i=777:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_amm=off:anc=all_dependent:cnfonf=lazy_pi_sigma_gen:ins=3:sd=1:sos=on:sp=const_max:ss=axioms:st=4.0:i=390:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_av=off:bd=off:fd=off:fs=off:fsr=off:sd=1:sos=on:ss=axioms:st=3.0:i=254:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:plsq=on:sd=1:sos=on:ss=axioms:st=1.5:i=296:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1801:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_kws=inv_frequency:sd=2:sos=all:ss=axioms:st=1.5:i=470:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_au=on:cnfonf=off:sd=2:sos=all:sp=frequency:ss=axioms:i=771:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bsr=unit_only:kws=precedence:prag=on:sos=on:sp=reverse_arity:ss=axioms:st=3.0:i=1030:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_bd=off:hfsq=on:hfsqr=2,1:ins=2:sd=1:spb=goal_then_units:ss=axioms:i=252:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_cnfonf=off:sd=2:sgt=8:ss=axioms:st=2.0:tgt=ground:i=509:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_bd=off:cnfonf=off:rp=on:sd=1:sp=unary_frequency:ss=axioms:i=556:si=on:rtra=on_0"); + quick.push("ott+1002_1:128_av=off:fde=none:hud=10:sd=2:sgt=16:sos=on:sp=const_frequency:ss=axioms:i=1076:si=on:rtra=on_0"); + // Improves by expected 61.06416849212749 probs costing 19992 Mi + // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit + quick.push("dis+10_1:1_fde=unused:s2a=on:s2at=3.0:i=665:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=599:si=on:rtra=on_0"); + quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1154:si=on:rtra=on_0"); + quick.push("dis+10_5:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:sd=2:ss=axioms:i=982:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_nm=2:nwc=6.0:s2a=on:sd=2:ss=axioms:st=1.5:i=1812:si=on:rtra=on_0"); + quick.push("lrs+1010_4:3_cnfonf=lazy_gen:fe=axiom:nwc=5.0:sos=all:sp=reverse_arity:i=741:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1032:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1299:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1024_bd=off:fde=unused:hfsq=on:hfsqr=1,16:plsq=on:plsqc=1:plsqr=32,1:prag=on:rawr=on:s2a=on:sos=on:ss=axioms:i=1949:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_fde=unused:fe=off:kws=precedence:prag=on:sp=const_frequency:ss=axioms:i=3798:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_add=off:au=on:avsq=on:avsqr=3,4:bd=off:cs=on:nwc=5.0:prag=on:sos=on:sp=occurrence:i=716:si=on:rtra=on_0"); + quick.push("dis+21_1:1024_av=off:e2e=on:sos=on:i=1201:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=3195:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=1262:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_amm=off:au=on:bd=off:cnfonf=off:hfsq=on:nm=2:sd=2:ss=axioms:st=2.0:i=820:si=on:rtra=on_0"); + quick.push("lrs+10_1:40_cnfonf=off:hud=1:ins=3:nm=16:prag=on:sac=on:sos=all:i=783:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_add=off:apa=on:au=on:cnfonf=off:e2e=on:er=tagged:kws=inv_precedence:s2a=on:sos=on:sp=occurrence:ss=axioms:st=1.2:i=509:si=on:rtra=on_0"); + quick.push("ott+1010_1:2_cnfonf=lazy_pi_sigma_gen:cond=fast:fe=axiom:nwc=10.0:sd=1:ss=axioms:i=1032:si=on:rtra=on_0"); + quick.push("ott+10_1:1024_c=on:fsr=off:hud=15:ins=3:kws=precedence:nwc=8.0:sp=reverse_arity:i=682:si=on:rtra=on_0"); + quick.push("dis+21_1:8_aac=none:cnfonf=lazy_pi_sigma_gen:fd=off:hud=10:lma=on:nm=50:sos=all:i=2178:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=3446:si=on:rtra=on_0"); + // Improves by expected 35.153584769349564 probs costing 29834 Mi + // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit + quick.push("dis+10_1:1_apa=on:au=on:bsr=unit_only:cbe=off:cnfonf=off:fd=off:fde=unused:ntd=on:plsq=on:plsqc=1:plsqr=21,1:s2agt=8:slsq=on:slsqc=1:i=1951:si=on:rtra=on_0"); + quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:fde=none:fe=off:nm=32:prag=on:sos=on:i=2744:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1032:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1328:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_anc=all_dependent:fde=none:kws=precedence:prag=on:sac=on:sos=on:tnu=2:uhcvi=on:i=5501:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=off:bsr=unit_only:fd=off:fde=unused:fe=axiom:hud=5:nm=10:piset=equals:sos=on:sp=unary_frequency:spb=non_intro:ss=axioms:i=539:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fde=none:fe=off:hud=5:prag=on:s2pl=no:slsq=on:sos=on:i=529:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bs=unit_only:fd=off:fe=axiom:fsr=off:hfsq=on:hfsqc=1:ins=3:piset=all_but_not_eq:sos=on:i=1549:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_cnfonf=off:fde=unused:fe=off:nm=10:ntd=on:piset=pi_sigma:sos=on:i=2675:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_au=on:bd=off:cnfonf=off:e2e=on:ins=3:nm=2:sac=on:sos=all:i=707:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:cnfonf=off:fsr=off:hfsq=on:ss=axioms:i=900:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_fde=none:fe=axiom:hud=5:nm=2:prag=on:sos=all:i=2490:si=on:rtra=on_0"); + quick.push("lrs+20_1:2_hfsq=on:ins=3:nwc=5.0:piset=all_but_not_eq:sd=1:sos=on:ss=axioms:st=1.5:i=1701:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=6491:si=on:rtra=on_0"); + quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:av=off:ins=1:sd=2:sos=on:sp=frequency:ss=axioms:i=2109:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_av=off:e2e=on:ntd=on:sd=2:sgt=16:ss=axioms:i=3752:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:cs=on:fsr=off:s2a=on:i=2356:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=4401:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:av=off:cnfonf=lazy_gen:nwc=10.0:s2a=on:s2at=3.0:ss=axioms:i=2409:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:bsd=on:bsr=unit_only:cnfonf=off:nm=32:s2a=on:sp=unary_first:i=2025:si=on:rtra=on_0"); + quick.push("dis+1004_1:1_apa=on:au=on:av=off:bsd=on:cnfonf=off:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=occurrence:tgt=ground:i=6699:si=on:rtra=on_0"); + // Improves by expected 19.712235757325942 probs costing 59380 Mi + // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit + quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); + quick.push("ott+10_1:32_au=on:fd=off:nm=32:s2a=on:s2agt=64:s2at=3.0:sd=1:sos=all:sp=const_frequency:ss=axioms:st=5.0:i=6069:si=on:rtra=on_0"); + quick.push("dis+10_1:12_acc=on:alpa=false:au=on:cnfonf=off:fd=off:lma=on:ntd=on:plsq=on:plsqr=32,1:sos=all:sp=const_max:i=2626:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_acc=on:au=on:cnfonf=off:fde=none:fe=axiom:fsr=off:hfsq=on:ins=2:nm=64:ntd=on:plsq=on:plsqc=1:plsqr=15,1:sac=on:i=8176:si=on:rtra=on_0"); + quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1367:si=on:rtra=on_0"); + quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=14044:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1457:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=929:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=4735:si=on:rtra=on_0"); + quick.push("dis+10_1:1_aac=none:acc=model:fde=unused:hfsq=on:sd=1:ss=axioms:i=1064:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=4554:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_cnfonf=off:fde=unused:fe=off:nm=10:ntd=on:piset=pi_sigma:sos=on:i=5166:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=11230:si=on:rtra=on_0"); + quick.push("lrs+21_3:1_amm=off:fe=off:hud=10:ntd=on:sos=on:uhcvi=on:i=1579:si=on:rtra=on_0"); + quick.push("dis+21_1:16_e2e=on:fe=axiom:nm=2:sos=on:sp=reverse_arity:uhcvi=on:i=5701:si=on:rtra=on_0"); + quick.push("ott+21_1:1_cnfonf=off:nm=2:nwc=10.0:sgt=10:ss=axioms:i=843:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_prag=on:sd=1:sp=const_frequency:ss=axioms:tgt=ground:i=2077:si=on:rtra=on_0"); + quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); + quick.push("dis+1010_8:15_au=on:cbe=off:cnfonf=off:fsr=off:kws=frequency:ntd=on:plsq=on:rawr=on:sp=const_min:tgt=ground:i=5455:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1703:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:s2a=on:sos=all:i=6628:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:sos=on:ss=axioms:i=12232:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=9159:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:bsd=on:bsr=unit_only:cnfonf=off:nm=32:s2a=on:sp=unary_first:i=2025:si=on:rtra=on_0"); + // Improves by expected 10.798310963931263 probs costing 115940 Mi + // Tue20 Overall score 585.6292337176405 probs on average / budget 235084 Mi } \ No newline at end of file diff --git a/CASC/Schedules.hpp b/CASC/Schedules.hpp index 16c50c7606..081a036a7f 100644 --- a/CASC/Schedules.hpp +++ b/CASC/Schedules.hpp @@ -51,6 +51,7 @@ class Schedules static void getSnakeTptpSatSchedule(const Shell::Property& property, Schedule& quick); static void getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick); static void getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick); + static void getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick); }; } diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 30db7ae7df..154d6523c9 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -172,6 +172,7 @@ void Options::init() "snake_tptp_sat", "snake_tptp_hol", "snake_slh", + "snake_slh2", "struct_induction"}); _schedule.description = "Schedule to be run by the portfolio mode. casc and smtcomp usually point to the most recent schedule in that category. file loads the schedule from a file specified in --schedule_file. Note that some old schedules may contain option values that are no longer supported - see ignore_missing."; _lookup.insert(&_schedule); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index f102fd7f06..6288a280f2 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -426,6 +426,7 @@ class Options SNAKE_TPTP_SAT, SNAKE_TPTP_HOL, SNAKE_SLH, + SNAKE_SLH2, STRUCT_INDUCTION }; From fd9da9acf645f8cbf08a814368b56e5987e2a4eb Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Sun, 18 Jun 2023 22:27:50 +0100 Subject: [PATCH 183/210] make hol feature split queue an alternative to theory split queue --- Saturation/SaturationAlgorithm.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 872adb0420..f7364e0d8b 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -152,6 +152,18 @@ std::unique_ptr makeLevel1(bool isOutermost, const Optio } return std::make_unique(isOutermost, opt, name + "ThSQ", std::move(queues)); } +#if VHOL + else if(opt.hoFeaturesSplitQueues()){ + Lib::vvector> queues; + auto cutoffs = opt.hoFeaturesSplitQueueCutoffs(); + for (unsigned i = 0; i < cutoffs.size(); i++) + { + auto queueName = name + "HoFSQ" + Int::toString(cutoffs[i]) + ":"; + queues.push_back(makeLevel1(false, opt, queueName)); + } + return std::make_unique(isOutermost, opt, name + "HoFSQ", std::move(queues)); + } +#endif else { return makeLevel0(isOutermost, opt, name); @@ -171,18 +183,6 @@ std::unique_ptr makeLevel2(bool isOutermost, const Optio } return std::make_unique(isOutermost, opt, name + "AvSQ", std::move(queues)); } -#if VHOL - else if(opt.hoFeaturesSplitQueues()){ - Lib::vvector> queues; - auto cutoffs = opt.hoFeaturesSplitQueueCutoffs(); - for (unsigned i = 0; i < cutoffs.size(); i++) - { - auto queueName = name + "HoFSQ" + Int::toString(cutoffs[i]) + ":"; - queues.push_back(makeLevel1(false, opt, queueName)); - } - return std::make_unique(isOutermost, opt, name + "HoFSQ", std::move(queues)); - } -#endif else { return makeLevel1(isOutermost, opt, name); From 80e02b0158f82831f59df275fd60a2a99fc82a6b Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 22 Jun 2023 16:19:44 +0100 Subject: [PATCH 184/210] some post CASC submission code cleanup --- CASC/PortfolioMode.cpp | 8 +- CASC/Schedules.cpp | 153 +----------------------------- CASC/Schedules.hpp | 9 +- Indexing/TermSubstitutionTree.hpp | 6 +- Inferences/CNFOnTheFly.cpp | 2 + Inferences/Injectivity.cpp | 10 +- Inferences/Injectivity.hpp | 4 + Kernel/RobSubstitution.cpp | 22 ++++- Kernel/TermTransformer.hpp | 8 +- Parse/TPTP.cpp | 2 + Shell/Options.cpp | 7 +- Shell/Options.hpp | 5 +- Shell/Shuffling.cpp | 4 +- Shell/Statistics.cpp | 12 ++- Shell/Statistics.hpp | 2 + vampire.cpp | 9 +- 16 files changed, 76 insertions(+), 187 deletions(-) diff --git a/CASC/PortfolioMode.cpp b/CASC/PortfolioMode.cpp index 86a03b103b..4dc1735587 100644 --- a/CASC/PortfolioMode.cpp +++ b/CASC/PortfolioMode.cpp @@ -370,6 +370,8 @@ void PortfolioMode::getSchedules(const Property& prop, Schedule& quick, Schedule case Options::Schedule::SNAKE_TPTP_SAT: Schedules::getSnakeTptpSatSchedule(prop,quick); break; + +#if VHOL case Options::Schedule::SNAKE_TPTP_HOL: Schedules::getSnakeTptpHolSchedule(prop,quick); break; @@ -379,6 +381,7 @@ void PortfolioMode::getSchedules(const Property& prop, Schedule& quick, Schedule case Options::Schedule::SNAKE_SLH2: Schedules::getSnakeSlh2Schedule(prop,quick); break; +#endif case Options::Schedule::CASC_2019: case Options::Schedule::CASC: @@ -390,11 +393,6 @@ void PortfolioMode::getSchedules(const Property& prop, Schedule& quick, Schedule Schedules::getCascSat2019Schedule(prop,quick,fallback); break; -#if VHOL - case Options::Schedule::CASC_HOL_2020: - Schedules::getHigherOrderSchedule2020(quick,fallback); - break; -#endif case Options::Schedule::SMTCOMP: case Options::Schedule::SMTCOMP_2018: diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 057b914562..9ba3e68cf5 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -2871,153 +2871,6 @@ void Schedules::getLtb2017DefaultSchedule(const Property& property, Schedule& sc sched.push("lrs+1003_4_bsr=unit_only:cond=fast:fsr=off:gsp=on:gs=on:gsaa=from_current:nm=0:nwc=1:stl=300:sos=on:sac=on:add=large:afp=10000:afq=1.1:anc=none:urr=ec_only:uhcvi=on_60"); // HLL 50 (1) } -#if VHOL - -void Schedules::getHigherOrderSchedule2020(Schedule& quick, Schedule& fallback) -{ - //no fallback at present - quick.push("ott+1002_2_av=off:bd=preordered:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:irw=on:lma=on:nm=64:nwc=10:sp=reverse_arity:updr=off_2"); - quick.push("lrs-11_4:1_afp=4000:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_2"); - quick.push("lrs+1011_8_add=large:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_3"); - quick.push("dis+10_128_acc=on:add=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=4000:afq=1.4:amm=off:bd=preordered:cond=on:fsr=off:fde=unused:gs=on:gsem=on:irw=on:lma=on:nm=64:nwc=1.2:nicw=on:sos=on:sp=occurrence:updr=off:uhcvi=on_2"); - quick.push("lrs+1010_8_add=off:afp=100000:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afq=1.0:amm=off:anc=none:irw=on:nm=16:newcnf=on:nwc=1.1:nicw=on:stl=30:sp=reverse_arity:urr=on_13"); - quick.push("ott+1002_8:1_add=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afr=on:afp=100000:afq=1.1:amm=off:anc=none:bd=off:bs=unit_only:fsr=off:gs=on:gsem=off:nm=32:nwc=10:sp=occurrence:urr=on:updr=off_14"); - quick.push("lrs+1011_5:1_acc=on:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:amm=off:anc=all_dependent:bd=off:ccuc=small_ones:fde=unused:gs=on:gsaa=full_model:gsem=off:lcm=predicate:lwlo=on:nm=6:newcnf=on:nwc=2.5:stl=30:sp=occurrence:updr=off_3"); - quick.push("lrs+4_3_av=off:br=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:nm=0:newcnf=on:nwc=1:stl=30:sp=occurrence:urr=on_32"); - quick.push("dis+1010_3:2_av=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:gsp=on:nm=2:nwc=1:sp=reverse_arity:urr=ec_only_29"); - quick.push("dis+1_2:3_acc=on:add=large:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=40000:afq=2.0:amm=sco:anc=none:er=filter:fsr=off:gsp=on:gs=on:gsem=off:nm=64:newcnf=on:nwc=1_3"); - quick.push("dis+10_128_acc=on:add=off:add=off:afp=4000:afq=1.4:amm=off:bd=preordered:cond=on:fsr=off:fde=unused:gs=on:gsem=on:irw=on:lma=on:nm=64:nwc=1.2:nicw=on:sos=on:sp=occurrence:updr=off:uhcvi=on_40"); - quick.push("dis-11_3_add=off:afp=40000:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afq=1.0:amm=sco:anc=none:gs=on:irw=on:lcm=reverse:nm=6:nwc=1:sd=4:ss=axioms:st=3.0:sos=on:sac=on_2"); - quick.push("dis+1002_6_add=large:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=40000:afq=2.0:bsr=on:cond=on:irw=on:lma=on:nm=2:nwc=2.5:nicw=on:sp=reverse_arity:updr=off_2"); - quick.push("lrs+1010_3_av=off:fsr=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:gs=on:gsem=off:nm=2:newcnf=on:nwc=2:stl=30:sp=reverse_arity:urr=on:updr=off_9"); - quick.push("lrs+1002_1_av=off:er=filter:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:fsr=off:gs=on:gsem=off:irw=on:lma=on:nm=4:nwc=1:stl=30:sd=3:ss=axioms:st=1.5:sos=on_1"); - quick.push("ott+2_2_afp=10000:afq=1.4:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:amm=off:anc=none:gsp=on:gs=on:gsem=off:irw=on:lcm=predicate:nm=32:nwc=1.5:sos=on:sp=reverse_arity_7"); - quick.push("lrs+1010_3:2_afr=on:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=100000:afq=1.1:anc=none:gsp=on:irw=on:lwlo=on:nm=2:newcnf=on:nwc=1.7:sac=on:sp=occurrence_300"); - quick.push("lrs+1011_5:1_acc=on:csup=on:inj=on:e2e=on:prag=on:cases=on:cnfonf=eager:amm=off:anc=all_dependent:bd=off:ccuc=small_ones:fde=unused:gs=on:gsaa=full_model:gsem=off:lcm=predicate:lwlo=on:nm=6:newcnf=on:nwc=2.5:stl=30:sp=occurrence:updr=off_30"); - quick.push("ott+11_20_afr=on:afp=100000:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afq=1.0:amm=sco:anc=all:bsr=on:irw=on:lma=on:nm=4:nwc=1.2:sac=on:sp=occurrence_6"); - quick.push("dis+1002_3:1_acc=model:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afr=on:afp=40000:afq=1.1:anc=none:ccuc=first:fsr=off:gsp=on:irw=on:nm=16:nwc=1:sos=all_8"); - quick.push("lrs+10_12_add=off:afp=100000:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afq=1.4:amm=sco:anc=none:cond=on:lma=on:nm=64:nwc=1.3:stl=30:sac=on:urr=on_41"); - quick.push("lrs-11_4:1_afp=4000:csup=on:inj=on:chr=on:cases=on:cnfonf=lazy_gen:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_30"); - quick.push("dis+10_4_av=off:bsr=on:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:cond=fast:er=filter:fde=none:gsp=on:lcm=reverse:lma=on:nwc=4:sp=occurrence:urr=on_8"); - quick.push("lrs+1002_1_add=large:csup=on:inj=on:fe=off:chr=on:cases=on:cnfonf=eager:afr=on:afp=1000:afq=1.1:amm=sco:anc=none:er=known:fsr=off:gs=on:gsem=off:lma=on:nm=2:newcnf=on:nwc=2:stl=30:sd=1:ss=axioms:st=5.0:sp=reverse_arity:updr=off_50"); - quick.push("lrs+1011_5_add=large:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=1000:afq=1.2:anc=none:fsr=off:irw=on:lma=on:nm=64:newcnf=on:nwc=1:stl=30:sd=3:ss=axioms:st=2.0:sos=on:sac=on:sp=reverse_arity:urr=on:updr=off_130"); - quick.push("lrs+1010_8_add=off:afp=100000:csup=on:inj=off:cases=on:chr=off:e2e=on:cnfonf=eager:afq=1.0:amm=off:anc=none:irw=on:nm=16:newcnf=on:nwc=1.1:nicw=on:stl=30:sp=reverse_arity:urr=on_13"); - quick.push("lrs+1_4_afp=100000:afq=1.2:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:anc=none:bd=off:cond=on:gs=on:gsem=off:nm=64:nwc=1:sd=2:ss=axioms:st=2.0:sos=all:updr=off_300"); - quick.push("lrs-11_4:1_afp=4000:csup=on:inj=on:mXXn=1:cases=on:e2e=on:cnfonf=eager:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_186"); - quick.push("dis+1002_4_add=large:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=40000:afq=1.0:anc=none:cond=fast:fde=none:gs=on:gsaa=full_model:lma=on:lwlo=on:nm=0:nwc=1.5:sp=reverse_arity:tha=off_300"); - quick.push("dis-11_3_add=off:afp=40000:csup=on:inj=on:chr=on:e2e=on:prag=on:cases=on:cnfonf=eager:afq=1.0:fde=all:amm=sco:anc=none:gs=on:irw=on:lcm=reverse:nm=6:nwc=1:sd=4:ss=axioms:st=3.0:sos=on:sac=on_50"); - quick.push("dis+1011_10_add=large:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afr=on:afp=4000:afq=1.0:amm=off:anc=none:lma=on:nm=64:nwc=4:sac=on:sp=occurrence_75"); - quick.push("dis+1010_3:2_av=off:csup=on:prag=on:chr=on:cases=on:bet=on:cnfonf=lazy_not_be_gen:gsp=on:nm=2:nwc=1:sp=reverse_arity:urr=ec_only_29"); - quick.push("lrs+1011_8_add=large:csup=on:inj=on:prag=on:cases=on:cnfonf=eager:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_26"); - quick.push("lrs+1011_8_add=large:csup=on:fe=off:cases=on:cnfonf=eager:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_30"); - quick.push("dis+1002_4_add=large:csup=on:narr=off:inj=on:prag=on:cbe=off:cases=on:cnfonf=eager:afp=40000:afq=1.0:anc=none:cond=fast:fde=none:gs=on:gsaa=full_model:lma=on:lwlo=on:nm=0:nwc=1.5:sp=reverse_arity_27"); - quick.push("dis+1_3_add=large:afp=4000:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afq=1.0:anc=none:gs=on:gsem=off:inw=on:lcm=reverse:lwlo=on:nm=64:nwc=1:sos=all:sac=on:updr=off:uhcvi=on_125"); - quick.push("dis+1010_3:1_av=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:irw=on:nm=32:nwc=1:sos=all:urr=ec_only:updr=off_77"); - quick.push("lrs+1011_5:4_acc=on:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:add=large:afr=on:afp=10000:afq=2.0:amm=sco:anc=none:bsr=on:ccuc=first:cond=on:fde=unused:gs=on:gsaa=from_current:gsem=off:irw=on:nm=2:newcnf=on:nwc=1.2:stl=30:sos=on:sac=on:sp=reverse_arity:updr=off_126"); - quick.push("lrs+1002_1_add=large:csup=on:narr=off:inj=on:fe=off:chr=on:cases=on:cnfonf=eager:afr=on:afp=1000:afq=1.1:amm=sco:anc=none:er=known:fsr=off:gs=on:gsem=off:lma=on:nm=2:newcnf=on:nwc=2:stl=30:sd=1:ss=axioms:st=5.0:sp=reverse_arity:updr=off_50"); - quick.push("lrs-3_4:1_afp=1000:afq=1.4:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:amm=sco:fde=none:gs=on:lcm=reverse:lma=on:nwc=1.5:stl=30:sd=1:ss=axioms:sp=reverse_arity:urr=on:updr=off:uhcvi=on_11"); - quick.push("ott+11_2:1_add=large:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=40000:afq=2.0:amm=sco:anc=none:br=off:cond=on:irw=on:nwc=1:sd=2:ss=axioms:st=2.0:sos=all:urr=on:updr=off_9"); - quick.push("lrs+1011_8_add=large:csup=off:cases=on:cnfonf=eager:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_13"); - quick.push("lrs+1011_2:1_av=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:irw=on:lwlo=on:nm=16:newcnf=on:nwc=2:sd=4:ss=axioms:st=3.0:sp=occurrence_300"); - quick.push("dis+1011_4_av=off:cond=on:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:irw=on:lma=on:nm=2:nwc=1:sos=all:sp=occurrence_5"); - quick.push("lrs+10_3:1_av=off:bsr=on:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:cond=on:er=known:gs=on:lcm=reverse:nm=32:nwc=4:stl=30:sp=occurrence:urr=on:updr=off_73"); - quick.push("dis+10_1_add=off:afp=4000:csup=on:inj=on:chr=on:e2e=on:cases=on:cnfonf=eager:afq=1.2:anc=none:br=off:cond=on:gs=on:irw=on:lcm=reverse:nwc=10:sd=10:ss=axioms:sos=theory:sac=on:sp=occurrence:urr=on_12"); - quick.push("lrs+4_3_av=off:bd=preordered:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:bs=unit_only:cond=fast:fde=unused:gsp=on:gs=on:gsem=on:lma=on:lwlo=on:nm=6:nwc=1:stl=60:sp=occurrence:uhcvi=on_481"); - quick.push("lrs+1002_1_av=off:fde=unused:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:lwlo=on:nm=16:nwc=4:sp=occurrence_300"); - quick.push("ott+1002_2_av=off:bd=preordered:csup=on:inj=on:chr=on:cases=on:cnfonf=lazy_not_gen_be_off:bet=on:sup=off:irw=on:lma=on:nm=64:nwc=10:sp=reverse_arity:updr=off_70"); - quick.push("lrs-11_4:1_afp=4000:csup=on:inj=on:bet=on:cases=on:cnfonf=lazy_not_gen_be_off:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_45"); - quick.push("lrs+1011_8_add=large:csup=on:e2e=on:prag=on:mXXn=1:cnfonf=lazy_simp:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_19"); - quick.push("dis+1011_4_av=off:cond=on:piset=false_true_not:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:irw=on:lma=on:nm=2:nwc=1:sos=all:sp=occurrence_5"); - quick.push("dis+1002_7_acc=on:afp=4000:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afq=2.0:amm=sco:anc=none:cond=fast:fsr=off:gsp=on:gs=on:gsem=on:lma=on:nm=6:newcnf=on:nwc=1.1:nicw=on:sos=on:sac=on:sp=reverse_arity:urr=ec_only:updr=off_73"); - quick.push("dis+11_24_afp=40000:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afq=1.1:amm=sco:anc=none:bs=on:gs=on:gsem=off:lcm=predicate:lma=on:nm=2:nwc=1:sos=on:sac=on:updr=off_91"); - quick.push("lrs+1010_8_add=off:afp=100000:afq=1.0:amm=off:anc=none:csup=on:cases=on:ptlr=on:irw=on:nm=16:newcnf=on:nwc=1.1:nicw=on:stl=30:sp=reverse_arity:urr=on_13"); - quick.push("lrs+1011_5_afr=on:afp=100000:narr=ski:prag=on:mXXn=3:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afq=1.0:amm=off:anc=none:cond=on:lma=on:nm=6:nwc=1:stl=30:sac=on:urr=on_15"); - quick.push("lrs+1011_5:4_acc=on:narr=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:add=large:afr=on:afp=0:afq=2.0:amm=sco:anc=none:bsr=on:ccuc=first:cond=on:fde=unused:gs=on:gsaa=from_current:gsem=off:irw=on:nm=2:newcnf=on:nwc=1.2:stl=30:sos=on:sac=on:sp=reverse_arity:updr=off_12"); - quick.push("lrs+1011_8_add=large:csup=on:narr=off:fe=off:cases=on:cnfonf=eager:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_10"); - quick.push("lrs+11_3:2_add=large:afp=1000:afq=1.1:amm=sco:anc=none:csup=on:cases=on:ptlr=on:bd=off:er=filter:irw=on:lcm=predicate:lma=on:nm=6:nwc=1:stl=30:sp=occurrence:urr=on:updr=off_10"); - quick.push("lrs+1011_8_add=large:csup=on:piset=all:inj=on:chr=on:cases=on:cnfonf=eager:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_31"); - quick.push("lrs+1_8:1_av=off:cond=fast:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:fde=unused:lcm=predicate:nm=16:nwc=10:sp=occurrence:urr=ec_only_600"); - quick.push("dis+1011_5_add=off:afr=on:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=10000:afq=1.1:amm=off:anc=none:cond=on:fsr=off:nm=32:nwc=1:sd=3:ss=axioms:st=2.0:sp=occurrence:updr=off_2"); - quick.push("lrs-11_4:1_afp=0:narr=sk:prag=on:csup=on:inj=on:mXXn=1:cases=on:e2e=on:cnfonf=eager:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_186"); - quick.push("dis+1002_6_add=large:csup=on:narr=sk:prag=on:mXXn=4:inj=on:chr=on:cases=on:cnfonf=eager:afp=0:afq=2.0:bsr=on:cond=on:irw=on:lma=on:nm=2:nwc=2.5:nicw=on:sp=reverse_arity:updr=off_22"); - quick.push("lrs-11_4:1_afp=0:fe=axiom:narr=sk:prag=on:csup=on:inj=on:mXXn=1:cases=on:e2e=on:cnfonf=eager:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_186"); - quick.push("dis+1_3_add=large:afp=4000:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afq=1.0:anc=none:gs=on:gsem=off:inw=on:lcm=reverse:lwlo=on:nm=64:nwc=1:sos=all:sac=on:updr=off:uhcvi=on_300"); - quick.push("lrs+1011_10_aac=none:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:acc=model:add=large:afp=40000:afq=2.0:anc=none:bd=off:bsr=on:fsr=off:gs=on:gsem=off:irw=on:lcm=reverse:lwlo=on:nm=64:nwc=3:nicw=on:stl=30_38"); - quick.push("lrs+10_1:1_av=off:bsr=on:csup=on:fe=axiom:cases=on:cnfonf=eager:cond=on:er=known:gs=on:lcm=reverse:nm=32:nwc=4:stl=30:sp=occurrence:urr=on:updr=off_67"); - quick.push("ott+11_2:1_add=large:narr=ski:prag=on:mXXn=4:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=0:afq=2.0:amm=sco:anc=none:br=off:cond=on:irw=on:nwc=1:sd=2:ss=axioms:st=2.0:sos=all:urr=on:updr=off_9"); - quick.push("ott+1002_8:1_add=off:csup=on:fe=axiom:chr=on:cases=on:cnfonf=eager:afr=on:afp=100000:afq=1.1:amm=off:anc=none:bd=off:bs=unit_only:fsr=off:gs=on:gsem=off:nm=32:nwc=10:sp=occurrence:urr=on:updr=off_15"); - quick.push("dis+1011_10_add=large:csup=on:narr=off:inj=on:chr=on:cases=on:cnfonf=eager:afr=on:afp=4000:afq=1.0:amm=off:anc=none:lma=on:nm=64:nwc=4:sac=on:sp=occurrence_20"); - quick.push("lrs-11_4:1_afp=0:fe=axiom:narr=off:csup=on:inj=on:chr=on:cases=on:cnfonf=lazy_gen:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_30"); - quick.push("lrs+1011_5_add=large:csup=on:fe=axiom:ntd=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=0:afq=1.2:anc=none:fsr=off:irw=on:lma=on:nm=64:newcnf=on:nwc=1:stl=30:sd=3:ss=axioms:st=2.0:sos=on:sac=on:sp=reverse_arity:urr=on:updr=off_40"); - quick.push("lrs+1002_1_av=off:csup=on:e2e=on:cs=on:fde=unused:lwlo=on:nm=16:nwc=4:sp=occurrence_150"); - quick.push("ott+2_1:1_csup=on:afp=0:fe=axiom:narr=off:prag=on:cs=on_50"); - quick.push("lrs+1011_2:1_av=off:fe=axiom:narr=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:irw=on:lwlo=on:nm=16:newcnf=on:nwc=2:sd=4:ss=axioms:st=3.0:sp=occurrence_100"); - quick.push("lrs+1011_2:1_av=off:piset=small_set:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:irw=on:lwlo=on:nm=16:newcnf=on:nwc=2:sd=4:ss=axioms:st=3.0:sp=occurrence_200"); - quick.push("lrs+1011_2:1_av=off:irw=off:csup=on:e2e=on:cs=on:lwlo=on:nm=16:newcnf=on:nwc=2:sd=4:ss=axioms:st=3.0:sp=occurrence_30"); - quick.push("dis+1011_10_add=large:csup=on:fe=axiom:narr=off:inj=on:chr=on:cases=on:cnfonf=eager:afr=on:afp=4000:afq=1.0:amm=off:anc=none:afp=0:lma=on:nm=64:nwc=4:sac=on:sp=occurrence_20"); - quick.push("dis+1002_4_add=large:afp=40000:afq=1.5:csup=on:e2e=on:cs=on:anc=none:cond=fast:fde=none:gs=on:gsaa=full_model:lma=on:lwlo=on:nm=0:nwc=1.5:sp=reverse_arity:tha=off_44"); - quick.push("lrs+11_3:2_add=large:afp=1000:afq=1.1:amm=sco:csup=on:e2e=on:cs=on:anc=none:bd=off:er=filter:irw=on:lcm=predicate:lma=on:nm=6:nwc=1:stl=30:sp=occurrence:urr=on:updr=off_43"); - quick.push("lrs+4_3_av=off:bd=preordered:bs=unit_only:cond=fast:csup=on:e2e=on:cs=on:fde=unused:gsp=on:gs=on:gsem=on:lma=on:lwlo=on:nm=6:nwc=1:stl=60:sp=occurrence:uhcvi=on_100"); - quick.push("lrs-3_4:1_afp=1000:afq=1.4:csup=on:e2e=on:cs=on:amm=sco:fde=none:gs=on:lcm=reverse:lma=on:nwc=1.5:stl=30:sd=1:ss=axioms:sp=reverse_arity:urr=on:updr=off:uhcvi=on_11"); - quick.push("ott+2_1:1_csup=on:prag=on:cs=on:inj=on:mXXn=1_170"); - quick.push("dis-11_3_add=off:afp=0:fe=axiom:csup=on:inj=on:chr=on:e2e=on:prag=on:cases=on:cnfonf=eager:afq=1.0:fde=all:amm=sco:anc=none:gs=on:irw=on:lcm=reverse:nm=6:nwc=1:sd=4:ss=axioms:st=3.0:sos=on:sac=on_50"); - quick.push("lrs+1011_5:1_acc=on:fe=axiom:csup=on:inj=on:e2e=on:prag=on:cases=on:cnfonf=eager:amm=off:anc=all_dependent:bd=off:ccuc=small_ones:afp=0:fde=unused:gs=on:gsaa=full_model:gsem=off:lcm=predicate:lwlo=on:nm=6:newcnf=on:nwc=2.5:stl=30:sp=occurrence:updr=off_30"); - quick.push("ott+1002_2_av=off:bd=preordered:narr=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:irw=on:lma=on:nm=64:nwc=10:sp=reverse_arity:updr=off_20"); - quick.push("lrs-11_4:1_afp=4000:narr=off:csup=on:inj=on:chr=on:cases=on:cnfonf=lazy_gen:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_30"); - quick.push("lrs+1011_2:1_av=off:irw=off:ntd=on:csup=on:e2e=on:cs=on:lwlo=on:nm=16:newcnf=on:nwc=2:sd=4:ss=axioms:st=3.0:sp=occurrence_30"); - quick.push("lrs+1010_3:2_afr=on:csup=on:ntd=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=100000:afq=1.1:anc=none:gsp=on:irw=on:lwlo=on:nm=2:newcnf=on:nwc=1.7:sac=on:sp=occurrence_300"); - quick.push("lrs+1_8:1_av=off:fe=axiom:cond=fast:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:fde=unused:lcm=predicate:nm=16:nwc=10:sp=occurrence:urr=ec_only_300"); - quick.push("ott+2_1:1_csup=on:narr=off:prag=on:cs=on_110"); - quick.push("lrs+1011_2:1_av=off:narr=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:irw=on:lwlo=on:nm=16:newcnf=on:nwc=2:sd=4:ss=axioms:st=3.0:sp=occurrence_200"); - quick.push("lrs+1011_5_add=large:csup=on:ntd=on:inj=on:chr=on:cases=on:cnfonf=eager:afp=1000:afq=1.2:anc=none:fsr=off:irw=on:lma=on:nm=64:newcnf=on:nwc=1:stl=30:sd=3:ss=axioms:st=2.0:sos=on:sac=on:sp=reverse_arity:urr=on:updr=off_130"); - quick.push("lrs+1011_5_add=large:csup=on:fe=axiom:inj=on:chr=on:cases=on:cnfonf=eager:afp=1000:afq=1.2:anc=none:fsr=off:irw=on:lma=on:nm=64:newcnf=on:nwc=1:stl=30:sd=3:ss=axioms:st=2.0:sos=on:sac=on:sp=reverse_arity:urr=on:updr=off_130"); - quick.push("lrs+1011_8_add=large:csup=on:fe=axiom:e2e=on:prag=on:mXXn=1:cnfonf=lazy_simp:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_19"); - quick.push("lrs+1011_8_add=large:csup=on:fe=axiom:piset=all:inj=on:chr=on:cases=on:cnfonf=eager:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_31"); - quick.push("ott+1002_2_av=off:bd=preordered:csup=on:inj=on:cvc=on:chr=on:cases=on:cnfonf=eager:irw=on:lma=on:nm=64:nwc=10:sp=reverse_arity:updr=off_2"); - quick.push("lrs-11_4:1_afp=4000:csup=on:inj=on:chr=on:cvc=on:cases=on:cnfonf=eager:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_2"); - quick.push("lrs+1011_8_add=large:csup=on:inj=on:chr=on:cvc=on:cases=on:cnfonf=eager:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_3"); - quick.push("dis+10_128_acc=on:add=off:csup=on:inj=on:chr=on:cvc=on:cases=on:cnfonf=eager:afp=4000:afq=1.4:amm=off:bd=preordered:cond=on:fsr=off:fde=unused:gs=on:gsem=on:irw=on:lma=on:nm=64:nwc=1.2:nicw=on:sos=on:sp=occurrence:updr=off:uhcvi=on_2"); - quick.push("lrs+1010_8_add=off:afp=100000:csup=on:inj=on:chr=on:cvc=on:cases=on:cnfonf=eager:afq=1.0:amm=off:anc=none:irw=on:nm=16:newcnf=on:nwc=1.1:nicw=on:stl=30:sp=reverse_arity:urr=on_13"); - quick.push("ott+1002_8:1_add=off:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:afr=on:afp=100000:afq=1.1:amm=off:anc=none:bd=off:bs=unit_only:fsr=off:gs=on:gsem=off:nm=32:nwc=10:sp=occurrence:urr=on:updr=off_14"); - quick.push("lrs+1011_5:1_acc=on:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:amm=off:anc=all_dependent:bd=off:ccuc=small_ones:fde=unused:gs=on:gsaa=full_model:gsem=off:lcm=predicate:lwlo=on:nm=6:newcnf=on:nwc=2.5:stl=30:sp=occurrence:updr=off_3"); - quick.push("lrs+4_3_av=off:br=off:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:nm=0:newcnf=on:nwc=1:stl=30:sp=occurrence:urr=on_32"); - quick.push("dis+1010_3:2_av=off:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:gsp=on:nm=2:nwc=1:sp=reverse_arity:urr=ec_only_29"); - quick.push("dis+1_2:3_acc=on:add=large:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:afp=40000:afq=2.0:amm=sco:anc=none:er=filter:fsr=off:gsp=on:gs=on:gsem=off:nm=64:newcnf=on:nwc=1_3"); - quick.push("dis+10_128_acc=on:add=off:add=off:afp=4000:afq=1.4:amm=off:cvc=on:bd=preordered:cond=on:fsr=off:fde=unused:gs=on:gsem=on:irw=on:lma=on:nm=64:nwc=1.2:nicw=on:sos=on:sp=occurrence:updr=off:uhcvi=on_40"); - quick.push("dis-11_3_add=off:afp=40000:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:afq=1.0:amm=sco:anc=none:gs=on:irw=on:lcm=reverse:nm=6:nwc=1:sd=4:ss=axioms:st=3.0:sos=on:sac=on_2"); - quick.push("dis+1002_6_add=large:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:afp=40000:afq=2.0:bsr=on:cond=on:irw=on:lma=on:nm=2:nwc=2.5:nicw=on:sp=reverse_arity:updr=off_2"); - quick.push("lrs+1010_3_av=off:fsr=off:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:gs=on:gsem=off:nm=2:newcnf=on:nwc=2:stl=30:sp=reverse_arity:urr=on:updr=off_9"); - quick.push("lrs+1002_1_av=off:er=filter:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:fsr=off:gs=on:gsem=off:irw=on:lma=on:nm=4:nwc=1:stl=30:sd=3:ss=axioms:st=1.5:sos=on_1"); - quick.push("ott+2_2_afp=10000:afq=1.4:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:amm=off:anc=none:gsp=on:gs=on:gsem=off:irw=on:lcm=predicate:nm=32:nwc=1.5:sos=on:sp=reverse_arity_7"); - quick.push("lrs+1010_3:2_afr=on:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:afp=100000:afq=1.1:anc=none:gsp=on:irw=on:lwlo=on:nm=2:newcnf=on:nwc=1.7:sac=on:sp=occurrence_300"); - quick.push("lrs+1011_5:1_acc=on:csup=on:inj=on:e2e=on:prag=on:cvc=on:cases=on:cnfonf=eager:amm=off:anc=all_dependent:bd=off:ccuc=small_ones:fde=unused:gs=on:gsaa=full_model:gsem=off:lcm=predicate:lwlo=on:nm=6:newcnf=on:nwc=2.5:stl=30:sp=occurrence:updr=off_30"); - quick.push("ott+11_20_afr=on:afp=100000:csup=on:inj=on:chr=on:cvc=on:cases=on:cnfonf=eager:afq=1.0:amm=sco:anc=all:bsr=on:irw=on:lma=on:nm=4:nwc=1.2:sac=on:sp=occurrence_6"); - quick.push("dis+1002_3:1_acc=model:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:afr=on:afp=40000:afq=1.1:anc=none:ccuc=first:fsr=off:gsp=on:irw=on:nm=16:nwc=1:sos=all_8"); - quick.push("lrs+10_12_add=off:afp=100000:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=eager:afq=1.4:amm=sco:anc=none:cond=on:lma=on:nm=64:nwc=1.3:stl=30:sac=on:urr=on_41"); - quick.push("lrs-11_4:1_afp=4000:csup=on:inj=on:chr=on:cases=on:cvc=on:cnfonf=lazy_gen:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_30"); - quick.push("dis+10_4_av=off:bsr=on:csup=on:cvc=on:inj=on:chr=on:cases=on:cnfonf=eager:cond=fast:er=filter:fde=none:gsp=on:lcm=reverse:lma=on:nwc=4:sp=occurrence:urr=on_8"); - quick.push("lrs+1002_1_add=large:csup=on:inj=on:cvc=on:fe=off:chr=on:cases=on:cnfonf=eager:afr=on:afp=1000:afq=1.1:amm=sco:anc=none:er=known:fsr=off:gs=on:gsem=off:lma=on:nm=2:newcnf=on:nwc=2:stl=30:sd=1:ss=axioms:st=5.0:sp=reverse_arity:updr=off_50"); - quick.push("lrs+1011_5_add=large:csup=on:inj=on:cvc=on:chr=on:cases=on:cnfonf=eager:afp=1000:afq=1.2:anc=none:fsr=off:irw=on:lma=on:nm=64:newcnf=on:nwc=1:stl=30:sd=3:ss=axioms:st=2.0:sos=on:sac=on:sp=reverse_arity:urr=on:updr=off_130"); - quick.push("lrs+1010_8_add=off:afp=100000:csup=on:cvc=on:inj=off:cases=on:chr=off:e2e=on:cnfonf=eager:afq=1.0:amm=off:anc=none:irw=on:nm=16:newcnf=on:nwc=1.1:nicw=on:stl=30:sp=reverse_arity:urr=on_13"); - quick.push("lrs+1_4_afp=100000:afq=1.2:csup=on:inj=on:cvc=on:chr=on:cases=on:cnfonf=eager:anc=none:bd=off:cond=on:gs=on:gsem=off:nm=64:nwc=1:sd=2:ss=axioms:st=2.0:sos=all:updr=off_300"); - quick.push("lrs-11_4:1_afp=4000:csup=on:inj=on:mXXn=1:cvc=on:cases=on:e2e=on:cnfonf=eager:afq=2.0:anc=none:br=off:gs=on:lwlo=on:nm=64:nwc=3:stl=30:urr=on_186"); - quick.push("dis+1002_4_add=large:csup=on:inj=on:chr=on:cvc=on:cases=on:cnfonf=eager:afp=40000:afq=1.0:anc=none:cond=fast:fde=none:gs=on:gsaa=full_model:lma=on:lwlo=on:nm=0:nwc=1.5:sp=reverse_arity:tha=off_300"); - quick.push("dis-11_3_add=off:afp=40000:csup=on:inj=on:cvc=on:chr=on:e2e=on:prag=on:cases=on:cnfonf=eager:afq=1.0:fde=all:amm=sco:anc=none:gs=on:irw=on:lcm=reverse:nm=6:nwc=1:sd=4:ss=axioms:st=3.0:sos=on:sac=on_50"); - quick.push("dis+1011_10_add=large:csup=on:inj=on:chr=on:cvc=on:cases=on:cnfonf=eager:afr=on:afp=4000:afq=1.0:amm=off:anc=none:lma=on:nm=64:nwc=4:sac=on:sp=occurrence_75"); - quick.push("dis+1010_3:2_av=off:csup=on:prag=on:chr=on:cvc=on:cases=on:bet=on:cnfonf=lazy_not_be_gen:gsp=on:nm=2:nwc=1:sp=reverse_arity:urr=ec_only_29"); - quick.push("lrs+1011_8_add=large:csup=on:inj=on:prag=on:cvc=on:cases=on:cnfonf=eager:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_26"); - quick.push("lrs+1011_8_add=large:csup=on:fe=off:cases=on:cvc=on:cnfonf=eager:afp=100000:afq=1.1:er=filter:gsp=on:gs=on:gsem=on:lma=on:nm=6:nwc=1:stl=30:sd=2:ss=axioms:st=1.5:sos=on_30"); - quick.push("dis+1002_4_add=large:csup=on:narr=off:inj=on:cvc=on:prag=on:cbe=off:cases=on:cnfonf=eager:afp=40000:afq=1.0:anc=none:cond=fast:fde=none:gs=on:gsaa=full_model:lma=on:lwlo=on:nm=0:nwc=1.5:sp=reverse_arity_27"); - quick.push("dis+1_3_add=large:afp=4000:csup=on:inj=on:cvc=on:chr=on:cases=on:cnfonf=eager:afq=1.0:anc=none:gs=on:gsem=off:inw=on:lcm=reverse:lwlo=on:nm=64:nwc=1:sos=all:sac=on:updr=off:uhcvi=on_125"); - quick.push("dis+1010_3:1_av=off:csup=on:inj=on:chr=on:cvc=on:cases=on:cnfonf=eager:irw=on:nm=32:nwc=1:sos=all:urr=ec_only:updr=off_77"); - quick.push("lrs+1010_3_av=off:fsr=off:csup=on:inj=on:chr=on:cases=on:cnfonf=eager:gs=on:gsem=off:nm=2:newcnf=on:nwc=2:stl=30:sp=reverse_arity:urr=on:updr=off_650"); - quick.push("dis-11_3_add=off:afp=0:fe=axiom:mXXn=2:csup=on:inj=on:chr=on:e2e=on:prag=on:cases=on:cnfonf=eager:afq=1.0:fde=all:amm=sco:anc=none:gs=on:irw=on:lcm=reverse:nm=6:nwc=1:sd=4:ss=axioms:st=3.0:sos=on:sac=on_600"); - quick.push("lrs+4_3_av=off:bd=preordered:fe=axiom:narr=off:csup=on:ntd=on:inj=on:chr=on:cases=on:cnfonf=lazy_simp:bs=unit_only:cond=fast:fde=unused:gsp=on:gs=on:gsem=on:lma=on:lwlo=on:nm=6:nwc=1:stl=60:sp=occurrence:uhcvi=on_600"); - quick.push("ott+2_1:1_csup=on:fe=axiom:ntd=on:narr=off:prag=on:cs=on_600"); -} - -#endif - // ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- // ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- // ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- @@ -5134,6 +4987,8 @@ void Schedules::getSnakeTptpSatSchedule(const Shell::Property& property, Schedul // Overall score 2081.1804482430707 probs on average / budget 9091993 Mi } +#if VHOL + void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick) { // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit quick.push("dis+10_1:128_hud=1:i=96:si=on:rtra=on_0"); @@ -5865,4 +5720,6 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("ott+2_1:1_au=on:bsd=on:bsr=unit_only:cnfonf=off:nm=32:s2a=on:sp=unary_first:i=2025:si=on:rtra=on_0"); // Improves by expected 10.798310963931263 probs costing 115940 Mi // Tue20 Overall score 585.6292337176405 probs on average / budget 235084 Mi -} \ No newline at end of file +} + +#endif \ No newline at end of file diff --git a/CASC/Schedules.hpp b/CASC/Schedules.hpp index 081a036a7f..f27614cc90 100644 --- a/CASC/Schedules.hpp +++ b/CASC/Schedules.hpp @@ -26,11 +26,6 @@ class Schedules { public: static void getScheduleFromFile(const vstring& filename, Schedule& quick); - -#if VHOL - //TODO update schedule with new options - static void getHigherOrderSchedule2020(Schedule& quick, Schedule& fallback); -#endif static void getCasc2019Schedule(const Shell::Property& property, Schedule& quick, Schedule& fallback); static void getCascSat2019Schedule(const Shell::Property& property, Schedule& quick, Schedule& fallback); @@ -49,9 +44,13 @@ class Schedules static void getSnakeTptpUnsSchedule(const Shell::Property& property, Schedule& quick); static void getSnakeTptpSatSchedule(const Shell::Property& property, Schedule& quick); + +#if VHOL static void getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick); static void getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick); static void getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick); +#endif + }; } diff --git a/Indexing/TermSubstitutionTree.hpp b/Indexing/TermSubstitutionTree.hpp index 412e46a6fe..7b3974b4a6 100644 --- a/Indexing/TermSubstitutionTree.hpp +++ b/Indexing/TermSubstitutionTree.hpp @@ -108,7 +108,11 @@ class TermSubstitutionTree auto getResultIterator(TypedTermList query, bool retrieveSubstitutions, Args... args) { return iterTraits(_tree->iterator(query, retrieveSubstitutions, /* reversed */ false, std::move(args)...)) - .map([this](auto qr) + .map([ +#if VHOL + this +#endif + ](auto qr) { return tQueryRes( #if VHOL _extra ? qr.data->extraTerm : diff --git a/Inferences/CNFOnTheFly.cpp b/Inferences/CNFOnTheFly.cpp index 3a2d94ec7f..2daa20c2c7 100644 --- a/Inferences/CNFOnTheFly.cpp +++ b/Inferences/CNFOnTheFly.cpp @@ -307,6 +307,8 @@ Clause* replaceLits(Clause *c, Literal *a, Literal *b, InferenceRule r, bool inc Clause* res = new(length) Clause(length, NonspecificInference1(r, c)); res->setAge(incAge? c->age() + 1 : c->age()); + env.statistics->proxyEliminations++; + unsigned i = 0; while ((*c)[i] != a) { i++; } std::memcpy(res->literals(), c->literals(), length * sizeof(Literal*)); diff --git a/Inferences/Injectivity.cpp b/Inferences/Injectivity.cpp index a61f51181e..0516e54475 100644 --- a/Inferences/Injectivity.cpp +++ b/Inferences/Injectivity.cpp @@ -13,18 +13,20 @@ * creates a Skolem to act as left-inverse funcion */ +#if VHOL + #include "Lib/Environment.hpp" #include "Kernel/Clause.hpp" -#include "Kernel/EqHelper.hpp" #include "Kernel/Inference.hpp" #include "Kernel/Term.hpp" -#include "Kernel/TermIterators.hpp" #include "Kernel/Signature.hpp" #include "Kernel/OperatorType.hpp" #include "Kernel/SortHelper.hpp" #include "Kernel/ApplicativeHelper.hpp" +#include "Shell/Statistics.hpp" + #include "Injectivity.hpp" namespace Inferences { @@ -116,6 +118,8 @@ ClauseIterator Injectivity::generateClauses(Clause* premise) { idx--; } + env.statistics->injectiveFunInverses++; + //at this point, we know the clause is of the form f x1 y x2... != f x1 z x2 ... \/ x = y TermList newLhs = createNewLhs(headLhs, termArgs, AtomicSort::arrowSort(termArgSorts, differingArgSort)); Literal* lit = Literal::createEquality(true, newLhs, differingArg, differingArgSort); @@ -152,3 +156,5 @@ TermList Injectivity::createNewLhs(TermList oldhead, TermStack& termArgs, TermLi } + +#endif \ No newline at end of file diff --git a/Inferences/Injectivity.hpp b/Inferences/Injectivity.hpp index 12ac901cfc..6ecabed92c 100644 --- a/Inferences/Injectivity.hpp +++ b/Inferences/Injectivity.hpp @@ -15,6 +15,8 @@ #ifndef __Injectivity__ #define __Injectivity__ +#if VHOL + #include "Forwards.hpp" #include "InferenceEngine.hpp" @@ -34,3 +36,5 @@ class Injectivity : public GeneratingInferenceEngine { } #endif + +#endif diff --git a/Kernel/RobSubstitution.cpp b/Kernel/RobSubstitution.cpp index e0e001353e..e35f83e69c 100644 --- a/Kernel/RobSubstitution.cpp +++ b/Kernel/RobSubstitution.cpp @@ -316,9 +316,9 @@ bool RobSubstitutionTS::match(TermList t1, int idx1, TermList t2, int idx2) } template -bool RobSubstitution::unify(TermSpecOrList t1, TermSpecOrList t2, +bool RobSubstitution::unify(TermSpecOrList t1, TermSpecOrList t2 #if VHOL - bool applicativeUnify + , bool applicativeUnify #endif ) { @@ -824,7 +824,11 @@ class RobSubstitution::AssocIterator: public Iterat switch (_state) { case NEXT_STRAIGHT: - if (_subst->unify(_l1, _l2, true)) { + if (_subst->unify(_l1, _l2 +#if VHOL + , true // check for loose indices when binding +#endif + )) { _state = NEXT_REVERSED; break; } @@ -834,8 +838,16 @@ class RobSubstitution::AssocIterator: public Iterat TermSpecOrList t12 = _l1.nthArg(1); TermSpecOrList t21 = _l2.nthArg(0); TermSpecOrList t22 = _l2.nthArg(1); - if (_subst->unify(t11, t22, true)) { - if (_subst->unify(t12, t21, true)) { + if (_subst->unify(t11, t22 +#if VHOL + , true +#endif + )) { + if (_subst->unify(t12, t21 +#if VHOL + , true +#endif + )) { _state = NEXT_CLEANUP; break; } diff --git a/Kernel/TermTransformer.hpp b/Kernel/TermTransformer.hpp index 445ab54bec..e6e1a5239a 100644 --- a/Kernel/TermTransformer.hpp +++ b/Kernel/TermTransformer.hpp @@ -80,11 +80,11 @@ class SubtermReplacer : public TermTransformer { , bool liftFree = false #endif ) : - _what(what), - _by(by), + _what(what) + , _by(by) #if VHOL - _liftFreeIndices(liftFree), - _shiftBy(0) + , _liftFreeIndices(liftFree) + , _shiftBy(0) #endif { ASS(what.isVar() || by.isVar() || SortHelper::getResultSort(what.term()) == SortHelper::getResultSort(by.term())); diff --git a/Parse/TPTP.cpp b/Parse/TPTP.cpp index e8c0967b8e..f03d1ef496 100644 --- a/Parse/TPTP.cpp +++ b/Parse/TPTP.cpp @@ -4511,7 +4511,9 @@ TermList TPTP::readSort() */ bool TPTP::higherPrecedence(int c1,int c2) { +#if VHOL if (c1 == APP) return true; +#endif if (c1 == c2) return false; if (c1 == -1) return false; if (c2 == IFF) return true; diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 154d6523c9..eb4da70478 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -154,10 +154,7 @@ void Options::init() {"casc", "casc_2019", "casc_sat", - "casc_sat_2019", -#if VHOL - "casc_hol_2020", -#endif + "casc_sat_2019", "file", "induction", "integer_induction", @@ -170,9 +167,11 @@ void Options::init() "smtcomp_2018", "snake_tptp_uns", "snake_tptp_sat", +#if VHOL "snake_tptp_hol", "snake_slh", "snake_slh2", +#endif "struct_induction"}); _schedule.description = "Schedule to be run by the portfolio mode. casc and smtcomp usually point to the most recent schedule in that category. file loads the schedule from a file specified in --schedule_file. Note that some old schedules may contain option values that are no longer supported - see ignore_missing."; _lookup.insert(&_schedule); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 6288a280f2..bec0abf16d 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -409,9 +409,6 @@ class Options CASC_2019, CASC_SAT, CASC_SAT_2019, -#if VHOL - CASC_HOL_2020, -#endif FILE, INDUCTION, INTEGER_INDUCTION, @@ -424,9 +421,11 @@ class Options SMTCOMP_2018, SNAKE_TPTP_UNS, SNAKE_TPTP_SAT, +#if VHOL SNAKE_TPTP_HOL, SNAKE_SLH, SNAKE_SLH2, +#endif STRUCT_INDUCTION }; diff --git a/Shell/Shuffling.cpp b/Shell/Shuffling.cpp index 42e7dc07bc..ece4404933 100644 --- a/Shell/Shuffling.cpp +++ b/Shell/Shuffling.cpp @@ -289,11 +289,13 @@ void Shuffling::shuffleIter(Shufflable sh) { goto tl_updated; break; // I know, unreachable; +#if VHOL case Term::SF_LAMBDA: tl = TermList(sd->getLambdaExp()); goto tl_updated; break; // I know, unreachable; - +#endif + default: ASSERTION_VIOLATION_REP(tl.toString()); } diff --git a/Shell/Statistics.cpp b/Shell/Statistics.cpp index c3e0df228e..7d2b8b1fd1 100644 --- a/Shell/Statistics.cpp +++ b/Shell/Statistics.cpp @@ -104,6 +104,8 @@ Statistics::Statistics() proxyEliminations(0), leibnizElims(0), booleanSimps(0), + injectiveFunInverses(0), + boolEqTricks(0), #endif duplicateLiterals(0), trivialInequalities(0), @@ -373,7 +375,7 @@ void Statistics::print(ostream& out) backwardExtensionalityResolution+ #if VHOL argumentCongruence+leibnizElims+negativeExtensionality+ - +primitiveInstantiations+choiceInstances+positiveExtensionality+ + +primitiveInstantiations+choiceInstances+positiveExtensionality+injectiveFunInverses+boolEqTricks+ #endif theoryInstSimp+theoryInstSimpCandidates+theoryInstSimpTautologies+theoryInstSimpLostSolution+inductionApplication+generalizedInductionApplication); COND_OUT("Binary resolution", resolution); @@ -424,9 +426,11 @@ void Statistics::print(ostream& out) COND_OUT("Argument congruence", argumentCongruence); COND_OUT("Negative extensionality", negativeExtensionality); COND_OUT("Positive extensionality", positiveExtensionality); - COND_OUT("Primitive substitutions", primitiveInstantiations); - COND_OUT("Elimination of Leibniz equalities", leibnizElims); - COND_OUT("Choice axiom instances creatded", choiceInstances); + COND_OUT("Primitive substitution", primitiveInstantiations); + COND_OUT("Elimination of Leibniz equality", leibnizElims); + COND_OUT("Inverse function postulation", injectiveFunInverses); + COND_OUT("Boolean equality to disequality", boolEqTricks); + COND_OUT("Choice axiom instance", choiceInstances); #endif SEPARATOR; diff --git a/Shell/Statistics.hpp b/Shell/Statistics.hpp index 760649e1f5..2f602496d9 100644 --- a/Shell/Statistics.hpp +++ b/Shell/Statistics.hpp @@ -160,6 +160,8 @@ class Statistics unsigned proxyEliminations; unsigned leibnizElims; unsigned booleanSimps; + unsigned injectiveFunInverses; + unsigned boolEqTricks; #endif // Simplifying inferences diff --git a/vampire.cpp b/vampire.cpp index 070c4ba556..7d4da64ea8 100644 --- a/vampire.cpp +++ b/vampire.cpp @@ -719,15 +719,14 @@ int main(int argc, char* argv[]) #if VHOL case Options::Mode::CASC_HOL: { env.options->setIgnoreMissing(Options::IgnoreMissing::WARN); - env.options->setSchedule(Options::Schedule::CASC_HOL_2020); + env.options->setSchedule(Options::Schedule::SNAKE_TPTP_HOL); env.options->setOutputMode(Options::Output::SZS); env.options->setProof(Options::Proof::TPTP); - //env.options->setMulticore(0); // use all available cores + env.options->setMulticore(0); // use all available cores env.options->setOutputAxiomNames(true); + // normalise? + // switch of seed randomisation? - //unsigned int nthreads = std::thread::hardware_concurrency(); - //float slowness = 1.00 + (0.04 * nthreads); - if (CASC::PortfolioMode::perform(env.options->slowness())) { vampireReturnValue = VAMP_RESULT_STATUS_SUCCESS; } From cbcaac18d4ef62e6dab5c4c4e0adccbb04b8c819 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Wed, 12 Jul 2023 17:12:41 +0200 Subject: [PATCH 185/210] actually use HoFeaturesMultiSplitPassiveClauseContainer --- Saturation/SaturationAlgorithm.cpp | 2 +- z3 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index f7364e0d8b..84f2ff8c80 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -161,7 +161,7 @@ std::unique_ptr makeLevel1(bool isOutermost, const Optio auto queueName = name + "HoFSQ" + Int::toString(cutoffs[i]) + ":"; queues.push_back(makeLevel1(false, opt, queueName)); } - return std::make_unique(isOutermost, opt, name + "HoFSQ", std::move(queues)); + return std::make_unique(isOutermost, opt, name + "HoFSQ", std::move(queues)); } #endif else diff --git a/z3 b/z3 index 6ed071b444..e417f7d785 160000 --- a/z3 +++ b/z3 @@ -1 +1 @@ -Subproject commit 6ed071b44407cf6623b8d3c0dceb2a8fb7040cee +Subproject commit e417f7d78509b2d0c9ebc911fee7632e6ef546b6 From 384954265e8ff6019de800f53beacc8f208c0fbf Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 13 Jul 2023 04:13:59 +0000 Subject: [PATCH 186/210] reference the correct split queue level --- Saturation/SaturationAlgorithm.cpp | 4 ++-- z3 | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 84f2ff8c80..c69f8ba021 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -159,11 +159,11 @@ std::unique_ptr makeLevel1(bool isOutermost, const Optio for (unsigned i = 0; i < cutoffs.size(); i++) { auto queueName = name + "HoFSQ" + Int::toString(cutoffs[i]) + ":"; - queues.push_back(makeLevel1(false, opt, queueName)); + queues.push_back(makeLevel0(false, opt, queueName)); } return std::make_unique(isOutermost, opt, name + "HoFSQ", std::move(queues)); } -#endif +#endif else { return makeLevel0(isOutermost, opt, name); diff --git a/z3 b/z3 index e417f7d785..6ed071b444 160000 --- a/z3 +++ b/z3 @@ -1 +1 @@ -Subproject commit e417f7d78509b2d0c9ebc911fee7632e6ef546b6 +Subproject commit 6ed071b44407cf6623b8d3c0dceb2a8fb7040cee From 35f1fb8f1aed42321ad78959ae56de2cde37e85e Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 13 Jul 2023 04:20:05 +0000 Subject: [PATCH 187/210] either we have hoFeaturesSplitQueues under VHOL or useTheorySplitQueues under not VHOL --- Saturation/SaturationAlgorithm.cpp | 23 ++++++------ Shell/Options.cpp | 56 ++++++++++++++++-------------- 2 files changed, 41 insertions(+), 38 deletions(-) diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index c69f8ba021..89d6e81fa5 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -141,29 +141,30 @@ std::unique_ptr makeLevel0(bool isOutermost, const Optio std::unique_ptr makeLevel1(bool isOutermost, const Options& opt, vstring name) { - if (opt.useTheorySplitQueues()) - { + #if VHOL + if(opt.hoFeaturesSplitQueues()){ Lib::vvector> queues; - auto cutoffs = opt.theorySplitQueueCutoffs(); + auto cutoffs = opt.hoFeaturesSplitQueueCutoffs(); for (unsigned i = 0; i < cutoffs.size(); i++) { - auto queueName = name + "ThSQ" + Int::toString(cutoffs[i]) + ":"; + auto queueName = name + "HoFSQ" + Int::toString(cutoffs[i]) + ":"; queues.push_back(makeLevel0(false, opt, queueName)); } - return std::make_unique(isOutermost, opt, name + "ThSQ", std::move(queues)); + return std::make_unique(isOutermost, opt, name + "HoFSQ", std::move(queues)); } -#if VHOL - else if(opt.hoFeaturesSplitQueues()){ + #else + if (opt.useTheorySplitQueues()) + { Lib::vvector> queues; - auto cutoffs = opt.hoFeaturesSplitQueueCutoffs(); + auto cutoffs = opt.theorySplitQueueCutoffs(); for (unsigned i = 0; i < cutoffs.size(); i++) { - auto queueName = name + "HoFSQ" + Int::toString(cutoffs[i]) + ":"; + auto queueName = name + "ThSQ" + Int::toString(cutoffs[i]) + ":"; queues.push_back(makeLevel0(false, opt, queueName)); } - return std::make_unique(isOutermost, opt, name + "HoFSQ", std::move(queues)); + return std::make_unique(isOutermost, opt, name + "ThSQ", std::move(queues)); } -#endif + #endif else { return makeLevel0(isOutermost, opt, name); diff --git a/Shell/Options.cpp b/Shell/Options.cpp index eb4da70478..1520c78d8e 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -980,6 +980,35 @@ void Options::init() _lookup.insert(&_ageWeightRatioShapeFrequency); _ageWeightRatioShapeFrequency.tag(OptionTag::SATURATION); +#if VHOL + + _hoFeaturesSplitQueues = BoolOptionValue("ho_feature_split_queue","hfsq",false); + _hoFeaturesSplitQueues.description = "Turn on clause selection using multiple queues containing different clauses (split by amount of higher-order featues)"; + _hoFeaturesSplitQueues.onlyUsefulWith(ProperSaturationAlgorithm()); // could be "IncludingInstgen"? (not with theories...) + _hoFeaturesSplitQueues.addProblemConstraint(hasHigherOrder()); + _lookup.insert(&_hoFeaturesSplitQueues); + _hoFeaturesSplitQueues.tag(OptionTag::SATURATION); + + _hoFeaturesSplitQueueCutoffs = StringOptionValue("ho_feature_split_queue_cutoffs", "hfsqc", "0"); + _hoFeaturesSplitQueueCutoffs.description = "The cutoff-values for the split-queues (the cutoff value for the last queue has to be omitted, as it is always infinity). Any split-queue contains all clauses which are assigned a feature-value less or equal to the cutoff-value of the queue. If no custom value for this option is set, the implementation will use cutoffs 0,4*d,10*d,infinity (where d denotes the theory split queue expected ratio denominator)."; + _lookup.insert(&_hoFeaturesSplitQueueCutoffs); + _hoFeaturesSplitQueueCutoffs.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); + _hoFeaturesSplitQueueCutoffs.tag(OptionTag::SATURATION); + + _hoFeaturesSplitQueueRatios = StringOptionValue("ho_features_split_queue_ratios", "hfsqr", "1,1"); + _hoFeaturesSplitQueueRatios.description = "The ratios for picking clauses from the split-queues using weighted round robin. If a queue is empty, the clause will be picked from the next non-empty queue to the right. Note that this option implicitly also sets the number of queues."; + _lookup.insert(&_hoFeaturesSplitQueueRatios); + _hoFeaturesSplitQueueRatios.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); + _hoFeaturesSplitQueueRatios.tag(OptionTag::AVATAR); + + _hoFeaturesSplitQueueLayeredArrangement = BoolOptionValue("ho_features_split_queue_layered_arrangement","hfsql",true); + _hoFeaturesSplitQueueLayeredArrangement.description = "If turned on, use a layered arrangement to split clauses into queues. Otherwise use a tammet-style-arrangement."; + _lookup.insert(&_hoFeaturesSplitQueueLayeredArrangement); + _hoFeaturesSplitQueueLayeredArrangement.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); + _hoFeaturesSplitQueueLayeredArrangement.tag(OptionTag::SATURATION); + +#else + _useTheorySplitQueues = BoolOptionValue("theory_split_queue","thsq",false); _useTheorySplitQueues.description = "Turn on clause selection using multiple queues containing different clauses (split by amount of theory reasoning)"; _useTheorySplitQueues.onlyUsefulWith(ProperSaturationAlgorithm()); // could be "IncludingInstgen"? (not with theories...) @@ -1011,33 +1040,6 @@ void Options::init() _theorySplitQueueLayeredArrangement.onlyUsefulWith(_useTheorySplitQueues.is(equal(true))); _theorySplitQueueLayeredArrangement.tag(OptionTag::SATURATION); -#if VHOL - - _hoFeaturesSplitQueues = BoolOptionValue("ho_feature_split_queue","hfsq",false); - _hoFeaturesSplitQueues.description = "Turn on clause selection using multiple queues containing different clauses (split by amount of higher-order featues)"; - _hoFeaturesSplitQueues.onlyUsefulWith(ProperSaturationAlgorithm()); // could be "IncludingInstgen"? (not with theories...) - _hoFeaturesSplitQueues.addProblemConstraint(hasHigherOrder()); - _lookup.insert(&_hoFeaturesSplitQueues); - _hoFeaturesSplitQueues.tag(OptionTag::SATURATION); - - _hoFeaturesSplitQueueCutoffs = StringOptionValue("ho_feature_split_queue_cutoffs", "hfsqc", "0"); - _hoFeaturesSplitQueueCutoffs.description = "The cutoff-values for the split-queues (the cutoff value for the last queue has to be omitted, as it is always infinity). Any split-queue contains all clauses which are assigned a feature-value less or equal to the cutoff-value of the queue. If no custom value for this option is set, the implementation will use cutoffs 0,4*d,10*d,infinity (where d denotes the theory split queue expected ratio denominator)."; - _lookup.insert(&_hoFeaturesSplitQueueCutoffs); - _hoFeaturesSplitQueueCutoffs.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); - _hoFeaturesSplitQueueCutoffs.tag(OptionTag::SATURATION); - - _hoFeaturesSplitQueueRatios = StringOptionValue("ho_features_split_queue_ratios", "hfsqr", "1,1"); - _hoFeaturesSplitQueueRatios.description = "The ratios for picking clauses from the split-queues using weighted round robin. If a queue is empty, the clause will be picked from the next non-empty queue to the right. Note that this option implicitly also sets the number of queues."; - _lookup.insert(&_hoFeaturesSplitQueueRatios); - _hoFeaturesSplitQueueRatios.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); - _hoFeaturesSplitQueueRatios.tag(OptionTag::AVATAR); - - _hoFeaturesSplitQueueLayeredArrangement = BoolOptionValue("ho_features_split_queue_layered_arrangement","hfsql",true); - _hoFeaturesSplitQueueLayeredArrangement.description = "If turned on, use a layered arrangement to split clauses into queues. Otherwise use a tammet-style-arrangement."; - _lookup.insert(&_hoFeaturesSplitQueueLayeredArrangement); - _hoFeaturesSplitQueueLayeredArrangement.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); - _hoFeaturesSplitQueueLayeredArrangement.tag(OptionTag::SATURATION); - #endif _useAvatarSplitQueues = BoolOptionValue("avatar_split_queue","avsq",false); From 80ebadc5b4305f4559bee5901d5c818ee67bd4d6 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 10 Jul 2023 04:52:35 +0200 Subject: [PATCH 188/210] after-casc SLH2 sched v1 --- CASC/Schedules.cpp | 408 +++++++++++++++++++++++++++++++-------------- z3 | 2 +- 2 files changed, 281 insertions(+), 129 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 9ba3e68cf5..d182cb637e 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5589,137 +5589,289 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick) { // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit - quick.push("dis+10_1:1_apa=on:au=on:bsr=unit_only:cbe=off:cnfonf=off:fd=off:fde=unused:ntd=on:plsq=on:plsqc=1:plsqr=21,1:s2agt=8:slsq=on:slsqc=1:i=584:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=362:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=532:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_gen:nwc=3.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=912:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=670:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_e2e=on:sd=2:ss=axioms:st=1.5:i=310:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_acc=on:afp=1:au=on:avsq=on:avsqc=1:fd=off:fde=unused:ntd=on:piset=not:sac=on:sos=all:i=625:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:nm=2:sd=2:sos=all:ss=axioms:i=844:si=on:rtra=on_0"); - quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=232:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=off:fde=none:fe=off:hud=5:prag=on:s2pl=no:slsq=on:sos=on:i=529:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_amm=sco:au=on:bd=off:fde=none:gs=on:hud=5:sos=on:sp=weighted_frequency:i=1054:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:fd=off:nwc=10.0:sos=on:i=651:si=on:rtra=on_0"); - quick.push("dis+10_1:1_nwc=10.0:sd=1:sgt=32:ss=axioms:i=497:si=on:rtra=on_0"); - quick.push("ott+1002_16:1_aac=none:au=on:fd=off:fde=unused:fsr=off:ins=4:nm=16:ntd=on:sos=on:i=447:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_hfsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sd=1:sos=on:ss=axioms:uhcvi=on:i=394:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_kws=precedence:sd=1:sgt=16:sos=on:sp=frequency:ss=axioms:i=296:si=on:rtra=on_0"); - // Improves by expected 458.9009337349063 probs costing 9938 Mi + quick.push("lrs+10_1:1_apa=on:cnfonf=off:e2e=on:ss=axioms:st=2.0:i=2:si=on:rtra=on_0"); + quick.push("lrs+1010_1:8_cbe=off:hfsq=on:ixr=off:prag=on:sac=on:sd=1:sgt=40:ss=axioms:i=373:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=1370:si=on:rtra=on_0"); + quick.push("ott+21_1:1_au=on:av=off:bd=off:fde=unused:hud=10:prag=on:sos=all:i=703:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=688:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:ss=axioms:st=3.0:i=11:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=754:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=635:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:i=847:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=1619:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=758:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=510:si=on:rtra=on_0"); + quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=438:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1158:si=on:rtra=on_0"); + // Improves by expected 2172.5762599517398 probs costing 9852 Mi // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit - quick.push("ott+1010_1:1_abs=on:au=on:fde=none:fe=off:ins=2:sos=on:i=400:si=on:rtra=on_0"); - quick.push("lrs+32_1:1_bd=off:hud=10:sos=on:ss=axioms:i=458:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=570:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:fd=off:fe=off:hud=23:sos=on:i=404:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bsd=on:cnfonf=off:erd=off:nwc=10.0:sd=1:sgt=16:sp=const_frequency:ss=axioms:st=2.0:i=461:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1024_bd=off:fde=unused:hfsq=on:hfsqr=1,16:plsq=on:plsqc=1:plsqr=32,1:prag=on:rawr=on:s2a=on:sos=on:ss=axioms:i=687:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=1018:si=on:rtra=on_0"); - quick.push("lrs+1002_1:2_bd=off:erd=off:hud=10:ins=2:nm=64:nwc=6.0:piset=small_set:sd=1:sos=on:ss=axioms:st=2.0:i=528:si=on:rtra=on_0"); - quick.push("dis+1010_1:32_au=on:av=off:cnfonf=off:ins=1:sd=1:ss=axioms:st=3.0:tgt=full:i=581:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_au=on:cnfonf=off:hfsq=on:sd=2:sgt=8:ss=axioms:i=543:si=on:rtra=on_0"); - quick.push("dis+10_1:1_aac=none:acc=model:fde=unused:hfsq=on:sd=1:ss=axioms:i=303:si=on:rtra=on_0"); - quick.push("ott+10_1:1_bd=off:bsr=unit_only:fd=off:fde=unused:fe=axiom:hud=5:nm=10:piset=equals:sos=on:sp=unary_frequency:spb=non_intro:ss=axioms:i=539:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:sos=all:ss=axioms:st=2.0:i=437:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_nm=2:sd=2:sos=on:ss=axioms:st=3.0:i=514:si=on:rtra=on_0"); - quick.push("dis+1002_1:128_au=on:awrs=converge:cnfonf=off:fd=off:ntd=on:s2a=on:sos=on:i=1339:si=on:rtra=on_0"); - quick.push("dis+10_8:1_s2a=on:s2agt=32:sac=on:ss=axioms:i=453:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:nwc=10.0:s2a=on:ss=axioms:i=637:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:fe=off:hud=5:ins=3:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=on:i=514:si=on:rtra=on_0"); - quick.push("lrs+10_3:2_au=on:bd=off:cnfonf=off:e2e=on:sd=1:sos=all:ss=axioms:st=2.0:i=351:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:bd=off:e2e=on:sos=all:ss=axioms:i=347:si=on:rtra=on_0"); - quick.push("lrs+1002_1:3_add=off:apa=on:au=on:cnfonf=off:e2e=on:er=tagged:kws=inv_precedence:s2a=on:sos=on:sp=occurrence:ss=axioms:st=1.2:i=759:si=on:rtra=on_0"); - quick.push("ott+21_1:1_cnfonf=off:nm=2:nwc=10.0:sgt=10:ss=axioms:i=777:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_amm=off:anc=all_dependent:cnfonf=lazy_pi_sigma_gen:ins=3:sd=1:sos=on:sp=const_max:ss=axioms:st=4.0:i=390:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_av=off:bd=off:fd=off:fs=off:fsr=off:sd=1:sos=on:ss=axioms:st=3.0:i=254:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:plsq=on:sd=1:sos=on:ss=axioms:st=1.5:i=296:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1801:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_kws=inv_frequency:sd=2:sos=all:ss=axioms:st=1.5:i=470:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_au=on:cnfonf=off:sd=2:sos=all:sp=frequency:ss=axioms:i=771:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bsr=unit_only:kws=precedence:prag=on:sos=on:sp=reverse_arity:ss=axioms:st=3.0:i=1030:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_bd=off:hfsq=on:hfsqr=2,1:ins=2:sd=1:spb=goal_then_units:ss=axioms:i=252:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_cnfonf=off:sd=2:sgt=8:ss=axioms:st=2.0:tgt=ground:i=509:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_bd=off:cnfonf=off:rp=on:sd=1:sp=unary_frequency:ss=axioms:i=556:si=on:rtra=on_0"); - quick.push("ott+1002_1:128_av=off:fde=none:hud=10:sd=2:sgt=16:sos=on:sp=const_frequency:ss=axioms:i=1076:si=on:rtra=on_0"); - // Improves by expected 61.06416849212749 probs costing 19992 Mi + quick.push("lrs+10_1:28_au=on:lma=on:sgt=8:sos=all:ss=axioms:i=1106:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1981:si=on:rtra=on_0"); + quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=571:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=1900:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=1500:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1082:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=1240:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=1543:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=496:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=2614:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:i=818:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=1097:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=577:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=752:si=on:rtra=on_0"); + quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2170:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=457:si=on:rtra=on_0"); + // Improves by expected 217.37812352117618 probs costing 19888 Mi // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit - quick.push("dis+10_1:1_fde=unused:s2a=on:s2at=3.0:i=665:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=599:si=on:rtra=on_0"); - quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1154:si=on:rtra=on_0"); - quick.push("dis+10_5:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:sd=2:ss=axioms:i=982:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_nm=2:nwc=6.0:s2a=on:sd=2:ss=axioms:st=1.5:i=1812:si=on:rtra=on_0"); - quick.push("lrs+1010_4:3_cnfonf=lazy_gen:fe=axiom:nwc=5.0:sos=all:sp=reverse_arity:i=741:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1032:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1299:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1024_bd=off:fde=unused:hfsq=on:hfsqr=1,16:plsq=on:plsqc=1:plsqr=32,1:prag=on:rawr=on:s2a=on:sos=on:ss=axioms:i=1949:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_fde=unused:fe=off:kws=precedence:prag=on:sp=const_frequency:ss=axioms:i=3798:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_add=off:au=on:avsq=on:avsqr=3,4:bd=off:cs=on:nwc=5.0:prag=on:sos=on:sp=occurrence:i=716:si=on:rtra=on_0"); - quick.push("dis+21_1:1024_av=off:e2e=on:sos=on:i=1201:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=3195:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=1262:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_amm=off:au=on:bd=off:cnfonf=off:hfsq=on:nm=2:sd=2:ss=axioms:st=2.0:i=820:si=on:rtra=on_0"); - quick.push("lrs+10_1:40_cnfonf=off:hud=1:ins=3:nm=16:prag=on:sac=on:sos=all:i=783:si=on:rtra=on_0"); - quick.push("lrs+1002_1:3_add=off:apa=on:au=on:cnfonf=off:e2e=on:er=tagged:kws=inv_precedence:s2a=on:sos=on:sp=occurrence:ss=axioms:st=1.2:i=509:si=on:rtra=on_0"); - quick.push("ott+1010_1:2_cnfonf=lazy_pi_sigma_gen:cond=fast:fe=axiom:nwc=10.0:sd=1:ss=axioms:i=1032:si=on:rtra=on_0"); - quick.push("ott+10_1:1024_c=on:fsr=off:hud=15:ins=3:kws=precedence:nwc=8.0:sp=reverse_arity:i=682:si=on:rtra=on_0"); - quick.push("dis+21_1:8_aac=none:cnfonf=lazy_pi_sigma_gen:fd=off:hud=10:lma=on:nm=50:sos=all:i=2178:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=3446:si=on:rtra=on_0"); - // Improves by expected 35.153584769349564 probs costing 29834 Mi + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1128:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_afr=on:chr=on:e2e=on:fde=unused:sos=all:sp=const_max:spb=goal_then_units:ss=axioms:i=351:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=1160:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=5325:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:sos=on:i=636:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=4472:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=474:si=on:rtra=on_0"); + quick.push("lrs+1010_1:5_au=on:bd=off:cnfonf=off:nm=10:sos=on:i=605:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_erd=off:ins=3:sd=1:sos=on:ss=axioms:i=263:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_atotf=0.1:bd=off:cnfonf=off:fd=off:sos=on:i=678:si=on:rtra=on_0"); + quick.push("dis+10_3:1_avsq=on:sd=1:ss=axioms:st=2.0:tgt=ground:i=278:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=348:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=925:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=799:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fde=none:ss=axioms:i=278:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=2610:si=on:rtra=on_0"); + quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2199:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=359:si=on:rtra=on_0"); + quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=1503:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=1390:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=229:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=3739:si=on:rtra=on_0"); + // Improves by expected 134.87186242860707 probs costing 29966 Mi // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("dis+10_1:1_apa=on:au=on:bsr=unit_only:cbe=off:cnfonf=off:fd=off:fde=unused:ntd=on:plsq=on:plsqc=1:plsqr=21,1:s2agt=8:slsq=on:slsqc=1:i=1951:si=on:rtra=on_0"); - quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:fde=none:fe=off:nm=32:prag=on:sos=on:i=2744:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1032:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1328:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_anc=all_dependent:fde=none:kws=precedence:prag=on:sac=on:sos=on:tnu=2:uhcvi=on:i=5501:si=on:rtra=on_0"); - quick.push("ott+10_1:1_bd=off:bsr=unit_only:fd=off:fde=unused:fe=axiom:hud=5:nm=10:piset=equals:sos=on:sp=unary_frequency:spb=non_intro:ss=axioms:i=539:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=off:fde=none:fe=off:hud=5:prag=on:s2pl=no:slsq=on:sos=on:i=529:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bs=unit_only:fd=off:fe=axiom:fsr=off:hfsq=on:hfsqc=1:ins=3:piset=all_but_not_eq:sos=on:i=1549:si=on:rtra=on_0"); - quick.push("lrs-1004_1:1_cnfonf=off:fde=unused:fe=off:nm=10:ntd=on:piset=pi_sigma:sos=on:i=2675:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_au=on:bd=off:cnfonf=off:e2e=on:ins=3:nm=2:sac=on:sos=all:i=707:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=on:cnfonf=off:fsr=off:hfsq=on:ss=axioms:i=900:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_fde=none:fe=axiom:hud=5:nm=2:prag=on:sos=all:i=2490:si=on:rtra=on_0"); - quick.push("lrs+20_1:2_hfsq=on:ins=3:nwc=5.0:piset=all_but_not_eq:sd=1:sos=on:ss=axioms:st=1.5:i=1701:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=6491:si=on:rtra=on_0"); - quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:av=off:ins=1:sd=2:sos=on:sp=frequency:ss=axioms:i=2109:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_av=off:e2e=on:ntd=on:sd=2:sgt=16:ss=axioms:i=3752:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:cs=on:fsr=off:s2a=on:i=2356:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=4401:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:av=off:cnfonf=lazy_gen:nwc=10.0:s2a=on:s2at=3.0:ss=axioms:i=2409:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:bsd=on:bsr=unit_only:cnfonf=off:nm=32:s2a=on:sp=unary_first:i=2025:si=on:rtra=on_0"); - quick.push("dis+1004_1:1_apa=on:au=on:av=off:bsd=on:cnfonf=off:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=occurrence:tgt=ground:i=6699:si=on:rtra=on_0"); - // Improves by expected 19.712235757325942 probs costing 59380 Mi + quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=290:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_pi_sigma_gen:hfsq=on:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1511:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=1108:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_au=on:sos=on:ss=axioms:i=1651:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); + quick.push("ott+21_1:1_au=on:av=off:bd=off:fde=unused:hud=10:prag=on:sos=all:i=1813:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:rawr=on:i=1168:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=830:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fd=off:prag=on:sac=on:sos=on:i=1268:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2277:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_add=off:apa=on:au=on:bsr=unit_only:cnfonf=off:e2e=on:s2a=on:s2at=2.0:ss=axioms:st=2.0:i=485:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:i=1468:si=on:rtra=on_0"); + quick.push("dis+10_1:12_cnfonf=conj_eager:ss=axioms:st=3.0:tgt=full:i=620:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_fde=unused:hud=10:sac=on:sos=on:tnu=1:i=552:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=10950:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=1231:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=1806:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:av=off:e2e=on:fd=off:rawr=on:s2a=on:s2at=3.0:sos=on:sp=occurrence:i=1713:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_cnfonf=off:fde=unused:prag=on:sos=all:i=2076:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=3275:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=532:si=on:rtra=on_0"); + quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=9567:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fd=off:fde=unused:nm=2:sos=all:i=703:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=10773:si=on:rtra=on_0"); + quick.push("dis+10_5:1_cnfonf=off:slsq=on:sp=const_max:i=534:si=on:rtra=on_0"); + // Improves by expected 118.98358120947206 probs costing 59777 Mi // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit - quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); - quick.push("ott+10_1:32_au=on:fd=off:nm=32:s2a=on:s2agt=64:s2at=3.0:sd=1:sos=all:sp=const_frequency:ss=axioms:st=5.0:i=6069:si=on:rtra=on_0"); - quick.push("dis+10_1:12_acc=on:alpa=false:au=on:cnfonf=off:fd=off:lma=on:ntd=on:plsq=on:plsqr=32,1:sos=all:sp=const_max:i=2626:si=on:rtra=on_0"); - quick.push("lrs+1010_5:1_acc=on:au=on:cnfonf=off:fde=none:fe=axiom:fsr=off:hfsq=on:ins=2:nm=64:ntd=on:plsq=on:plsqc=1:plsqr=15,1:sac=on:i=8176:si=on:rtra=on_0"); - quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1367:si=on:rtra=on_0"); - quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=14044:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1457:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=929:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=4735:si=on:rtra=on_0"); - quick.push("dis+10_1:1_aac=none:acc=model:fde=unused:hfsq=on:sd=1:ss=axioms:i=1064:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=4554:si=on:rtra=on_0"); - quick.push("lrs-1004_1:1_cnfonf=off:fde=unused:fe=off:nm=10:ntd=on:piset=pi_sigma:sos=on:i=5166:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=11230:si=on:rtra=on_0"); - quick.push("lrs+21_3:1_amm=off:fe=off:hud=10:ntd=on:sos=on:uhcvi=on:i=1579:si=on:rtra=on_0"); - quick.push("dis+21_1:16_e2e=on:fe=axiom:nm=2:sos=on:sp=reverse_arity:uhcvi=on:i=5701:si=on:rtra=on_0"); - quick.push("ott+21_1:1_cnfonf=off:nm=2:nwc=10.0:sgt=10:ss=axioms:i=843:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_prag=on:sd=1:sp=const_frequency:ss=axioms:tgt=ground:i=2077:si=on:rtra=on_0"); - quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); - quick.push("dis+1010_8:15_au=on:cbe=off:cnfonf=off:fsr=off:kws=frequency:ntd=on:plsq=on:rawr=on:sp=const_min:tgt=ground:i=5455:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1703:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cnfonf=off:s2a=on:sos=all:i=6628:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:sos=on:ss=axioms:i=12232:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=9159:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:bsd=on:bsr=unit_only:cnfonf=off:nm=32:s2a=on:sp=unary_first:i=2025:si=on:rtra=on_0"); - // Improves by expected 10.798310963931263 probs costing 115940 Mi - // Tue20 Overall score 585.6292337176405 probs on average / budget 235084 Mi + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=6146:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=2085:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3976:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=1682:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=9314:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=5900:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=4293:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=922:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_ins=3:prag=on:sos=on:sp=const_min:i=907:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=12797:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=4369:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=519:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=8134:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fsr=off:nm=32:sd=1:sgt=16:sos=on:ss=axioms:i=1302:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=5005:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=633:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=4965:si=on:rtra=on_0"); + quick.push("dis+10_1:8_au=on:cnfonf=lazy_not_gen_be_off:fde=unused:slsq=on:slsqc=1:sp=unary_frequency:tgt=ground:i=1516:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=3345:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:i=5097:si=on:rtra=on_0"); + quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1592:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2697:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3354:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=8611:si=on:rtra=on_0"); + quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=3247:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=359:si=on:rtra=on_0"); + quick.push("ott+1010_41:4_bd=off:cnfonf=off:hud=14:ntd=on:s2a=on:i=1584:si=on:rtra=on_0"); + quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=937:si=on:rtra=on_0"); + quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=4885:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=577:si=on:rtra=on_0"); + quick.push("dis+10_4:1_cnfonf=lazy_simp:gs=on:hud=22:sd=1:ss=axioms:tnu=1:i=2352:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=1630:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2759:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=333:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1104:si=on:rtra=on_0"); + quick.push("dis+2_1:8_atotf=0.1:au=on:bd=off:c=on:sos=on:i=321:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=544:si=on:rtra=on_0"); + // Improves by expected 99.95339010887623 probs costing 119995 Mi + // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=7595:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_hfsq=on:nm=2:nwc=10.0:sos=on:sp=occurrence:i=602:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=645:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4270:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=964:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cbe=off:hfsq=on:hfsqc=5:hfsql=off:hud=25:ntd=on:prag=on:sos=on:i=2257:si=on:rtra=on_0"); + quick.push("dis+10_4:1_av=off:cnfonf=off:hud=5:nwc=10.0:s2a=on:s2agt=16:i=2558:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=519:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=7140:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=10942:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4828:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4504:si=on:rtra=on_0"); + quick.push("ott+21_1:1_au=on:av=off:bd=off:fde=unused:hud=10:prag=on:sos=all:i=9989:si=on:rtra=on_0"); + quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1577:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=51846:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=3081:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=2002:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_erd=off:ins=3:sd=1:sos=on:ss=axioms:i=4744:si=on:rtra=on_0"); + quick.push("dis+1010_16:1_abs=on:acc=model:avsq=on:prag=on:sp=const_frequency:i=22147:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=11167:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fsr=off:nm=32:sd=1:sgt=16:sos=on:ss=axioms:i=3174:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_atotf=0.1:bd=off:cnfonf=off:fd=off:sos=on:i=674:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_aac=none:ins=2:ntd=on:prag=on:sos=on:i=2446:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6983:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=5459:si=on:rtra=on_0"); + quick.push("lrs+1003_1:1_cbe=off:cnfonf=lazy_not_be_gen:ins=1:sac=on:sup=off:i=1816:si=on:rtra=on_0"); + quick.push("ott+10_2:1_cnfonf=lazy_simp:fde=unused:fsr=off:s2a=on:sd=2:ss=axioms:i=10811:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2695:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=359:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=568:si=on:rtra=on_0"); + quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=1741:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=12066:si=on:rtra=on_0"); + quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=2136:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:fsr=off:ins=1:sd=10:ss=axioms:uhcvi=on:i=3580:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:hud=5:s2a=on:sos=on:i=2813:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=333:si=on:rtra=on_0"); + quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=7039:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1104:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=18559:si=on:rtra=on_0"); + quick.push("dis+2_1:8_atotf=0.1:au=on:bd=off:c=on:sos=on:i=321:si=on:rtra=on_0"); + // Improves by expected 78.79002860798212 probs costing 239970 Mi + // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19975:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=34023:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_hfsq=on:nm=2:nwc=10.0:sos=on:sp=occurrence:i=602:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=638:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6264:si=on:rtra=on_0"); + quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=1623:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3976:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=3605:si=on:rtra=on_0"); + quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=4381:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fd=off:fde=unused:prag=on:sos=all:i=3445:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_hud=25:ins=3:nm=32:prag=on:ss=axioms:uhcvi=on:i=14326:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:plsq=on:sos=on:i=7877:si=on:rtra=on_0"); + quick.push("lrs+21_1:50_nm=30:sp=const_min:tgt=ground:i=4199:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=22230:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:prag=on:sos=on:i=4861:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=9418:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=10942:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1666:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:sos=on:i=4035:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=6296:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=1981:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=16686:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=1735:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1991:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=5123:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=32405:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fd=off:fe=off:sos=on:i=986:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:nwc=10.0:piset=not:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sac=on:sp=unary_first:i=27878:si=on:rtra=on_0"); + quick.push("ott+10_1:1_cha=on:hud=10:ins=3:sac=on:sos=on:i=3178:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=19261:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14667:si=on:rtra=on_0"); + quick.push("lrs+1003_1:1_cbe=off:cnfonf=lazy_not_be_gen:ins=1:sac=on:sup=off:i=11208:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=7803:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_add=off:apa=on:au=on:bsr=unit_only:cnfonf=off:e2e=on:s2a=on:s2at=2.0:ss=axioms:st=2.0:i=3973:si=on:rtra=on_0"); + quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1577:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=5575:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=12001:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=19878:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_fe=off:prag=on:sos=all:ss=axioms:i=1398:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=33811:si=on:rtra=on_0"); + quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=4885:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=536:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=16012:si=on:rtra=on_0"); + quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=lazy_pi_sigma_gen:ixr=off:plsq=on:plsqr=32,1:sos=on:i=4801:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4504:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cbe=off:sos=theory:i=7132:si=on:rtra=on_0"); + quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3251:si=on:rtra=on_0"); + quick.push("ott+10_5:1_cnfonf=off:kws=arity:nm=2:s2a=on:s2at=5.0:ss=axioms:i=13492:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=333:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=1013:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1083:si=on:rtra=on_0"); + // Improves by expected 66.32785975645233 probs costing 479855 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6264:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=3668:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=43102:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=9797:si=on:rtra=on_0"); + quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=4124:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fd=off:fde=unused:prag=on:sos=all:i=7279:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=9406:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=53898:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4357:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=4603:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bsd=on:cnfonf=lazy_not_gen:er=tagged:fd=off:s2a=on:sos=all:i=4701:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=2932:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=52327:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=95903:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1991:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=14413:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=34887:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_atotf=0.1:bd=off:cnfonf=off:fd=off:sos=on:i=4206:si=on:rtra=on_0"); + quick.push("ott+10_1:1_cha=on:hud=10:ins=3:sac=on:sos=on:i=3132:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=5755:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=5022:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:bd=off:ntd=on:slsq=on:i=5558:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=19539:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:sos=on:sp=unary_first:i=75579:si=on:rtra=on_0"); + quick.push("lrs+10_5:4_au=on:bet=on:bs=unit_only:bsd=on:cnfonf=off:ins=2:kws=precedence:plsq=on:plsqc=1:plsqr=89,8:rawr=on:sac=on:i=76163:si=on:rtra=on_0"); + quick.push("ott+10_2:1_cnfonf=lazy_simp:fde=unused:fsr=off:s2a=on:sd=2:ss=axioms:i=7067:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=9328:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:cha=on:cnfonf=off:cond=on:sos=on:sp=const_frequency:i=3878:si=on:rtra=on_0"); + quick.push("dis+21_1:1_fd=off:kws=inv_arity:prag=on:sac=on:sos=all:i=4206:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2695:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=5575:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=10362:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=5278:si=on:rtra=on_0"); + quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=3247:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=13657:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8991:si=on:rtra=on_0"); + quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=40255:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=50001:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=17844:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=81936:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:fsr=off:ins=1:sd=10:ss=axioms:uhcvi=on:i=4637:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4479:si=on:rtra=on_0"); + quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3219:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:av=off:e2e=on:fd=off:rawr=on:s2a=on:s2at=3.0:sos=on:sp=occurrence:i=9451:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=3948:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=2555:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=16919:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1083:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=25547:si=on:rtra=on_0"); + quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=9855:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=21726:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=27149:si=on:rtra=on_0"); + // Improves by expected 49.982594209671426 probs costing 958953 Mi + // Sun09 Overall score 2938.863699793977 probs on average / budget 1918256 Mi } -#endif \ No newline at end of file +#endif diff --git a/z3 b/z3 index 6ed071b444..e417f7d785 160000 --- a/z3 +++ b/z3 @@ -1 +1 @@ -Subproject commit 6ed071b44407cf6623b8d3c0dceb2a8fb7040cee +Subproject commit e417f7d78509b2d0c9ebc911fee7632e6ef546b6 From 9604c9bf5ddacb55e44e50bf0ba3db04013c8fa7 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 10 Jul 2023 11:23:16 +0200 Subject: [PATCH 189/210] after-casc SLH2 sched v2 --- CASC/Schedules.cpp | 608 ++++++++++++++++++++++++++------------------- 1 file changed, 353 insertions(+), 255 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index d182cb637e..81e2dcde8f 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5589,288 +5589,386 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick) { // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit - quick.push("lrs+10_1:1_apa=on:cnfonf=off:e2e=on:ss=axioms:st=2.0:i=2:si=on:rtra=on_0"); - quick.push("lrs+1010_1:8_cbe=off:hfsq=on:ixr=off:prag=on:sac=on:sd=1:sgt=40:ss=axioms:i=373:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=1370:si=on:rtra=on_0"); - quick.push("ott+21_1:1_au=on:av=off:bd=off:fde=unused:hud=10:prag=on:sos=all:i=703:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=688:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:ss=axioms:st=3.0:i=11:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=754:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=635:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:i=847:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=989:si=on:rtra=on_0"); + quick.push("dis+2_16:1_e2e=on:gs=on:s2a=on:s2agt=32:sgt=32:ss=axioms:i=2:si=on:rtra=on_0"); + quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=15:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=744:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=850:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1155:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=679:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1279:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=813:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=637:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=727:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=1619:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=758:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=510:si=on:rtra=on_0"); - quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=438:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1158:si=on:rtra=on_0"); - // Improves by expected 2172.5762599517398 probs costing 9852 Mi + quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=470:si=on:rtra=on_0"); + // Improves by expected 2204.987364111912 probs costing 9966 Mi // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit - quick.push("lrs+10_1:28_au=on:lma=on:sgt=8:sos=all:ss=axioms:i=1106:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1981:si=on:rtra=on_0"); - quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=571:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=1900:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=1500:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1082:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=1240:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=1543:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=496:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=2614:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:i=818:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=1097:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=577:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=752:si=on:rtra=on_0"); - quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2170:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=457:si=on:rtra=on_0"); - // Improves by expected 217.37812352117618 probs costing 19888 Mi + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1345:si=on:rtra=on_0"); + quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=598:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=2891:si=on:rtra=on_0"); + quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=1452:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=1656:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=1152:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=1490:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=637:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=829:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_add=off:apa=on:au=on:bsr=unit_only:cnfonf=off:e2e=on:s2a=on:s2at=2.0:ss=axioms:st=2.0:i=940:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=746:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=532:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=1161:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=357:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=1640:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=2159:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=396:si=on:rtra=on_0"); + // Improves by expected 221.54195675469845 probs costing 19964 Mi // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1128:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1364:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); + quick.push("lrs+10_1:28_au=on:lma=on:sgt=8:sos=all:ss=axioms:i=710:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=290:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2355:si=on:rtra=on_0"); quick.push("ott+1010_1:1_afr=on:chr=on:e2e=on:fde=unused:sos=all:sp=const_max:spb=goal_then_units:ss=axioms:i=351:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=1160:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_pi_sigma_gen:hfsq=on:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=5325:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:sos=on:i=636:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=4472:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=474:si=on:rtra=on_0"); - quick.push("lrs+1010_1:5_au=on:bd=off:cnfonf=off:nm=10:sos=on:i=605:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_erd=off:ins=3:sd=1:sos=on:ss=axioms:i=263:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_atotf=0.1:bd=off:cnfonf=off:fd=off:sos=on:i=678:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1114:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=3865:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=2832:si=on:rtra=on_0"); + quick.push("lrs+1010_1:5_au=on:bd=off:cnfonf=off:nm=10:sos=on:i=602:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1024_bd=off:fd=off:hud=22:prag=on:sos=on:ss=axioms:tnu=1:i=433:si=on:rtra=on_0"); quick.push("dis+10_3:1_avsq=on:sd=1:ss=axioms:st=2.0:tgt=ground:i=278:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=348:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=925:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=276:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=522:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=802:si=on:rtra=on_0"); quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=799:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:fde=none:ss=axioms:i=278:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=2610:si=on:rtra=on_0"); - quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2199:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=359:si=on:rtra=on_0"); - quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=1503:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=1390:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=264:si=on:rtra=on_0"); + quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2236:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:i=769:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=369:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=1073:si=on:rtra=on_0"); quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=229:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=3739:si=on:rtra=on_0"); - // Improves by expected 134.87186242860707 probs costing 29966 Mi + quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=416:si=on:rtra=on_0"); + quick.push("dis+10_1:3_aac=none:bd=off:cnfonf=off:fde=unused:ins=2:ntd=on:s2a=on:sac=on:i=437:si=on:rtra=on_0"); + quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=5230:si=on:rtra=on_0"); + // Improves by expected 127.42381885280948 probs costing 29896 Mi // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=290:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_pi_sigma_gen:hfsq=on:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1511:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=567:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=3295:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1203:si=on:rtra=on_0"); quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=1108:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_au=on:sos=on:ss=axioms:i=1651:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); - quick.push("ott+21_1:1_au=on:av=off:bd=off:fde=unused:hud=10:prag=on:sos=all:i=1813:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:rawr=on:i=1168:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=830:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=901:si=on:rtra=on_0"); quick.push("lrs+10_1:1_fd=off:prag=on:sac=on:sos=on:i=1268:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2277:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_add=off:apa=on:au=on:bsr=unit_only:cnfonf=off:e2e=on:s2a=on:s2at=2.0:ss=axioms:st=2.0:i=485:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:i=1468:si=on:rtra=on_0"); + quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=1467:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:lma=on:prag=on:sos=all:ss=axioms:i=493:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=9076:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=1163:si=on:rtra=on_0"); quick.push("dis+10_1:12_cnfonf=conj_eager:ss=axioms:st=3.0:tgt=full:i=620:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_fde=unused:hud=10:sac=on:sos=on:tnu=1:i=552:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=10950:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=2682:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3615:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=12125:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=2082:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=1231:si=on:rtra=on_0"); + quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=1164:si=on:rtra=on_0"); quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=1806:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:av=off:e2e=on:fd=off:rawr=on:s2a=on:s2at=3.0:sos=on:sp=occurrence:i=1713:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_cnfonf=off:fde=unused:prag=on:sos=all:i=2076:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=3275:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=532:si=on:rtra=on_0"); - quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=9567:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fd=off:fde=unused:nm=2:sos=all:i=703:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=10773:si=on:rtra=on_0"); - quick.push("dis+10_5:1_cnfonf=off:slsq=on:sp=const_max:i=534:si=on:rtra=on_0"); - // Improves by expected 118.98358120947206 probs costing 59777 Mi + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nm=0:nwc=5.0:i=977:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=1443:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=8031:si=on:rtra=on_0"); + quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=1905:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1301:si=on:rtra=on_0"); + // Improves by expected 115.19860428799437 probs costing 59739 Mi // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=6146:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=2085:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3976:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=1682:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=9314:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=5900:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=4293:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=922:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_ins=3:prag=on:sos=on:sp=const_min:i=907:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=12797:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=4369:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=14531:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=712:si=on:rtra=on_0"); + quick.push("dis+2_16:1_e2e=on:gs=on:s2a=on:s2agt=32:sgt=32:ss=axioms:i=1156:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("dis+10_4:1_av=off:cnfonf=off:hud=5:nwc=10.0:s2a=on:s2agt=16:i=2731:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_au=on:bd=off:chr=on:lcm=reverse:ntd=on:sd=1:sgt=100:ss=axioms:i=3703:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1511:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=1290:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6172:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=1080:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=8643:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=9010:si=on:rtra=on_0"); quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=519:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=8134:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fsr=off:nm=32:sd=1:sgt=16:sos=on:ss=axioms:i=1302:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=5005:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=633:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=4965:si=on:rtra=on_0"); - quick.push("dis+10_1:8_au=on:cnfonf=lazy_not_gen_be_off:fde=unused:slsq=on:slsqc=1:sp=unary_frequency:tgt=ground:i=1516:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=3345:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:i=5097:si=on:rtra=on_0"); - quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1592:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2697:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3354:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=8611:si=on:rtra=on_0"); - quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=3247:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=359:si=on:rtra=on_0"); - quick.push("ott+1010_41:4_bd=off:cnfonf=off:hud=14:ntd=on:s2a=on:i=1584:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=8447:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=5071:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fsr=off:nm=32:sd=1:sgt=16:sos=on:ss=axioms:i=4082:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6231:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2761:si=on:rtra=on_0"); + quick.push("dis+10_5:1_cnfonf=off:slsq=on:sp=const_max:i=571:si=on:rtra=on_0"); + quick.push("lrs+2_1:6_au=on:cnfonf=off:ss=axioms:st=1.5:i=1438:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:lma=on:prag=on:sos=all:ss=axioms:i=386:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=2911:si=on:rtra=on_0"); + quick.push("dis+10_1:128_av=off:fde=unused:hud=1:prag=on:sos=all:ss=axioms:i=1451:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); + quick.push("lrs+10_5:4_au=on:bet=on:bs=unit_only:bsd=on:cnfonf=off:ins=2:kws=precedence:plsq=on:plsqc=1:plsqr=89,8:rawr=on:sac=on:i=988:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=1808:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=1068:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=574:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=2032:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=490:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=5882:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); + quick.push("ott+1010_41:4_bd=off:cnfonf=off:hud=14:ntd=on:s2a=on:i=1745:si=on:rtra=on_0"); quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=937:si=on:rtra=on_0"); - quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=4885:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=577:si=on:rtra=on_0"); - quick.push("dis+10_4:1_cnfonf=lazy_simp:gs=on:hud=22:sd=1:ss=axioms:tnu=1:i=2352:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=1630:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2759:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=333:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1104:si=on:rtra=on_0"); - quick.push("dis+2_1:8_atotf=0.1:au=on:bd=off:c=on:sos=on:i=321:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=544:si=on:rtra=on_0"); - // Improves by expected 99.95339010887623 probs costing 119995 Mi + quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=3837:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); + quick.push("lrs+1010_1:2_cnfonf=lazy_pi_sigma_gen:fde=unused:fe=axiom:ss=axioms:tgt=ground:i=1540:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2774:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_cnfonf=off:fde=unused:prag=on:sos=all:i=2076:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=2614:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); + // Improves by expected 103.12377426427754 probs costing 119933 Mi // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=7595:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_hfsq=on:nm=2:nwc=10.0:sos=on:sp=occurrence:i=602:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=645:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4270:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=964:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cbe=off:hfsq=on:hfsqc=5:hfsql=off:hud=25:ntd=on:prag=on:sos=on:i=2257:si=on:rtra=on_0"); - quick.push("dis+10_4:1_av=off:cnfonf=off:hud=5:nwc=10.0:s2a=on:s2agt=16:i=2558:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=519:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=7140:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=10942:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=7601:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=712:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2355:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4273:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6289:si=on:rtra=on_0"); + quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=565:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=22777:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=2448:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_au=on:bd=off:chr=on:lcm=reverse:ntd=on:sd=1:sgt=100:ss=axioms:i=13468:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=13647:si=on:rtra=on_0"); quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4828:si=on:rtra=on_0"); quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4504:si=on:rtra=on_0"); - quick.push("ott+21_1:1_au=on:av=off:bd=off:fde=unused:hud=10:prag=on:sos=all:i=9989:si=on:rtra=on_0"); - quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1577:si=on:rtra=on_0"); - quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=51846:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=13342:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=6122:si=on:rtra=on_0"); quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=3081:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=2002:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_erd=off:ins=3:sd=1:sos=on:ss=axioms:i=4744:si=on:rtra=on_0"); - quick.push("dis+1010_16:1_abs=on:acc=model:avsq=on:prag=on:sp=const_frequency:i=22147:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=11167:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fsr=off:nm=32:sd=1:sgt=16:sos=on:ss=axioms:i=3174:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_atotf=0.1:bd=off:cnfonf=off:fd=off:sos=on:i=674:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_aac=none:ins=2:ntd=on:prag=on:sos=on:i=2446:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6983:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=5459:si=on:rtra=on_0"); - quick.push("lrs+1003_1:1_cbe=off:cnfonf=lazy_not_be_gen:ins=1:sac=on:sup=off:i=1816:si=on:rtra=on_0"); - quick.push("ott+10_2:1_cnfonf=lazy_simp:fde=unused:fsr=off:s2a=on:sd=2:ss=axioms:i=10811:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2695:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=359:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=4369:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=13055:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4300:si=on:rtra=on_0"); + quick.push("dis+2_16:1_au=on:bd=off:cbe=off:fd=preordered:fde=unused:fsr=off:hfsq=on:nwc=10.0:i=9713:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:lma=on:prag=on:sos=all:ss=axioms:i=493:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=11924:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=5045:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=5795:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=1068:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_add=off:apa=on:au=on:bsr=unit_only:cnfonf=off:e2e=on:s2a=on:s2at=2.0:ss=axioms:st=2.0:i=4401:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=4641:si=on:rtra=on_0"); + quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=4684:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=1262:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_aac=none:c=on:cnfonf=lazy_not_gen:sos=on:i=3633:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=568:si=on:rtra=on_0"); - quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=1741:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=12066:si=on:rtra=on_0"); - quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=2136:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:fsr=off:ins=1:sd=10:ss=axioms:uhcvi=on:i=3580:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:hud=5:s2a=on:sos=on:i=2813:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=333:si=on:rtra=on_0"); - quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=7039:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1104:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=18559:si=on:rtra=on_0"); - quick.push("dis+2_1:8_atotf=0.1:au=on:bd=off:c=on:sos=on:i=321:si=on:rtra=on_0"); - // Improves by expected 78.79002860798212 probs costing 239970 Mi + quick.push("dis+10_4:1_cnfonf=lazy_simp:gs=on:hud=22:sd=1:ss=axioms:tnu=1:i=2354:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=6248:si=on:rtra=on_0"); + quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=1083:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=off:fde=none:fe=off:piset=pi_sigma:sos=on:sp=frequency:tnu=9:i=770:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=1644:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=30439:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=3526:si=on:rtra=on_0"); + quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=6601:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); + // Improves by expected 79.89420096271172 probs costing 239325 Mi // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19975:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=34023:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_hfsq=on:nm=2:nwc=10.0:sos=on:sp=occurrence:i=602:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=638:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6264:si=on:rtra=on_0"); - quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=1623:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3976:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=3605:si=on:rtra=on_0"); - quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=4381:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fd=off:fde=unused:prag=on:sos=all:i=3445:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_hud=25:ins=3:nm=32:prag=on:ss=axioms:uhcvi=on:i=14326:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:plsq=on:sos=on:i=7877:si=on:rtra=on_0"); - quick.push("lrs+21_1:50_nm=30:sp=const_min:tgt=ground:i=4199:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=22230:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:prag=on:sos=on:i=4861:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=9418:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=10942:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1666:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:sos=on:i=4035:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=6296:si=on:rtra=on_0"); - quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=1981:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=16686:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=1735:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1991:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=5123:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=32405:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fd=off:fe=off:sos=on:i=986:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:nwc=10.0:piset=not:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sac=on:sp=unary_first:i=27878:si=on:rtra=on_0"); - quick.push("ott+10_1:1_cha=on:hud=10:ins=3:sac=on:sos=on:i=3178:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=19261:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14667:si=on:rtra=on_0"); - quick.push("lrs+1003_1:1_cbe=off:cnfonf=lazy_not_be_gen:ins=1:sac=on:sup=off:i=11208:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=7803:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_add=off:apa=on:au=on:bsr=unit_only:cnfonf=off:e2e=on:s2a=on:s2at=2.0:ss=axioms:st=2.0:i=3973:si=on:rtra=on_0"); - quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1577:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=5575:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=12001:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=19878:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_fe=off:prag=on:sos=all:ss=axioms:i=1398:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=33811:si=on:rtra=on_0"); - quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=4885:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=536:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=712:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1818:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=1542:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:plsq=on:sos=on:i=9176:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=20100:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=2448:si=on:rtra=on_0"); + quick.push("dis+21_4:1_atotf=0.4:au=on:cnfonf=lazy_not_be_gen:cond=fast:nwc=8.0:plsq=on:plsqc=1:s2a=on:i=6001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1464:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=3914:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1023:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=6916:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=26469:si=on:rtra=on_0"); + quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=15912:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=52745:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=3912:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=1768:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=2359:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); + quick.push("dis+1010_16:1_abs=on:acc=model:avsq=on:prag=on:sp=const_frequency:i=1214:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=27919:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5201:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_au=on:av=off:cnfonf=lazy_pi_sigma_gen:tgt=full:i=12683:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=11200:si=on:rtra=on_0"); + quick.push("dis+2_16:1_au=on:bd=off:cbe=off:fd=preordered:fde=unused:fsr=off:hfsq=on:nwc=10.0:i=38290:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6551:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("ott+10_1:1_afp=2000:bsr=unit_only:chr=on:hfsq=on:hfsql=off:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=18886:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6101:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:lma=on:prag=on:sos=all:ss=axioms:i=493:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=11590:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_bd=off:e2e=on:s2a=on:s2agt=10:sp=unary_first:i=29922:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_aac=none:bsr=on:e2e=on:fe=off:hfsq=on:nm=4:ntd=on:piset=small_set:prag=on:sac=on:sos=on:sp=unary_frequency:tnu=5:uhcvi=on:i=1623:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:br=off:e2e=on:fsr=off:sos=all:i=15357:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=945:si=on:rtra=on_0"); + quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=4676:si=on:rtra=on_0"); + quick.push("lrs+1002_2:1_cnfonf=lazy_not_be_gen:sp=const_frequency:i=2032:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=1262:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=15001:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3758:si=on:rtra=on_0"); + quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=4417:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=2575:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=3048:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=12682:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=16012:si=on:rtra=on_0"); - quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_cnfonf=lazy_pi_sigma_gen:ixr=off:plsq=on:plsqr=32,1:sos=on:i=4801:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4504:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cbe=off:sos=theory:i=7132:si=on:rtra=on_0"); - quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3251:si=on:rtra=on_0"); - quick.push("ott+10_5:1_cnfonf=off:kws=arity:nm=2:s2a=on:s2at=5.0:ss=axioms:i=13492:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=333:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=1013:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=19281:si=on:rtra=on_0"); + quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=1083:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=off:fde=none:fe=off:piset=pi_sigma:sos=on:sp=frequency:tnu=9:i=1349:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4555:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2205:si=on:rtra=on_0"); + quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3563:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=4887:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1083:si=on:rtra=on_0"); - // Improves by expected 66.32785975645233 probs costing 479855 Mi + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=lazy_not_be_gen:sd=1:sp=const_frequency:ss=axioms:i=1637:si=on:rtra=on_0"); + // Improves by expected 64.43364333999044 probs costing 479018 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6264:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=3668:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=43102:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=9797:si=on:rtra=on_0"); - quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=4124:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fd=off:fde=unused:prag=on:sos=all:i=7279:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=9406:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=53898:si=on:rtra=on_0"); - quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4357:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=4603:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bsd=on:cnfonf=lazy_not_gen:er=tagged:fd=off:s2a=on:sos=all:i=4701:si=on:rtra=on_0"); - quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=2932:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=52327:si=on:rtra=on_0"); - quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=95903:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1991:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=14413:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=34887:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_atotf=0.1:bd=off:cnfonf=off:fd=off:sos=on:i=4206:si=on:rtra=on_0"); - quick.push("ott+10_1:1_cha=on:hud=10:ins=3:sac=on:sos=on:i=3132:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=5755:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=5022:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:bd=off:ntd=on:slsq=on:i=5558:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=19539:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:sos=on:sp=unary_first:i=75579:si=on:rtra=on_0"); - quick.push("lrs+10_5:4_au=on:bet=on:bs=unit_only:bsd=on:cnfonf=off:ins=2:kws=precedence:plsq=on:plsqc=1:plsqr=89,8:rawr=on:sac=on:i=76163:si=on:rtra=on_0"); - quick.push("ott+10_2:1_cnfonf=lazy_simp:fde=unused:fsr=off:s2a=on:sd=2:ss=axioms:i=7067:si=on:rtra=on_0"); - quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=9328:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:cha=on:cnfonf=off:cond=on:sos=on:sp=const_frequency:i=3878:si=on:rtra=on_0"); - quick.push("dis+21_1:1_fd=off:kws=inv_arity:prag=on:sac=on:sos=all:i=4206:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2695:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=5575:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=10362:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=5278:si=on:rtra=on_0"); - quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=3247:si=on:rtra=on_0"); - quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=13657:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8991:si=on:rtra=on_0"); - quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=40255:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=50001:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1818:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6289:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=64124:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=3332:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=15859:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=2448:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=8858:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=57457:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=41386:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:hud=15:kws=precedence:lcm=reverse:sos=on:sp=frequency:i=6301:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=62433:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=96583:si=on:rtra=on_0"); + quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=5054:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=8025:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); + quick.push("dis+1010_16:1_abs=on:acc=model:avsq=on:prag=on:sp=const_frequency:i=5697:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12126:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5779:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6905:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2761:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=10514:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6020:si=on:rtra=on_0"); + quick.push("ott+31_1:1_av=off:bd=off:cbe=off:erd=off:sos=all:sp=occurrence:i=10738:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=14073:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=5045:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_bsr=unit_only:cnfonf=lazy_not_be_gen:nwc=10.0:sp=reverse_arity:i=22246:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=960:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=9251:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=15001:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); + quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=43686:si=on:rtra=on_0"); + quick.push("lrs+1002_2:1_cnfonf=lazy_not_be_gen:sp=const_frequency:i=2032:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=1458:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3365:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=2085:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=17634:si=on:rtra=on_0"); + quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=4417:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=100206:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=15049:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fde=unused:nwc=5.0:rawr=on:sos=on:sp=occurrence:i=9585:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=55108:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=17844:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=81936:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:fsr=off:ins=1:sd=10:ss=axioms:uhcvi=on:i=4637:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4479:si=on:rtra=on_0"); - quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3219:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:av=off:e2e=on:fd=off:rawr=on:s2a=on:s2at=3.0:sos=on:sp=occurrence:i=9451:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=3948:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=2555:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=16919:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1083:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=25547:si=on:rtra=on_0"); - quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=9855:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=21726:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=27149:si=on:rtra=on_0"); - // Improves by expected 49.982594209671426 probs costing 958953 Mi + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=15440:si=on:rtra=on_0"); + quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4555:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=48194:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=23308:si=on:rtra=on_0"); + quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3563:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=30001:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=4296:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=4887:si=on:rtra=on_0"); + quick.push("ott+10_5:1_aac=none:cnfonf=lazy_pi_sigma_gen:ins=1:nm=0:nwc=10.0:sp=const_min:i=3685:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); + // Improves by expected 45.2273450074669 probs costing 957563 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=13448:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=9786:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=7156:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_simp:fde=unused:fsr=off:hud=10:nwc=10.0:s2a=on:s2at=4.0:sac=on:i=47873:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_kws=inv_arity_squared:plsq=on:plsqc=1:plsqr=15,4:s2a=on:i=18239:si=on:rtra=on_0"); + quick.push("dis+21_4:1_atotf=0.4:au=on:cnfonf=lazy_not_be_gen:cond=fast:nwc=8.0:plsq=on:plsqc=1:s2a=on:i=6001:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=3914:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:cbe=off:hfsq=on:kws=precedence:sos=all:sp=reverse_arity:i=52665:si=on:rtra=on_0"); + quick.push("ott+21_1:1_au=on:av=off:bd=off:fde=unused:hud=10:prag=on:sos=all:i=95972:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:hud=15:kws=precedence:lcm=reverse:sos=on:sp=frequency:i=6301:si=on:rtra=on_0"); + quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=5018:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5779:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=42818:si=on:rtra=on_0"); + quick.push("ott+10_1:1_cnfonf=lazy_pi_sigma_gen:hfsq=on:hfsqc=3:i=28341:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=47778:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6020:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=off:hud=10:nm=10:ntd=on:s2a=on:sac=on:sgt=30:ss=included:i=23915:si=on:rtra=on_0"); + quick.push("ott+31_1:1_av=off:bd=off:cbe=off:erd=off:sos=all:sp=occurrence:i=10722:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=11232:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:i=112853:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=43632:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=1458:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=2275:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=14430:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1384:si=on:rtra=on_0"); + quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=6569:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fde=unused:nwc=5.0:rawr=on:sos=on:sp=occurrence:i=9735:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=76870:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=101455:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=9207:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:av=off:e2e=on:fd=off:rawr=on:s2a=on:s2at=3.0:sos=on:sp=occurrence:i=12092:si=on:rtra=on_0"); + quick.push("lrs+2_3:2_au=on:cbe=off:hud=15:ins=3:kws=precedence:sp=reverse_arity:uhcvi=on:i=12385:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=4296:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=5733:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=26311:si=on:rtra=on_0"); + // Improves by expected 22.92182240859353 probs costing 957802 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=12511:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=38530:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=9786:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=8044:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_au=on:bd=off:chr=on:lcm=reverse:ntd=on:sd=1:sgt=100:ss=axioms:i=13468:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:cha=on:cnfonf=lazy_gen:lcm=reverse:uhcvi=on:i=68903:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:hud=15:kws=precedence:lcm=reverse:sos=on:sp=frequency:i=6301:si=on:rtra=on_0"); + quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=5018:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=8025:si=on:rtra=on_0"); + quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6905:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=80368:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_hfsq=on:ins=3:prag=on:s2a=on:s2at=2.0:sp=weighted_frequency:i=41846:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=41561:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:bd=off:ntd=on:slsq=on:i=61530:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=off:hud=10:nm=10:ntd=on:s2a=on:sac=on:sgt=30:ss=included:i=27150:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:avsq=on:bd=preordered:cbe=off:fsr=off:ins=2:nwc=10.0:s2a=on:s2agt=20:sos=all:spb=non_intro:i=83652:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=44014:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=120419:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=65427:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=4996:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2946:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=72927:si=on:rtra=on_0"); + quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=93147:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:av=off:e2e=on:fd=off:rawr=on:s2a=on:s2at=3.0:sos=on:sp=occurrence:i=12092:si=on:rtra=on_0"); + // Improves by expected 15.657299302811264 probs costing 952026 Mi + // Mon10 Overall score 3000.409829293265 probs on average / budget 3825232 Mi + // Sun09 Overall score 2938.863699793977 probs on average / budget 1918256 Mi } From c1cb44e94ce2339405125df953f6ce8c5a3e32e8 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 11 Jul 2023 12:14:11 +0200 Subject: [PATCH 190/210] after-casc SLH2 sched v3 --- CASC/Schedules.cpp | 598 +++++++++++++++++++++++---------------------- z3 | 2 +- 2 files changed, 309 insertions(+), 291 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 81e2dcde8f..f66edb78c0 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5589,386 +5589,404 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick) { // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=989:si=on:rtra=on_0"); - quick.push("dis+2_16:1_e2e=on:gs=on:s2a=on:s2agt=32:sgt=32:ss=axioms:i=2:si=on:rtra=on_0"); - quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=15:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=744:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=850:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1155:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=679:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1279:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=813:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=637:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=727:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=1619:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=995:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=1620:si=on:rtra=on_0"); + quick.push("lrs+1010_1:8_cbe=off:hfsq=on:ixr=off:prag=on:sac=on:sd=1:sgt=40:ss=axioms:i=387:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=632:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=680:si=on:rtra=on_0"); + quick.push("lrs+2_2:1_bd=off:hud=10:sd=1:sp=reverse_arity:spb=goal:ss=axioms:st=1.5:tgt=ground:i=2:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=826:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=541:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fsd=on:hfsq=on:hfsqc=3:hud=10:ins=2:plsq=on:plsqc=4:plsqr=1,2:sp=occurrence:i=14:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=497:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=938:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=814:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=1399:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_fe=off:fsr=off:nm=32:sos=on:sp=unary_first:ss=axioms:i=2:si=on:rtra=on_0"); + quick.push("dis+10_1:32_fd=off:kws=precedence:sd=2:sos=on:ss=axioms:i=195:si=on:rtra=on_0"); quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=470:si=on:rtra=on_0"); - // Improves by expected 2204.987364111912 probs costing 9966 Mi + // Improves by expected 2228.2320446008907 probs costing 9996 Mi // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1345:si=on:rtra=on_0"); - quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=598:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=2891:si=on:rtra=on_0"); - quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=1452:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=1656:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=1152:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=1490:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=2133:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1394:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=581:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4188:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=401:si=on:rtra=on_0"); quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=637:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=829:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_add=off:apa=on:au=on:bsr=unit_only:cnfonf=off:e2e=on:s2a=on:s2at=2.0:ss=axioms:st=2.0:i=940:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=746:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=532:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=1161:si=on:rtra=on_0"); + quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=3634:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1161:si=on:rtra=on_0"); + quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=567:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=713:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=357:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=1640:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=2159:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=396:si=on:rtra=on_0"); - // Improves by expected 221.54195675469845 probs costing 19964 Mi + quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=313:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=626:si=on:rtra=on_0"); + quick.push("dis+10_1:32_fd=off:kws=precedence:sd=2:sos=on:ss=axioms:i=787:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=1361:si=on:rtra=on_0"); + quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=1149:si=on:rtra=on_0"); + // Improves by expected 243.25886019261347 probs costing 19986 Mi // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1364:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); - quick.push("lrs+10_1:28_au=on:lma=on:sgt=8:sos=all:ss=axioms:i=710:si=on:rtra=on_0"); + quick.push("lrs+10_1:28_au=on:lma=on:sgt=8:sos=all:ss=axioms:i=923:si=on:rtra=on_0"); quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=290:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2355:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_afr=on:chr=on:e2e=on:fde=unused:sos=all:sp=const_max:spb=goal_then_units:ss=axioms:i=351:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_pi_sigma_gen:hfsq=on:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1114:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=3865:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=2832:si=on:rtra=on_0"); - quick.push("lrs+1010_1:5_au=on:bd=off:cnfonf=off:nm=10:sos=on:i=602:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1024_bd=off:fd=off:hud=22:prag=on:sos=on:ss=axioms:tnu=1:i=433:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1917:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=431:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_cbe=off:e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=235:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1736:si=on:rtra=on_0"); + quick.push("lrs+2_1:64_bd=off:nwc=5.0:sd=2:ss=axioms:i=290:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1324:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_erd=off:ins=3:sd=1:sos=on:ss=axioms:i=263:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=3785:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1526:si=on:rtra=on_0"); quick.push("dis+10_3:1_avsq=on:sd=1:ss=axioms:st=2.0:tgt=ground:i=278:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=276:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=522:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=802:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=799:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=264:si=on:rtra=on_0"); - quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2236:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=1484:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_fde=unused:fe=off:hud=10:nm=2:sos=on:sp=unary_frequency:spb=units:i=1092:si=on:rtra=on_0"); + quick.push("dis+2_1:1_cnfonf=off:e2e=on:kws=inv_frequency:nm=0:nwc=5.0:s2a=on:s2agt=32:ss=axioms:i=487:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=935:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=2616:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=597:si=on:rtra=on_0"); quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:i=769:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=369:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=1073:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=345:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=746:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=532:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=1197:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1097:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_atotf=0.2:au=on:cnfonf=off:gs=on:nm=0:sd=2:ss=axioms:i=2468:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:cnfonf=lazy_pi_sigma_gen:i=978:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=538:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=337:si=on:rtra=on_0"); quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=229:si=on:rtra=on_0"); quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=416:si=on:rtra=on_0"); - quick.push("dis+10_1:3_aac=none:bd=off:cnfonf=off:fde=unused:ins=2:ntd=on:s2a=on:sac=on:i=437:si=on:rtra=on_0"); - quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=5230:si=on:rtra=on_0"); - // Improves by expected 127.42381885280948 probs costing 29896 Mi + quick.push("dis+10_1:3_aac=none:bd=off:cnfonf=off:fde=unused:ins=2:ntd=on:s2a=on:sac=on:i=529:si=on:rtra=on_0"); + // Improves by expected 130.07231747570546 probs costing 29955 Mi // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=567:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=3295:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=890:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=5862:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sos=on:i=688:si=on:rtra=on_0"); quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1203:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=3046:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1301:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=1290:si=on:rtra=on_0"); quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=1108:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=901:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fd=off:prag=on:sac=on:sos=on:i=1268:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); + quick.push("dis+10_5:1_au=on:hfsq=on:ss=axioms:i=938:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=3628:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=1085:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=7344:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=596:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=2949:si=on:rtra=on_0"); quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=1467:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:lma=on:prag=on:sos=all:ss=axioms:i=493:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=9076:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=1163:si=on:rtra=on_0"); + quick.push("lrs+1010_1:5_bd=off:fde=none:hud=10:ins=3:prag=on:sos=on:ss=axioms:i=457:si=on:rtra=on_0"); + quick.push("dis+10_5:1_cnfonf=off:slsq=on:sp=const_max:i=571:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_not_gen_be_off:kws=precedence:prag=on:s2a=on:sp=frequency:ss=axioms:i=569:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=2032:si=on:rtra=on_0"); quick.push("dis+10_1:12_cnfonf=conj_eager:ss=axioms:st=3.0:tgt=full:i=620:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=2682:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3615:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=12125:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=2082:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=1231:si=on:rtra=on_0"); - quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=1164:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3494:si=on:rtra=on_0"); + quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2297:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1519:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=652:si=on:rtra=on_0"); quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=1806:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nm=0:nwc=5.0:i=977:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=1443:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=8031:si=on:rtra=on_0"); - quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=1905:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1301:si=on:rtra=on_0"); - // Improves by expected 115.19860428799437 probs costing 59739 Mi + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=7919:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_pi_sigma_gen:fde=unused:s2a=on:s2agt=8:i=793:si=on:rtra=on_0"); + // Improves by expected 111.56363838898156 probs costing 59724 Mi // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=14531:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=712:si=on:rtra=on_0"); - quick.push("dis+2_16:1_e2e=on:gs=on:s2a=on:s2agt=32:sgt=32:ss=axioms:i=1156:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2115:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1336:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=2003:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=9390:si=on:rtra=on_0"); quick.push("dis+10_4:1_av=off:cnfonf=off:hud=5:nwc=10.0:s2a=on:s2agt=16:i=2731:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_au=on:bd=off:chr=on:lcm=reverse:ntd=on:sd=1:sgt=100:ss=axioms:i=3703:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1511:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=1290:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6172:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6340:si=on:rtra=on_0"); quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=1080:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=8643:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=9010:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=519:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=8447:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=5071:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fsr=off:nm=32:sd=1:sgt=16:sos=on:ss=axioms:i=4082:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6231:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2761:si=on:rtra=on_0"); - quick.push("dis+10_5:1_cnfonf=off:slsq=on:sp=const_max:i=571:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=5063:si=on:rtra=on_0"); + quick.push("dis+1010_1:128_apa=on:cha=on:cnfonf=off:ins=2:prag=on:sims=off:sos=on:i=532:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=conj_eager:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sd=1:sgt=32:ss=axioms:i=1737:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); quick.push("lrs+2_1:6_au=on:cnfonf=off:ss=axioms:st=1.5:i=1438:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:lma=on:prag=on:sos=all:ss=axioms:i=386:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=2911:si=on:rtra=on_0"); - quick.push("dis+10_1:128_av=off:fde=unused:hud=1:prag=on:sos=all:ss=axioms:i=1451:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); - quick.push("lrs+10_5:4_au=on:bet=on:bs=unit_only:bsd=on:cnfonf=off:ins=2:kws=precedence:plsq=on:plsqc=1:plsqr=89,8:rawr=on:sac=on:i=988:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=1808:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=1068:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=574:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=2032:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=490:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=5882:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=known:fde=none:fe=axiom:flr=on:hud=10:ntd=on:nwc=10.0:sos=all:i=870:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=2915:si=on:rtra=on_0"); + quick.push("dis+10_1:128_av=off:fde=unused:hud=1:prag=on:sos=all:ss=axioms:i=3425:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=2690:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_bd=off:e2e=on:s2a=on:s2agt=10:sp=unary_first:i=835:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_c=on:fsr=off:hud=0:kws=inv_arity:ntd=on:sos=on:sp=occurrence:i=985:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=10373:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=4966:si=on:rtra=on_0"); + quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=6852:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=1845:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=2589:si=on:rtra=on_0"); + quick.push("dis+10_1:8_au=on:cnfonf=lazy_not_gen_be_off:fde=unused:slsq=on:slsqc=1:sp=unary_frequency:tgt=ground:i=1516:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=1084:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_acc=model:au=on:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=704:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3323:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fde=none:ss=axioms:i=1579:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=1630:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=1486:si=on:rtra=on_0"); quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); - quick.push("ott+1010_41:4_bd=off:cnfonf=off:hud=14:ntd=on:s2a=on:i=1745:si=on:rtra=on_0"); - quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=937:si=on:rtra=on_0"); - quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=3837:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=577:si=on:rtra=on_0"); + quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=280:si=on:rtra=on_0"); + quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=1348:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=4990:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=4318:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_amm=off:cnfonf=off:fd=off:fe=axiom:fs=off:fsr=off:hud=24:plsq=on:plsqr=5,3:prag=on:sos=on:tnu=5:i=840:si=on:rtra=on_0"); quick.push("lrs+1010_1:2_cnfonf=lazy_pi_sigma_gen:fde=unused:fe=axiom:ss=axioms:tgt=ground:i=1540:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2774:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_cnfonf=off:fde=unused:prag=on:sos=all:i=2076:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_atotf=0.2:au=on:cnfonf=off:gs=on:nm=0:sd=2:ss=axioms:i=8032:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=751:si=on:rtra=on_0"); + quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2566:si=on:rtra=on_0"); + quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1260:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=2614:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); - // Improves by expected 103.12377426427754 probs costing 119933 Mi + quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=2063:si=on:rtra=on_0"); + // Improves by expected 98.99426126583916 probs costing 119930 Mi // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=7601:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=712:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2355:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4273:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6289:si=on:rtra=on_0"); - quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=565:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=22777:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=2448:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_au=on:bd=off:chr=on:lcm=reverse:ntd=on:sd=1:sgt=100:ss=axioms:i=13468:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=13647:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=14386:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2115:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=567:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4309:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=4147:si=on:rtra=on_0"); + quick.push("lrs+2_3:1_amm=off:bet=on:e2e=on:ins=3:kws=precedence:sos=on:sp=frequency:i=6130:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=29708:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1027:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=475:si=on:rtra=on_0"); quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4828:si=on:rtra=on_0"); quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4504:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=13342:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=6122:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=3081:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=4369:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=394:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=2111:si=on:rtra=on_0"); quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=13055:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4300:si=on:rtra=on_0"); - quick.push("dis+2_16:1_au=on:bd=off:cbe=off:fd=preordered:fde=unused:fsr=off:hfsq=on:nwc=10.0:i=9713:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:lma=on:prag=on:sos=all:ss=axioms:i=493:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=11924:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=5045:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=5795:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=1068:si=on:rtra=on_0"); + quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=598:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6231:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=13554:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=11785:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=9387:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=10634:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=1928:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:s2agt=8:i=2717:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=945:si=on:rtra=on_0"); quick.push("ott+1010_1:1_add=off:apa=on:au=on:bsr=unit_only:cnfonf=off:e2e=on:s2a=on:s2at=2.0:ss=axioms:st=2.0:i=4401:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=4641:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=3303:si=on:rtra=on_0"); quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=4684:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=1262:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=15001:si=on:rtra=on_0"); quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=577:si=on:rtra=on_0"); quick.push("lrs+21_1:1_aac=none:c=on:cnfonf=lazy_not_gen:sos=on:i=3633:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=3039:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=568:si=on:rtra=on_0"); - quick.push("dis+10_4:1_cnfonf=lazy_simp:gs=on:hud=22:sd=1:ss=axioms:tnu=1:i=2354:si=on:rtra=on_0"); + quick.push("dis+1010_1:6_fd=off:hfsq=on:hud=10:nm=2:rawr=on:sos=all:i=3055:si=on:rtra=on_0"); quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=6248:si=on:rtra=on_0"); - quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=1083:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=off:fde=none:fe=off:piset=pi_sigma:sos=on:sp=frequency:tnu=9:i=770:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=1644:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=30439:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=26064:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2759:si=on:rtra=on_0"); quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=3526:si=on:rtra=on_0"); - quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=6601:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); - // Improves by expected 79.89420096271172 probs costing 239325 Mi + quick.push("lrs+21_1:1_cnfonf=off:fde=unused:prag=on:sos=all:i=2076:si=on:rtra=on_0"); + // Improves by expected 81.55935557921087 probs costing 239942 Mi // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit - quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=712:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1818:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19468:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=892:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1901:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=1542:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:bsd=on:c=on:fde=none:piset=equals:sac=on:sp=const_min:i=5909:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:plsq=on:sos=on:i=9176:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=20100:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=2448:si=on:rtra=on_0"); - quick.push("dis+21_4:1_atotf=0.4:au=on:cnfonf=lazy_not_be_gen:cond=fast:nwc=8.0:plsq=on:plsqc=1:s2a=on:i=6001:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1464:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=3914:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1023:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=6916:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=26469:si=on:rtra=on_0"); - quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=24393:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=15896:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=12055:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=14840:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=11835:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5064:si=on:rtra=on_0"); quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=15912:si=on:rtra=on_0"); - quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=52745:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=3912:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=1768:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=2359:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=12797:si=on:rtra=on_0"); + quick.push("dis+1010_1:5_au=on:hfsq=on:hfsql=off:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=6555:si=on:rtra=on_0"); quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); - quick.push("dis+1010_16:1_abs=on:acc=model:avsq=on:prag=on:sp=const_frequency:i=1214:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=27919:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5201:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_au=on:av=off:cnfonf=lazy_pi_sigma_gen:tgt=full:i=12683:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=5692:si=on:rtra=on_0"); quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=11200:si=on:rtra=on_0"); - quick.push("dis+2_16:1_au=on:bd=off:cbe=off:fd=preordered:fde=unused:fsr=off:hfsq=on:nwc=10.0:i=38290:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6551:si=on:rtra=on_0"); + quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=491:si=on:rtra=on_0"); + quick.push("lrs+1010_1:5_bd=off:fde=none:hud=10:ins=3:prag=on:sos=on:ss=axioms:i=1854:si=on:rtra=on_0"); quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); quick.push("ott+10_1:1_afp=2000:bsr=unit_only:chr=on:hfsq=on:hfsql=off:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=18886:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6101:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:lma=on:prag=on:sos=all:ss=axioms:i=493:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=11590:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_bd=off:e2e=on:s2a=on:s2agt=10:sp=unary_first:i=29922:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_aac=none:bsr=on:e2e=on:fe=off:hfsq=on:nm=4:ntd=on:piset=small_set:prag=on:sac=on:sos=on:sp=unary_frequency:tnu=5:uhcvi=on:i=1623:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:br=off:e2e=on:fsr=off:sos=all:i=15357:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=known:fde=none:fe=axiom:flr=on:hud=10:ntd=on:nwc=10.0:sos=all:i=9456:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=91028:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=6719:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:br=off:e2e=on:fsr=off:sos=all:i=15597:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=945:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=5915:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=4676:si=on:rtra=on_0"); - quick.push("lrs+1002_2:1_cnfonf=lazy_not_be_gen:sp=const_frequency:i=2032:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=33343:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=1262:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=15001:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3758:si=on:rtra=on_0"); - quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=4417:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=2575:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=3048:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3782:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=58679:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=3280:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=12682:si=on:rtra=on_0"); + quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=4675:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1141:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_alpa=true:au=on:cnfonf=lazy_pi_sigma_gen:sos=on:i=1536:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=19281:si=on:rtra=on_0"); - quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=1083:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_amm=off:cnfonf=off:fd=off:fe=axiom:fs=off:fsr=off:hud=24:plsq=on:plsqr=5,3:prag=on:sos=on:tnu=5:i=7241:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=16001:si=on:rtra=on_0"); + quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=6455:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=off:fde=none:fe=off:piset=pi_sigma:sos=on:sp=frequency:tnu=9:i=1349:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4555:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2205:si=on:rtra=on_0"); quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3563:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=4887:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=lazy_not_be_gen:sd=1:sp=const_frequency:ss=axioms:i=1637:si=on:rtra=on_0"); - // Improves by expected 64.43364333999044 probs costing 479018 Mi + // Improves by expected 60.874992003081196 probs costing 478741 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1818:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6289:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=64124:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=3332:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=15859:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=2448:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=8858:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1901:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); + quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=1623:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=39263:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=8200:si=on:rtra=on_0"); + quick.push("lrs+2_3:1_amm=off:bet=on:e2e=on:ins=3:kws=precedence:sos=on:sp=frequency:i=14065:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=4192:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=39599:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=9593:si=on:rtra=on_0"); quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=57457:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=41386:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=11835:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5064:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=23249:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:hud=15:kws=precedence:lcm=reverse:sos=on:sp=frequency:i=6301:si=on:rtra=on_0"); quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=62433:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=58916:si=on:rtra=on_0"); quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=96583:si=on:rtra=on_0"); - quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=5054:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=8025:si=on:rtra=on_0"); + quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=5018:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=1768:si=on:rtra=on_0"); quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); - quick.push("dis+1010_16:1_abs=on:acc=model:avsq=on:prag=on:sp=const_frequency:i=5697:si=on:rtra=on_0"); - quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12126:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5779:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6905:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2761:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=10514:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6935:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=4309:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:hfsq=on:hfsqc=2:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=26143:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=24924:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=14945:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6020:si=on:rtra=on_0"); - quick.push("ott+31_1:1_av=off:bd=off:cbe=off:erd=off:sos=all:sp=occurrence:i=10738:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=14073:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=5045:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_bsr=unit_only:cnfonf=lazy_not_be_gen:nwc=10.0:sp=reverse_arity:i=22246:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=960:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=9251:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=15001:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); - quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=43686:si=on:rtra=on_0"); - quick.push("lrs+1002_2:1_cnfonf=lazy_not_be_gen:sp=const_frequency:i=2032:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14683:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=2676:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=10373:si=on:rtra=on_0"); + quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=12307:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9199:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_bsr=unit_only:cnfonf=lazy_not_be_gen:nwc=10.0:sp=reverse_arity:i=21593:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=945:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=4610:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=1458:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3365:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=2085:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=17634:si=on:rtra=on_0"); - quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=4417:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=100206:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_acc=model:au=on:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=32232:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=8732:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3758:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=2606:si=on:rtra=on_0"); quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=15049:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fde=unused:nwc=5.0:rawr=on:sos=on:sp=occurrence:i=9585:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=55108:si=on:rtra=on_0"); + quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=4675:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=8822:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=34824:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=24460:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=15440:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=23141:si=on:rtra=on_0"); quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4555:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=48194:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=23308:si=on:rtra=on_0"); + quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=7322:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=45918:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2205:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_atotf=0.2:au=on:cnfonf=off:gs=on:nm=0:sd=2:ss=axioms:i=21286:si=on:rtra=on_0"); quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3563:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=30001:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=4296:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=4887:si=on:rtra=on_0"); - quick.push("ott+10_5:1_aac=none:cnfonf=lazy_pi_sigma_gen:ins=1:nm=0:nwc=10.0:sp=const_min:i=3685:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); - // Improves by expected 45.2273450074669 probs costing 957563 Mi + quick.push("lrs+2_3:2_au=on:cbe=off:hud=15:ins=3:kws=precedence:sp=reverse_arity:uhcvi=on:i=12385:si=on:rtra=on_0"); + // Improves by expected 48.801505968449085 probs costing 958791 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=13448:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:bsd=on:c=on:fde=none:piset=equals:sac=on:sp=const_min:i=76578:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=30267:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=9786:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=7156:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_simp:fde=unused:fsr=off:hud=10:nwc=10.0:s2a=on:s2at=4.0:sac=on:i=47873:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_kws=inv_arity_squared:plsq=on:plsqc=1:plsqr=15,4:s2a=on:i=18239:si=on:rtra=on_0"); - quick.push("dis+21_4:1_atotf=0.4:au=on:cnfonf=lazy_not_be_gen:cond=fast:nwc=8.0:plsq=on:plsqc=1:s2a=on:i=6001:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=3914:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:cbe=off:hfsq=on:kws=precedence:sos=all:sp=reverse_arity:i=52665:si=on:rtra=on_0"); - quick.push("ott+21_1:1_au=on:av=off:bd=off:fde=unused:hud=10:prag=on:sos=all:i=95972:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fe=off:ins=3:prag=on:sos=on:i=4525:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_simp:fde=unused:fsr=off:hud=10:nwc=10.0:s2a=on:s2at=4.0:sac=on:i=49493:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=12055:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=45686:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:hud=15:kws=precedence:lcm=reverse:sos=on:sp=frequency:i=6301:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=5018:si=on:rtra=on_0"); + quick.push("dis+1010_1:5_au=on:hfsq=on:hfsql=off:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=15427:si=on:rtra=on_0"); quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5779:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=42818:si=on:rtra=on_0"); - quick.push("ott+10_1:1_cnfonf=lazy_pi_sigma_gen:hfsq=on:hfsqc=3:i=28341:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=47778:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=10083:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=9162:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6935:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=4309:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=5748:si=on:rtra=on_0"); quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6020:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:cnfonf=off:hud=10:nm=10:ntd=on:s2a=on:sac=on:sgt=30:ss=included:i=23915:si=on:rtra=on_0"); - quick.push("ott+31_1:1_av=off:bd=off:cbe=off:erd=off:sos=all:sp=occurrence:i=10722:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=11232:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:i=112853:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=43632:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=9076:si=on:rtra=on_0"); + quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=11844:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=5045:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9199:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=4188:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=98178:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=1458:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=2275:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=14430:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1384:si=on:rtra=on_0"); - quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=6569:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=7597:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=92639:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=111726:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fde=unused:nwc=5.0:rawr=on:sos=on:sp=occurrence:i=9735:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=76870:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=101455:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=9207:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:av=off:e2e=on:fd=off:rawr=on:s2a=on:s2at=3.0:sos=on:sp=occurrence:i=12092:si=on:rtra=on_0"); - quick.push("lrs+2_3:2_au=on:cbe=off:hud=15:ins=3:kws=precedence:sp=reverse_arity:uhcvi=on:i=12385:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=4296:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=5733:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=26311:si=on:rtra=on_0"); - // Improves by expected 22.92182240859353 probs costing 957802 Mi + quick.push("ott+1002_1:1_fe=off:fsr=off:nm=32:sos=on:sp=unary_first:ss=axioms:i=34160:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=73841:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=42569:si=on:rtra=on_0"); + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=84520:si=on:rtra=on_0"); + // Improves by expected 23.161634813375024 probs costing 956372 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=12511:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19468:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=38530:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=57495:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=9786:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=8044:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_au=on:bd=off:chr=on:lcm=reverse:ntd=on:sd=1:sgt=100:ss=axioms:i=13468:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:cha=on:cnfonf=lazy_gen:lcm=reverse:uhcvi=on:i=68903:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=12055:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_au=on:bd=off:chr=on:lcm=reverse:ntd=on:sd=1:sgt=100:ss=axioms:i=11408:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=45686:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_av=off:fe=axiom:hud=15:lwlo=on:prag=on:i=75417:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:hud=15:kws=precedence:lcm=reverse:sos=on:sp=frequency:i=6301:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=62151:si=on:rtra=on_0"); quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=5018:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=8025:si=on:rtra=on_0"); + quick.push("dis+1010_1:5_au=on:hfsq=on:hfsql=off:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=15424:si=on:rtra=on_0"); quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6905:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=80368:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_hfsq=on:ins=3:prag=on:s2a=on:s2at=2.0:sp=weighted_frequency:i=41846:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=41561:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:bd=off:ntd=on:slsq=on:i=61530:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=14412:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40194:si=on:rtra=on_0"); + quick.push("lrs-1666_4:1_bd=off:cnfonf=lazy_not_gen_be_off:fde=unused:hud=25:ixr=off:nm=0:sac=on:spb=goal:ss=axioms:st=1.5:i=25547:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=4309:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:hfsq=on:hfsqc=2:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=26143:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=41937:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6020:si=on:rtra=on_0"); quick.push("lrs+10_1:1_c=on:cnfonf=off:hud=10:nm=10:ntd=on:s2a=on:sac=on:sgt=30:ss=included:i=27150:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:avsq=on:bd=preordered:cbe=off:fsr=off:ins=2:nwc=10.0:s2a=on:s2agt=20:sos=all:spb=non_intro:i=83652:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=44014:si=on:rtra=on_0"); - quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=120419:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=65427:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=42765:si=on:rtra=on_0"); + quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=11844:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=22969:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=94992:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_bsr=unit_only:cnfonf=lazy_not_be_gen:nwc=10.0:sp=reverse_arity:i=21593:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:nm=10:slsq=on:slsqr=1,16:sp=const_max:i=20710:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=4996:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2946:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=27018:si=on:rtra=on_0"); + quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=9441:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=72927:si=on:rtra=on_0"); - quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=93147:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=18184:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=19281:si=on:rtra=on_0"); + quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=75375:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:av=off:e2e=on:fd=off:rawr=on:s2a=on:s2at=3.0:sos=on:sp=occurrence:i=12092:si=on:rtra=on_0"); - // Improves by expected 15.657299302811264 probs costing 952026 Mi - // Mon10 Overall score 3000.409829293265 probs on average / budget 3825232 Mi + quick.push("lrs+2_3:2_au=on:cbe=off:hud=15:ins=3:kws=precedence:sp=reverse_arity:uhcvi=on:i=13505:si=on:rtra=on_0"); + // Improves by expected 10.668307256252 probs costing 940131 Mi + // Mon10b Overall score 3037.186917544398 probs on average / budget 3813568 Mi + // Mon10a Overall score 3000.409829293265 probs on average / budget 3825232 Mi // Sun09 Overall score 2938.863699793977 probs on average / budget 1918256 Mi } diff --git a/z3 b/z3 index e417f7d785..6ed071b444 160000 --- a/z3 +++ b/z3 @@ -1 +1 @@ -Subproject commit e417f7d78509b2d0c9ebc911fee7632e6ef546b6 +Subproject commit 6ed071b44407cf6623b8d3c0dceb2a8fb7040cee From 29ce1f8296049d6d42f2e44e080df1611ed4517b Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Tue, 11 Jul 2023 12:14:23 +0200 Subject: [PATCH 191/210] after-casc SLH2 sched v4 --- CASC/Schedules.cpp | 612 ++++++++++++++++++++++++--------------------- 1 file changed, 320 insertions(+), 292 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index f66edb78c0..e4ba0be6ff 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5589,403 +5589,431 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick) { // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=995:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=1620:si=on:rtra=on_0"); - quick.push("lrs+1010_1:8_cbe=off:hfsq=on:ixr=off:prag=on:sac=on:sd=1:sgt=40:ss=axioms:i=387:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=632:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=680:si=on:rtra=on_0"); - quick.push("lrs+2_2:1_bd=off:hud=10:sd=1:sp=reverse_arity:spb=goal:ss=axioms:st=1.5:tgt=ground:i=2:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=826:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=541:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fde=unused:fsd=on:hfsq=on:hfsqc=3:hud=10:ins=2:plsq=on:plsqc=4:plsqr=1,2:sp=occurrence:i=14:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=497:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=938:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=814:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=1399:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_fe=off:fsr=off:nm=32:sos=on:sp=unary_first:ss=axioms:i=2:si=on:rtra=on_0"); - quick.push("dis+10_1:32_fd=off:kws=precedence:sd=2:sos=on:ss=axioms:i=195:si=on:rtra=on_0"); - quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=470:si=on:rtra=on_0"); - // Improves by expected 2228.2320446008907 probs costing 9996 Mi + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=763:si=on:rtra=on_0"); + quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=15:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=2:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=822:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:fde=none:hud=10:kws=arity_squared:sos=on:tnu=1:i=2:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=617:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=538:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=836:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=947:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1520:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=707:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=1259:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=1363:si=on:rtra=on_0"); + quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=482:si=on:rtra=on_0"); + // Improves by expected 2225.3486777788794 probs costing 9859 Mi // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=2133:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1394:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=581:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4188:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=401:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=637:si=on:rtra=on_0"); - quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=3634:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1161:si=on:rtra=on_0"); - quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=567:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=713:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=736:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=2909:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1186:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=1906:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=504:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=1328:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=3224:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=590:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:s2agt=8:i=481:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1182:si=on:rtra=on_0"); + quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=300:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=532:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=538:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=357:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=313:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=626:si=on:rtra=on_0"); - quick.push("dis+10_1:32_fd=off:kws=precedence:sd=2:sos=on:ss=axioms:i=787:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=1361:si=on:rtra=on_0"); - quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=1149:si=on:rtra=on_0"); - // Improves by expected 243.25886019261347 probs costing 19986 Mi + quick.push("lrs+10_1:1_av=off:kws=precedence:sos=on:sp=reverse_arity:ss=axioms:i=439:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=900:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=584:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=1657:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=492:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=off:hud=15:rawr=on:sd=1:sos=all:ss=axioms:i=168:si=on:rtra=on_0"); + // Improves by expected 225.82507538958157 probs costing 19993 Mi // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit - quick.push("lrs+10_1:28_au=on:lma=on:sgt=8:sos=all:ss=axioms:i=923:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=290:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1917:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=431:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_cbe=off:e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=235:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1736:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2134:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_cbe=off:e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=251:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=4228:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); quick.push("lrs+2_1:64_bd=off:nwc=5.0:sd=2:ss=axioms:i=290:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1324:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=873:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=435:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1579:si=on:rtra=on_0"); + quick.push("dis+10_5:1_au=on:hfsq=on:ss=axioms:i=990:si=on:rtra=on_0"); + quick.push("lrs+4_1:1_fd=off:fs=off:fsr=off:sac=on:sos=on:ss=axioms:i=413:si=on:rtra=on_0"); + quick.push("dis+10_8:1_cs=on:e2e=on:s2a=on:i=400:si=on:rtra=on_0"); + quick.push("lrs+1010_1:5_au=on:bd=off:cnfonf=off:nm=10:sos=on:i=602:si=on:rtra=on_0"); quick.push("lrs+21_1:1_erd=off:ins=3:sd=1:sos=on:ss=axioms:i=263:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=3785:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1526:si=on:rtra=on_0"); quick.push("dis+10_3:1_avsq=on:sd=1:ss=axioms:st=2.0:tgt=ground:i=278:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=1484:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_fde=unused:fe=off:hud=10:nm=2:sos=on:sp=unary_frequency:spb=units:i=1092:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=289:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=404:si=on:rtra=on_0"); quick.push("dis+2_1:1_cnfonf=off:e2e=on:kws=inv_frequency:nm=0:nwc=5.0:s2a=on:s2agt=32:ss=axioms:i=487:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=935:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=2616:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=597:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=877:si=on:rtra=on_0"); quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=345:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=746:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=532:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=1197:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1097:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_atotf=0.2:au=on:cnfonf=off:gs=on:nm=0:sd=2:ss=axioms:i=2468:si=on:rtra=on_0"); - quick.push("dis+10_1:1_avsq=on:cnfonf=lazy_pi_sigma_gen:i=978:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=538:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=337:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=556:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=1133:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=719:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1029:si=on:rtra=on_0"); + quick.push("dis+10_1:32_fd=off:kws=precedence:sd=2:sos=on:ss=axioms:i=237:si=on:rtra=on_0"); quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=229:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=416:si=on:rtra=on_0"); - quick.push("dis+10_1:3_aac=none:bd=off:cnfonf=off:fde=unused:ins=2:ntd=on:s2a=on:sac=on:i=529:si=on:rtra=on_0"); - // Improves by expected 130.07231747570546 probs costing 29955 Mi + quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2278:si=on:rtra=on_0"); + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=4574:si=on:rtra=on_0"); + quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=1321:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:e2e=on:ins=2:sd=1:sos=all:ss=axioms:st=3.0:i=316:si=on:rtra=on_0"); + // Improves by expected 129.5337591178251 probs costing 29938 Mi // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=541:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1345:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=567:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=731:si=on:rtra=on_0"); + quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=565:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=890:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=5862:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sos=on:i=688:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1035:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=2447:si=on:rtra=on_0"); quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=3046:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1301:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=1290:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1043:si=on:rtra=on_0"); quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=1108:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); - quick.push("dis+10_5:1_au=on:hfsq=on:ss=axioms:i=938:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=3628:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=1085:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=7344:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=596:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=2949:si=on:rtra=on_0"); - quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=1467:si=on:rtra=on_0"); - quick.push("lrs+1010_1:5_bd=off:fde=none:hud=10:ins=3:prag=on:sos=on:ss=axioms:i=457:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1097:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=1334:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1493:si=on:rtra=on_0"); quick.push("dis+10_5:1_cnfonf=off:slsq=on:sp=const_max:i=571:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=lazy_not_gen_be_off:kws=precedence:prag=on:s2a=on:sp=frequency:ss=axioms:i=569:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=348:si=on:rtra=on_0"); quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=2032:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_au=on:e2e=on:fsr=off:ins=3:sos=on:sp=unary_frequency:i=3548:si=on:rtra=on_0"); + quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=1406:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=2033:si=on:rtra=on_0"); quick.push("dis+10_1:12_cnfonf=conj_eager:ss=axioms:st=3.0:tgt=full:i=620:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3494:si=on:rtra=on_0"); - quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2297:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1519:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=10717:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=6854:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=597:si=on:rtra=on_0"); + quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2291:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1367:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=652:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=1806:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nm=0:nwc=5.0:i=977:si=on:rtra=on_0"); - quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=7919:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_pi_sigma_gen:fde=unused:s2a=on:s2agt=8:i=793:si=on:rtra=on_0"); - // Improves by expected 111.56363838898156 probs costing 59724 Mi + quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:i=769:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=973:si=on:rtra=on_0"); + quick.push("lrs+1666_1:4_cnfonf=off:fde=none:hfsq=on:nm=2:ntd=on:prag=on:sd=7:sos=on:ss=axioms:tnu=5:i=246:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=3168:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=337:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1105:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_au=on:avsq=on:avsqc=1:cnfonf=off:e2e=on:fsr=off:ins=1:nwc=10.0:s2a=on:s2at=2.5:sac=on:sp=const_min:i=3885:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_e2e=on:plsq=on:plsqr=32,1:sgt=8:ss=axioms:i=834:si=on:rtra=on_0"); + quick.push("dis+10_1:5_bsr=on:cnfonf=lazy_not_be_gen:hud=5:sd=1:sos=all:ss=axioms:i=988:si=on:rtra=on_0"); + // Improves by expected 118.70614219626505 probs costing 59883 Mi // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2115:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1336:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=2003:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=9390:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=5420:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=6494:si=on:rtra=on_0"); + quick.push("lrs+10_1:28_au=on:lma=on:sgt=8:sos=all:ss=axioms:i=689:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1035:si=on:rtra=on_0"); quick.push("dis+10_4:1_av=off:cnfonf=off:hud=5:nwc=10.0:s2a=on:s2agt=16:i=2731:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6340:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=1080:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=5063:si=on:rtra=on_0"); - quick.push("dis+1010_1:128_apa=on:cha=on:cnfonf=off:ins=2:prag=on:sims=off:sos=on:i=532:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=conj_eager:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sd=1:sgt=32:ss=axioms:i=1737:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1511:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6172:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=8496:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=8557:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=3722:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1066:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=5071:si=on:rtra=on_0"); quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); quick.push("lrs+2_1:6_au=on:cnfonf=off:ss=axioms:st=1.5:i=1438:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_er=known:fde=none:fe=axiom:flr=on:hud=10:ntd=on:nwc=10.0:sos=all:i=870:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=2915:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=5019:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=5488:si=on:rtra=on_0"); quick.push("dis+10_1:128_av=off:fde=unused:hud=1:prag=on:sos=all:ss=axioms:i=3425:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=2690:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=2203:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=11028:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=2685:si=on:rtra=on_0"); quick.push("dis+1010_3:1_bd=off:e2e=on:s2a=on:s2agt=10:sp=unary_first:i=835:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=1063:si=on:rtra=on_0"); quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_c=on:fsr=off:hud=0:kws=inv_arity:ntd=on:sos=on:sp=occurrence:i=985:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=10373:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=4966:si=on:rtra=on_0"); - quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=6852:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=1845:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=2589:si=on:rtra=on_0"); - quick.push("dis+10_1:8_au=on:cnfonf=lazy_not_gen_be_off:fde=unused:slsq=on:slsqc=1:sp=unary_frequency:tgt=ground:i=1516:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_c=on:fsr=off:hud=0:kws=inv_arity:ntd=on:sos=on:sp=occurrence:i=1098:si=on:rtra=on_0"); + quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=767:si=on:rtra=on_0"); quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=1084:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_acc=model:au=on:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=704:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3323:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=938:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3373:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fde=none:ss=axioms:i=1579:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=1630:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=445:si=on:rtra=on_0"); quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=1486:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=577:si=on:rtra=on_0"); - quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=280:si=on:rtra=on_0"); - quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=1348:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=4990:si=on:rtra=on_0"); + quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=290:si=on:rtra=on_0"); + quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=937:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=4318:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_amm=off:cnfonf=off:fd=off:fe=axiom:fs=off:fsr=off:hud=24:plsq=on:plsqr=5,3:prag=on:sos=on:tnu=5:i=840:si=on:rtra=on_0"); - quick.push("lrs+1010_1:2_cnfonf=lazy_pi_sigma_gen:fde=unused:fe=axiom:ss=axioms:tgt=ground:i=1540:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_atotf=0.2:au=on:cnfonf=off:gs=on:nm=0:sd=2:ss=axioms:i=8032:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=751:si=on:rtra=on_0"); - quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2566:si=on:rtra=on_0"); - quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1260:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=2614:si=on:rtra=on_0"); - quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=2063:si=on:rtra=on_0"); - // Improves by expected 98.99426126583916 probs costing 119930 Mi + quick.push("dis+10_4:1_cnfonf=lazy_simp:gs=on:hud=22:sd=1:ss=axioms:tnu=1:i=2117:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=1701:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=1227:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=9524:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2759:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_cnfonf=off:fde=unused:prag=on:sos=all:i=2076:si=on:rtra=on_0"); + quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=569:si=on:rtra=on_0"); + // Improves by expected 101.05529103372135 probs costing 119985 Mi // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=7601:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=14386:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2115:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=567:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4309:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2693:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=4147:si=on:rtra=on_0"); - quick.push("lrs+2_3:1_amm=off:bet=on:e2e=on:ins=3:kws=precedence:sos=on:sp=frequency:i=6130:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:e2e=on:fde=none:ins=3:kws=precedence:s2a=on:s2at=5.0:sp=frequency:i=2335:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=29708:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1027:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=475:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=8021:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1557:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=9390:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=1907:si=on:rtra=on_0"); + quick.push("dis+21_2:3_cnfonf=conj_eager:fsr=off:sd=1:slsq=on:ss=axioms:st=4.0:i=1790:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=1080:si=on:rtra=on_0"); quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4828:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4504:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=394:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=2111:si=on:rtra=on_0"); - quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=13055:si=on:rtra=on_0"); - quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=598:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:hfsq=on:hfsqr=5,1:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=2589:si=on:rtra=on_0"); + quick.push("dis+10_5:1_au=on:hfsq=on:ss=axioms:i=4005:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=4050:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5381:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6231:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=13554:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=11785:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=9387:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=10634:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1403:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=2901:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=off:erd=off:fde=none:prag=on:sos=on:i=5675:si=on:rtra=on_0"); quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=1928:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=633:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:fsr=off:hfsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:s2agt=8:i=2717:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=10951:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=945:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_add=off:apa=on:au=on:bsr=unit_only:cnfonf=off:e2e=on:s2a=on:s2at=2.0:ss=axioms:st=2.0:i=4401:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=3303:si=on:rtra=on_0"); quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=1537:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=2241:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=15001:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3782:si=on:rtra=on_0"); quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=577:si=on:rtra=on_0"); + quick.push("ott+1010_41:4_bd=off:cnfonf=off:hud=14:ntd=on:s2a=on:i=1745:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=556:si=on:rtra=on_0"); quick.push("lrs+21_1:1_aac=none:c=on:cnfonf=lazy_not_gen:sos=on:i=3633:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=2178:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=3039:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=568:si=on:rtra=on_0"); - quick.push("dis+1010_1:6_fd=off:hfsq=on:hud=10:nm=2:rawr=on:sos=all:i=3055:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=552:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=18654:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=5301:si=on:rtra=on_0"); + quick.push("dis+1010_5:1_cnfonf=lazy_pi_sigma_gen:fe=off:hud=10:sd=1:ss=axioms:st=1.5:i=2416:si=on:rtra=on_0"); quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=6248:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=26064:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2759:si=on:rtra=on_0"); + quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=981:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=27179:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=3099:si=on:rtra=on_0"); quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=3526:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_cnfonf=off:fde=unused:prag=on:sos=all:i=2076:si=on:rtra=on_0"); - // Improves by expected 81.55935557921087 probs costing 239942 Mi + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=488:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); + quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=2186:si=on:rtra=on_0"); + quick.push("lrs+2_3:1_acc=model:cnfonf=off:e2e=on:fe=axiom:fs=off:fsr=off:hud=15:piset=all_but_not_eq:sp=const_frequency:ss=axioms:i=1701:si=on:rtra=on_0"); + quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=568:si=on:rtra=on_0"); + quick.push("dis+1004_1:5_cs=on:e2e=on:hfsq=on:ins=2:sos=all:i=1001:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=2090:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:c=on:cnfonf=off:kws=inv_precedence:piset=and:sd=1:ss=axioms:tgt=ground:tnu=2:i=18199:si=on:rtra=on_0"); + // Improves by expected 84.7709314578973 probs costing 239629 Mi // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19468:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=892:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1901:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:bsd=on:c=on:fde=none:piset=equals:sac=on:sp=const_min:i=5909:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19923:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1997:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4273:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6289:si=on:rtra=on_0"); + quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=1623:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=33885:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:plsq=on:sos=on:i=9176:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=24393:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=15896:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=12055:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=14840:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=11835:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5064:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=15358:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1557:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=6916:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=2410:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=24601:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4504:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=14432:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5674:si=on:rtra=on_0"); + quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=12797:si=on:rtra=on_0"); - quick.push("dis+1010_1:5_au=on:hfsq=on:hfsql=off:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=6555:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=5692:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12849:si=on:rtra=on_0"); quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=11200:si=on:rtra=on_0"); - quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=491:si=on:rtra=on_0"); - quick.push("lrs+1010_1:5_bd=off:fde=none:hud=10:ins=3:prag=on:sos=on:ss=axioms:i=1854:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:hfsq=on:hfsqc=2:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=4778:si=on:rtra=on_0"); quick.push("ott+10_1:1_afp=2000:bsr=unit_only:chr=on:hfsq=on:hfsql=off:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_er=known:fde=none:fe=axiom:flr=on:hud=10:ntd=on:nwc=10.0:sos=all:i=9456:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=91028:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=6719:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:br=off:e2e=on:fsr=off:sos=all:i=15597:si=on:rtra=on_0"); + quick.push("dis+21_1:6_bd=off:e2e=on:ins=5:nwc=11.0:s2a=on:i=3395:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6881:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14683:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=2277:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=8152:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:fsr=off:hfsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); + quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=767:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=945:si=on:rtra=on_0"); quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=5915:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=33343:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=8901:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=21393:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3782:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=58679:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=3280:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=788:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=15001:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3758:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=55998:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1233:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=4675:si=on:rtra=on_0"); quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1141:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_alpa=true:au=on:cnfonf=lazy_pi_sigma_gen:sos=on:i=1536:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_amm=off:cnfonf=off:fd=off:fe=axiom:fs=off:fsr=off:hud=24:plsq=on:plsqr=5,3:prag=on:sos=on:tnu=5:i=7241:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=16001:si=on:rtra=on_0"); - quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=6455:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=off:fde=none:fe=off:piset=pi_sigma:sos=on:sp=frequency:tnu=9:i=1349:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=14011:si=on:rtra=on_0"); + quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=7904:si=on:rtra=on_0"); quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2205:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=10614:si=on:rtra=on_0"); quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3563:si=on:rtra=on_0"); - // Improves by expected 60.874992003081196 probs costing 478741 Mi + quick.push("lrs+1002_2:1_fde=unused:kws=inv_frequency:ntd=on:i=8202:si=on:rtra=on_0"); + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=25457:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); + quick.push("dis+1004_1:5_cs=on:e2e=on:hfsq=on:ins=2:sos=all:i=1001:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_au=on:avsq=on:avsqc=1:cnfonf=off:e2e=on:fsr=off:ins=1:nwc=10.0:s2a=on:s2at=2.5:sac=on:sp=const_min:i=4814:si=on:rtra=on_0"); + // Improves by expected 68.09668572816418 probs costing 479545 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1901:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1997:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); - quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=1623:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=39263:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=8200:si=on:rtra=on_0"); - quick.push("lrs+2_3:1_amm=off:bet=on:e2e=on:ins=3:kws=precedence:sos=on:sp=frequency:i=14065:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:e2e=on:fde=none:ins=3:kws=precedence:s2a=on:s2at=5.0:sp=frequency:i=2967:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=4192:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=39599:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=9593:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=57457:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=11835:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5064:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=23249:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:hud=15:kws=precedence:lcm=reverse:sos=on:sp=frequency:i=6301:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=68605:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_gen_be_off:fe=axiom:s2a=on:i=2895:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1525:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=15859:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=21066:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_apa=on:au=on:cnfonf=off:fde=unused:fsr=off:ins=2:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=16648:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4526:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=47582:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); + quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=58916:si=on:rtra=on_0"); - quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=96583:si=on:rtra=on_0"); - quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=5018:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=15:kws=precedence:nm=30:sos=on:sp=unary_frequency:ss=axioms:i=1768:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); - quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:hfsq=on:hfsqr=5,1:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=5561:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=62433:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=60104:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=6954:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=9162:si=on:rtra=on_0"); quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6935:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=4309:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5241:si=on:rtra=on_0"); + quick.push("dis+2_16:1_au=on:bd=off:cbe=off:fd=preordered:fde=unused:fsr=off:hfsq=on:nwc=10.0:i=34715:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=5327:si=on:rtra=on_0"); quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:hfsq=on:hfsqc=2:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=26143:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=24924:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=14945:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=18181:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=15209:si=on:rtra=on_0"); quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6020:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=off:erd=off:fde=none:prag=on:sos=on:i=5501:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=14073:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14683:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=2676:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=10373:si=on:rtra=on_0"); - quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=12307:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4066:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=5088:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=2685:si=on:rtra=on_0"); + quick.push("dis+10_4:1_atotf=0.3:bs=on:cnfonf=lazy_simp:fe=axiom:gs=on:nm=0:nwc=10.0:sp=const_frequency:i=25137:si=on:rtra=on_0"); + quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=14769:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:fsr=off:hfsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9199:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9529:si=on:rtra=on_0"); quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_bsr=unit_only:cnfonf=lazy_not_be_gen:nwc=10.0:sp=reverse_arity:i=21593:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=945:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=4610:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=2032:si=on:rtra=on_0"); + quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=1501:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=50001:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=1458:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_acc=model:au=on:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=32232:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=8732:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3758:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=2606:si=on:rtra=on_0"); - quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=15049:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=788:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=22513:si=on:rtra=on_0"); + quick.push("ott+1010_44:25_afr=on:c=on:cnfonf=off:e2e=on:fd=preordered:hfsq=on:hfsqc=3:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7623:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=4675:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:hfsq=on:hfsqr=10,13:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=3039:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=8822:si=on:rtra=on_0"); + quick.push("dis+10_4:1_cnfonf=lazy_simp:gs=on:hud=22:sd=1:ss=axioms:tnu=1:i=2354:si=on:rtra=on_0"); quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=34824:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=24460:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=5301:si=on:rtra=on_0"); + quick.push("dis+1010_5:1_cnfonf=lazy_pi_sigma_gen:fe=off:hud=10:sd=1:ss=axioms:st=1.5:i=2416:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=23141:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=23428:si=on:rtra=on_0"); quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); - quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=7322:si=on:rtra=on_0"); quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=45918:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2205:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_atotf=0.2:au=on:cnfonf=off:gs=on:nm=0:sd=2:ss=axioms:i=21286:si=on:rtra=on_0"); quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3563:si=on:rtra=on_0"); - quick.push("lrs+2_3:2_au=on:cbe=off:hud=15:ins=3:kws=precedence:sp=reverse_arity:uhcvi=on:i=12385:si=on:rtra=on_0"); - // Improves by expected 48.801505968449085 probs costing 958791 Mi + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=13248:si=on:rtra=on_0"); + quick.push("lrs+2_3:2_au=on:cbe=off:hud=15:ins=3:kws=precedence:sp=reverse_arity:uhcvi=on:i=12501:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=6096:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); + // Improves by expected 50.0573836977302 probs costing 959228 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:bsd=on:c=on:fde=none:piset=equals:sac=on:sp=const_min:i=76578:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=30267:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=9786:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fe=off:ins=3:prag=on:sos=on:i=4525:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=5884:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=lazy_simp:fde=unused:fsr=off:hud=10:nwc=10.0:s2a=on:s2at=4.0:sac=on:i=49493:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=12055:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=45686:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:hud=15:kws=precedence:lcm=reverse:sos=on:sp=frequency:i=6301:si=on:rtra=on_0"); - quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=5018:si=on:rtra=on_0"); - quick.push("dis+1010_1:5_au=on:hfsq=on:hfsql=off:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=15427:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=10083:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=9162:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6935:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=4309:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=5748:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); + quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=18776:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5779:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=18181:si=on:rtra=on_0"); quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6020:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=9076:si=on:rtra=on_0"); - quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=11844:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=5045:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9199:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=off:erd=off:fde=none:prag=on:sos=on:i=5154:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=85280:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=6161:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=5762:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=4188:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=98178:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=1501:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=1458:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=7597:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=2275:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2946:si=on:rtra=on_0"); quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=92639:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=111726:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=100206:si=on:rtra=on_0"); + quick.push("ott+1010_44:25_afr=on:c=on:cnfonf=off:e2e=on:fd=preordered:hfsq=on:hfsqc=3:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7601:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_fe=off:fsr=off:nm=32:sos=on:sp=unary_first:ss=axioms:i=34160:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:hfsq=on:hfsqr=10,13:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=19281:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=73841:si=on:rtra=on_0"); quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=42569:si=on:rtra=on_0"); - quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=84520:si=on:rtra=on_0"); - // Improves by expected 23.161634813375024 probs costing 956372 Mi + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=85427:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=151254:si=on:rtra=on_0"); + // Improves by expected 22.821208380897875 probs costing 959619 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19468:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19923:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=57495:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=9786:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=12055:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_au=on:bd=off:chr=on:lcm=reverse:ntd=on:sd=1:sgt=100:ss=axioms:i=11408:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=45686:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_av=off:fe=axiom:hud=15:lwlo=on:prag=on:i=75417:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:hud=15:kws=precedence:lcm=reverse:sos=on:sp=frequency:i=6301:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=62151:si=on:rtra=on_0"); - quick.push("dis+21_3:1_au=on:hfsq=on:s2a=on:sp=unary_frequency:i=5018:si=on:rtra=on_0"); - quick.push("dis+1010_1:5_au=on:hfsq=on:hfsql=off:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=15424:si=on:rtra=on_0"); - quick.push("lrs+1004_1:32_c=on:cnfonf=off:fd=off:fe=axiom:prag=on:sos=on:i=1993:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=14412:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40194:si=on:rtra=on_0"); - quick.push("lrs-1666_4:1_bd=off:cnfonf=lazy_not_gen_be_off:fde=unused:hud=25:ixr=off:nm=0:sac=on:spb=goal:ss=axioms:st=1.5:i=25547:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=4309:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:hfsq=on:hfsqc=2:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=26143:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=41937:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6020:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:cnfonf=off:hud=10:nm=10:ntd=on:s2a=on:sac=on:sgt=30:ss=included:i=27150:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=42765:si=on:rtra=on_0"); - quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=11844:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=22969:si=on:rtra=on_0"); - quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=94992:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_bsr=unit_only:cnfonf=lazy_not_be_gen:nwc=10.0:sp=reverse_arity:i=21593:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:nm=10:slsq=on:slsqr=1,16:sp=const_max:i=20710:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=11325:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=68001:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=57457:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=26472:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=off:erd=off:fde=none:prag=on:sos=on:i=5501:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=9076:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=264345:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_au=on:av=off:fde=unused:fsr=off:i=57910:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9102:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=9251:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2588:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=98178:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.3:au=on:cnfonf=off:ins=3:plsq=on:plsqr=208885,1048576:sos=all:spb=goal_then_units:i=16594:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=27018:si=on:rtra=on_0"); - quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=9441:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=4996:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=5304:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=18184:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=19281:si=on:rtra=on_0"); - quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=75375:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:av=off:e2e=on:fd=off:rawr=on:s2a=on:s2at=3.0:sos=on:sp=occurrence:i=12092:si=on:rtra=on_0"); - quick.push("lrs+2_3:2_au=on:cbe=off:hud=15:ins=3:kws=precedence:sp=reverse_arity:uhcvi=on:i=13505:si=on:rtra=on_0"); - // Improves by expected 10.668307256252 probs costing 940131 Mi - // Mon10b Overall score 3037.186917544398 probs on average / budget 3813568 Mi + quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:hfsq=on:hfsqr=10,13:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:bet=on:cnfonf=lazy_not_be_gen:cond=on:sp=const_max:i=17264:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=16139:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_atotf=0.2:au=on:cnfonf=off:gs=on:nm=0:sd=2:ss=axioms:i=23766:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=44526:si=on:rtra=on_0"); + quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=7230:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=off:hud=15:rawr=on:sd=1:sos=all:ss=axioms:i=85748:si=on:rtra=on_0"); + // Improves by expected 12.868905073390756 probs costing 951082 Mi + // Tue11 Overall score 3039.0840598543527 probs on average / budget 3828761 Mi + // Mon10b Overall score 3037.186917544398 probs on average / budget 3813568 Mi // Mon10a Overall score 3000.409829293265 probs on average / budget 3825232 Mi // Sun09 Overall score 2938.863699793977 probs on average / budget 1918256 Mi } From 1626ad96cbd72dcbe5454cf17e42b7c2b4a4a650 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Wed, 12 Jul 2023 10:01:21 +0000 Subject: [PATCH 192/210] after-casc SLH2 sched v5 --- CASC/Schedules.cpp | 550 ++++++++++++++++++++++++--------------------- 1 file changed, 294 insertions(+), 256 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index e4ba0be6ff..67f86676fd 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5590,429 +5590,467 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick) { // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=763:si=on:rtra=on_0"); - quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=15:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_bd=off:bsd=on:fde=unused:hud=5:nwc=10.0:sac=on:sp=weighted_frequency:ss=axioms:i=2:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=822:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:fde=none:hud=10:kws=arity_squared:sos=on:tnu=1:i=2:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=617:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=817:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=618:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=538:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=836:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=947:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1520:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=134:si=on:rtra=on_0"); quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=707:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=1259:si=on:rtra=on_0"); + quick.push("lrs+666_1:1_au=on:bs=unit_only:e2e=on:sd=1:sp=frequency:ss=axioms:i=2:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=1363:si=on:rtra=on_0"); + quick.push("lrs+1010_1:5_cnfonf=lazy_pi_sigma_gen:kws=precedence:nm=32:nwc=10.0:sp=const_frequency:i=15:si=on:rtra=on_0"); quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=482:si=on:rtra=on_0"); - // Improves by expected 2225.3486777788794 probs costing 9859 Mi + // Improves by expected 2226.0263882194936 probs costing 9987 Mi // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit - quick.push("lrs+1002_1:1_fsr=off:prag=on:sos=on:ss=axioms:i=736:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=2909:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1186:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=1906:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=504:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=1328:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=3224:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=590:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:s2agt=8:i=481:si=on:rtra=on_0"); + quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=571:si=on:rtra=on_0"); + quick.push("dis+1004_1:4_av=off:e2e=on:hud=3:prag=on:sos=on:ss=axioms:i=761:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=2133:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=443:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1081:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=1788:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=1271:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=3919:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_kws=precedence:sos=on:sp=frequency:ss=axioms:i=751:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=802:si=on:rtra=on_0"); quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1182:si=on:rtra=on_0"); - quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=300:si=on:rtra=on_0"); + quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=282:si=on:rtra=on_0"); quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=532:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=538:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=423:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=357:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:kws=precedence:sos=on:sp=reverse_arity:ss=axioms:i=439:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=900:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=584:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=1657:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=492:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=off:hud=15:rawr=on:sd=1:sos=all:ss=axioms:i=168:si=on:rtra=on_0"); - // Improves by expected 225.82507538958157 probs costing 19993 Mi + quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=808:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=1665:si=on:rtra=on_0"); + quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=1153:si=on:rtra=on_0"); + // Improves by expected 226.7572876818416 probs costing 19904 Mi // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1357:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=290:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2134:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_pi_sigma_gen:hfsq=on:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); quick.push("lrs+10_8:1_cbe=off:e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=251:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=4228:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=2473:si=on:rtra=on_0"); quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); quick.push("lrs+2_1:64_bd=off:nwc=5.0:sd=2:ss=axioms:i=290:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=873:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=435:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_bd=off:fd=off:kws=inv_precedence:sos=on:ss=axioms:i=358:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1579:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1609:si=on:rtra=on_0"); quick.push("dis+10_5:1_au=on:hfsq=on:ss=axioms:i=990:si=on:rtra=on_0"); quick.push("lrs+4_1:1_fd=off:fs=off:fsr=off:sac=on:sos=on:ss=axioms:i=413:si=on:rtra=on_0"); - quick.push("dis+10_8:1_cs=on:e2e=on:s2a=on:i=400:si=on:rtra=on_0"); - quick.push("lrs+1010_1:5_au=on:bd=off:cnfonf=off:nm=10:sos=on:i=602:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=1265:si=on:rtra=on_0"); quick.push("lrs+21_1:1_erd=off:ins=3:sd=1:sos=on:ss=axioms:i=263:si=on:rtra=on_0"); quick.push("dis+10_3:1_avsq=on:sd=1:ss=axioms:st=2.0:tgt=ground:i=278:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_au=on:cbe=off:hfsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=1965:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:e2e=on:ins=2:sd=1:sos=all:ss=axioms:st=3.0:i=326:si=on:rtra=on_0"); quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=289:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=404:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=243:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=633:si=on:rtra=on_0"); quick.push("dis+2_1:1_cnfonf=off:e2e=on:kws=inv_frequency:nm=0:nwc=5.0:s2a=on:s2agt=32:ss=axioms:i=487:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=877:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:av=off:fd=off:fde=none:fsr=off:ntd=on:sos=on:sp=occurrence:i=1084:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=762:si=on:rtra=on_0"); quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=556:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=1133:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=719:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1029:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1097:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=640:si=on:rtra=on_0"); quick.push("dis+10_1:32_fd=off:kws=precedence:sd=2:sos=on:ss=axioms:i=237:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=751:si=on:rtra=on_0"); quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=229:si=on:rtra=on_0"); - quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2278:si=on:rtra=on_0"); - quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=4574:si=on:rtra=on_0"); - quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=1321:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:e2e=on:ins=2:sd=1:sos=all:ss=axioms:st=3.0:i=316:si=on:rtra=on_0"); - // Improves by expected 129.5337591178251 probs costing 29938 Mi + quick.push("dis+10_1:3_aac=none:bd=off:cnfonf=off:fde=unused:ins=2:ntd=on:s2a=on:sac=on:i=437:si=on:rtra=on_0"); + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=4485:si=on:rtra=on_0"); + // Improves by expected 130.432668654497 probs costing 29925 Mi // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=541:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1345:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=501:si=on:rtra=on_0"); + quick.push("lrs+10_1:28_au=on:lma=on:sgt=8:sos=all:ss=axioms:i=1106:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=7349:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=567:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=731:si=on:rtra=on_0"); - quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=565:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:hfsq=on:hfsqr=5,1:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1276:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=890:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=6294:si=on:rtra=on_0"); quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1035:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=2447:si=on:rtra=on_0"); quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1043:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1301:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1046:si=on:rtra=on_0"); quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=1108:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1097:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=1334:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1493:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_au=on:avsq=on:avsqc=1:cnfonf=off:e2e=on:fsr=off:ins=1:nwc=10.0:s2a=on:s2at=2.5:sac=on:sp=const_min:i=2840:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_av=off:bd=off:fd=off:kws=inv_frequency:sos=on:i=766:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=870:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1526:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); quick.push("dis+10_5:1_cnfonf=off:slsq=on:sp=const_max:i=571:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=lazy_not_gen_be_off:kws=precedence:prag=on:s2a=on:sp=frequency:ss=axioms:i=569:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=348:si=on:rtra=on_0"); quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); - quick.push("lrs+1002_1:3_au=on:e2e=on:fsr=off:ins=3:sos=on:sp=unary_frequency:i=3548:si=on:rtra=on_0"); - quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=1406:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=2033:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cbe=off:cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=12.0:ss=axioms:i=458:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:s2agt=8:i=1101:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_e2e=on:plsq=on:plsqr=32,1:sgt=8:ss=axioms:i=1749:si=on:rtra=on_0"); + quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=6442:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=638:si=on:rtra=on_0"); quick.push("dis+10_1:12_cnfonf=conj_eager:ss=axioms:st=3.0:tgt=full:i=620:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=10717:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=6854:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=4043:si=on:rtra=on_0"); quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=597:si=on:rtra=on_0"); - quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2291:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1367:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=652:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:i=769:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=973:si=on:rtra=on_0"); - quick.push("lrs+1666_1:4_cnfonf=off:fde=none:hfsq=on:nm=2:ntd=on:prag=on:sd=7:sos=on:ss=axioms:tnu=5:i=246:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=3168:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=337:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1105:si=on:rtra=on_0"); - quick.push("ott+1010_1:4_au=on:avsq=on:avsqc=1:cnfonf=off:e2e=on:fsr=off:ins=1:nwc=10.0:s2a=on:s2at=2.5:sac=on:sp=const_min:i=3885:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_e2e=on:plsq=on:plsqr=32,1:sgt=8:ss=axioms:i=834:si=on:rtra=on_0"); - quick.push("dis+10_1:5_bsr=on:cnfonf=lazy_not_be_gen:hud=5:sd=1:sos=all:ss=axioms:i=988:si=on:rtra=on_0"); - // Improves by expected 118.70614219626505 probs costing 59883 Mi + quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=1231:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=924:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=1554:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=1806:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nm=0:nwc=5.0:i=977:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=533:si=on:rtra=on_0"); + quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=1905:si=on:rtra=on_0"); + // Improves by expected 122.54912416632952 probs costing 59889 Mi // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=5420:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=6494:si=on:rtra=on_0"); - quick.push("lrs+10_1:28_au=on:lma=on:sgt=8:sos=all:ss=axioms:i=689:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=501:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:hfsq=on:hfsqr=5,1:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=629:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fd=off:fde=unused:prag=on:sos=all:i=661:si=on:rtra=on_0"); quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1035:si=on:rtra=on_0"); - quick.push("dis+10_4:1_av=off:cnfonf=off:hud=5:nwc=10.0:s2a=on:s2agt=16:i=2731:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1511:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6172:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=8496:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=8557:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=1257:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6340:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=1080:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1955:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=3906:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=9473:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=3722:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1066:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=5071:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); + quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=491:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:sd=2:sos=on:ss=axioms:i=296:si=on:rtra=on_0"); quick.push("lrs+2_1:6_au=on:cnfonf=off:ss=axioms:st=1.5:i=1438:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=5019:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=5488:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=2915:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=2104:si=on:rtra=on_0"); quick.push("dis+10_1:128_av=off:fde=unused:hud=1:prag=on:sos=all:ss=axioms:i=3425:si=on:rtra=on_0"); quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=2203:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=11028:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=2685:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=13488:si=on:rtra=on_0"); quick.push("dis+1010_3:1_bd=off:e2e=on:s2a=on:s2agt=10:sp=unary_first:i=835:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=1063:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=401:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_apa=on:atotf=0.2:bd=off:cnfonf=off:erd=off:fd=off:nm=0:sos=all:i=1782:si=on:rtra=on_0"); quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); quick.push("lrs+1010_8:1_c=on:fsr=off:hud=0:kws=inv_arity:ntd=on:sos=on:sp=occurrence:i=1098:si=on:rtra=on_0"); - quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=767:si=on:rtra=on_0"); + quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=1790:si=on:rtra=on_0"); + quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=791:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=6281:si=on:rtra=on_0"); quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=1084:si=on:rtra=on_0"); quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=938:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3373:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:fde=none:ss=axioms:i=1579:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=445:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=1486:si=on:rtra=on_0"); - quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=290:si=on:rtra=on_0"); - quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=937:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=7500:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=775:si=on:rtra=on_0"); + quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2291:si=on:rtra=on_0"); + quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=282:si=on:rtra=on_0"); + quick.push("ott+1010_41:4_bd=off:cnfonf=off:hud=14:ntd=on:s2a=on:i=1745:si=on:rtra=on_0"); + quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=938:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:hfsq=on:hfsqr=1,2:hud=18:nm=2:rp=on:sos=all:sp=reverse_frequency:ss=axioms:i=1320:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=5115:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); - quick.push("dis+10_4:1_cnfonf=lazy_simp:gs=on:hud=22:sd=1:ss=axioms:tnu=1:i=2117:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=1701:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=1227:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=1234:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=9524:si=on:rtra=on_0"); quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2759:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=3701:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=preordered:hud=15:kws=precedence:nm=16:sd=3:sgt=16:sos=on:sp=frequency:ss=axioms:i=637:si=on:rtra=on_0"); quick.push("lrs+21_1:1_cnfonf=off:fde=unused:prag=on:sos=all:i=2076:si=on:rtra=on_0"); - quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=569:si=on:rtra=on_0"); - // Improves by expected 101.05529103372135 probs costing 119985 Mi + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); + quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=2186:si=on:rtra=on_0"); + // Improves by expected 101.99492211575122 probs costing 119779 Mi // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=14386:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=4577:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2693:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4273:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=9244:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:e2e=on:fde=none:ins=3:kws=precedence:s2a=on:s2at=5.0:sp=frequency:i=2335:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:hfsq=on:hfsqr=5,1:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=629:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=8021:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1557:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=13120:si=on:rtra=on_0"); quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=9390:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=1907:si=on:rtra=on_0"); - quick.push("dis+21_2:3_cnfonf=conj_eager:fsr=off:sd=1:slsq=on:ss=axioms:st=4.0:i=1790:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=1080:si=on:rtra=on_0"); + quick.push("dis+10_4:1_av=off:cnfonf=off:hud=5:nwc=10.0:s2a=on:s2agt=16:i=2642:si=on:rtra=on_0"); + quick.push("dis+21_2:3_cnfonf=conj_eager:fsr=off:sd=1:slsq=on:ss=axioms:st=4.0:i=1845:si=on:rtra=on_0"); quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4828:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1033:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6109:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:hfsq=on:hfsqr=5,1:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=2589:si=on:rtra=on_0"); - quick.push("dis+10_5:1_au=on:hfsq=on:ss=axioms:i=4005:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=4050:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5381:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=6231:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_alpa=true:anc=none:atotf=0.1:au=on:cnfonf=off:ins=3:nm=64:sd=1:sp=occurrence:ss=axioms:st=5.0:i=2290:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=4408:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1066:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=4592:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=4280:si=on:rtra=on_0"); quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1403:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=2901:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=off:erd=off:fde=none:prag=on:sos=on:i=5675:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:hfsq=on:hfsqc=2:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=6139:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_au=on:cbe=off:hfsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=5743:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:c=on:chr=on:hfsq=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4513:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=1928:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=633:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=1063:si=on:rtra=on_0"); quick.push("lrs+1010_1:128_au=on:fsr=off:hfsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bsd=on:cnfonf=off:hfsq=on:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=2214:si=on:rtra=on_0"); quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:s2agt=8:i=2717:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=10951:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=10373:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=945:si=on:rtra=on_0"); quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=1920:si=on:rtra=on_0"); quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=3303:si=on:rtra=on_0"); - quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=1537:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=2241:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=1501:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.3:au=on:cnfonf=off:ins=3:plsq=on:plsqr=208885,1048576:sos=all:spb=goal_then_units:i=2255:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3782:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); - quick.push("ott+1010_41:4_bd=off:cnfonf=off:hud=14:ntd=on:s2a=on:i=1745:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fde=none:ss=axioms:i=1579:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=15001:si=on:rtra=on_0"); + quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1635:si=on:rtra=on_0"); + quick.push("ott+1002_16:1_au=on:bsr=unit_only:fsr=off:sac=on:sos=on:i=4338:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=1486:si=on:rtra=on_0"); quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=556:si=on:rtra=on_0"); quick.push("lrs+21_1:1_aac=none:c=on:cnfonf=lazy_not_gen:sos=on:i=3633:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=2178:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=568:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=552:si=on:rtra=on_0"); quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=18654:si=on:rtra=on_0"); quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=5301:si=on:rtra=on_0"); quick.push("dis+1010_5:1_cnfonf=lazy_pi_sigma_gen:fe=off:hud=10:sd=1:ss=axioms:st=1.5:i=2416:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=6248:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_alpa=true:au=on:cnfonf=lazy_pi_sigma_gen:sos=on:i=694:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=4267:si=on:rtra=on_0"); quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=981:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=27179:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=3099:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=3526:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=488:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_av=off:cnfonf=lazy_pi_sigma_gen:nwc=5.0:prag=on:s2a=on:s2agt=16:i=3801:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=preordered:hud=15:kws=precedence:nm=16:sd=3:sgt=16:sos=on:sp=frequency:ss=axioms:i=480:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:c=on:cnfonf=off:kws=inv_precedence:piset=and:sd=1:ss=axioms:tgt=ground:tnu=2:i=9010:si=on:rtra=on_0"); + quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1342:si=on:rtra=on_0"); + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=9075:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); - quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=2186:si=on:rtra=on_0"); - quick.push("lrs+2_3:1_acc=model:cnfonf=off:e2e=on:fe=axiom:fs=off:fsr=off:hud=15:piset=all_but_not_eq:sp=const_frequency:ss=axioms:i=1701:si=on:rtra=on_0"); - quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=568:si=on:rtra=on_0"); - quick.push("dis+1004_1:5_cs=on:e2e=on:hfsq=on:ins=2:sos=all:i=1001:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=2090:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:c=on:cnfonf=off:kws=inv_precedence:piset=and:sd=1:ss=axioms:tgt=ground:tnu=2:i=18199:si=on:rtra=on_0"); - // Improves by expected 84.7709314578973 probs costing 239629 Mi + // Improves by expected 87.6986428831153 probs costing 239816 Mi // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19923:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=13542:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1997:si=on:rtra=on_0"); quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4273:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6289:si=on:rtra=on_0"); - quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=1623:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:hfsq=on:hfsqr=5,1:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1968:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=33885:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:plsq=on:sos=on:i=9176:si=on:rtra=on_0"); quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=15358:si=on:rtra=on_0"); quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1557:si=on:rtra=on_0"); quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=6916:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=2410:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=24601:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1042:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=5996:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=14840:si=on:rtra=on_0"); quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4504:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=14432:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5674:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6109:si=on:rtra=on_0"); quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12849:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=12797:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=3081:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=1332:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=19144:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4854:si=on:rtra=on_0"); quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=11200:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:hfsq=on:hfsqc=2:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=4778:si=on:rtra=on_0"); - quick.push("ott+10_1:1_afp=2000:bsr=unit_only:chr=on:hfsq=on:hfsql=off:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); - quick.push("dis+21_1:6_bd=off:e2e=on:ins=5:nwc=11.0:s2a=on:i=3395:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6881:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=1488:si=on:rtra=on_0"); + quick.push("dis+2_16:1_au=on:bd=off:cbe=off:fd=preordered:fde=unused:fsr=off:hfsq=on:nwc=10.0:i=38001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:c=on:chr=on:hfsq=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=3344:si=on:rtra=on_0"); quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14683:si=on:rtra=on_0"); + quick.push("dis+21_4:1_av=off:bsr=unit_only:cbe=off:e2e=on:hud=1:prag=on:sp=unary_first:ss=axioms:i=4170:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=5696:si=on:rtra=on_0"); quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=2277:si=on:rtra=on_0"); quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=8152:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:prag=on:sos=all:sp=frequency:i=7003:si=on:rtra=on_0"); quick.push("lrs+1010_1:128_au=on:fsr=off:hfsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bsd=on:cnfonf=off:hfsq=on:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=1319:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=6719:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); - quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=767:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=945:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=5915:si=on:rtra=on_0"); + quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=791:si=on:rtra=on_0"); quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); - quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=8901:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2154:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=8947:si=on:rtra=on_0"); quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=21393:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=788:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=15001:si=on:rtra=on_0"); quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3758:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=55998:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1233:si=on:rtra=on_0"); + quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1540:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=57747:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:hfsq=on:hfsqr=1,2:hud=18:nm=2:rp=on:sos=all:sp=reverse_frequency:ss=axioms:i=10173:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); - quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=4675:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1141:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=14011:si=on:rtra=on_0"); - quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=7904:si=on:rtra=on_0"); quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=10614:si=on:rtra=on_0"); - quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3563:si=on:rtra=on_0"); - quick.push("lrs+1002_2:1_fde=unused:kws=inv_frequency:ntd=on:i=8202:si=on:rtra=on_0"); - quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=25457:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=45918:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2205:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=9755:si=on:rtra=on_0"); + quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2566:si=on:rtra=on_0"); + quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1342:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=5733:si=on:rtra=on_0"); quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); - quick.push("dis+1004_1:5_cs=on:e2e=on:hfsq=on:ins=2:sos=all:i=1001:si=on:rtra=on_0"); - quick.push("ott+1010_1:4_au=on:avsq=on:avsqc=1:cnfonf=off:e2e=on:fsr=off:ins=1:nwc=10.0:s2a=on:s2at=2.5:sac=on:sp=const_min:i=4814:si=on:rtra=on_0"); - // Improves by expected 68.09668572816418 probs costing 479545 Mi + // Improves by expected 70.77019844793129 probs costing 478707 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1997:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1982:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=6565:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=4969:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:e2e=on:fde=none:ins=3:kws=precedence:s2a=on:s2at=5.0:sp=frequency:i=2967:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=4192:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=12435:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=4245:si=on:rtra=on_0"); quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=68605:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_gen_be_off:fe=axiom:s2a=on:i=2895:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1525:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=15859:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=21066:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1526:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=20100:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=6916:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=13084:si=on:rtra=on_0"); + quick.push("lrs+1010_1:64_acc=model:anc=all:bd=off:bsd=on:bsr=on:ins=3:ntd=on:prag=on:sos=all:i=40579:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=41023:si=on:rtra=on_0"); quick.push("lrs+10_1:1_apa=on:au=on:cnfonf=off:fde=unused:fsr=off:ins=2:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=16648:si=on:rtra=on_0"); - quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4526:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=47582:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:cnfonf=lazy_not_be_gen:nwc=5.0:piset=and:plsq=on:plsqc=1:plsqr=1,1:sp=reverse_frequency:tgt=ground:i=4630:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); - quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6109:si=on:rtra=on_0"); quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:hfsq=on:hfsqr=5,1:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=5561:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=62433:si=on:rtra=on_0"); - quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=60104:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_au=on:cnfonf=lazy_pi_sigma_gen:nwc=10.0:i=6954:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=9162:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5241:si=on:rtra=on_0"); - quick.push("dis+2_16:1_au=on:bd=off:cbe=off:fd=preordered:fde=unused:fsr=off:hfsq=on:nwc=10.0:i=34715:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=5327:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=65701:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=67668:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=1332:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4186:si=on:rtra=on_0"); quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:hfsq=on:hfsqc=2:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=26143:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=18181:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=15209:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=17650:si=on:rtra=on_0"); + quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6020:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=off:erd=off:fde=none:prag=on:sos=on:i=5501:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=14073:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4066:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=2406:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_au=on:bd=preordered:e2e=on:ins=3:kws=inv_frequency:nwc=10.0:sp=const_min:i=7899:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=9800:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=2779:si=on:rtra=on_0"); quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=5088:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=2685:si=on:rtra=on_0"); - quick.push("dis+10_4:1_atotf=0.3:bs=on:cnfonf=lazy_simp:fe=axiom:gs=on:nm=0:nwc=10.0:sp=const_frequency:i=25137:si=on:rtra=on_0"); + quick.push("dis+10_4:1_atotf=0.3:bs=on:cnfonf=lazy_simp:fe=axiom:gs=on:nm=0:nwc=10.0:sp=const_frequency:i=23452:si=on:rtra=on_0"); quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=14769:si=on:rtra=on_0"); quick.push("lrs+1010_1:128_au=on:fsr=off:hfsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9529:si=on:rtra=on_0"); - quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9504:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=18879:si=on:rtra=on_0"); + quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=2308:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=10.0:ss=axioms:st=3.0:i=945:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=2032:si=on:rtra=on_0"); - quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=1501:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=50001:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=1895:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=3159:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2778:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=5318:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=1458:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=788:si=on:rtra=on_0"); quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); - quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=22513:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=100206:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=15049:si=on:rtra=on_0"); quick.push("ott+1010_44:25_afr=on:c=on:cnfonf=off:e2e=on:fd=preordered:hfsq=on:hfsqc=3:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7623:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:hfsq=on:hfsqr=10,13:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=3039:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=8822:si=on:rtra=on_0"); - quick.push("dis+10_4:1_cnfonf=lazy_simp:gs=on:hud=22:sd=1:ss=axioms:tnu=1:i=2354:si=on:rtra=on_0"); + quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=4675:si=on:rtra=on_0"); quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=34824:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=5301:si=on:rtra=on_0"); quick.push("dis+1010_5:1_cnfonf=lazy_pi_sigma_gen:fe=off:hud=10:sd=1:ss=axioms:st=1.5:i=2416:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_alpa=true:au=on:cnfonf=lazy_pi_sigma_gen:sos=on:i=1701:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=23428:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=15440:si=on:rtra=on_0"); quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=45918:si=on:rtra=on_0"); - quick.push("lrs+1_1:50_bsd=on:hfsq=on:hud=5:piset=or:sac=on:sos=all:sp=reverse_arity:i=3563:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=13248:si=on:rtra=on_0"); - quick.push("lrs+2_3:2_au=on:cbe=off:hud=15:ins=3:kws=precedence:sp=reverse_arity:uhcvi=on:i=12501:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=6096:si=on:rtra=on_0"); + quick.push("lrs+1002_2:1_fde=unused:kws=inv_frequency:ntd=on:i=8145:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:c=on:cnfonf=off:kws=inv_precedence:piset=and:sd=1:ss=axioms:tgt=ground:tnu=2:i=20260:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); - // Improves by expected 50.0573836977302 probs costing 959228 Mi + // Improves by expected 48.80301293339291 probs costing 958213 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=18622:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=4969:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:bsd=on:c=on:fde=none:piset=equals:sac=on:sp=const_min:i=76578:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=30267:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=5884:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_simp:fde=unused:fsr=off:hud=10:nwc=10.0:s2a=on:s2at=4.0:sac=on:i=49493:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=25642:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=6251:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=2325:si=on:rtra=on_0"); quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); - quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=18776:si=on:rtra=on_0"); - quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=5779:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=18181:si=on:rtra=on_0"); + quick.push("ott+1002_1:2_au=on:hud=10:nwc=5.0:prag=on:sgt=20:sos=all:ss=axioms:st=4.0:i=16193:si=on:rtra=on_0"); + quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=21290:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=6900:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:cnfonf=lazy_not_be_gen:nwc=5.0:piset=and:plsq=on:plsqc=1:plsqr=1,1:sp=reverse_frequency:tgt=ground:i=11020:si=on:rtra=on_0"); + quick.push("ott+10_1:1_cbe=off:cnfonf=lazy_gen:ins=3:nwc=10.0:s2a=on:i=10040:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=9162:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=4280:si=on:rtra=on_0"); + quick.push("ott+10_1:1_afp=2000:bsr=unit_only:chr=on:hfsq=on:hfsql=off:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=6236:si=on:rtra=on_0"); + quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_atotf=0.4:au=on:cnfonf=off:sos=all:i=6020:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=off:erd=off:fde=none:prag=on:sos=on:i=5154:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=9076:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=2406:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=9800:si=on:rtra=on_0"); quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=85280:si=on:rtra=on_0"); - quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=6161:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=7190:si=on:rtra=on_0"); quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=5762:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_au=on:av=off:fde=unused:fsr=off:i=57910:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=1501:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=1458:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=2275:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=5915:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2146:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2778:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=5318:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=7597:si=on:rtra=on_0"); quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2946:si=on:rtra=on_0"); quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=92639:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=100206:si=on:rtra=on_0"); quick.push("ott+1010_44:25_afr=on:c=on:cnfonf=off:e2e=on:fd=preordered:hfsq=on:hfsqc=3:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7601:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=6177:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:hfsq=on:hfsqr=10,13:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=19281:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=73841:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=95283:si=on:rtra=on_0"); quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); + quick.push("lrs+1010_1:5_cnfonf=lazy_pi_sigma_gen:kws=precedence:nm=32:nwc=10.0:sp=const_frequency:i=5785:si=on:rtra=on_0"); + quick.push("lrs+1002_2:1_fde=unused:kws=inv_frequency:ntd=on:i=6161:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=44526:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_av=off:cnfonf=lazy_pi_sigma_gen:nwc=5.0:prag=on:s2a=on:s2agt=16:i=3801:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=6096:si=on:rtra=on_0"); quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=85427:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=151254:si=on:rtra=on_0"); - // Improves by expected 22.821208380897875 probs costing 959619 Mi + quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=15115:si=on:rtra=on_0"); + // Improves by expected 21.639246074651492 probs costing 959472 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19923:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=11325:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=68001:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=57457:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=8098:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=74409:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:64_acc=model:anc=all:bd=off:bsd=on:bsr=on:ins=3:ntd=on:prag=on:sos=all:i=40579:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_apa=on:au=on:cnfonf=off:fde=unused:fsr=off:ins=2:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=16648:si=on:rtra=on_0"); + quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=18776:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=46089:si=on:rtra=on_0"); quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_acc=model:ccuc=small_ones:cnfonf=lazy_simp:hfsq=on:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=26472:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=off:hud=15:rawr=on:sd=1:sos=all:ss=axioms:i=73159:si=on:rtra=on_0"); + quick.push("dis+1010_1:5_au=on:hfsq=on:hfsql=off:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=11506:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cnfonf=lazy_not_gen_be_off:inj=on:ins=2:nwc=5.0:s2a=on:i=12558:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=6236:si=on:rtra=on_0"); + quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=off:erd=off:fde=none:prag=on:sos=on:i=5501:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=9076:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=264345:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_au=on:av=off:fde=unused:fsr=off:i=57910:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=off:hud=10:nm=10:ntd=on:s2a=on:sac=on:sgt=30:ss=included:i=23873:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=152983:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=44097:si=on:rtra=on_0"); quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9102:si=on:rtra=on_0"); - quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=9251:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2588:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=98178:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.3:au=on:cnfonf=off:ins=3:plsq=on:plsqr=208885,1048576:sos=all:spb=goal_then_units:i=16594:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=13047:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_aac=none:au=on:bd=off:cnfonf=off:nm=0:s2at=3.0:s2pl=on:sac=on:sos=on:i=74001:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=71269:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=4996:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=5304:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=13229:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); + quick.push("lrs+666_1:1_au=on:bs=unit_only:e2e=on:sd=1:sp=frequency:ss=axioms:i=40189:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:hfsq=on:hfsqr=10,13:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:bet=on:cnfonf=lazy_not_be_gen:cond=on:sp=const_max:i=17264:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:bet=on:cnfonf=lazy_not_be_gen:cond=on:sp=const_max:i=18513:si=on:rtra=on_0"); quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=16139:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_atotf=0.2:au=on:cnfonf=off:gs=on:nm=0:sd=2:ss=axioms:i=23766:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=44526:si=on:rtra=on_0"); - quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=7230:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=off:hud=15:rawr=on:sd=1:sos=all:ss=axioms:i=85748:si=on:rtra=on_0"); - // Improves by expected 12.868905073390756 probs costing 951082 Mi - // Tue11 Overall score 3039.0840598543527 probs on average / budget 3828761 Mi + quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=23141:si=on:rtra=on_0"); + quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=7904:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=10798:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=25623:si=on:rtra=on_0"); + // Improves by expected 11.635409169854102 probs costing 957999 Mi + // Wed12 Overall score 3048.3069003468577 probs on average / budget 3833691 Mi + // Tue11 Overall score 3039.0840598543527 probs on average / budget 3828761 Mi // Mon10b Overall score 3037.186917544398 probs on average / budget 3813568 Mi // Mon10a Overall score 3000.409829293265 probs on average / budget 3825232 Mi // Sun09 Overall score 2938.863699793977 probs on average / budget 1918256 Mi From 038db54258a87726487496cdf9f1db881d16bf9f Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Wed, 12 Jul 2023 16:25:08 +0000 Subject: [PATCH 193/210] officially move to v4.8 --- CMakeLists.txt | 2 +- Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 77b8aa873d..5639d5cff0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -930,7 +930,7 @@ endif() # COMPILE_TESTS ################################################################# # automated generation of Vampire revision information from git # ################################################################# -set(VAMPIRE_VERSION_NUMBER 4.7) +set(VAMPIRE_VERSION_NUMBER 4.8) execute_process( COMMAND git rev-parse --is-inside-work-tree diff --git a/Makefile b/Makefile index d0f6b6ff7f..6e09754e29 100644 --- a/Makefile +++ b/Makefile @@ -505,7 +505,7 @@ all: #default make disabled ################################################################ # automated generation of Vampire revision information -VERSION_NUMBER = 4.7 +VERSION_NUMBER = 4.8 # We extract the revision number from svn every time the svn meta-data are modified # (that's why there is the dependency on .svn/entries) From be6353a51dc8490183c45b4227a4aca3b5d3f2fb Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 13 Jul 2023 04:27:49 +0000 Subject: [PATCH 194/210] since hfsq behaved like avsq, let's fix the schedules --- CASC/Schedules.cpp | 164 ++++++++++++++++++++++----------------------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 67f86676fd..57e97b259a 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5048,10 +5048,10 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("dis+10_1:1_aac=none:cs=on:i=47:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=37:si=on:rtra=on_0"); quick.push("lrs+1002_1:16_av=off:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:i=3:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_au=on:e2e=on:hfsq=on:hfsqc=1:ins=3:s2a=on:s2at=3.0:ss=axioms:i=19:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:e2e=on:avsq=on:ins=3:s2a=on:s2at=3.0:ss=axioms:i=19:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=5:si=on:rtra=on_0"); quick.push("lrs+1004_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:gs=on:hud=10:prag=on:tnu=1:i=44:si=on:rtra=on_0"); - quick.push("ott+21_1:3_bd=off:cnfonf=lazy_gen:fe=off:hfsq=on:hfsqc=3:hud=10:ixr=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=450:si=on:rtra=on_0"); + quick.push("ott+21_1:3_bd=off:cnfonf=lazy_gen:fe=off:avsq=on:hud=10:ixr=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=450:si=on:rtra=on_0"); quick.push("dis+1004_1:128_au=on:cbe=off:e2e=on:sac=on:i=102:si=on:rtra=on_0"); // Improves by expected 2315.393835274976 probs costing 9586 Mi // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit @@ -5308,16 +5308,16 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=5473:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=3362:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_fde=unused:avsq=on:prag=on:i=3362:si=on:rtra=on_0"); quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3629:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1810:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1267:si=on:rtra=on_0"); quick.push("lrs+1004_1:24_i=5508:si=on:rtra=on_0"); - quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); + quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:avsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); quick.push("dis+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=63457:si=on:rtra=on_0"); quick.push("lrs+1010_1:8_au=on:bd=off:cnfonf=lazy_not_be_gen:fsr=off:kws=inv_arity_squared:piset=or:sp=weighted_frequency:i=737:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_simp:fsr=off:hfsq=on:ntd=on:nwc=10.0:sp=reverse_frequency:ss=axioms:st=1.5:i=15283:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_simp:fsr=off:avsq=on:ntd=on:nwc=10.0:sp=reverse_frequency:ss=axioms:st=1.5:i=15283:si=on:rtra=on_0"); quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=19906:si=on:rtra=on_0"); // Improves by expected 100.96227733242402 probs costing 959325 Mi // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit @@ -5363,7 +5363,7 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=41881:si=on:rtra=on_0"); quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=3362:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_fde=unused:avsq=on:prag=on:i=3362:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); quick.push("lrs+1004_1:24_i=5433:si=on:rtra=on_0"); quick.push("dis+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=12787:si=on:rtra=on_0"); @@ -5411,11 +5411,11 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=6077:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=25962:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_fde=unused:hfsq=on:prag=on:i=3362:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_fde=unused:avsq=on:prag=on:i=3362:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=63430:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); quick.push("lrs+1004_1:24_i=198698:si=on:rtra=on_0"); - quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); + quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:avsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); quick.push("lrs+1010_1:8_au=on:bd=off:cnfonf=lazy_not_be_gen:fsr=off:kws=inv_arity_squared:piset=or:sp=weighted_frequency:i=31367:si=on:rtra=on_0"); quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=158832:si=on:rtra=on_0"); // Improves by expected 13.773932066734542 probs costing 3122762 Mi @@ -5437,7 +5437,7 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=72226:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); - quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:hfsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=64385:si=on:rtra=on_0"); + quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:avsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=64385:si=on:rtra=on_0"); quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=170931:si=on:rtra=on_0"); // Improves by expected 2.5628576884420435 probs costing 1573274 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit @@ -5476,7 +5476,7 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q quick.push("dis+10_1:1_nwc=10.0:sd=1:sgt=32:ss=axioms:i=497:si=on:rtra=on_0"); quick.push("ott+1002_16:1_aac=none:au=on:fd=off:fde=unused:fsr=off:ins=4:nm=16:ntd=on:sos=on:i=512:si=on:rtra=on_0"); quick.push("lrs+10_1:1_acc=on:cnfonf=lazy_pi_sigma_gen:fde=none:i=307:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_hfsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sd=1:sos=on:ss=axioms:uhcvi=on:i=394:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_avsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sd=1:sos=on:ss=axioms:uhcvi=on:i=394:si=on:rtra=on_0"); // Improves by expected 453.6301661906032 probs costing 9871 Mi // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=182:si=on:rtra=on_0"); @@ -5486,7 +5486,7 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q quick.push("ott+10_1:1_fde=none:hud=15:piset=all:prag=on:sd=1:sos=on:ss=axioms:st=3.0:i=899:si=on:rtra=on_0"); quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=1018:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=277:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_au=on:cnfonf=off:hfsq=on:sd=2:sgt=8:ss=axioms:i=543:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_au=on:cnfonf=off:avsq=on:sd=2:sgt=8:ss=axioms:i=543:si=on:rtra=on_0"); quick.push("lrs+10_1:1_nm=2:sd=2:sos=on:ss=axioms:st=3.0:i=514:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=2993:si=on:rtra=on_0"); quick.push("lrs+10_1:8_au=on:bd=off:cnfonf=off:e2e=on:ins=3:nm=2:sac=on:sos=all:i=810:si=on:rtra=on_0"); @@ -5495,13 +5495,13 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q quick.push("dis+1002_1:128_au=on:awrs=converge:cnfonf=off:fd=off:ntd=on:s2a=on:sos=on:i=1339:si=on:rtra=on_0"); quick.push("dis+10_8:1_s2a=on:s2agt=32:sac=on:ss=axioms:i=453:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_av=off:fe=off:hud=5:ins=3:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=on:i=514:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=on:cnfonf=off:fsr=off:hfsq=on:ss=axioms:i=396:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:cnfonf=off:fsr=off:avsq=on:ss=axioms:i=396:si=on:rtra=on_0"); quick.push("ott+10_1:1_au=on:bd=off:e2e=on:sos=all:ss=axioms:i=347:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_amm=off:anc=all_dependent:cnfonf=lazy_pi_sigma_gen:ins=3:sd=1:sos=on:sp=const_max:ss=axioms:st=4.0:i=390:si=on:rtra=on_0"); quick.push("ott+1010_1:2_cnfonf=lazy_pi_sigma_gen:cond=fast:fe=axiom:nwc=10.0:sd=1:ss=axioms:i=1032:si=on:rtra=on_0"); quick.push("lrs+10_1:1_kws=inv_frequency:sd=2:sos=all:ss=axioms:st=1.5:i=470:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_bsr=unit_only:kws=precedence:prag=on:sos=on:sp=reverse_arity:ss=axioms:st=3.0:i=1030:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_bd=off:hfsq=on:hfsqr=2,1:ins=2:sd=1:spb=goal_then_units:ss=axioms:i=252:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_bd=off:avsq=on:ins=2:sd=1:spb=goal_then_units:ss=axioms:i=252:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:fde=unused:sd=1:sos=on:ss=axioms:st=2.0:i=312:si=on:rtra=on_0"); quick.push("dis+10_1:1024_cnfonf=off:sd=2:sgt=8:ss=axioms:st=2.0:tgt=ground:i=509:si=on:rtra=on_0"); quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1622:si=on:rtra=on_0"); @@ -5533,7 +5533,7 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q // Improves by expected 33.787293400423636 probs costing 29932 Mi // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); - quick.push("lrs+1010_5:1_acc=on:au=on:cnfonf=off:fde=none:fe=axiom:fsr=off:hfsq=on:ins=2:nm=64:ntd=on:plsq=on:plsqc=1:plsqr=15,1:sac=on:i=8493:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_acc=on:au=on:cnfonf=off:fde=none:fe=axiom:fsr=off:avsq=on:ins=2:nm=64:ntd=on:plsq=on:plsqc=1:plsqr=15,1:sac=on:i=8493:si=on:rtra=on_0"); quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=2901:si=on:rtra=on_0"); quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1367:si=on:rtra=on_0"); quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); @@ -5542,16 +5542,16 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1030:si=on:rtra=on_0"); quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1405:si=on:rtra=on_0"); quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=272:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bs=unit_only:fd=off:fe=axiom:fsr=off:hfsq=on:hfsqc=1:ins=3:piset=all_but_not_eq:sos=on:i=1549:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bs=unit_only:fd=off:fe=axiom:fsr=off:avsq=on:ins=3:piset=all_but_not_eq:sos=on:i=1549:si=on:rtra=on_0"); quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1172:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=1424:si=on:rtra=on_0"); quick.push("dis+1010_3:2_amm=sco:cnfonf=off:nwc=10.0:prag=on:sp=const_frequency:ss=axioms:i=632:si=on:rtra=on_0"); - quick.push("dis+1002_3:2_apa=on:au=on:cnfonf=off:hfsq=on:ntd=on:s2a=on:s2agt=8:i=2746:si=on:rtra=on_0"); + quick.push("dis+1002_3:2_apa=on:au=on:cnfonf=off:avsq=on:ntd=on:s2a=on:s2agt=8:i=2746:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_atotf=0.1:e2e=on:fde=unused:nwc=10.0:s2a=on:i=2054:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=off:sd=2:sgt=16:ss=axioms:i=1580:si=on:rtra=on_0"); quick.push("lrs+10_5:1_fde=none:fe=axiom:hud=5:nm=2:prag=on:sos=all:i=2490:si=on:rtra=on_0"); quick.push("dis+1002_4:1_amm=sco:apa=on:au=on:bsr=on:cnfonf=off:fde=none:ins=1:nwc=5.0:plsq=on:sac=on:sgt=20:sos=on:ss=axioms:i=1322:si=on:rtra=on_0"); - quick.push("lrs+20_1:2_hfsq=on:ins=3:nwc=5.0:piset=all_but_not_eq:sd=1:sos=on:ss=axioms:st=1.5:i=1701:si=on:rtra=on_0"); + quick.push("lrs+20_1:2_avsq=on:ins=3:nwc=5.0:piset=all_but_not_eq:sd=1:sos=on:ss=axioms:st=1.5:i=1701:si=on:rtra=on_0"); quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=6491:si=on:rtra=on_0"); quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:av=off:ins=1:sd=2:sos=on:sp=frequency:ss=axioms:i=2109:si=on:rtra=on_0"); @@ -5590,7 +5590,7 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick) { // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=763:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=817:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:avsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=817:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=618:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=538:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=836:si=on:rtra=on_0"); @@ -5598,7 +5598,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1520:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=134:si=on:rtra=on_0"); quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=707:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=1259:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:avsq=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=1259:si=on:rtra=on_0"); quick.push("lrs+666_1:1_au=on:bs=unit_only:e2e=on:sd=1:sp=frequency:ss=axioms:i=2:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=1363:si=on:rtra=on_0"); quick.push("lrs+1010_1:5_cnfonf=lazy_pi_sigma_gen:kws=precedence:nm=32:nwc=10.0:sp=const_frequency:i=15:si=on:rtra=on_0"); @@ -5607,7 +5607,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=571:si=on:rtra=on_0"); quick.push("dis+1004_1:4_av=off:e2e=on:hud=3:prag=on:sos=on:ss=axioms:i=761:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=2133:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:avsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=2133:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=443:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1081:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=1788:si=on:rtra=on_0"); @@ -5615,34 +5615,34 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=3919:si=on:rtra=on_0"); quick.push("lrs+10_1:1_kws=precedence:sos=on:sp=frequency:ss=axioms:i=751:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=802:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1182:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1182:si=on:rtra=on_0"); quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=282:si=on:rtra=on_0"); quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=532:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=423:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=357:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:hfsq=on:sd=2:sgt=8:ss=axioms:i=808:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:avsq=on:sd=2:sgt=8:ss=axioms:i=808:si=on:rtra=on_0"); quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=1665:si=on:rtra=on_0"); quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=1153:si=on:rtra=on_0"); // Improves by expected 226.7572876818416 probs costing 19904 Mi // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:avsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1357:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cs=on:e2e=on:hfsq=on:i=290:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cs=on:e2e=on:avsq=on:i=290:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2134:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_pi_sigma_gen:hfsq=on:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_pi_sigma_gen:avsq=on:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); quick.push("lrs+10_8:1_cbe=off:e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=251:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=2473:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:avsq=on:nm=0:s2a=on:s2at=1.5:i=2473:si=on:rtra=on_0"); quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); quick.push("lrs+2_1:64_bd=off:nwc=5.0:sd=2:ss=axioms:i=290:si=on:rtra=on_0"); quick.push("lrs+10_8:1_bd=off:fd=off:kws=inv_precedence:sos=on:ss=axioms:i=358:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1609:si=on:rtra=on_0"); - quick.push("dis+10_5:1_au=on:hfsq=on:ss=axioms:i=990:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:avsq=on:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1609:si=on:rtra=on_0"); + quick.push("dis+10_5:1_au=on:avsq=on:ss=axioms:i=990:si=on:rtra=on_0"); quick.push("lrs+4_1:1_fd=off:fs=off:fsr=off:sac=on:sos=on:ss=axioms:i=413:si=on:rtra=on_0"); quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=1265:si=on:rtra=on_0"); quick.push("lrs+21_1:1_erd=off:ins=3:sd=1:sos=on:ss=axioms:i=263:si=on:rtra=on_0"); quick.push("dis+10_3:1_avsq=on:sd=1:ss=axioms:st=2.0:tgt=ground:i=278:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_au=on:cbe=off:hfsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=1965:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_au=on:cbe=off:avsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=1965:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bd=off:e2e=on:ins=2:sd=1:sos=all:ss=axioms:st=3.0:i=326:si=on:rtra=on_0"); quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=289:si=on:rtra=on_0"); @@ -5652,7 +5652,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("ott+1010_1:1_au=on:av=off:fd=off:fde=none:fsr=off:ntd=on:sos=on:sp=occurrence:i=1084:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=762:si=on:rtra=on_0"); quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=556:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:avsq=on:nm=0:sd=1:ss=axioms:i=556:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=719:si=on:rtra=on_0"); quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1097:si=on:rtra=on_0"); quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=640:si=on:rtra=on_0"); @@ -5668,7 +5668,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=7349:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=567:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=731:si=on:rtra=on_0"); - quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:hfsq=on:hfsqr=5,1:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1276:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:avsq=on:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1276:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=890:si=on:rtra=on_0"); quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=6294:si=on:rtra=on_0"); quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1035:si=on:rtra=on_0"); @@ -5690,7 +5690,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=6442:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=638:si=on:rtra=on_0"); quick.push("dis+10_1:12_cnfonf=conj_eager:ss=axioms:st=3.0:tgt=full:i=620:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=4043:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=4043:si=on:rtra=on_0"); quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=597:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1367:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=1231:si=on:rtra=on_0"); @@ -5705,12 +5705,12 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=501:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:hfsq=on:hfsqr=5,1:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=629:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:avsq=on:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=629:si=on:rtra=on_0"); quick.push("dis+10_1:1_fd=off:fde=unused:prag=on:sos=all:i=661:si=on:rtra=on_0"); quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1035:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1511:si=on:rtra=on_0"); quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=1257:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6340:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:avsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6340:si=on:rtra=on_0"); quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=1080:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1955:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=3906:si=on:rtra=on_0"); @@ -5735,12 +5735,12 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=1084:si=on:rtra=on_0"); quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=938:si=on:rtra=on_0"); quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=7500:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=775:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:avsq=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=775:si=on:rtra=on_0"); quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2291:si=on:rtra=on_0"); quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=282:si=on:rtra=on_0"); quick.push("ott+1010_41:4_bd=off:cnfonf=off:hud=14:ntd=on:s2a=on:i=1745:si=on:rtra=on_0"); quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=938:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:hfsq=on:hfsqr=1,2:hud=18:nm=2:rp=on:sos=all:sp=reverse_frequency:ss=axioms:i=1320:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:avsq=on:hud=18:nm=2:rp=on:sos=all:sp=reverse_frequency:ss=axioms:i=1320:si=on:rtra=on_0"); quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=5115:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=1234:si=on:rtra=on_0"); @@ -5753,43 +5753,43 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=2186:si=on:rtra=on_0"); // Improves by expected 101.99492211575122 probs costing 119779 Mi // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:avsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=4577:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2693:si=on:rtra=on_0"); quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4273:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=9244:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:e2e=on:fde=none:ins=3:kws=precedence:s2a=on:s2at=5.0:sp=frequency:i=2335:si=on:rtra=on_0"); - quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:hfsq=on:hfsqr=5,1:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=629:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:avsq=on:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=629:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=13120:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=9390:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:avsq=on:nm=0:s2a=on:s2at=1.5:i=9390:si=on:rtra=on_0"); quick.push("dis+10_4:1_av=off:cnfonf=off:hud=5:nwc=10.0:s2a=on:s2agt=16:i=2642:si=on:rtra=on_0"); quick.push("dis+21_2:3_cnfonf=conj_eager:fsr=off:sd=1:slsq=on:ss=axioms:st=4.0:i=1845:si=on:rtra=on_0"); quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4828:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1033:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6109:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:hfsq=on:hfsqr=5,1:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=2589:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=2589:si=on:rtra=on_0"); quick.push("ott+1010_1:1_alpa=true:anc=none:atotf=0.1:au=on:cnfonf=off:ins=3:nm=64:sd=1:sp=occurrence:ss=axioms:st=5.0:i=2290:si=on:rtra=on_0"); quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=4408:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1066:si=on:rtra=on_0"); quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=4592:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=4280:si=on:rtra=on_0"); quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1403:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:hfsq=on:hfsqc=2:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=6139:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_au=on:cbe=off:hfsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=5743:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:c=on:chr=on:hfsq=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:avsq=on:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=6139:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_au=on:cbe=off:avsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=5743:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:c=on:chr=on:avsq=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4513:si=on:rtra=on_0"); quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=1928:si=on:rtra=on_0"); quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=1063:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:fsr=off:hfsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bsd=on:cnfonf=off:hfsq=on:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=2214:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:fsr=off:avsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bsd=on:cnfonf=off:avsq=on:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=2214:si=on:rtra=on_0"); quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:s2agt=8:i=2717:si=on:rtra=on_0"); quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=10373:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:hfsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:avsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=1920:si=on:rtra=on_0"); quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=3303:si=on:rtra=on_0"); @@ -5797,11 +5797,11 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("dis+1002_1:1_atotf=0.3:au=on:cnfonf=off:ins=3:plsq=on:plsqr=208885,1048576:sos=all:spb=goal_then_units:i=2255:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fde=none:ss=axioms:i=1579:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=15001:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:avsq=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=15001:si=on:rtra=on_0"); quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1635:si=on:rtra=on_0"); quick.push("ott+1002_16:1_au=on:bsr=unit_only:fsr=off:sac=on:sos=on:i=4338:si=on:rtra=on_0"); quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=1486:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:hfsq=on:hfsqc=5:nm=0:sd=1:ss=axioms:i=556:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:avsq=on:nm=0:sd=1:ss=axioms:i=556:si=on:rtra=on_0"); quick.push("lrs+21_1:1_aac=none:c=on:cnfonf=lazy_not_gen:sos=on:i=3633:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=568:si=on:rtra=on_0"); @@ -5822,12 +5822,12 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); // Improves by expected 87.6986428831153 probs costing 239816 Mi // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19923:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:avsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19923:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=13542:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1997:si=on:rtra=on_0"); quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:hfsq=on:hfsqr=5,1:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1968:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:avsq=on:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1968:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:plsq=on:sos=on:i=9176:si=on:rtra=on_0"); quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=15358:si=on:rtra=on_0"); @@ -5835,7 +5835,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1042:si=on:rtra=on_0"); quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=5996:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=14840:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:avsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=14840:si=on:rtra=on_0"); quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4504:si=on:rtra=on_0"); quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); @@ -5848,10 +5848,10 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4854:si=on:rtra=on_0"); quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=11200:si=on:rtra=on_0"); quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=1488:si=on:rtra=on_0"); - quick.push("dis+2_16:1_au=on:bd=off:cbe=off:fd=preordered:fde=unused:fsr=off:hfsq=on:nwc=10.0:i=38001:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("dis+2_16:1_au=on:bd=off:cbe=off:fd=preordered:fde=unused:fsr=off:avsq=on:nwc=10.0:i=38001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_bd=off:cnfonf=off:avsq=on:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:c=on:chr=on:hfsq=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:c=on:chr=on:avsq=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=3344:si=on:rtra=on_0"); quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14683:si=on:rtra=on_0"); quick.push("dis+21_4:1_av=off:bsr=unit_only:cbe=off:e2e=on:hud=1:prag=on:sp=unary_first:ss=axioms:i=4170:si=on:rtra=on_0"); @@ -5859,8 +5859,8 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=2277:si=on:rtra=on_0"); quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=8152:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_av=off:prag=on:sos=all:sp=frequency:i=7003:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:fsr=off:hfsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bsd=on:cnfonf=off:hfsq=on:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=1319:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:fsr=off:avsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bsd=on:cnfonf=off:avsq=on:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=1319:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=6719:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=791:si=on:rtra=on_0"); @@ -5869,10 +5869,10 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=8947:si=on:rtra=on_0"); quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=21393:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3758:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3758:si=on:rtra=on_0"); quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1540:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=57747:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:hfsq=on:hfsqr=1,2:hud=18:nm=2:rp=on:sos=all:sp=reverse_frequency:ss=axioms:i=10173:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:avsq=on:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=57747:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:avsq=on:hud=18:nm=2:rp=on:sos=all:sp=reverse_frequency:ss=axioms:i=10173:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); @@ -5881,7 +5881,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=9755:si=on:rtra=on_0"); quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2566:si=on:rtra=on_0"); quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1342:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=5733:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:avsq=on:lcm=reverse:prag=on:sac=on:sos=on:i=5733:si=on:rtra=on_0"); quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); // Improves by expected 70.77019844793129 probs costing 478707 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit @@ -5895,26 +5895,26 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=4245:si=on:rtra=on_0"); quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=68605:si=on:rtra=on_0"); quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1526:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:hfsq=on:nm=0:s2a=on:s2at=1.5:i=20100:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:e2e=on:avsq=on:nm=0:s2a=on:s2at=1.5:i=20100:si=on:rtra=on_0"); quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=6916:si=on:rtra=on_0"); quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=13084:si=on:rtra=on_0"); quick.push("lrs+1010_1:64_acc=model:anc=all:bd=off:bsd=on:bsr=on:ins=3:ntd=on:prag=on:sos=all:i=40579:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:hfsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=41023:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_fde=none:avsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=41023:si=on:rtra=on_0"); quick.push("lrs+10_1:1_apa=on:au=on:cnfonf=off:fde=unused:fsr=off:ins=2:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=16648:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:cnfonf=lazy_not_be_gen:nwc=5.0:piset=and:plsq=on:plsqc=1:plsqr=1,1:sp=reverse_frequency:tgt=ground:i=4630:si=on:rtra=on_0"); quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:avsq=on:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6109:si=on:rtra=on_0"); quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:hfsq=on:hfsqr=5,1:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=5561:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=5561:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=65701:si=on:rtra=on_0"); quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=67668:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=1332:si=on:rtra=on_0"); quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4186:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:hfsq=on:hfsqc=2:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=26143:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_bd=off:cnfonf=off:hfsq=on:hfsql=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:avsq=on:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=26143:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_bd=off:cnfonf=off:avsq=on:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=17650:si=on:rtra=on_0"); quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); @@ -5926,7 +5926,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=5088:si=on:rtra=on_0"); quick.push("dis+10_4:1_atotf=0.3:bs=on:cnfonf=lazy_simp:fe=axiom:gs=on:nm=0:nwc=10.0:sp=const_frequency:i=23452:si=on:rtra=on_0"); quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=14769:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:fsr=off:hfsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:fsr=off:avsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9504:si=on:rtra=on_0"); quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=18879:si=on:rtra=on_0"); @@ -5938,12 +5938,12 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2778:si=on:rtra=on_0"); quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=5318:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=1458:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=100206:si=on:rtra=on_0"); quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=15049:si=on:rtra=on_0"); - quick.push("ott+1010_44:25_afr=on:c=on:cnfonf=off:e2e=on:fd=preordered:hfsq=on:hfsqc=3:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7623:si=on:rtra=on_0"); + quick.push("ott+1010_44:25_afr=on:c=on:cnfonf=off:e2e=on:fd=preordered:avsq=on:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7623:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:hfsq=on:hfsqr=10,13:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:avsq=on:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=4675:si=on:rtra=on_0"); quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=34824:si=on:rtra=on_0"); quick.push("dis+1010_5:1_cnfonf=lazy_pi_sigma_gen:fe=off:hud=10:sd=1:ss=axioms:st=1.5:i=2416:si=on:rtra=on_0"); @@ -5959,7 +5959,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); // Improves by expected 48.80301293339291 probs costing 958213 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:hfsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=18622:si=on:rtra=on_0"); + quick.push("dis+10_4:1_e2e=on:fde=none:avsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=18622:si=on:rtra=on_0"); quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=4969:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:bsd=on:c=on:fde=none:piset=equals:sac=on:sp=const_min:i=76578:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=25642:si=on:rtra=on_0"); @@ -5975,7 +5975,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=9162:si=on:rtra=on_0"); quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=4280:si=on:rtra=on_0"); - quick.push("ott+10_1:1_afp=2000:bsr=unit_only:chr=on:hfsq=on:hfsql=off:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); + quick.push("ott+10_1:1_afp=2000:bsr=unit_only:chr=on:avsq=on:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=6236:si=on:rtra=on_0"); quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); @@ -5994,13 +5994,13 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2778:si=on:rtra=on_0"); quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=5318:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=7597:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2946:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:hfsq=on:hfsql=off:hfsqr=4,1:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=92639:si=on:rtra=on_0"); - quick.push("ott+1010_44:25_afr=on:c=on:cnfonf=off:e2e=on:fd=preordered:hfsq=on:hfsqc=3:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7601:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:avsq=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=7597:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2946:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:avsq=on:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=92639:si=on:rtra=on_0"); + quick.push("ott+1010_44:25_afr=on:c=on:cnfonf=off:e2e=on:fd=preordered:avsq=on:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7601:si=on:rtra=on_0"); quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=6177:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:hfsq=on:hfsqr=10,13:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:avsq=on:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=19281:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=95283:si=on:rtra=on_0"); @@ -6009,7 +6009,7 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+1002_2:1_fde=unused:kws=inv_frequency:ntd=on:i=6161:si=on:rtra=on_0"); quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=44526:si=on:rtra=on_0"); quick.push("lrs+10_5:1_av=off:cnfonf=lazy_pi_sigma_gen:nwc=5.0:prag=on:s2a=on:s2agt=16:i=3801:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:hfsq=on:hfsqc=2:lcm=reverse:prag=on:sac=on:sos=on:i=6096:si=on:rtra=on_0"); + quick.push("dis+10_2:3_fd=off:fde=none:avsq=on:lcm=reverse:prag=on:sac=on:sos=on:i=6096:si=on:rtra=on_0"); quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=85427:si=on:rtra=on_0"); quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=15115:si=on:rtra=on_0"); // Improves by expected 21.639246074651492 probs costing 959472 Mi @@ -6021,9 +6021,9 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("lrs+10_1:1_apa=on:au=on:cnfonf=off:fde=unused:fsr=off:ins=2:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=16648:si=on:rtra=on_0"); quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=18776:si=on:rtra=on_0"); quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=46089:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:hfsq=on:hfsqc=2:hfsqr=8,1:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:avsq=on:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_c=on:cnfonf=off:hud=15:rawr=on:sd=1:sos=all:ss=axioms:i=73159:si=on:rtra=on_0"); - quick.push("dis+1010_1:5_au=on:hfsq=on:hfsql=off:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=11506:si=on:rtra=on_0"); + quick.push("dis+1010_1:5_au=on:avsq=on:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=11506:si=on:rtra=on_0"); quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_au=on:cnfonf=lazy_not_gen_be_off:inj=on:ins=2:nwc=5.0:s2a=on:i=12558:si=on:rtra=on_0"); quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=6236:si=on:rtra=on_0"); @@ -6037,8 +6037,8 @@ void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick.push("ott+1002_1:1_aac=none:au=on:bd=off:cnfonf=off:nm=0:s2at=3.0:s2pl=on:sac=on:sos=on:i=74001:si=on:rtra=on_0"); quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=71269:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:hfsq=on:hfsqc=1:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=13229:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:hfsq=on:hfsqr=1,8:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:e2e=on:avsq=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=13229:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); quick.push("lrs+666_1:1_au=on:bs=unit_only:e2e=on:sd=1:sp=frequency:ss=axioms:i=40189:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); quick.push("lrs+10_1:1_aac=none:bet=on:cnfonf=lazy_not_be_gen:cond=on:sp=const_max:i=18513:si=on:rtra=on_0"); From 115b0460c9e0814a8a1789641ab9cdda46a9c847 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 13 Jul 2023 12:52:22 +0200 Subject: [PATCH 195/210] make Makefile work for HOL --- Makefile | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 6e09754e29..6046719082 100644 --- a/Makefile +++ b/Makefile @@ -23,9 +23,9 @@ # CHECK_LEAKS - test for memory leaks (debugging mode only) # VZ3 - compile with Z3 -DBG_FLAGS = -g -DVTIME_PROFILING=1 -DVDEBUG=1 -DCHECK_LEAKS=0 # debugging for spider +DBG_FLAGS = -g -DVTIME_PROFILING=1 -DVDEBUG=1 -DCHECK_LEAKS=0 -DVHOL=1 # debugging for spider # DELETEMEin2017: the bug with gcc-6.2 and problems in ClauseQueue could be also fixed by adding -fno-tree-ch -REL_FLAGS = -O6 -DVTIME_PROFILING=1 -DVDEBUG=0 # no debugging +REL_FLAGS = -O6 -DVTIME_PROFILING=1 -DVDEBUG=0 -DVHOL=1 # no debugging GCOV_FLAGS = -O0 --coverage #-pedantic MINISAT_DBG_FLAGS = -D DEBUG @@ -193,11 +193,12 @@ VK_OBJ= Kernel/Clause.o\ Kernel/Inference.o\ Kernel/InferenceStore.o\ Kernel/KBO.o\ - Kernel/SKIKBO.o\ Kernel/KBOForEPR.o\ Kernel/LiteralSelector.o\ Kernel/LookaheadLiteralSelector.o\ Kernel/LPO.o\ + Kernel/HOLUnification.o\ + Kernel/HOLMatching.o\ Kernel/MainLoop.o\ Kernel/Matcher.o\ Kernel/MaximalLiteralSelector.o\ @@ -246,6 +247,7 @@ VI_OBJ = Indexing/AcyclicityIndex.o\ Indexing/LiteralSubstitutionTree.o\ Indexing/ResultSubstitution.o\ Indexing/SubstitutionTree.o\ + Indexing/HOLSubstitutionTree.o\ Indexing/SubstitutionTree_FastGen.o\ Indexing/SubstitutionTree_FastInst.o\ Indexing/SubstitutionTree_Nodes.o\ @@ -268,15 +270,11 @@ VINF_OBJ=Inferences/BackwardDemodulation.o\ Inferences/ExtensionalityResolution.o\ Inferences/ArgCong.o\ Inferences/NegativeExt.o\ - Inferences/Narrow.o\ - Inferences/SubVarSup.o\ Inferences/Factoring.o\ Inferences/FastCondensation.o\ Inferences/FOOLParamodulation.o\ Inferences/Injectivity.o\ Inferences/ForwardDemodulation.o\ - Inferences/CombinatorDemodISE.o\ - Inferences/CombinatorNormalisationISE.o\ Inferences/ForwardLiteralRewriting.o\ Inferences/ForwardSubsumptionAndResolution.o\ Inferences/SubsumptionDemodulationHelper.o\ @@ -297,6 +295,10 @@ VINF_OBJ=Inferences/BackwardDemodulation.o\ Inferences/TautologyDeletionISE.o\ Inferences/TermAlgebraReasoning.o\ Inferences/Induction.o\ + Inferences/FlexFlexSimplify.o\ + Inferences/PositiveExt.o\ + Inferences/ImitateProject.o\ + Inferences/BetaEtaISE.o\ Inferences/InductionHelper.o\ Inferences/URResolution.o\ Inferences/CNFOnTheFly.o\ @@ -355,10 +357,10 @@ VS_OBJ = Shell/AnswerExtractor.o\ Shell/InterpolantMinimizer.o\ Shell/Interpolants.o\ Shell/InterpretedNormalizer.o\ - Shell/LambdaElimination.o\ Shell/LaTeX.o\ Shell/LispLexer.o\ Shell/LispParser.o\ + Shell/LambdaConversion.o\ Shell/Naming.o\ Shell/NNF.o\ Shell/Normalisation.o\ @@ -472,7 +474,6 @@ OTHER_CL_DEP = Indexing/LiteralSubstitutionTree.o\ Kernel/InferenceStore.o\ Kernel/Matcher.o\ Kernel/KBO.o\ - Kernel/SKIKBO.o\ Kernel/KBOForEPR.o\ Kernel/Ordering.o\ Kernel/Ordering_Equality.o\ From 9c3b495c0bd509c45a933732dbe95e56ea7b7957 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 13 Jul 2023 14:28:40 +0200 Subject: [PATCH 196/210] will numOfAppVarsAndLambdas work with recursion and caching? --- Kernel/Term.cpp | 43 +++++++++++++++++++++++++++---------------- Shell/Options.cpp | 14 ++++++++++++++ Shell/Options.hpp | 4 ++++ z3 | 2 +- 4 files changed, 46 insertions(+), 17 deletions(-) diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index d134ee7e9f..020301a829 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -712,27 +712,38 @@ bool TermList::containsLooseIndex() const { unsigned TermList::numOfAppVarsAndLambdas() const { CALL("TermList::numOfAppVarsAndLambdas"); + if (isVar()) { + return 0; + } + const Term* t = term(); + + static DHMap cache; + + unsigned* cached; + if (!cache.getValuePtr(t,cached)) { + return *cached; + } + + // it's OK that the entry in cache has already been created, will only possibly ask for proper subterms + unsigned res = 0; - TermStack toDo; - toDo.push(*this); - while(!toDo.isEmpty()){ - TermList t = toDo.pop(); - if(t.isLambdaTerm()){ - res++; - toDo.push(t.lambdaBody()); + if (isLambdaTerm()) { + res = env.options->hoFeaturesLambdaWeight() + lambdaBody().numOfAppVarsAndLambdas(); + } else if (isApplication()) { + TermList head; + TermStack args; + ApplicativeHelper::getHeadAndArgs(t, head, args); + ASS(!head.isLambdaTerm()); // should be beta-reduced + if(head.isVar()) { + res += env.options->hoFeaturesAppVarWeight(); } - if(t.isApplication()){ - TermList head; - TermStack args; - ApplicativeHelper::getHeadAndArgs(t, head, args); - ASS(!head.isLambdaTerm()); // should be beta-reduced - if(head.isVar()) res++; - while(!args.isEmpty()){ - toDo.push(args.pop()); - } + while(!args.isEmpty()){ + res += args.pop().numOfAppVarsAndLambdas(); } } + + *cached = res; return res; } diff --git a/Shell/Options.cpp b/Shell/Options.cpp index 1520c78d8e..bbd3d67794 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -989,6 +989,20 @@ void Options::init() _lookup.insert(&_hoFeaturesSplitQueues); _hoFeaturesSplitQueues.tag(OptionTag::SATURATION); + _hoFeaturesLambdaWeight = UnsignedOptionValue("ho_feature_lambda_weight","hflw",1); + _hoFeaturesLambdaWeight.description = "How much should lambda occurrences count in the HO features"; + _hoFeaturesLambdaWeight.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); + _hoFeaturesLambdaWeight.addProblemConstraint(hasHigherOrder()); + _lookup.insert(&_hoFeaturesLambdaWeight); + _hoFeaturesLambdaWeight.tag(OptionTag::SATURATION); + + _hoFeaturesAppVarWeight = UnsignedOptionValue("ho_feature_appvar_weight","hfaw",1); + _hoFeaturesAppVarWeight.description = "How much should app-var occurrences count in the HO features"; + _hoFeaturesAppVarWeight.onlyUsefulWith(_hoFeaturesSplitQueues.is(equal(true))); + _hoFeaturesAppVarWeight.addProblemConstraint(hasHigherOrder()); + _lookup.insert(&_hoFeaturesAppVarWeight); + _hoFeaturesAppVarWeight.tag(OptionTag::SATURATION); + _hoFeaturesSplitQueueCutoffs = StringOptionValue("ho_feature_split_queue_cutoffs", "hfsqc", "0"); _hoFeaturesSplitQueueCutoffs.description = "The cutoff-values for the split-queues (the cutoff value for the last queue has to be omitted, as it is always infinity). Any split-queue contains all clauses which are assigned a feature-value less or equal to the cutoff-value of the queue. If no custom value for this option is set, the implementation will use cutoffs 0,4*d,10*d,infinity (where d denotes the theory split queue expected ratio denominator)."; _lookup.insert(&_hoFeaturesSplitQueueCutoffs); diff --git a/Shell/Options.hpp b/Shell/Options.hpp index bec0abf16d..6eac2cd680 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -2277,6 +2277,8 @@ bool _hard; #if VHOL bool hoFeaturesSplitQueues() const { return _hoFeaturesSplitQueues.actualValue; } + unsigned hoFeaturesLambdaWeight() const { return _hoFeaturesLambdaWeight.actualValue; } + unsigned hoFeaturesAppVarWeight() const { return _hoFeaturesAppVarWeight.actualValue; } Lib::vvector hoFeaturesSplitQueueRatios() const; Lib::vvector hoFeaturesSplitQueueCutoffs() const; bool hoFeaturesSplitQueueLayeredArrangement() const { return _hoFeaturesSplitQueueLayeredArrangement.actualValue; } @@ -2578,6 +2580,8 @@ bool _hard; BoolOptionValue _theorySplitQueueLayeredArrangement; #if VHOL BoolOptionValue _hoFeaturesSplitQueues; + UnsignedOptionValue _hoFeaturesLambdaWeight; + UnsignedOptionValue _hoFeaturesAppVarWeight; StringOptionValue _hoFeaturesSplitQueueRatios; StringOptionValue _hoFeaturesSplitQueueCutoffs; BoolOptionValue _hoFeaturesSplitQueueLayeredArrangement; diff --git a/z3 b/z3 index 6ed071b444..e417f7d785 160000 --- a/z3 +++ b/z3 @@ -1 +1 @@ -Subproject commit 6ed071b44407cf6623b8d3c0dceb2a8fb7040cee +Subproject commit e417f7d78509b2d0c9ebc911fee7632e6ef546b6 From 2b2eab64cef1b21b3c0008fae83c101956210b36 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 13 Jul 2023 15:01:06 +0200 Subject: [PATCH 197/210] no HO queues without HO --- Saturation/SaturationAlgorithm.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 89d6e81fa5..1cbdb3aade 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -139,10 +139,10 @@ std::unique_ptr makeLevel0(bool isOutermost, const Optio return std::make_unique(isOutermost, opt, name + "AWQ"); } -std::unique_ptr makeLevel1(bool isOutermost, const Options& opt, vstring name) +std::unique_ptr makeLevel1(bool isOutermost, bool forHO, const Options& opt, vstring name) { #if VHOL - if(opt.hoFeaturesSplitQueues()){ + if(opt.hoFeaturesSplitQueues() && forHO){ Lib::vvector> queues; auto cutoffs = opt.hoFeaturesSplitQueueCutoffs(); for (unsigned i = 0; i < cutoffs.size(); i++) @@ -171,7 +171,7 @@ std::unique_ptr makeLevel1(bool isOutermost, const Optio } } -std::unique_ptr makeLevel2(bool isOutermost, const Options& opt, vstring name) +std::unique_ptr makeLevel2(bool isOutermost, bool forHO, const Options& opt, vstring name) { if (opt.useAvatarSplitQueues()) { @@ -180,17 +180,17 @@ std::unique_ptr makeLevel2(bool isOutermost, const Optio for (unsigned i = 0; i < cutoffs.size(); i++) { auto queueName = name + "AvSQ" + Int::toString(cutoffs[i]) + ":"; - queues.push_back(makeLevel1(false, opt, queueName)); + queues.push_back(makeLevel1(false, forHO, opt, queueName)); } return std::make_unique(isOutermost, opt, name + "AvSQ", std::move(queues)); } else { - return makeLevel1(isOutermost, opt, name); + return makeLevel1(isOutermost, forHO, opt, name); } } -std::unique_ptr makeLevel3(bool isOutermost, const Options& opt, vstring name) +std::unique_ptr makeLevel3(bool isOutermost, bool forHO, const Options& opt, vstring name) { if (opt.useSineLevelSplitQueues()) { @@ -199,17 +199,17 @@ std::unique_ptr makeLevel3(bool isOutermost, const Optio for (unsigned i = 0; i < cutoffs.size(); i++) { auto queueName = name + "SLSQ" + Int::toString(cutoffs[i]) + ":"; - queues.push_back(makeLevel2(false, opt, queueName)); + queues.push_back(makeLevel2(false, forHO, opt, queueName)); } return std::make_unique(isOutermost, opt, name + "SLSQ", std::move(queues)); } else { - return makeLevel2(isOutermost, opt, name); + return makeLevel2(isOutermost, forHO, opt, name); } } -std::unique_ptr makeLevel4(bool isOutermost, const Options& opt, vstring name) +std::unique_ptr makeLevel4(bool isOutermost, bool forHO, const Options& opt, vstring name) { if (opt.usePositiveLiteralSplitQueues()) { @@ -218,13 +218,13 @@ std::unique_ptr makeLevel4(bool isOutermost, const Optio for (unsigned i = 0; i < cutoffs.size(); i++) { auto queueName = name + "PLSQ" + Int::toString(cutoffs[i]) + ":"; - queues.push_back(makeLevel3(false, opt, queueName)); + queues.push_back(makeLevel3(false, forHO, opt, queueName)); } return std::make_unique(isOutermost, opt, name + "PLSQ", std::move(queues)); } else { - return makeLevel3(isOutermost, opt, name); + return makeLevel3(isOutermost, forHO, opt, name); } } @@ -265,7 +265,7 @@ SaturationAlgorithm::SaturationAlgorithm(Problem& prb, const Options& opt) } else { - _passive = makeLevel4(true, opt, ""); + _passive = makeLevel4(true, prb.higherOrder(), opt, ""); } _active = new ActiveClauseContainer(opt); From 45a1aed76071390d456f86bd2fc71495f0fdf30b Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Fri, 14 Jul 2023 11:42:56 +0000 Subject: [PATCH 198/210] new SLH sched using a bit of hfsq now made official under SNAKE_SLH while the debug SNAKE_SLH2 is gone --- CASC/PortfolioMode.cpp | 5 +- CASC/Schedules.cpp | 824 ++++++++++++++++++----------------------- CASC/Schedules.hpp | 1 - Shell/Options.cpp | 1 - Shell/Options.hpp | 1 - 5 files changed, 371 insertions(+), 461 deletions(-) diff --git a/CASC/PortfolioMode.cpp b/CASC/PortfolioMode.cpp index 4dc1735587..dac69d79a7 100644 --- a/CASC/PortfolioMode.cpp +++ b/CASC/PortfolioMode.cpp @@ -371,16 +371,13 @@ void PortfolioMode::getSchedules(const Property& prop, Schedule& quick, Schedule Schedules::getSnakeTptpSatSchedule(prop,quick); break; -#if VHOL +#if VHOL case Options::Schedule::SNAKE_TPTP_HOL: Schedules::getSnakeTptpHolSchedule(prop,quick); break; case Options::Schedule::SNAKE_SLH: Schedules::getSnakeSlhSchedule(prop,quick); break; - case Options::Schedule::SNAKE_SLH2: - Schedules::getSnakeSlh2Schedule(prop,quick); - break; #endif case Options::Schedule::CASC_2019: diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 57e97b259a..0fbce52a05 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5459,597 +5459,513 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul } void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick) { - // sledgehammering/sledgeTH0.txt - // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit - quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=362:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:sd=2:ss=axioms:st=3.0:i=828:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=449:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=670:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_acc=on:afp=1:au=on:avsq=on:avsqc=1:fd=off:fde=unused:ntd=on:piset=not:sac=on:sos=all:i=625:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:nm=2:sd=2:sos=all:ss=axioms:i=997:si=on:rtra=on_0"); - quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=232:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=off:fde=none:fe=off:hud=5:prag=on:s2pl=no:slsq=on:sos=on:i=529:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1474:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_amm=sco:au=on:bd=off:fde=none:gs=on:hud=5:sos=on:sp=weighted_frequency:i=1054:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:fd=off:nwc=10.0:sos=on:i=671:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_acc=on:fde=none:sd=1:sos=on:ss=axioms:i=286:si=on:rtra=on_0"); - quick.push("dis+10_1:1_nwc=10.0:sd=1:sgt=32:ss=axioms:i=497:si=on:rtra=on_0"); - quick.push("ott+1002_16:1_aac=none:au=on:fd=off:fde=unused:fsr=off:ins=4:nm=16:ntd=on:sos=on:i=512:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_acc=on:cnfonf=lazy_pi_sigma_gen:fde=none:i=307:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_avsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:sd=1:sos=on:ss=axioms:uhcvi=on:i=394:si=on:rtra=on_0"); - // Improves by expected 453.6301661906032 probs costing 9871 Mi - // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit - quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=182:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_abs=on:au=on:fde=none:fe=off:ins=2:sos=on:i=400:si=on:rtra=on_0"); - quick.push("lrs+32_1:1_bd=off:hud=10:sos=on:ss=axioms:i=463:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:fde=unused:prag=on:sos=all:i=570:si=on:rtra=on_0"); - quick.push("ott+10_1:1_fde=none:hud=15:piset=all:prag=on:sd=1:sos=on:ss=axioms:st=3.0:i=899:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ntd=on:sac=on:sd=1:slsq=on:slsqc=1:ss=axioms:st=5.0:uhcvi=on:i=1018:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=277:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_au=on:cnfonf=off:avsq=on:sd=2:sgt=8:ss=axioms:i=543:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_nm=2:sd=2:sos=on:ss=axioms:st=3.0:i=514:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=2993:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_au=on:bd=off:cnfonf=off:e2e=on:ins=3:nm=2:sac=on:sos=all:i=810:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cbe=off:cnfonf=off:fe=axiom:fsr=off:hud=5:ins=2:prag=on:sd=2:ss=axioms:i=422:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=1406:si=on:rtra=on_0"); - quick.push("dis+1002_1:128_au=on:awrs=converge:cnfonf=off:fd=off:ntd=on:s2a=on:sos=on:i=1339:si=on:rtra=on_0"); - quick.push("dis+10_8:1_s2a=on:s2agt=32:sac=on:ss=axioms:i=453:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:fe=off:hud=5:ins=3:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=on:i=514:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=on:cnfonf=off:fsr=off:avsq=on:ss=axioms:i=396:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:bd=off:e2e=on:sos=all:ss=axioms:i=347:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_amm=off:anc=all_dependent:cnfonf=lazy_pi_sigma_gen:ins=3:sd=1:sos=on:sp=const_max:ss=axioms:st=4.0:i=390:si=on:rtra=on_0"); - quick.push("ott+1010_1:2_cnfonf=lazy_pi_sigma_gen:cond=fast:fe=axiom:nwc=10.0:sd=1:ss=axioms:i=1032:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_kws=inv_frequency:sd=2:sos=all:ss=axioms:st=1.5:i=470:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bsr=unit_only:kws=precedence:prag=on:sos=on:sp=reverse_arity:ss=axioms:st=3.0:i=1030:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_bd=off:avsq=on:ins=2:sd=1:spb=goal_then_units:ss=axioms:i=252:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:fde=unused:sd=1:sos=on:ss=axioms:st=2.0:i=312:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_cnfonf=off:sd=2:sgt=8:ss=axioms:st=2.0:tgt=ground:i=509:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1622:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_au=on:cnfonf=off:sd=2:sos=all:sp=frequency:ss=axioms:i=746:si=on:rtra=on_0"); - // Improves by expected 57.2965107727296 probs costing 19882 Mi - // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit - quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1963:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fde=unused:s2a=on:s2at=3.0:i=665:si=on:rtra=on_0"); - quick.push("lrs+10_1:50_au=on:bd=off:e2e=on:fde=unused:lma=on:sos=all:sp=reverse_arity:i=1275:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fe=off:sd=1:sos=on:ss=axioms:i=599:si=on:rtra=on_0"); - quick.push("dis+10_5:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:sd=2:ss=axioms:i=982:si=on:rtra=on_0"); - quick.push("dis+1002_3:1_cbe=off:fd=off:fde=none:fsr=off:nm=0:nwc=7.0:prag=on:s2a=on:s2at=2.5:sac=on:ss=axioms:st=3.0:i=977:si=on:rtra=on_0"); - quick.push("lrs+1010_4:3_cnfonf=lazy_gen:fe=axiom:nwc=5.0:sos=all:sp=reverse_arity:i=741:si=on:rtra=on_0"); - quick.push("dis+1010_1:1024_cnfonf=off:nm=32:sac=on:sd=1:ss=axioms:i=541:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_not_gen_be_off:fe=axiom:hud=10:sd=1:ss=axioms:i=1138:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_fde=unused:fe=off:kws=precedence:prag=on:sp=const_frequency:ss=axioms:i=3948:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_add=off:au=on:avsq=on:avsqr=3,4:bd=off:cs=on:nwc=5.0:prag=on:sos=on:sp=occurrence:i=716:si=on:rtra=on_0"); - quick.push("dis+1010_3:2_amm=sco:cnfonf=off:nwc=10.0:prag=on:sp=const_frequency:ss=axioms:i=632:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:nwc=10.0:s2a=on:ss=axioms:i=750:si=on:rtra=on_0"); - quick.push("lrs+10_1:40_cnfonf=off:hud=1:ins=3:nm=16:prag=on:sac=on:sos=all:i=783:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:cnfonf=off:fd=off:fe=off:sos=on:i=1016:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=490:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_prag=on:sd=1:sp=const_frequency:ss=axioms:tgt=ground:i=2413:si=on:rtra=on_0"); - quick.push("lrs+10_1:16_atotf=0.3:fd=off:fe=off:ntd=on:sos=on:i=489:si=on:rtra=on_0"); - quick.push("ott+10_1:1024_c=on:fsr=off:hud=15:ins=3:kws=precedence:nwc=8.0:sp=reverse_arity:i=682:si=on:rtra=on_0"); - quick.push("dis+21_1:8_aac=none:cnfonf=lazy_pi_sigma_gen:fd=off:hud=10:lma=on:nm=50:sos=all:i=2178:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=3530:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=3446:si=on:rtra=on_0"); - // Improves by expected 33.787293400423636 probs costing 29932 Mi - // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); - quick.push("lrs+1010_5:1_acc=on:au=on:cnfonf=off:fde=none:fe=axiom:fsr=off:avsq=on:ins=2:nm=64:ntd=on:plsq=on:plsqc=1:plsqr=15,1:sac=on:i=8493:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_cbe=off:nwc=3.0:prag=on:sac=on:sd=1:sgt=8:ss=axioms:i=2901:si=on:rtra=on_0"); - quick.push("dis+1010_1:10_bs=unit_only:cbe=off:chr=on:e2e=on:fde=unused:lma=on:s2a=on:sac=on:ss=axioms:i=1367:si=on:rtra=on_0"); - quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:fde=none:fe=off:nm=32:prag=on:sos=on:i=2744:si=on:rtra=on_0"); - quick.push("lrs+1002_5:1_bd=preordered:cnfonf=off:fe=off:plsq=on:plsql=on:prag=on:sd=1:ss=axioms:i=979:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=1030:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1405:si=on:rtra=on_0"); - quick.push("dis+2_1:1_e2e=on:hud=5:prag=on:sd=1:sos=on:ss=axioms:i=272:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bs=unit_only:fd=off:fe=axiom:fsr=off:avsq=on:ins=3:piset=all_but_not_eq:sos=on:i=1549:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=1172:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:bsd=on:cnfonf=off:ntd=on:s2a=on:i=1424:si=on:rtra=on_0"); - quick.push("dis+1010_3:2_amm=sco:cnfonf=off:nwc=10.0:prag=on:sp=const_frequency:ss=axioms:i=632:si=on:rtra=on_0"); - quick.push("dis+1002_3:2_apa=on:au=on:cnfonf=off:avsq=on:ntd=on:s2a=on:s2agt=8:i=2746:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_atotf=0.1:e2e=on:fde=unused:nwc=10.0:s2a=on:i=2054:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=off:sd=2:sgt=16:ss=axioms:i=1580:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_fde=none:fe=axiom:hud=5:nm=2:prag=on:sos=all:i=2490:si=on:rtra=on_0"); - quick.push("dis+1002_4:1_amm=sco:apa=on:au=on:bsr=on:cnfonf=off:fde=none:ins=1:nwc=5.0:plsq=on:sac=on:sgt=20:sos=on:ss=axioms:i=1322:si=on:rtra=on_0"); - quick.push("lrs+20_1:2_avsq=on:ins=3:nwc=5.0:piset=all_but_not_eq:sd=1:sos=on:ss=axioms:st=1.5:i=1701:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1_au=on:av=off:hud=5:piset=pi_sigma:sos=on:sp=unary_first:i=6491:si=on:rtra=on_0"); - quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:av=off:ins=1:sd=2:sos=on:sp=frequency:ss=axioms:i=2109:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:avsq=on:avsql=on:avsqr=16,1:bd=off:sos=all:i=2234:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:cs=on:fsr=off:s2a=on:i=2356:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); - quick.push("dis+10_1:1_apa=on:au=on:cnfonf=off:ins=1:ntd=on:sd=1:sgt=16:ss=axioms:tgt=ground:i=3558:si=on:rtra=on_0"); - // Improves by expected 20.95850413027136 probs costing 59729 Mi - // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit - quick.push("lrs+1002_1:1_au=on:e2e=on:fd=preordered:nm=2:sos=on:i=1631:si=on:rtra=on_0"); - quick.push("dis+10_1:128_cnfonf=off:sd=1:sgt=64:ss=axioms:i=4063:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:hud=10:kws=inv_precedence:ntd=on:sos=all:sp=const_max:spb=goal:i=9791:si=on:rtra=on_0"); - quick.push("dis-20_1:128_aac=none:cnfonf=off:e2e=on:fde=none:hud=15:sos=on:i=1470:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_au=on:bd=off:bet=on:e2e=on:kws=inv_arity_squared:sos=on:i=10525:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_c=on:cnfonf=off:fd=preordered:fe=axiom:nm=4:nwc=3.0:prag=on:sd=10:sos=all:sp=const_frequency:ss=axioms:i=1299:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_kws=precedence:sd=1:sos=on:sp=const_max:ss=axioms:st=2.0:i=4735:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:sd=2:sgt=8:ss=axioms:i=4554:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sd=2:ss=axioms:i=11219:si=on:rtra=on_0"); - quick.push("ott+10_1:1_acc=on:add=large:avsq=on:cnfonf=off:fde=none:nwc=10.0:i=2492:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_gen:sos=on:i=3201:si=on:rtra=on_0"); - quick.push("lrs+21_3:1_amm=off:fe=off:hud=10:ntd=on:sos=on:uhcvi=on:i=1579:si=on:rtra=on_0"); - quick.push("dis+1002_4:1_amm=sco:apa=on:au=on:bsr=on:cnfonf=off:fde=none:ins=1:nwc=5.0:plsq=on:sac=on:sgt=20:sos=on:ss=axioms:i=1322:si=on:rtra=on_0"); - quick.push("dis+1010_1:50_afp=1:afq=2.0:cnfonf=lazy_pi_sigma_gen:sac=on:sos=on:i=2554:si=on:rtra=on_0"); - quick.push("dis+1010_8:15_au=on:cbe=off:cnfonf=off:fsr=off:kws=frequency:ntd=on:plsq=on:rawr=on:sp=const_min:tgt=ground:i=5455:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:sos=on:ss=axioms:i=13332:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_cnfonf=off:sd=1:sp=occurrence:ss=axioms:st=2.0:tgt=ground:i=3948:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_av=off:fe=axiom:kws=inv_precedence:sos=on:sp=unary_first:i=1492:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:av=off:fde=unused:fsr=off:sos=all:sp=weighted_frequency:ss=axioms:st=5.0:i=9159:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_anc=all_dependent:fde=none:kws=precedence:prag=on:sac=on:sos=on:tnu=2:uhcvi=on:i=5501:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_av=off:cnfonf=off:e2e=on:fe=axiom:hud=10:nm=2:sos=all:sp=frequency:i=16834:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_au=on:cnfonf=off:ins=2:ixr=off:sd=1:sp=frequency:ss=axioms:i=1622:si=on:rtra=on_0"); - // Improves by expected 12.261416048415864 probs costing 117756 Mi - // Mon19 Overall score 577.9338905424436 probs on average / budget 237170 Mi -} - -void Schedules::getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick) { - // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=763:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:avsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=817:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=618:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=538:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=836:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=947:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1520:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=134:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=707:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:avsq=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=1259:si=on:rtra=on_0"); - quick.push("lrs+666_1:1_au=on:bs=unit_only:e2e=on:sd=1:sp=frequency:ss=axioms:i=2:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=1363:si=on:rtra=on_0"); + // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=782:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=754:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=810:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=617:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=660:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=707:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=826:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=835:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=705:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=608:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=876:si=on:rtra=on_0"); quick.push("lrs+1010_1:5_cnfonf=lazy_pi_sigma_gen:kws=precedence:nm=32:nwc=10.0:sp=const_frequency:i=15:si=on:rtra=on_0"); - quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=482:si=on:rtra=on_0"); - // Improves by expected 2226.0263882194936 probs costing 9987 Mi + quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=1727:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:sd=1:ss=axioms:i=2:si=on:rtra=on_0"); + // Improves by expected 2258.269138383958 probs costing 9910 Mi // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit - quick.push("dis+2_1:1_apa=on:au=on:bd=off:c=on:cnfonf=off:fsr=off:sd=1:sos=on:ss=axioms:i=571:si=on:rtra=on_0"); - quick.push("dis+1004_1:4_av=off:e2e=on:hud=3:prag=on:sos=on:ss=axioms:i=761:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:avsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=2133:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=443:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1081:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=1788:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=1271:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=3919:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_kws=precedence:sos=on:sp=frequency:ss=axioms:i=751:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=802:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1182:si=on:rtra=on_0"); - quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=282:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=532:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=947:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=2392:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=2494:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1258:si=on:rtra=on_0"); + quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=297:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_fe=off:prag=on:sos=all:ss=axioms:i=988:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=423:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=357:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:avsq=on:sd=2:sgt=8:ss=axioms:i=808:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=1665:si=on:rtra=on_0"); - quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=1153:si=on:rtra=on_0"); - // Improves by expected 226.7572876818416 probs costing 19904 Mi + quick.push("lrs+10_1:1_av=off:kws=precedence:sos=on:sp=reverse_arity:ss=axioms:i=742:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:avsq=on:sd=2:sgt=8:ss=axioms:i=313:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=3335:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=229:si=on:rtra=on_0"); + quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=328:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_bd=off:cbe=off:hud=1:prag=on:sos=on:sp=const_min:ss=axioms:i=649:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:plsq=on:plsqc=1:plsqr=32,1:sos=on:sp=const_frequency:ss=axioms:st=3.0:i=1048:si=on:rtra=on_0"); + quick.push("ott+1002_17:12_au=on:ins=3:sac=on:sd=3:sos=on:sp=occurrence:ss=axioms:i=1918:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=942:si=on:rtra=on_0"); + quick.push("dis+1002_1:32_au=on:c=on:fd=off:nm=2:sd=1:sos=on:sp=frequency:ss=axioms:st=3.0:i=1354:si=on:rtra=on_0"); + quick.push("dis+10_1:1_s2a=on:s2agt=8:sd=2:sgt=8:ss=axioms:i=355:si=on:rtra=on_0"); + // Improves by expected 212.0573861120701 probs costing 19994 Mi // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:avsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1357:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cs=on:e2e=on:avsq=on:i=290:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2134:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_pi_sigma_gen:avsq=on:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_cbe=off:e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=251:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:avsq=on:nm=0:s2a=on:s2at=1.5:i=2473:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); + quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:cs=on:e2e=on:i=290:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=2233:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:cnfonf=lazy_pi_sigma_gen:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); quick.push("lrs+2_1:64_bd=off:nwc=5.0:sd=2:ss=axioms:i=290:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_bd=off:fd=off:kws=inv_precedence:sos=on:ss=axioms:i=358:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=3711:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:avsq=on:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1609:si=on:rtra=on_0"); - quick.push("dis+10_5:1_au=on:avsq=on:ss=axioms:i=990:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:hud=15:sos=on:i=1337:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1186:si=on:rtra=on_0"); quick.push("lrs+4_1:1_fd=off:fs=off:fsr=off:sac=on:sos=on:ss=axioms:i=413:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=1265:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_erd=off:ins=3:sd=1:sos=on:ss=axioms:i=263:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=980:si=on:rtra=on_0"); quick.push("dis+10_3:1_avsq=on:sd=1:ss=axioms:st=2.0:tgt=ground:i=278:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_au=on:cbe=off:avsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=1965:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:e2e=on:ins=2:sd=1:sos=all:ss=axioms:st=3.0:i=326:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_kws=precedence:sos=on:sp=frequency:ss=axioms:i=252:si=on:rtra=on_0"); quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=289:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=243:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=401:si=on:rtra=on_0"); quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=633:si=on:rtra=on_0"); - quick.push("dis+2_1:1_cnfonf=off:e2e=on:kws=inv_frequency:nm=0:nwc=5.0:s2a=on:s2agt=32:ss=axioms:i=487:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:av=off:fd=off:fde=none:fsr=off:ntd=on:sos=on:sp=occurrence:i=1084:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:nm=0:sac=on:sd=1:sp=unary_frequency:ss=axioms:st=3.0:i=762:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=134:si=on:rtra=on_0"); quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:avsq=on:nm=0:sd=1:ss=axioms:i=556:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=493:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=719:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1097:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1029:si=on:rtra=on_0"); quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=640:si=on:rtra=on_0"); quick.push("dis+10_1:32_fd=off:kws=precedence:sd=2:sos=on:ss=axioms:i=237:si=on:rtra=on_0"); quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=751:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=229:si=on:rtra=on_0"); - quick.push("dis+10_1:3_aac=none:bd=off:cnfonf=off:fde=unused:ins=2:ntd=on:s2a=on:sac=on:i=437:si=on:rtra=on_0"); - quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=4485:si=on:rtra=on_0"); - // Improves by expected 130.432668654497 probs costing 29925 Mi + quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2166:si=on:rtra=on_0"); + quick.push("lrs+1002_1:2_e2e=on:sd=2:sgt=16:ss=axioms:i=502:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=4453:si=on:rtra=on_0"); + quick.push("dis+10_4:1_apa=on:au=on:cnfonf=off:fde=none:sd=2:ss=axioms:st=3.0:i=691:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_au=on:av=off:bd=off:e2e=on:sos=all:i=1786:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=621:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fd=preordered:sos=on:ss=axioms:st=1.5:i=621:si=on:rtra=on_0"); + // Improves by expected 134.93277978747452 probs costing 29914 Mi // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=501:si=on:rtra=on_0"); - quick.push("lrs+10_1:28_au=on:lma=on:sgt=8:sos=all:ss=axioms:i=1106:si=on:rtra=on_0"); - quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=7349:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=541:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2132:si=on:rtra=on_0"); + quick.push("dis+2_16:1_e2e=on:gs=on:s2a=on:s2agt=32:sgt=32:ss=axioms:i=1182:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=567:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bsr=on:e2e=on:fde=unused:nm=7:sac=on:sos=on:sp=frequency:tnu=9:i=731:si=on:rtra=on_0"); - quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:avsq=on:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1276:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:avsq=on:bs=unit_only:bsr=unit_only:fsr=off:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1467:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=890:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=6294:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1035:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=5985:si=on:rtra=on_0"); quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1301:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1046:si=on:rtra=on_0"); - quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=1108:si=on:rtra=on_0"); - quick.push("ott+1010_1:4_au=on:avsq=on:avsqc=1:cnfonf=off:e2e=on:fsr=off:ins=1:nwc=10.0:s2a=on:s2at=2.5:sac=on:sp=const_min:i=2840:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_av=off:bd=off:fd=off:kws=inv_frequency:sos=on:i=766:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=870:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1526:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_bd=off:fd=off:kws=inv_precedence:sos=on:ss=axioms:i=375:si=on:rtra=on_0"); + quick.push("ott+10_1:1_acc=model:avsq=on:c=on:cnfonf=off:fd=off:nm=0:sp=reverse_arity:ss=axioms:i=551:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1031:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:avsq=on:cbe=off:fde=none:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1600:si=on:rtra=on_0"); + quick.push("dis+10_5:1_au=on:avsq=on:ss=axioms:i=516:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=3945:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:cnfonf=conj_eager:ins=1:sac=on:sp=const_max:ss=axioms:st=3.0:tgt=ground:i=267:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=828:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_au=on:avsq=on:avsqc=1:cnfonf=off:e2e=on:fsr=off:ins=1:nwc=10.0:s2a=on:s2at=2.5:sac=on:sp=const_min:i=693:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1381:si=on:rtra=on_0"); + quick.push("dis+10_1:64_cnfonf=lazy_not_be_gen:cond=fast:fsr=off:hud=5:ntd=on:nwc=10.0:sac=on:sd=1:sos=on:sp=const_max:ss=axioms:i=798:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=3962:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=577:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_au=on:avsq=on:cbe=off:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=5743:si=on:rtra=on_0"); quick.push("dis+10_5:1_cnfonf=off:slsq=on:sp=const_max:i=571:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_not_gen_be_off:kws=precedence:prag=on:s2a=on:sp=frequency:ss=axioms:i=569:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cbe=off:cnfonf=lazy_not_be_gen:fs=off:fsr=off:nwc=12.0:ss=axioms:i=458:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:s2agt=8:i=1101:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_e2e=on:plsq=on:plsqr=32,1:sgt=8:ss=axioms:i=1749:si=on:rtra=on_0"); - quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=6442:si=on:rtra=on_0"); + quick.push("dis+10_1:1_e2e=on:hflw=5:hfsq=on:hfsqc=8:hfsql=off:i=273:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=476:si=on:rtra=on_0"); + quick.push("dis+2_1:1_cnfonf=off:e2e=on:kws=inv_frequency:nm=0:nwc=5.0:s2a=on:s2agt=32:ss=axioms:i=487:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_e2e=on:plsq=on:plsqr=32,1:sgt=8:ss=axioms:i=1796:si=on:rtra=on_0"); + quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=559:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=638:si=on:rtra=on_0"); - quick.push("dis+10_1:12_cnfonf=conj_eager:ss=axioms:st=3.0:tgt=full:i=620:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=4043:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:avsq=on:fde=unused:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=6474:si=on:rtra=on_0"); quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=597:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1367:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:fde=none:plsq=on:plsqc=2:plsqr=10,1:s2a=on:s2agt=16:i=1231:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=924:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=1554:si=on:rtra=on_0"); + quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=290:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:avsq=on:nm=0:sd=1:ss=axioms:i=708:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_avsq=on:fsr=off:nm=2:prag=on:sos=on:i=748:si=on:rtra=on_0"); quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=1806:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nm=0:nwc=5.0:i=977:si=on:rtra=on_0"); - quick.push("lrs-1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=533:si=on:rtra=on_0"); - quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=1905:si=on:rtra=on_0"); - // Improves by expected 122.54912416632952 probs costing 59889 Mi + quick.push("lrs+10_1:1_bd=preordered:hud=15:kws=precedence:nm=16:sd=3:sgt=16:sos=on:sp=frequency:ss=axioms:i=483:si=on:rtra=on_0"); + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=5155:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fd=off:fsr=off:s2a=on:s2agt=10:i=1398:si=on:rtra=on_0"); + quick.push("dis+32_1:2_au=on:cnfonf=lazy_pi_sigma_gen:kws=inv_precedence:nwc=10.0:s2a=on:s2agt=30:i=1441:si=on:rtra=on_0"); + quick.push("dis+10_1:8_ins=1:nm=6:s2a=on:sd=3:ss=axioms:i=451:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=350:si=on:rtra=on_0"); + // Improves by expected 120.32336523397528 probs costing 59931 Mi // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit - quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=501:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:avsq=on:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=629:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fd=off:fde=unused:prag=on:sos=all:i=661:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1035:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1328:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cs=on:prag=on:sos=on:i=1475:si=on:rtra=on_0"); + quick.push("ott+10_1:1_hud=15:ins=1:sd=1:sgt=32:sos=all:ss=axioms:st=2.0:i=1132:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=4969:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_cbe=off:e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=1144:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:avsq=on:e2e=on:fde=unused:nm=6:nwc=10.0:sac=on:i=4810:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=944:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:avsq=on:e2e=on:nm=0:s2a=on:s2at=1.5:i=2837:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1511:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=1257:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:avsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6340:si=on:rtra=on_0"); + quick.push("dis-1004_8:1_av=off:bd=off:fd=off:fe=off:hud=22:sos=on:tnu=2:i=883:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:av=off:fde=unused:hfsq=on:hfsqr=16,1:hud=10:lma=on:nm=3:piset=and:sos=all:sp=const_frequency:i=408:si=on:rtra=on_0"); quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=1080:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1955:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=3906:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=9473:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=1108:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_ins=3:prag=on:sos=on:sp=const_min:i=907:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1025:si=on:rtra=on_0"); + quick.push("ott+1010_1:128_afp=1010:afq=2.19963:avsq=on:avsqr=1,8:er=known:sd=1:ss=axioms:i=1045:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:cnfonf=conj_eager:ins=1:sac=on:sp=const_max:ss=axioms:st=3.0:tgt=ground:i=241:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_au=on:av=off:cnfonf=off:cond=fast:nm=6:sos=all:i=2216:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_av=off:bd=off:fd=off:kws=inv_frequency:sos=on:i=766:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=3722:si=on:rtra=on_0"); - quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=491:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:sd=2:sos=on:ss=axioms:i=296:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_apa=on:au=on:bsr=on:cnfonf=off:fe=off:nm=32:prag=on:sac=on:sos=on:sp=unary_first:ss=axioms:i=1895:si=on:rtra=on_0"); + quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=1467:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=464:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:e2e=on:fe=off:prag=on:sos=all:sp=const_frequency:ss=axioms:i=4945:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:e2e=on:ins=2:sd=1:sos=all:ss=axioms:st=3.0:i=326:si=on:rtra=on_0"); + quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=1443:si=on:rtra=on_0"); quick.push("lrs+2_1:6_au=on:cnfonf=off:ss=axioms:st=1.5:i=1438:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=2915:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=2104:si=on:rtra=on_0"); + quick.push("dis+21_8:1_au=on:cbe=off:cnfonf=off:hud=15:nwc=5.0:piset=not:sos=all:sp=unary_frequency:ss=axioms:i=3365:si=on:rtra=on_0"); quick.push("dis+10_1:128_av=off:fde=unused:hud=1:prag=on:sos=all:ss=axioms:i=3425:si=on:rtra=on_0"); quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=2203:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=13488:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_bd=off:e2e=on:s2a=on:s2agt=10:sp=unary_first:i=835:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=401:si=on:rtra=on_0"); - quick.push("ott+2_1:1024_apa=on:atotf=0.2:bd=off:cnfonf=off:erd=off:fd=off:nm=0:sos=all:i=1782:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=289:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_avsq=on:bsd=on:cnfonf=off:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=2214:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_apa=on:atotf=0.2:bd=off:cnfonf=off:erd=off:fd=off:nm=0:sos=all:i=1527:si=on:rtra=on_0"); quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); quick.push("lrs+1010_8:1_c=on:fsr=off:hud=0:kws=inv_arity:ntd=on:sos=on:sp=occurrence:i=1098:si=on:rtra=on_0"); - quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=1790:si=on:rtra=on_0"); + quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=1348:si=on:rtra=on_0"); + quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=7135:si=on:rtra=on_0"); quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=791:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=6281:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=1084:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=6037:si=on:rtra=on_0"); quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=938:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=7500:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:avsq=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=775:si=on:rtra=on_0"); - quick.push("dis+2_2:3_e2e=on:fsr=off:prag=on:sos=on:ss=axioms:i=2291:si=on:rtra=on_0"); - quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=282:si=on:rtra=on_0"); - quick.push("ott+1010_41:4_bd=off:cnfonf=off:hud=14:ntd=on:s2a=on:i=1745:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=4357:si=on:rtra=on_0"); quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=938:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:avsq=on:hud=18:nm=2:rp=on:sos=all:sp=reverse_frequency:ss=axioms:i=1320:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=5115:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=2052:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=1234:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=9524:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2759:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=3701:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=preordered:hud=15:kws=precedence:nm=16:sd=3:sgt=16:sos=on:sp=frequency:ss=axioms:i=637:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_cnfonf=off:fde=unused:prag=on:sos=all:i=2076:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=753:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=1213:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=1417:si=on:rtra=on_0"); + quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=2643:si=on:rtra=on_0"); quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); - quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=2186:si=on:rtra=on_0"); - // Improves by expected 101.99492211575122 probs costing 119779 Mi + quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=991:si=on:rtra=on_0"); + quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=1247:si=on:rtra=on_0"); + quick.push("ott+10_4:1_au=on:cnfonf=lazy_gen:fde=unused:kws=precedence:s2a=on:s2at=2.0:sd=1:ss=axioms:st=5.0:i=2161:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fde=none:sos=all:i=1840:si=on:rtra=on_0"); + quick.push("dis+1010_1:20_au=on:av=off:cbe=off:fe=off:nm=2:sos=on:sp=weighted_frequency:uhcvi=on:i=1141:si=on:rtra=on_0"); + quick.push("dis+10_1:8_au=on:c=on:sos=all:ss=axioms:i=1777:si=on:rtra=on_0"); + quick.push("dis+10_1:5_cnfonf=off:e2e=on:fsr=off:prag=on:s2a=on:i=647:si=on:rtra=on_0"); + quick.push("dis+10_1:128_atotf=0.1:fd=off:fsr=off:hflw=5:hfsq=on:hfsqc=5:hfsql=off:hfsqr=1,16:plsq=on:plsqr=9,8:tnu=1:i=1197:si=on:rtra=on_0"); + quick.push("ott+1666_4:1_au=on:bd=off:erd=off:ntd=on:sos=all:i=1038:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:e2e=on:hfsq=on:hfsql=off:lcm=reverse:nm=32:nwc=10.0:s2a=on:s2at=3.0:sd=1:ss=axioms:st=6.0:i=1290:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_acc=on:au=on:bd=off:sgt=16:ss=axioms:tgt=full:i=6550:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cnfonf=off:sos=on:ss=axioms:i=4664:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_afr=on:cs=on:e2e=on:hfsq=on:hfsqc=20:ntd=on:nwc=10.0:s2a=on:i=1215:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_bd=preordered:fde=unused:prag=on:sos=on:i=743:si=on:rtra=on_0"); + // Improves by expected 102.61049630834741 probs costing 119999 Mi // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:avsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=972:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=4577:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2693:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:bsd=on:ins=3:plsq=on:plsqc=1:plsqr=1,1:s2a=on:s2at=3.0:sd=10:sp=weighted_frequency:ss=axioms:i=1655:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2115:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=7155:si=on:rtra=on_0"); quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4273:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=9244:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:e2e=on:fde=none:ins=3:kws=precedence:s2a=on:s2at=5.0:sp=frequency:i=2335:si=on:rtra=on_0"); - quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:avsq=on:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=629:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=3375:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:avsq=on:bs=unit_only:bsr=unit_only:fsr=off:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=5339:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=13120:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:avsq=on:nm=0:s2a=on:s2at=1.5:i=9390:si=on:rtra=on_0"); - quick.push("dis+10_4:1_av=off:cnfonf=off:hud=5:nwc=10.0:s2a=on:s2agt=16:i=2642:si=on:rtra=on_0"); quick.push("dis+21_2:3_cnfonf=conj_eager:fsr=off:sd=1:slsq=on:ss=axioms:st=4.0:i=1845:si=on:rtra=on_0"); - quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=4828:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1033:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6109:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6172:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:av=off:fde=unused:hfsq=on:hfsqr=16,1:hud=10:lma=on:nm=3:piset=and:sos=all:sp=const_frequency:i=9434:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4927:si=on:rtra=on_0"); + quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1805:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6247:si=on:rtra=on_0"); quick.push("dis+1002_1:1_au=on:avsq=on:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=2589:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_alpa=true:anc=none:atotf=0.1:au=on:cnfonf=off:ins=3:nm=64:sd=1:sp=occurrence:ss=axioms:st=5.0:i=2290:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=4408:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=1066:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=4592:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=4280:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1403:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:avsq=on:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=6139:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_au=on:cbe=off:avsq=on:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=5743:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:c=on:chr=on:avsq=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:cnfonf=conj_eager:ins=1:sac=on:sp=const_max:ss=axioms:st=3.0:tgt=ground:i=241:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=9473:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=4492:si=on:rtra=on_0"); + quick.push("dis+10_1:64_cnfonf=lazy_not_be_gen:cond=fast:fsr=off:hud=5:ntd=on:nwc=10.0:sac=on:sd=1:sos=on:sp=const_max:ss=axioms:i=798:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:avsq=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=3218:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=464:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2601:si=on:rtra=on_0"); + quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=11317:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:avsq=on:c=on:chr=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=2545:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=11785:si=on:rtra=on_0"); quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4513:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=10881:si=on:rtra=on_0"); quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=1928:si=on:rtra=on_0"); quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=1063:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:fsr=off:avsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bsd=on:cnfonf=off:avsq=on:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=2214:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:avsq=on:fsr=off:ins=3:kws=frequency:sos=all:i=1479:si=on:rtra=on_0"); quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:s2a=on:s2agt=8:i=2717:si=on:rtra=on_0"); quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=10373:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:bet=on:cbe=off:cnfonf=off:avsq=on:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=1920:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:avsq=on:bet=on:cbe=off:cnfonf=off:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fe=off:sd=2:sgt=16:ss=axioms:i=3303:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=1501:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.3:au=on:cnfonf=off:ins=3:plsq=on:plsqr=208885,1048576:sos=all:spb=goal_then_units:i=2255:si=on:rtra=on_0"); + quick.push("dis+10_1:12_cnfonf=conj_eager:ss=axioms:st=3.0:tgt=full:i=620:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3365:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fde=none:ss=axioms:i=1579:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:avsq=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=15001:si=on:rtra=on_0"); - quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1635:si=on:rtra=on_0"); - quick.push("ott+1002_16:1_au=on:bsr=unit_only:fsr=off:sac=on:sos=on:i=4338:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=1486:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:avsq=on:nm=0:sd=1:ss=axioms:i=556:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=490:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=7308:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1367:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=3577:si=on:rtra=on_0"); quick.push("lrs+21_1:1_aac=none:c=on:cnfonf=lazy_not_gen:sos=on:i=3633:si=on:rtra=on_0"); + quick.push("dis+1004_1:5_avsq=on:cs=on:e2e=on:ins=2:sos=all:i=1188:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=357:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=568:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=552:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=18654:si=on:rtra=on_0"); quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=5301:si=on:rtra=on_0"); - quick.push("dis+1010_5:1_cnfonf=lazy_pi_sigma_gen:fe=off:hud=10:sd=1:ss=axioms:st=1.5:i=2416:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_alpa=true:au=on:cnfonf=lazy_pi_sigma_gen:sos=on:i=694:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=4267:si=on:rtra=on_0"); - quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=981:si=on:rtra=on_0"); + quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=909:si=on:rtra=on_0"); quick.push("lrs+10_5:1_av=off:cnfonf=lazy_pi_sigma_gen:nwc=5.0:prag=on:s2a=on:s2agt=16:i=3801:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=preordered:hud=15:kws=precedence:nm=16:sd=3:sgt=16:sos=on:sp=frequency:ss=axioms:i=480:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=preordered:hud=15:kws=precedence:nm=16:sd=3:sgt=16:sos=on:sp=frequency:ss=axioms:i=668:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_aac=none:bd=off:ins=2:sos=on:sp=reverse_frequency:ss=axioms:i=559:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:c=on:cnfonf=off:kws=inv_precedence:piset=and:sd=1:ss=axioms:tgt=ground:tnu=2:i=9010:si=on:rtra=on_0"); quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1342:si=on:rtra=on_0"); - quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=9075:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); - // Improves by expected 87.6986428831153 probs costing 239816 Mi + quick.push("dis+10_8:1_au=on:nwc=10.0:sos=all:i=3282:si=on:rtra=on_0"); + quick.push("lrs-4_1:1_sd=1:sgt=8:sos=all:ss=axioms:i=882:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=5939:si=on:rtra=on_0"); + quick.push("ott+10_1:64_aac=none:acc=on:au=on:avsq=on:avsqr=2,15:cnfonf=lazy_not_gen_be_off:ins=1:tgt=full:i=3310:si=on:rtra=on_0"); + quick.push("ott+10_2:1_au=on:cnfonf=off:ins=1:plsq=on:plsqc=1:plsqr=10813507,131072:i=6244:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:sos=all:ss=axioms:i=1198:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_afr=on:cs=on:e2e=on:hfsq=on:hfsqc=20:ntd=on:nwc=10.0:s2a=on:i=4753:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=4954:si=on:rtra=on_0"); + // Improves by expected 83.63371839116107 probs costing 239607 Mi // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:avsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19923:si=on:rtra=on_0"); + quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19923:si=on:rtra=on_0"); quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=13542:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1997:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:bsd=on:ins=3:plsq=on:plsqc=1:plsqr=1,1:s2a=on:s2at=3.0:sd=10:sp=weighted_frequency:ss=axioms:i=1655:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2115:si=on:rtra=on_0"); quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("ott+10_5:4_au=on:bs=unit_only:bsr=unit_only:fsr=off:avsq=on:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1968:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); + quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=1623:si=on:rtra=on_0"); + quick.push("ott+10_1:1_atotf=0.1:bd=off:cnfonf=off:cs=on:ins=2:nwc=3.0:sd=10:ss=axioms:i=3771:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=925:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=14632:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:plsq=on:sos=on:i=9176:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=15358:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=12374:si=on:rtra=on_0"); quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1557:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_chr=on:cnfonf=lazy_not_be_gen:fde=none:hud=5:ins=2:kws=precedence:prag=on:sos=on:sp=occurrence:spb=goal_then_units:ss=axioms:i=1042:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:avsq=on:e2e=on:nm=0:s2a=on:s2at=1.5:i=15824:si=on:rtra=on_0"); + quick.push("dis+1004_1:4_av=off:e2e=on:hud=3:prag=on:sos=on:ss=axioms:i=953:si=on:rtra=on_0"); quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=5996:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:avsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=14840:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4504:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=14840:si=on:rtra=on_0"); quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); + quick.push("lrs+2_1:6_apa=on:cnfonf=off:e2e=on:fe=off:fsr=off:hud=1:prag=on:sos=on:sp=unary_frequency:i=9099:si=on:rtra=on_0"); + quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1042:si=on:rtra=on_0"); quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6109:si=on:rtra=on_0"); - quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=12797:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6247:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_alpa=true:anc=none:atotf=0.1:au=on:cnfonf=off:ins=3:nm=64:sd=1:sp=occurrence:ss=axioms:st=5.0:i=6117:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=7827:si=on:rtra=on_0"); quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=3081:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=1332:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=19144:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:av=off:bs=unit_only:bsr=unit_only:e2e=on:er=filter:fde=unused:lecc=1.3:nm=4:sp=frequency:i=11051:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_au=on:av=off:cnfonf=off:cond=fast:nm=6:sos=all:i=4759:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=1340:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_apa=on:au=on:bsr=on:cnfonf=off:fe=off:nm=32:prag=on:sac=on:sos=on:sp=unary_first:ss=axioms:i=1895:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=4581:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4854:si=on:rtra=on_0"); quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=11200:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=1488:si=on:rtra=on_0"); - quick.push("dis+2_16:1_au=on:bd=off:cbe=off:fd=preordered:fde=unused:fsr=off:avsq=on:nwc=10.0:i=38001:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_bd=off:cnfonf=off:avsq=on:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2642:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:c=on:chr=on:avsq=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=3344:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14683:si=on:rtra=on_0"); - quick.push("dis+21_4:1_av=off:bsr=unit_only:cbe=off:e2e=on:hud=1:prag=on:sp=unary_first:ss=axioms:i=4170:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=5696:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=2277:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=870:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:sd=2:sos=on:ss=axioms:i=1561:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_avsq=on:bd=off:cnfonf=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=4597:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:avsq=on:c=on:chr=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=6520:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=1303:si=on:rtra=on_0"); quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=8152:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_av=off:prag=on:sos=all:sp=frequency:i=7003:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:fsr=off:avsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bsd=on:cnfonf=off:avsq=on:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=1319:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=6719:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:avsq=on:fsr=off:ins=3:kws=frequency:sos=all:i=1479:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_avsq=on:bsd=on:cnfonf=off:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=1368:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=964:si=on:rtra=on_0"); quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=791:si=on:rtra=on_0"); quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2154:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2146:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=8947:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=21393:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=2167:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=3758:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_au=on:bs=unit_only:c=on:cnfonf=off:fde=none:kws=inv_arity_squared:nm=32:nwc=5.0:sos=on:i=12312:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=724:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:piset=pi_sigma:plsq=on:plsqr=9,2:prag=on:sd=1:sgt=32:sp=occurrence:ss=axioms:uhcvi=on:i=3366:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1384:si=on:rtra=on_0"); quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1540:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:avsq=on:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=57747:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:avsq=on:hud=18:nm=2:rp=on:sos=all:sp=reverse_frequency:ss=axioms:i=10173:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:avsq=on:fde=unused:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=61085:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=1486:si=on:rtra=on_0"); + quick.push("dis+1004_1:5_avsq=on:cs=on:e2e=on:ins=2:sos=all:i=1188:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); - quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=45918:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_gen:fde=none:sd=1:ss=axioms:i=2205:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=9755:si=on:rtra=on_0"); - quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2566:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1141:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=20139:si=on:rtra=on_0"); + quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=909:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=30846:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=9747:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=751:si=on:rtra=on_0"); quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1342:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:avsq=on:lcm=reverse:prag=on:sac=on:sos=on:i=5733:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); - // Improves by expected 70.77019844793129 probs costing 478707 Mi + quick.push("lrs+1002_1:16_abs=on:acc=model:au=on:bsr=unit_only:e2e=on:fde=none:sos=on:sp=const_frequency:i=5109:si=on:rtra=on_0"); + quick.push("ott+10_4:1_au=on:cnfonf=lazy_gen:fde=unused:kws=precedence:s2a=on:s2at=2.0:sd=1:ss=axioms:st=5.0:i=1125:si=on:rtra=on_0"); + quick.push("dis+10_1:128_atotf=0.1:fd=off:fsr=off:hflw=5:hfsq=on:hfsqc=5:hfsql=off:hfsqr=1,16:plsq=on:plsqr=9,8:tnu=1:i=1197:si=on:rtra=on_0"); + quick.push("ott+1666_4:1_au=on:bd=off:erd=off:ntd=on:sos=all:i=1038:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:e2e=on:hfsq=on:hfsql=off:lcm=reverse:nm=32:nwc=10.0:s2a=on:s2at=3.0:sd=1:ss=axioms:st=6.0:i=3014:si=on:rtra=on_0"); + quick.push("dis+1004_1:1_cnfonf=lazy_gen:fe=off:sd=1:sgt=30:slsq=on:ss=axioms:i=9638:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_bet=on:cnfonf=lazy_not_gen:fde=unused:nwc=10.0:sd=1:sp=unary_first:ss=axioms:i=6897:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:sos=all:ss=axioms:i=7846:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=12360:si=on:rtra=on_0"); + // Improves by expected 68.48008648144638 probs costing 479536 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1982:si=on:rtra=on_0"); - quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=6565:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:bsd=on:ins=3:plsq=on:plsqc=1:plsqr=1,1:s2a=on:s2at=3.0:sd=10:sp=weighted_frequency:ss=axioms:i=1655:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1997:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=4783:si=on:rtra=on_0"); quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=4969:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:e2e=on:fde=none:ins=3:kws=precedence:s2a=on:s2at=5.0:sp=frequency:i=2967:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=12435:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=4245:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=5570:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=925:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=68605:si=on:rtra=on_0"); quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1526:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:e2e=on:avsq=on:nm=0:s2a=on:s2at=1.5:i=20100:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:bd=off:fde=none:ins=3:sos=on:sp=unary_first:i=6916:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=13084:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=13141:si=on:rtra=on_0"); quick.push("lrs+1010_1:64_acc=model:anc=all:bd=off:bsd=on:bsr=on:ins=3:ntd=on:prag=on:sos=all:i=40579:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_fde=none:avsq=on:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=41023:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_apa=on:au=on:cnfonf=off:fde=unused:fsr=off:ins=2:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=16648:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:cnfonf=lazy_not_be_gen:nwc=5.0:piset=and:plsq=on:plsqc=1:plsqr=1,1:sp=reverse_frequency:tgt=ground:i=4630:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=37097:si=on:rtra=on_0"); quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:avsq=on:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6109:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:hud=15:sos=on:i=1967:si=on:rtra=on_0"); + quick.push("ott+10_1:1_cbe=off:cnfonf=lazy_gen:ins=3:nwc=10.0:s2a=on:i=10040:si=on:rtra=on_0"); + quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1042:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:avsq=on:cbe=off:fde=none:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); + quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=4783:si=on:rtra=on_0"); quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:avsq=on:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=5561:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=2579:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=65701:si=on:rtra=on_0"); - quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=67668:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=1332:si=on:rtra=on_0"); - quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=69646:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=9162:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4186:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:cnfonf=conj_eager:avsq=on:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=26143:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_bd=off:cnfonf=off:avsq=on:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=17650:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=3319:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:avsq=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=3218:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_avsq=on:bd=off:cnfonf=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=18139:si=on:rtra=on_0"); quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=14073:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=2406:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_au=on:bd=preordered:e2e=on:ins=3:kws=inv_frequency:nwc=10.0:sp=const_min:i=7899:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=9800:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=2779:si=on:rtra=on_0"); - quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=5088:si=on:rtra=on_0"); + quick.push("dis+21_8:1_au=on:cbe=off:cnfonf=off:hud=15:nwc=5.0:piset=not:sos=all:sp=unary_frequency:ss=axioms:i=6753:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=3344:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_au=on:bd=preordered:e2e=on:ins=3:kws=inv_frequency:nwc=10.0:sp=const_min:i=7911:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4081:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=1325:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=10373:si=on:rtra=on_0"); quick.push("dis+10_4:1_atotf=0.3:bs=on:cnfonf=lazy_simp:fe=axiom:gs=on:nm=0:nwc=10.0:sp=const_frequency:i=23452:si=on:rtra=on_0"); quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=14769:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:fsr=off:avsq=on:ins=3:kws=frequency:sos=all:i=1460:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9504:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:avsq=on:fsr=off:ins=3:kws=frequency:sos=all:i=1479:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=lazy_not_gen:fe=off:hud=15:ins=2:nm=16:prag=on:uhcvi=on:i=17013:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9328:si=on:rtra=on_0"); quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=18879:si=on:rtra=on_0"); - quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=2308:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=1895:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=9251:si=on:rtra=on_0"); quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=3159:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2146:si=on:rtra=on_0"); + quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2778:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=5318:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=1458:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=100206:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=33343:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2695:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=13229:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:piset=pi_sigma:plsq=on:plsqr=9,2:prag=on:sd=1:sgt=32:sp=occurrence:ss=axioms:uhcvi=on:i=3366:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); + quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1540:si=on:rtra=on_0"); + quick.push("dis+1004_1:5_avsq=on:cs=on:e2e=on:ins=2:sos=all:i=1188:si=on:rtra=on_0"); quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=15049:si=on:rtra=on_0"); - quick.push("ott+1010_44:25_afr=on:c=on:cnfonf=off:e2e=on:fd=preordered:avsq=on:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7623:si=on:rtra=on_0"); + quick.push("ott+1010_44:25_afr=on:avsq=on:c=on:cnfonf=off:e2e=on:fd=preordered:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7623:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:avsq=on:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); - quick.push("dis+1002_1:5_au=on:bsr=on:fde=unused:piset=not:sos=on:i=4675:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_avsq=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_au=on:cnfonf=lazy_gen:fsr=off:hfsq=on:hfsqr=1,32:sgt=16:ss=axioms:i=23300:si=on:rtra=on_0"); quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=34824:si=on:rtra=on_0"); - quick.push("dis+1010_5:1_cnfonf=lazy_pi_sigma_gen:fe=off:hud=10:sd=1:ss=axioms:st=1.5:i=2416:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_alpa=true:au=on:cnfonf=lazy_pi_sigma_gen:sos=on:i=1701:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=23428:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=15440:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=14011:si=on:rtra=on_0"); quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); - quick.push("lrs+1002_2:1_fde=unused:kws=inv_frequency:ntd=on:i=8145:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=13248:si=on:rtra=on_0"); quick.push("lrs+10_1:1_av=off:c=on:cnfonf=off:kws=inv_precedence:piset=and:sd=1:ss=axioms:tgt=ground:tnu=2:i=20260:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); + quick.push("dis+10_2:3_avsq=on:fd=off:fde=none:lcm=reverse:prag=on:sac=on:sos=on:i=4887:si=on:rtra=on_0"); + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=24752:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); - // Improves by expected 48.80301293339291 probs costing 958213 Mi + quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=2286:si=on:rtra=on_0"); + quick.push("ott+10_4:1_au=on:cnfonf=lazy_gen:fde=unused:kws=precedence:s2a=on:s2at=2.0:sd=1:ss=axioms:st=5.0:i=1125:si=on:rtra=on_0"); + quick.push("lrs+1_1:1_acc=on:au=on:ccuc=first:erd=off:fde=none:fsr=off:nm=10:ntd=on:s2a=on:s2at=5.0:i=17270:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:sd=1:ss=axioms:i=2489:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:plsq=on:plsqc=1:plsqr=32,1:sos=on:sp=const_frequency:ss=axioms:st=3.0:i=9026:si=on:rtra=on_0"); + quick.push("ott+1002_17:12_au=on:ins=3:sac=on:sd=3:sos=on:sp=occurrence:ss=axioms:i=2265:si=on:rtra=on_0"); + quick.push("dis+10_1:128_atotf=0.1:fd=off:fsr=off:hflw=5:hfsq=on:hfsqc=5:hfsql=off:hfsqr=1,16:plsq=on:plsqr=9,8:tnu=1:i=1197:si=on:rtra=on_0"); + quick.push("dis+10_1:3_au=on:av=off:cha=on:cnfonf=conj_eager:etr=on:fde=none:nwc=3.0:sp=weighted_frequency:i=12872:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=4954:si=on:rtra=on_0"); + // Improves by expected 49.127566684028515 probs costing 957834 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+10_4:1_e2e=on:fde=none:avsq=on:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=18622:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=4969:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:bsd=on:c=on:fde=none:piset=equals:sac=on:sp=const_min:i=76578:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=25642:si=on:rtra=on_0"); + quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=18622:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=4533:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=5570:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=44027:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=4753:si=on:rtra=on_0"); quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=6251:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=2325:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:avsq=on:e2e=on:nm=0:s2a=on:s2at=1.5:i=11778:si=on:rtra=on_0"); quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); - quick.push("ott+1002_1:2_au=on:hud=10:nwc=5.0:prag=on:sgt=20:sos=all:ss=axioms:st=4.0:i=16193:si=on:rtra=on_0"); - quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=21290:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=6900:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:cnfonf=lazy_not_be_gen:nwc=5.0:piset=and:plsq=on:plsqc=1:plsqr=1,1:sp=reverse_frequency:tgt=ground:i=11020:si=on:rtra=on_0"); - quick.push("ott+10_1:1_cbe=off:cnfonf=lazy_gen:ins=3:nwc=10.0:s2a=on:i=10040:si=on:rtra=on_0"); - quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=9162:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=4280:si=on:rtra=on_0"); - quick.push("ott+10_1:1_afp=2000:bsr=unit_only:chr=on:avsq=on:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); + quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=22053:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=46089:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:e2e=on:hud=15:s2a=on:sos=on:ss=axioms:tnu=1:i=5292:si=on:rtra=on_0"); + quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1805:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_acc=model:avsq=on:ccuc=small_ones:cnfonf=lazy_simp:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=22253:si=on:rtra=on_0"); + quick.push("ott+10_1:1_afp=2000:avsq=on:bsr=unit_only:chr=on:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=6236:si=on:rtra=on_0"); quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=9076:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=2406:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=9800:si=on:rtra=on_0"); + quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=28120:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14683:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=5696:si=on:rtra=on_0"); quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=85280:si=on:rtra=on_0"); - quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=7190:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=5762:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_au=on:av=off:fde=unused:fsr=off:i=57910:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:fde=none:nm=10:sos=on:i=7053:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=5088:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=10373:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=lazy_not_gen:fe=off:hud=15:ins=2:nm=16:prag=on:uhcvi=on:i=17013:si=on:rtra=on_0"); quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=5915:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2146:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2778:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=5318:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_hfsq=on:hud=10:ins=2:prag=on:sac=on:sp=const_frequency:i=48810:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:avsq=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=7597:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2946:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:fde=unused:avsq=on:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=92639:si=on:rtra=on_0"); - quick.push("ott+1010_44:25_afr=on:c=on:cnfonf=off:e2e=on:fd=preordered:avsq=on:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7601:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=6177:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_au=on:bs=unit_only:c=on:cnfonf=off:fde=none:kws=inv_arity_squared:nm=32:nwc=5.0:sos=on:i=12312:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:piset=pi_sigma:plsq=on:plsqr=9,2:prag=on:sd=1:sgt=32:sp=occurrence:ss=axioms:uhcvi=on:i=3366:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2946:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:avsq=on:fde=unused:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=90050:si=on:rtra=on_0"); + quick.push("ott+1010_44:25_afr=on:avsq=on:c=on:cnfonf=off:e2e=on:fd=preordered:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7601:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_cnfonf=lazy_pi_sigma_gen:fe=axiom:avsq=on:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_avsq=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=19281:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=95283:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4730:si=on:rtra=on_0"); - quick.push("lrs+1010_1:5_cnfonf=lazy_pi_sigma_gen:kws=precedence:nm=32:nwc=10.0:sp=const_frequency:i=5785:si=on:rtra=on_0"); - quick.push("lrs+1002_2:1_fde=unused:kws=inv_frequency:ntd=on:i=6161:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=44526:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_av=off:cnfonf=lazy_pi_sigma_gen:nwc=5.0:prag=on:s2a=on:s2agt=16:i=3801:si=on:rtra=on_0"); - quick.push("dis+10_2:3_fd=off:fde=none:avsq=on:lcm=reverse:prag=on:sac=on:sos=on:i=6096:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=95997:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4759:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=80153:si=on:rtra=on_0"); + quick.push("dis+10_2:3_avsq=on:fd=off:fde=none:lcm=reverse:prag=on:sac=on:sos=on:i=4887:si=on:rtra=on_0"); quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=85427:si=on:rtra=on_0"); quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=15115:si=on:rtra=on_0"); - // Improves by expected 21.639246074651492 probs costing 959472 Mi + quick.push("lrs+10_1:1_au=on:fde=none:sos=all:i=11130:si=on:rtra=on_0"); + quick.push("ott+1002_17:12_au=on:ins=3:sac=on:sd=3:sos=on:sp=occurrence:ss=axioms:i=2265:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_bet=on:cnfonf=lazy_not_gen:fde=unused:nwc=10.0:sd=1:sp=unary_first:ss=axioms:i=6897:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:sos=all:ss=axioms:i=4492:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=11980:si=on:rtra=on_0"); + // Improves by expected 20.832310444427776 probs costing 953511 Mi // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=8098:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=74409:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:bsd=on:c=on:fde=none:piset=equals:sac=on:sp=const_min:i=71177:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=15983:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=26900:si=on:rtra=on_0"); quick.push("lrs+1010_1:64_acc=model:anc=all:bd=off:bsd=on:bsr=on:ins=3:ntd=on:prag=on:sos=all:i=40579:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_apa=on:au=on:cnfonf=off:fde=unused:fsr=off:ins=2:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=16648:si=on:rtra=on_0"); quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=18776:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=46089:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:cbe=off:fde=none:avsq=on:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); + quick.push("lrs+2_1:6_apa=on:cnfonf=off:e2e=on:fe=off:fsr=off:hud=1:prag=on:sos=on:sp=unary_frequency:i=9099:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:e2e=on:hud=15:s2a=on:sos=on:ss=axioms:tnu=1:i=5292:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:avsq=on:cbe=off:fde=none:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_c=on:cnfonf=off:hud=15:rawr=on:sd=1:sos=all:ss=axioms:i=73159:si=on:rtra=on_0"); quick.push("dis+1010_1:5_au=on:avsq=on:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=11506:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:av=off:bs=unit_only:bsr=unit_only:e2e=on:er=filter:fde=unused:lecc=1.3:nm=4:sp=frequency:i=18598:si=on:rtra=on_0"); quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cnfonf=lazy_not_gen_be_off:inj=on:ins=2:nwc=5.0:s2a=on:i=12558:si=on:rtra=on_0"); quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=6236:si=on:rtra=on_0"); - quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=6900:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:cnfonf=off:hud=10:nm=10:ntd=on:s2a=on:sac=on:sgt=30:ss=included:i=23873:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=152983:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=44097:si=on:rtra=on_0"); + quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=15576:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=off:hud=10:nm=10:ntd=on:s2a=on:sac=on:sgt=30:ss=included:i=41932:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=11232:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=188785:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=9862:si=on:rtra=on_0"); quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9102:si=on:rtra=on_0"); quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=13047:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_aac=none:au=on:bd=off:cnfonf=off:nm=0:s2at=3.0:s2pl=on:sac=on:sos=on:i=74001:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=71269:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:e2e=on:avsq=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=13229:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:bs=unit_only:cnfonf=off:fe=axiom:avsq=on:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); - quick.push("lrs+666_1:1_au=on:bs=unit_only:e2e=on:sd=1:sp=frequency:ss=axioms:i=40189:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_aac=none:au=on:bd=off:cnfonf=off:nm=0:s2at=3.0:s2pl=on:sac=on:sos=on:i=74823:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=111726:si=on:rtra=on_0"); + quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=9441:si=on:rtra=on_0"); quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:bet=on:cnfonf=lazy_not_be_gen:cond=on:sp=const_max:i=18513:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_avsq=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:prag=on:slsq=on:slsqr=4,1:i=23141:si=on:rtra=on_0"); - quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=7904:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=10798:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=25623:si=on:rtra=on_0"); - // Improves by expected 11.635409169854102 probs costing 957999 Mi - // Wed12 Overall score 3048.3069003468577 probs on average / budget 3833691 Mi + quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=44526:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=15115:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=4811:si=on:rtra=on_0"); + // Improves by expected 11.519827354524478 probs costing 955651 Mi + // Fri14 Overall score 3061.786675181413 probs on average / budget 3825887 Mi + // Wed12 Overall score 3048.3069003468577 probs on average / budget 3833691 Mi // Tue11 Overall score 3039.0840598543527 probs on average / budget 3828761 Mi // Mon10b Overall score 3037.186917544398 probs on average / budget 3813568 Mi // Mon10a Overall score 3000.409829293265 probs on average / budget 3825232 Mi diff --git a/CASC/Schedules.hpp b/CASC/Schedules.hpp index f27614cc90..6853a143ef 100644 --- a/CASC/Schedules.hpp +++ b/CASC/Schedules.hpp @@ -48,7 +48,6 @@ class Schedules #if VHOL static void getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick); static void getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick); - static void getSnakeSlh2Schedule(const Shell::Property& property, Schedule& quick); #endif }; diff --git a/Shell/Options.cpp b/Shell/Options.cpp index bbd3d67794..411ac4aa9c 100644 --- a/Shell/Options.cpp +++ b/Shell/Options.cpp @@ -170,7 +170,6 @@ void Options::init() #if VHOL "snake_tptp_hol", "snake_slh", - "snake_slh2", #endif "struct_induction"}); _schedule.description = "Schedule to be run by the portfolio mode. casc and smtcomp usually point to the most recent schedule in that category. file loads the schedule from a file specified in --schedule_file. Note that some old schedules may contain option values that are no longer supported - see ignore_missing."; diff --git a/Shell/Options.hpp b/Shell/Options.hpp index 6eac2cd680..3f018ba0f2 100644 --- a/Shell/Options.hpp +++ b/Shell/Options.hpp @@ -424,7 +424,6 @@ class Options #if VHOL SNAKE_TPTP_HOL, SNAKE_SLH, - SNAKE_SLH2, #endif STRUCT_INDUCTION }; From 00a43c5451493bd4a78cf3883a1012af9c5bdca7 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Sun, 16 Jul 2023 06:21:03 +0000 Subject: [PATCH 199/210] also a new HOL sched sprinkled with hfsq --- CASC/Schedules.cpp | 778 +++++++++++++++++++++++---------------------- 1 file changed, 393 insertions(+), 385 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 0fbce52a05..d9f87d186f 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -4991,469 +4991,477 @@ void Schedules::getSnakeTptpSatSchedule(const Shell::Property& property, Schedul void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedule& quick) { // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit - quick.push("dis+10_1:128_hud=1:i=96:si=on:rtra=on_0"); - quick.push("lrs+10_1:2_cnfonf=off:hud=1:inj=on:i=36:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_au=on:c=on:fsr=off:piset=equals:i=34:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=385:si=on:rtra=on_0"); - quick.push("dis+1002_1:128_acc=on:er=filter:i=17:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:kws=inv_arity:plsq=on:plsqc=1:plsqr=32,1:prag=on:sp=const_frequency:i=74:si=on:rtra=on_0"); - quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=915:si=on:rtra=on_0"); - quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=21:si=on:rtra=on_0"); - quick.push("lrs-3_1:1024_cbe=off:chr=on:tnu=1:i=7:si=on:rtra=on_0"); - quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=1021:si=on:rtra=on_0"); - quick.push("lrs-1004_1:1_au=on:bsd=on:cbe=off:cnfonf=off:fe=axiom:fsd=on:i=71:si=on:rtra=on_0"); - quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=9:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=1044:si=on:rtra=on_0"); - quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=128:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_cond=on:e2e=on:i=61:si=on:rtra=on_0"); - quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=14:si=on:rtra=on_0"); - quick.push("lrs+2_5:1_cnfonf=lazy_not_be_gen:hud=10:inj=on:ntd=on:tnu=1:i=2:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=1041:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_cnfonf=lazy_not_gen_be_off:hud=1:ins=1:i=11:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sgt=16:ss=axioms:i=140:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=preordered:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=10:ixr=off:prag=on:i=26:si=on:rtra=on_0"); - quick.push("lrs+1002_1:4_au=on:av=off:bsr=on:cbe=off:nm=2:i=56:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=183:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=4:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cbe=off:chr=on:fsr=off:hfsq=on:nm=64:sos=theory:sp=weighted_frequency:i=27:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:inj=on:i=2:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=2:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=275:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=18:si=on:rtra=on_0"); quick.push("lrs+10_1:1_bet=on:cnfonf=off:fd=off:hud=5:inj=on:i=3:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=19:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=44:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=191:si=on:rtra=on_0"); - quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=105:si=on:rtra=on_0"); - quick.push("ott+21_1:1_apa=on:au=on:cnfonf=off:sos=on:i=3:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=238:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=37:si=on:rtra=on_0"); + quick.push("lrs+2_16:1_acc=model:au=on:bd=off:c=on:e2e=on:nm=2:sos=all:i=15:si=on:rtra=on_0"); + quick.push("dis+21_1:1_cbe=off:cnfonf=off:fs=off:fsr=off:hud=1:inj=on:i=3:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=1041:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:chr=on:plsq=on:slsq=on:i=7:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=16:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:cnfonf=off:fd=preordered:fe=off:fsr=off:hud=11:inj=on:kws=precedence:s2pl=no:sp=weighted_frequency:tgt=full:i=3:si=on:rtra=on_0"); quick.push("lrs+2_1:1_apa=on:au=on:bd=preordered:cnfonf=off:cs=on:ixr=off:sos=on:i=3:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:fd=off:fe=off:kws=frequency:spb=intro:i=4:si=on:rtra=on_0"); - quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=149:si=on:rtra=on_0"); - quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=150:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=199:si=on:rtra=on_0"); - quick.push("lrs+21_1:16_au=on:bd=off:piset=and:i=39:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=721:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=3:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=7:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_add=large:cnfonf=lazy_pi_sigma_gen:fe=off:prag=on:i=3:si=on:rtra=on_0"); + quick.push("dis+1004_1:1_cha=on:cs=on:fe=off:hud=1:i=4:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_anc=all_dependent:au=on:cbe=off:fde=unused:ntd=on:i=18:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:c=on:sac=on:slsq=on:slsqc=2:i=218:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_not_gen:fsr=off:kws=precedence:nwc=5.0:s2a=on:ss=axioms:st=1.5:i=448:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:sgt=8:ss=axioms:i=710:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); + quick.push("dis+1002_5:1_au=on:bd=off:e2e=on:fde=none:fs=off:fsr=off:sos=on:i=902:si=on:rtra=on_0"); + quick.push("dis+21_1:8_apa=on:cnfonf=off:fd=off:fsr=off:hud=0:ins=1:kws=inv_frequency:nwc=10.0:ss=axioms:st=5.0:i=21:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:i=5:si=on:rtra=on_0"); quick.push("lrs+2_1:1_cnfonf=lazy_not_gen_be_off:cs=on:fe=off:hud=10:inj=on:ins=3:plsq=on:plsqc=1:sd=10:ss=axioms:tnu=1:i=6:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=off:cs=on:hud=3:prag=on:sup=off:i=9:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_acc=on:amm=sco:cs=on:tgt=full:i=16:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=40:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:inj=on:i=2:si=on:rtra=on_0"); - quick.push("lrs+10_1:10_au=on:av=off:cbe=off:cnfonf=lazy_pi_sigma_gen:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=98:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_chr=on:prag=on:i=8:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_au=on:c=on:fsr=off:piset=equals:i=377:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=779:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_not_be_gen:ntd=on:sp=const_min:ss=axioms:sup=off:i=19:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=879:si=on:rtra=on_0"); + quick.push("dis+1002_1:128_acc=on:er=filter:i=17:si=on:rtra=on_0"); + quick.push("ott+21_1:1_apa=on:au=on:cnfonf=off:sos=on:i=3:si=on:rtra=on_0"); + quick.push("lrs+1010_1:8_cnfonf=off:hud=1:inj=on:tnu=5:i=30:si=on:rtra=on_0"); + quick.push("dis+10_1:1_ixr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:i=127:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=100:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=3:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:avsq=on:e2e=on:ins=3:s2a=on:s2at=3.0:ss=axioms:i=20:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=86:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:cnfonf=off:fd=preordered:fe=off:fsr=off:hud=11:inj=on:kws=precedence:s2pl=no:sp=weighted_frequency:tgt=full:i=3:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:hud=10:ntd=on:ss=included:i=294:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=274:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=107:si=on:rtra=on_0"); + quick.push("lrs+2_1:1024_cnfonf=lazy_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:i=39:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_gen:fsr=off:kws=precedence:nwc=5.0:s2a=on:ss=axioms:st=1.5:i=448:si=on:rtra=on_0"); + quick.push("lrs+10_1:512_au=on:fde=unused:lma=on:nm=32:plsq=on:plsqc=1:plsqr=16121663,131072:sfv=off:sp=const_max:ss=axioms:st=3.0:tgt=full:i=46:si=on:rtra=on_0"); + quick.push("lrs+10_1:10_au=on:av=off:cbe=off:cnfonf=lazy_pi_sigma_gen:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=98:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=507:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=149:si=on:rtra=on_0"); + quick.push("lrs+21_1:16_au=on:bd=off:piset=and:i=39:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:gs=on:hud=10:prag=on:tnu=1:i=6:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1087:si=on:rtra=on_0"); quick.push("dis+10_1:1_aac=none:cs=on:i=47:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=lazy_not_be_gen:hud=14:prag=on:sp=weighted_frequency:tnu=1:i=37:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_av=off:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:i=3:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_au=on:e2e=on:avsq=on:ins=3:s2a=on:s2at=3.0:ss=axioms:i=19:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:i=5:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:gs=on:hud=10:prag=on:tnu=1:i=44:si=on:rtra=on_0"); - quick.push("ott+21_1:3_bd=off:cnfonf=lazy_gen:fe=off:avsq=on:hud=10:ixr=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=450:si=on:rtra=on_0"); - quick.push("dis+1004_1:128_au=on:cbe=off:e2e=on:sac=on:i=102:si=on:rtra=on_0"); - // Improves by expected 2315.393835274976 probs costing 9586 Mi + quick.push("lrs+1010_1:128_av=off:cbe=off:cnfonf=lazy_simp:fsr=off:ntd=on:ss=axioms:st=1.5:i=44:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=432:si=on:rtra=on_0"); + quick.push("lrs+10_7:1_cnfonf=lazy_gen:fe=off:nwc=5.0:plsq=on:i=62:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_add=large:amm=off:anc=all_dependent:chr=on:fd=off:ins=2:sp=const_max:tnu=5:uhcvi=on:i=31:si=on:rtra=on_0"); + quick.push("dis+10_1:128_hud=1:i=96:si=on:rtra=on_0"); + quick.push("lrs+1002_1:4_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:hud=15:inj=on:nwc=4.0:s2a=on:sac=on:sp=reverse_arity:i=453:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_au=on:bsd=on:cbe=off:cnfonf=off:fe=axiom:fsd=on:i=71:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=83:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_cnfonf=lazy_not_gen_be_off:hud=1:ins=1:i=11:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=41:si=on:rtra=on_0"); + // Improves by expected 2321.3567788514306 probs costing 9599 Mi // Sub-schedule for 1200Mi strat cap / 9600Mi overall limit + quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:cnfonf=off:e2e=on:nm=32:i=150:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:s2a=on:sd=7:ss=axioms:st=1.5:i=343:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_cbe=off:chr=on:hfsq=on:hfsqr=1,16:hud=3:sac=on:sp=unary_frequency:ss=axioms:st=5.0:tnu=2:i=109:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:c=on:e2e=on:fsr=off:sos=all:sp=const_frequency:ss=axioms:i=253:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sgt=16:ss=axioms:i=140:si=on:rtra=on_0"); + quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=614:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=202:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cs=on:ins=3:kws=inv_frequency:nwc=10.0:ss=axioms:st=3.0:i=339:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=283:si=on:rtra=on_0"); quick.push("dis+2_1:1_cha=on:hud=7:nwc=3.0:prag=on:tnu=2:i=134:si=on:rtra=on_0"); - quick.push("dis+21_1:5_au=on:ntd=on:nwc=5.0:s2a=on:ss=axioms:st=5.0:i=204:si=on:rtra=on_0"); - quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=424:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_gen_be_off:fsr=off:spb=non_intro:i=41:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=298:si=on:rtra=on_0"); + quick.push("lrs+2_1:8_erd=off:plsq=on:plsqr=32,1:sos=on:i=192:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:hud=1:nm=0:prag=on:sd=2:sgt=32:sos=all:ss=axioms:i=258:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=90:si=on:rtra=on_0"); quick.push("dis+1004_16:1_avsq=on:avsqr=1,16:cnfonf=lazy_gen:cs=on:fe=off:tgt=ground:tnu=1:i=231:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=70:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=297:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=182:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=130:si=on:rtra=on_0"); - quick.push("lrs+21_1:16_au=on:cbe=off:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=7,4:i=570:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:sgt=32:slsq=on:slsqc=1:slsql=off:ss=axioms:i=458:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_add=large:amm=off:anc=all_dependent:chr=on:fd=off:ins=2:sp=const_max:tnu=5:uhcvi=on:i=31:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:s2a=on:sp=weighted_frequency:ss=axioms:i=297:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=190:si=on:rtra=on_0"); - quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=96:si=on:rtra=on_0"); + quick.push("dis+2_1:4_amm=off:au=on:cbe=off:cnfonf=lazy_gen:hfaw=0:hfsq=on:hfsql=off:plsq=on:plsqc=1:plsqr=35,4:sac=on:i=987:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_avsq=on:avsqc=4:avsqr=584411,1048576:bd=off:bet=on:br=off:chr=on:fsd=on:fsdmm=1:hud=10:nm=0:ntd=on:nwc=9.0:piset=or:plsq=on:plsqc=2:plsql=on:plsqr=852219,1048576:rawr=on:sp=const_frequency:spb=units:i=182:si=on:rtra=on_0"); quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=182:si=on:rtra=on_0"); - quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); - quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=390:si=on:rtra=on_0"); - quick.push("lrs+2_1:8_erd=off:plsq=on:plsqr=32,1:sos=on:i=192:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_cnfonf=lazy_simp:fd=off:i=279:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:ixr=off:i=25:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=940:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=422:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:hud=7:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=103:si=on:rtra=on_0"); + quick.push("dis+10_1:8_cha=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=5:plsq=on:plsqr=32,1:prag=on:sos=all:i=154:si=on:rtra=on_0"); + quick.push("dis+1003_1:64_atotf=0.4:au=on:fsr=off:hflw=5:hfsq=on:hfsqc=20:hfsql=off:plsq=on:plsqc=1:plsqr=32,1:i=79:si=on:rtra=on_0"); + quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=216:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=off:hud=10:ins=2:sac=on:sp=const_frequency:i=114:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:au=on:bd=off:e2e=on:sgt=8:ss=axioms:i=922:si=on:rtra=on_0"); quick.push("lrs+10_1:128_au=on:bd=off:cnfonf=lazy_not_gen_be_off:nwc=10.0:piset=and:i=182:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_av=off:bd=off:fd=off:kws=precedence:nwc=3.0:prag=on:rawr=on:sos=all:sp=reverse_frequency:i=230:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=off:fsr=off:ntd=on:s2a=on:ss=axioms:i=83:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_anc=all:cbe=off:cnfonf=lazy_not_gen_be_off:fe=off:hud=5:nwc=10.0:plsq=on:plsqr=32,1:prag=on:sp=unary_first:i=202:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cbe=off:cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=148:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=104:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_chr=on:prag=on:i=6:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=1200:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=90:si=on:rtra=on_0"); quick.push("ott+1010_1:1024_au=on:av=off:c=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:spb=units:ss=axioms:i=164:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=392:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_simp:sgt=5:sos=on:ss=axioms:i=279:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:av=off:bd=preordered:bs=on:chr=on:cnfonf=lazy_not_gen:ntd=on:piset=and:i=59:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:sd=1:sgt=32:sos=on:ss=axioms:i=141:si=on:rtra=on_0"); - quick.push("dis+1004_1:128_au=on:cbe=off:e2e=on:sac=on:i=389:si=on:rtra=on_0"); - // Improves by expected 72.08099721262818 probs costing 9552 Mi + quick.push("lrs+1004_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:gs=on:hud=10:prag=on:tnu=1:i=50:si=on:rtra=on_0"); + quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=368:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=1021:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=267:si=on:rtra=on_0"); + quick.push("dis+21_1:5_au=on:ntd=on:nwc=5.0:s2a=on:ss=axioms:st=5.0:i=204:si=on:rtra=on_0"); + quick.push("dis+2_1:1024_atotf=0.0802881:au=on:bs=unit_only:cnfonf=lazy_not_gen_be_off:fde=none:nwc=10.0:prag=on:i=26:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=preordered:c=on:cbe=off:cnfonf=lazy_not_gen_be_off:hud=10:ixr=off:prag=on:i=53:si=on:rtra=on_0"); + // Improves by expected 72.38832436063082 probs costing 9563 Mi // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit - quick.push("lrs+10_1:64_hud=5:plsq=on:plsqr=2011171,524288:i=593:si=on:rtra=on_0"); - quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=4759:si=on:rtra=on_0"); - quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=906:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=4436:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_acc=model:avsq=on:ixr=off:prag=on:s2a=on:sac=on:i=1539:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:e2e=on:fde=none:kws=inv_precedence:plsq=on:plsqr=32,1:sos=on:i=408:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=5205:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_au=on:av=off:cbe=off:nwc=10.0:s2a=on:s2at=3.0:sd=2:ss=axioms:st=5.0:i=1913:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4350:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_cbe=off:chr=on:hfsq=on:hfsqr=1,16:hud=3:sac=on:sp=unary_frequency:ss=axioms:st=5.0:tnu=2:i=68:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:nwc=5.0:s2a=on:s2at=2.0:sac=on:sd=7:ss=axioms:st=2.0:i=358:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_add=large:amm=off:anc=all_dependent:chr=on:fd=off:ins=2:sp=const_max:tnu=5:uhcvi=on:i=31:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_simp:sgt=5:sos=on:ss=axioms:i=279:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:fde=none:slsq=on:i=258:si=on:rtra=on_0"); + quick.push("dis+2_1:1024_atotf=0.0802881:au=on:bs=unit_only:cnfonf=lazy_not_gen_be_off:fde=none:nwc=10.0:prag=on:i=26:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=995:si=on:rtra=on_0"); + quick.push("dis+10_1:8_amm=sco:cbe=off:hflw=5:hfsq=on:hfsqc=14:hfsql=off:hfsqr=4,1:hud=5:ile=on:lma=on:nm=2:ntd=on:prag=on:sac=on:sp=frequency:i=373:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:cnfonf=lazy_pi_sigma_gen:hflw=4:hfsq=on:hfsqc=20:hfsql=off:i=253:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=832:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=668:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=1670:si=on:rtra=on_0"); - quick.push("ott+1010_5:1_av=off:fe=off:ins=1:kws=precedence:sp=reverse_arity:i=794:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=40:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_cnfonf=lazy_pi_sigma_gen:fd=off:ntd=on:sd=1:sgt=32:sos=on:ss=axioms:i=294:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=970:si=on:rtra=on_0"); - quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=383:si=on:rtra=on_0"); - quick.push("dis+21_1:5_au=on:ntd=on:nwc=5.0:s2a=on:ss=axioms:st=5.0:i=961:si=on:rtra=on_0"); - quick.push("ott+1010_3:1_nm=20:s2a=on:s2at=3.0:sp=const_frequency:i=1083:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=1398:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_cnfonf=conj_eager:fsr=off:prag=on:sd=4:sgt=10:ss=axioms:i=562:si=on:rtra=on_0"); - quick.push("lrs+1010_1:2_au=on:e2e=on:sd=3:ss=axioms:st=3.0:i=1208:si=on:rtra=on_0"); - quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:s2a=on:sd=7:ss=axioms:st=1.5:i=343:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1655:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=6454:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_acc=model:avsq=on:ixr=off:prag=on:s2a=on:sac=on:i=1539:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=501:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=277:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_cha=on:cnfonf=off:hud=10:kws=inv_frequency:lcm=predicate:sgt=32:sos=on:sp=occurrence:ss=axioms:i=136:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=401:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=4810:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=2020:si=on:rtra=on_0"); - quick.push("dis+10_1:1_atotf=0.1:cbe=off:sd=3:ss=axioms:st=2.0:i=375:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=8250:si=on:rtra=on_0"); quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:plsq=on:plsqr=32,1:prag=on:i=187:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=393:si=on:rtra=on_0"); quick.push("lrs+1010_2:3_au=on:fsr=off:sd=4:ss=axioms:st=1.5:i=371:si=on:rtra=on_0"); + quick.push("dis+1003_1:1_au=on:bd=preordered:fde=none:ixr=off:nwc=10.0:i=1827:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=70:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_bd=off:cnfonf=lazy_not_be_gen:fe=axiom:hud=10:ins=1:nm=20:prag=on:sos=on:i=316:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=932:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:bd=preordered:cnfonf=lazy_pi_sigma_gen:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=occurrence:i=4714:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=8250:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=770:si=on:rtra=on_0"); + quick.push("ott+1010_5:1_av=off:fe=off:ins=1:kws=precedence:sp=reverse_arity:i=794:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=464:si=on:rtra=on_0"); + quick.push("ott+21_1:3_avsq=on:bd=off:cnfonf=lazy_gen:fe=off:hud=10:ixr=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=1376:si=on:rtra=on_0"); + quick.push("dis+10_1:1_etr=on:plsq=on:plsqc=1:plsqr=32,1:i=906:si=on:rtra=on_0"); quick.push("lrs+1002_1:16_bd=off:e2e=on:fde=unused:kws=precedence:sac=on:sos=on:ss=axioms:i=434:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_av=off:fe=off:hud=5:piset=or:prag=on:i=452:si=on:rtra=on_0"); + quick.push("lrs+10_5:4_cnfonf=conj_eager:fe=axiom:hflw=5:hfsq=on:hfsqc=10:hfsql=off:hud=10:plsq=on:sgt=5:spb=goal_then_units:ss=axioms:i=865:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=593:si=on:rtra=on_0"); + quick.push("dis+10_1:1_sd=2:sgt=20:slsq=on:ss=axioms:st=6.0:i=443:si=on:rtra=on_0"); + quick.push("dis+10_1:1_atotf=0.1:cbe=off:sd=3:ss=axioms:st=2.0:i=594:si=on:rtra=on_0"); + quick.push("ott+10_1:1024_anc=none:bd=off:e2e=on:fde=none:fsr=off:hud=10:ixr=off:nm=4:nwc=5.0:spb=goal:i=327:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=5411:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=conj_eager:e2e=on:fe=axiom:fsr=off:ntd=on:nwc=10.0:s2a=on:sgt=5:sp=occurrence:ss=axioms:i=1110:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_amm=off:cs=on:kws=precedence:nwc=10.0:piset=all:s2a=on:sac=on:sp=unary_frequency:spb=goal:ss=axioms:st=3.0:i=590:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=432:si=on:rtra=on_0"); - quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=2517:si=on:rtra=on_0"); - quick.push("dis+10_8:1_apa=on:cnfonf=off:e2e=on:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=783:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_amm=off:au=on:bsd=on:cbe=off:cnfonf=lazy_gen:sp=unary_frequency:i=481:si=on:rtra=on_0"); - quick.push("lrs+1010_1:64_aac=none:acc=on:au=on:c=on:cbe=off:ccuc=small_ones:chr=on:cnfonf=lazy_not_gen:fde=unused:hud=10:kws=precedence:nicw=on:piset=all_but_not_eq:sd=2:sp=reverse_arity:ss=axioms:i=536:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4350:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:nwc=5.0:s2a=on:s2at=2.0:sac=on:sd=7:ss=axioms:st=2.0:i=358:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_apa=on:au=on:bd=off:cnfonf=off:fd=off:sos=on:sp=weighted_frequency:i=700:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=283:si=on:rtra=on_0"); - quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=147:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=932:si=on:rtra=on_0"); - quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=2401:si=on:rtra=on_0"); - quick.push("lrs+2_1:1024_cnfonf=lazy_gen:fe=off:hud=15:plsq=on:plsqc=1:plsqr=32,1:i=576:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:bsd=on:bsr=unit_only:fd=off:hud=8:nm=16:prag=on:i=715:si=on:rtra=on_0"); quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=1762:si=on:rtra=on_0"); + quick.push("dis+1003_1:64_cha=on:cnfonf=lazy_gen:hud=9:nwc=8.0:prag=on:i=96:si=on:rtra=on_0"); quick.push("lrs+21_1:1_hud=5:kws=inv_frequency:nm=16:nwc=2.0:prag=on:sos=on:ss=axioms:i=503:si=on:rtra=on_0"); - quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=5104:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:nm=2:ntd=on:sd=2:ss=axioms:st=5.0:i=312:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:sp=unary_first:i=153:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_au=on:fde=none:slsq=on:i=258:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=770:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=1001:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:au=on:e2e=on:nm=2:nwc=10.0:sd=1:ss=axioms:st=3.0:i=4436:si=on:rtra=on_0"); quick.push("lrs+1002_1:1024_au=on:cond=fast:ntd=on:piset=and:plsq=on:plsqc=1:plsqr=183491,1048576:sac=on:tgt=ground:i=90:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:bd=off:bsr=unit_only:sd=2:sgt=32:sos=all:ss=axioms:i=454:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:tnu=1:i=1229:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:avsq=on:avsqr=1,16:cond=on:sp=frequency:i=466:si=on:rtra=on_0"); + quick.push("lrs+10_1:64_hud=5:plsq=on:plsqr=2011171,524288:i=593:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=1512:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_cbe=off:cnfonf=lazy_not_gen_be_off:ins=1:i=569:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_bd=off:cnfonf=off:e2e=on:fd=off:fe=axiom:hud=5:prag=on:sos=on:i=501:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_cnfonf=conj_eager:fsr=off:prag=on:sd=4:sgt=10:ss=axioms:i=562:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); + quick.push("dis+1004_1:128_au=on:cbe=off:e2e=on:sac=on:i=582:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:bd=off:bsr=unit_only:sd=2:sgt=32:sos=all:ss=axioms:i=456:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=conj_eager:tgt=ground:i=393:si=on:rtra=on_0"); quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1335:si=on:rtra=on_0"); + quick.push("dis+1010_16:1_acc=model:au=on:avsq=on:cond=fast:plsq=on:plsqc=2:plsqr=9267,262144:i=3373:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=474:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_amm=off:cs=on:kws=precedence:nwc=10.0:piset=all:s2a=on:sac=on:sp=unary_frequency:spb=goal:ss=axioms:st=3.0:i=590:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=104:si=on:rtra=on_0"); + quick.push("lrs+1010_1:10_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:sp=occurrence:i=414:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bsd=on:bsr=unit_only:fd=off:hud=8:nm=16:prag=on:i=715:si=on:rtra=on_0"); + quick.push("dis+21_1:5_au=on:ntd=on:nwc=5.0:s2a=on:ss=axioms:st=5.0:i=961:si=on:rtra=on_0"); quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=1213:si=on:rtra=on_0"); - quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=4528:si=on:rtra=on_0"); - quick.push("dis+10_1:1_sd=2:sgt=20:slsq=on:ss=axioms:st=6.0:i=443:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:cond=fast:fsr=off:piset=or:sp=const_frequency:uhcvi=on:updr=off:i=314:si=on:rtra=on_0"); + quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=1979:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_amm=off:au=on:bsd=on:cbe=off:cnfonf=lazy_gen:sp=unary_frequency:i=481:si=on:rtra=on_0"); + quick.push("dis+10_8:1_apa=on:cnfonf=off:e2e=on:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=783:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=432:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=1670:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:hfaw=0:hfsq=on:sp=weighted_frequency:i=90:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=401:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=6454:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_avsq=on:fe=off:fsr=off:hud=10:kws=arity:prag=on:i=283:si=on:rtra=on_0"); quick.push("ott+10_1:1_aac=none:apa=on:au=on:cnfonf=off:ntd=on:nwc=12.0:sos=on:i=865:si=on:rtra=on_0"); - // Improves by expected 222.12863537796528 probs costing 95989 Mi - // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit - quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=668:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=517:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1871:si=on:rtra=on_0"); + quick.push("lrs+1002_3:4_au=on:av=off:cnfonf=off:fd=off:fsr=off:ins=2:sd=1:sos=on:ss=axioms:i=4528:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:hud=5:nm=4:plsq=on:plsqr=7,1:prag=on:sp=const_max:tnu=1:i=1001:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:cnfonf=conj_eager:cond=on:hi=on:i=102:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_nm=20:s2a=on:s2at=3.0:sp=const_frequency:i=952:si=on:rtra=on_0"); quick.push("lrs+1010_1:1024_add=large:c=on:cbe=off:cnfonf=lazy_gen:fde=none:nm=30:piset=and:sac=on:uhcvi=on:i=578:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=3174:si=on:rtra=on_0"); - quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); - quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=5045:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=3672:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=1201:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all:c=on:cnfonf=off:fsr=off:kws=inv_frequency:nwc=5.0:sos=on:sp=occurrence:i=344:si=on:rtra=on_0"); quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=643:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=149:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=326:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:erd=off:s2a=on:s2at=3.0:sos=all:i=1174:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=644:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_alpa=true:au=on:cs=on:tgt=ground:i=1201:si=on:rtra=on_0"); + quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_simp:fsr=off:hud=5:kws=arity:nm=32:plsq=on:plsqc=1:plsqr=642,29:prag=on:i=222:si=on:rtra=on_0"); + // Improves by expected 228.8984796945416 probs costing 95986 Mi + // Sub-schedule for 12000Mi strat cap / 96000Mi overall limit + quick.push("ott+1010_1:4_cbe=off:chr=on:hfsq=on:hfsqr=1,16:hud=3:sac=on:sp=unary_frequency:ss=axioms:st=5.0:tnu=2:i=68:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=454:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); quick.push("lrs+1002_1:16_amm=sco:cnfonf=lazy_pi_sigma_gen:fe=off:nm=60:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=2,1:rawr=on:sp=occurrence:ss=included:st=-1.0:i=157:si=on:rtra=on_0"); - quick.push("lrs+2_1:1024_anc=all:cnfonf=off:cs=on:e2e=on:nm=20:s2at=1.5:slsq=on:slsqr=1,2:spb=goal:i=340:si=on:rtra=on_0"); - quick.push("dis+10_16:1_hud=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sd=1:sgt=64:ss=axioms:i=8062:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=1321:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=5061:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_av=off:fd=off:hud=5:tnu=1:i=2401:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=5798:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=1321:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1312:si=on:rtra=on_0"); + quick.push("ott+2_8:1_add=large:c=on:cnfonf=off:e2e=on:er=filter:hud=5:plsq=on:plsqr=1,1:ss=axioms:i=672:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:c=on:e2e=on:fsr=off:sos=all:sp=const_frequency:ss=axioms:i=1897:si=on:rtra=on_0"); + quick.push("lrs+10_1:40_av=off:fde=unused:ntd=on:plsq=on:plsqc=2:plsqr=411915,1048576:sp=unary_frequency:tgt=full:i=1202:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:cnfonf=lazy_pi_sigma_gen:hfsq=on:hfsqc=40:hfsqr=8,1:ntd=on:sos=on:sp=occurrence:ss=axioms:i=1493:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_av=off:fde=unused:hud=10:nwc=10.0:s2a=on:ss=axioms:i=7679:si=on:rtra=on_0"); + quick.push("lrs+2_1:1024_anc=all:cnfonf=off:cs=on:e2e=on:nm=20:s2at=1.5:slsq=on:slsqr=1,2:spb=goal:i=340:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=3672:si=on:rtra=on_0"); + quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); + quick.push("dis+10_16:1_hud=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sd=1:sgt=64:ss=axioms:i=4637:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fde=unused:prag=on:sd=2:sgt=32:ss=axioms:i=3174:si=on:rtra=on_0"); + quick.push("lrs+1010_1:10_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:sp=occurrence:i=307:si=on:rtra=on_0"); + quick.push("dis+1002_5:1_au=on:bd=off:e2e=on:fde=none:fs=off:fsr=off:sos=on:i=3619:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cbe=off:fde=none:ins=1:sp=const_max:i=2325:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:sac=on:sd=5:slsq=on:slsqr=1,4:ss=axioms:st=2.0:i=2341:si=on:rtra=on_0"); quick.push("lrs+1010_1:16_apa=on:bsd=on:cnfonf=off:hud=10:sac=on:sos=on:ss=axioms:i=7257:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_bd=off:sd=1:sgt=16:ss=axioms:i=4604:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3665:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cbe=off:chr=on:er=known:hud=4:i=147:si=on:rtra=on_0"); quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=3710:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=9872:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=644:si=on:rtra=on_0"); - quick.push("lrs+1010_1:10_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:sp=occurrence:i=307:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=831:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=326:si=on:rtra=on_0"); + quick.push("lrs+1010_1:64_au=on:c=on:e2e=on:flr=on:hfsq=on:hfsql=off:hfsqr=4,1:ins=1:ntd=on:sp=occurrence:i=1100:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:fde=unused:kws=precedence:tgt=full:i=406:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1871:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=1194:si=on:rtra=on_0"); quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=474:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:erd=off:s2a=on:s2at=3.0:sos=all:i=1174:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2077:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=5271:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=1400:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cbe=off:fde=none:ins=1:sp=const_max:i=2325:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2573:si=on:rtra=on_0"); - quick.push("lrs+1666_1:64_cnfonf=lazy_simp:hud=5:plsq=on:plsql=on:plsqr=152565,524288:tnu=2:i=1046:si=on:rtra=on_0"); - quick.push("dis-1002_3:1_acc=model:bd=off:bsd=on:bsdmm=1:cnfonf=lazy_not_be_gen:fd=off:fe=off:ntd=on:nwc=10.0:piset=equals:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:uhcvi=on:i=1535:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2561:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1312:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_gen:ins=3:plsq=on:plsqc=1:plsqr=15142123,262144:sp=reverse_arity:i=3115:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_kws=precedence:prag=on:rawr=on:sos=all:sp=unary_first:i=831:si=on:rtra=on_0"); + quick.push("dis+1666_14:1_cnfonf=lazy_gen:fe=off:hud=10:piset=all_but_not_eq:prag=on:sp=const_max:i=1188:si=on:rtra=on_0"); + quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=2868:si=on:rtra=on_0"); quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1516:si=on:rtra=on_0"); - quick.push("dis+21_1:1024_au=on:cnfonf=lazy_pi_sigma_gen:nm=32:ss=axioms:i=1307:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:gs=on:hud=10:prag=on:tnu=1:i=2537:si=on:rtra=on_0"); - // Improves by expected 56.92877887514161 probs costing 95960 Mi + quick.push("lrs+1002_1:20_afp=1000:au=on:bsd=on:cnfonf=lazy_not_gen_be_off:sos=all:sp=const_max:i=2321:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_bd=off:sd=1:sgt=16:ss=axioms:i=4604:si=on:rtra=on_0"); + quick.push("ott+1002_1:4_c=on:chr=on:cnfonf=lazy_not_be_gen:hud=10:nm=10:piset=all_but_not_eq:rp=on:spb=goal:uhcvi=on:i=2678:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=643:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=458:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_anc=all_dependent:apa=on:au=on:bd=off:c=on:cnfonf=off:ntd=on:i=2546:si=on:rtra=on_0"); + quick.push("dis+21_1:1_acc=model:au=on:cnfonf=lazy_gen:ins=2:plsq=on:plsqc=1:plsqr=32,1:i=1432:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_not_gen:hud=10:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=386:si=on:rtra=on_0"); + // Improves by expected 56.1663357045758 probs costing 95861 Mi // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit - quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=6102:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cbe=off:chr=on:fsr=off:hfsq=on:nm=64:sos=theory:sp=weighted_frequency:i=5446:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2573:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=2655:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_apa=on:au=on:av=off:cnfonf=off:e2e=on:nm=0:nwc=10.0:i=2781:si=on:rtra=on_0"); + quick.push("lrs+1010_1:10_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:sp=occurrence:i=307:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=1548:si=on:rtra=on_0"); + quick.push("lrs+10_1:3_alpa=true:hud=3:ins=1:ntd=on:plsq=on:plsqc=1:plsqr=32,1:prag=on:s2a=on:s2agt=10:i=5214:si=on:rtra=on_0"); + quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3201:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_chr=on:cnfonf=lazy_not_be_gen:gs=on:hud=5:plsq=on:plsqc=1:plsqr=5,1:prag=on:rawr=on:i=454:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_au=on:ins=2:nm=16:ntd=on:piset=all_but_not_eq:sp=occurrence:i=3049:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=7311:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=6804:si=on:rtra=on_0"); + quick.push("dis+1003_1:1_au=on:bd=preordered:fde=none:ixr=off:nwc=10.0:i=1683:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:av=off:bd=off:cs=on:e2e=on:hfsq=on:hfsqc=50:hfsql=off:nm=0:i=4688:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=8216:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_atotf=0.5:au=on:cbe=off:cnfonf=lazy_not_be_gen:fe=off:nwc=5.0:spb=units:i=430:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=18808:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=951:si=on:rtra=on_0"); - quick.push("lrs+1002_1:28_bd=off:cnfonf=lazy_simp:plsq=on:plsqr=1,1:prag=on:i=1003:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=14651:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_aac=none:bd=preordered:e2e=on:fde=none:fe=axiom:nm=16:nwc=10.0:prag=on:i=1658:si=on:rtra=on_0"); - quick.push("dis+10_1:1_avsq=on:avsqr=9,8:cnfonf=lazy_gen:fe=off:ntd=on:i=3186:si=on:rtra=on_0"); - quick.push("dis+21_1:1_aac=none:bsr=on:nwc=3.0:s2a=on:i=3201:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=5729:si=on:rtra=on_0"); - quick.push("lrs+1010_1:7_bd=off:cnfonf=lazy_not_be_gen:fe=off:hud=10:tnu=1:i=348:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=14014:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:gs=on:hud=10:prag=on:tnu=1:i=2012:si=on:rtra=on_0"); + quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=631:si=on:rtra=on_0"); quick.push("dis+2_1:1_bd=off:e2e=on:hud=1:nm=3:piset=or:prag=on:s2a=on:sp=const_max:i=8785:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=preordered:cnfonf=off:e2e=on:kws=inv_precedence:lwlo=on:sd=2:ss=axioms:i=7311:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=off:hud=10:plsq=on:plsqc=1:plsqr=32,1:tnu=1:i=2618:si=on:rtra=on_0"); - quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=12192:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=10516:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=32887:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:e2e=on:nm=2:sos=all:sp=const_min:spb=non_intro:i=9526:si=on:rtra=on_0"); - quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=13832:si=on:rtra=on_0"); - quick.push("lrs+1002_1:32_au=on:ins=2:nm=16:ntd=on:piset=all_but_not_eq:sp=occurrence:i=3049:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=6901:si=on:rtra=on_0"); + quick.push("lrs-1002_1:128_abs=on:bd=preordered:cbe=off:e2e=on:fde=unused:fe=off:tgt=full:i=739:si=on:rtra=on_0"); + quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=5473:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=43570:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=8382:si=on:rtra=on_0"); + quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=407:si=on:rtra=on_0"); + quick.push("lrs+10_1:50_cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:hud=5:plsq=on:plsqr=1,32:sos=all:i=2971:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=9822:si=on:rtra=on_0"); + quick.push("dis+10_5:1_av=off:ntd=on:s2a=on:s2at=3.0:sgt=16:sp=unary_frequency:ss=axioms:i=8425:si=on:rtra=on_0"); + quick.push("lrs+30_1:1_aac=none:au=on:cbe=off:cs=on:nm=2:rawr=on:sos=on:i=3107:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=7967:si=on:rtra=on_0"); + quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3629:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:fe=axiom:lwlo=on:nm=0:ntd=on:nwc=10.0:spb=non_intro:uhcvi=on:i=939:si=on:rtra=on_0"); + quick.push("dis+1666_14:1_cnfonf=lazy_gen:fe=off:hud=10:piset=all_but_not_eq:prag=on:sp=const_max:i=1188:si=on:rtra=on_0"); + quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=7469:si=on:rtra=on_0"); + quick.push("dis+10_1:10_bd=preordered:e2e=on:fde=none:fe=axiom:hud=3:kws=precedence:nwc=3.0:prag=on:sp=const_max:tgt=full:i=4165:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:cnfonf=lazy_simp:fsr=off:ntd=on:nwc=10.0:sp=reverse_frequency:ss=axioms:st=1.5:i=13468:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:bsr=unit_only:cbe=off:fe=off:fsr=off:nm=10:nwc=6.0:plsq=on:plsqc=1:plsqr=32,1:sos=all:i=2635:si=on:rtra=on_0"); + quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=631:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=15557:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:sac=on:sd=5:slsq=on:slsqr=1,4:ss=axioms:st=2.0:i=2142:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:au=on:bd=off:cnfonf=conj_eager:nwc=5.0:sgt=5:sp=reverse_arity:ss=axioms:i=5624:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=1665:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=64912:si=on:rtra=on_0"); + quick.push("lrs+10_1:32_atotf=0.1:avsq=on:bsr=on:cnfonf=lazy_gen:fde=unused:i=7801:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:hfsq=on:hfsqc=5:hfsql=off:nwc=5.0:sd=3:ss=axioms:st=5.0:i=15194:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=6753:si=on:rtra=on_0"); + quick.push("lrs+1002_1:28_bd=off:cnfonf=lazy_simp:plsq=on:plsqr=1,1:prag=on:i=1003:si=on:rtra=on_0"); + quick.push("ott-21_5:4_atotf=0.3:e2e=on:hud=15:ins=1:plsq=on:plsqc=1:plsqr=32,1:sp=unary_frequency:tnu=2:i=13018:si=on:rtra=on_0"); + quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1267:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=2570:si=on:rtra=on_0"); quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=13163:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:c=on:cbe=off:cha=on:cnfonf=off:fd=off:piset=or:rp=on:spb=units:ss=axioms:uhcvi=on:i=1721:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=5087:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:au=on:bd=off:cnfonf=lazy_pi_sigma_gen:s2a=on:sac=on:sd=1:sgt=20:ss=axioms:i=10380:si=on:rtra=on_0"); - quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=15557:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bs=on:c=on:fe=axiom:hud=5:ins=1:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=all:tnu=1:i=2580:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4218:si=on:rtra=on_0"); + quick.push("ott+1666_1:1_hfaw=0:hfsq=on:hfsql=off:hfsqr=1,16:hud=15:slsq=on:slsqr=1,2:tnu=2:i=3971:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=14014:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=8517:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:nm=4:s2a=on:i=10148:si=on:rtra=on_0"); quick.push("lrs+10_1:2_ntd=on:nwc=10.0:plsq=on:plsqc=1:plsqr=2,1:ss=axioms:i=9078:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:cnfonf=off:plsq=on:plsqc=1:plsqr=3,1:i=6017:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=9867:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_anc=all_dependent:au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:piset=not:i=27944:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_avsq=on:avsqr=16,1:bet=on:cbe=off:cnfonf=lazy_not_be_gen:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=631:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=178:si=on:rtra=on_0"); - quick.push("dis-30_1:1_acc=on:bd=off:fsr=off:plsq=on:plsqr=32,1:i=407:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_aac=none:au=on:bd=off:cnfonf=conj_eager:nwc=5.0:sgt=5:sp=reverse_arity:ss=axioms:i=5786:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=2:sos=on:ss=axioms:i=43570:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cbe=off:fde=unused:fe=axiom:prag=on:s2a=on:s2agt=30:sp=frequency:i=17020:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_avsq=on:avsqr=1,16:kws=inv_arity:nwc=5.0:sd=1:ss=axioms:i=1548:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sos=on:ss=axioms:i=13001:si=on:rtra=on_0"); - quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=16164:si=on:rtra=on_0"); + quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=6102:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=10308:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=4041:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=model:au=on:nwc=5.0:sd=5:ss=axioms:st=2.5:i=6901:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=5576:si=on:rtra=on_0"); quick.push("lrs+1002_1:8_bd=off:fd=off:hud=10:tnu=1:i=2014:si=on:rtra=on_0"); - quick.push("lrs+1_1:1_au=on:cbe=off:cs=on:nm=4:i=14341:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:cbe=off:piset=equals:sd=1:sgt=20:sos=all:ss=axioms:i=4218:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:bd=off:bet=on:e2e=on:fde=unused:fe=off:plsq=on:prag=on:sos=on:i=6594:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=5115:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sos=on:ss=axioms:i=13001:si=on:rtra=on_0"); + quick.push("dis+10_1:2_aac=none:acc=on:atotf=0.1:au=on:fde=none:ins=1:ixr=off:nwc=5.0:i=11105:si=on:rtra=on_0"); + quick.push("dis+10_1:1_anc=none:cnfonf=lazy_gen:fd=preordered:fe=off:hud=10:ins=3:ixr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=32,1:sp=const_frequency:uhcvi=on:i=13832:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=32887:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_avsq=on:fde=unused:prag=on:i=3362:si=on:rtra=on_0"); quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=24965:si=on:rtra=on_0"); - quick.push("dis+21_3:2_avsq=on:cbe=off:e2e=on:flr=on:ile=on:nwc=5.0:piset=or:rawr=on:sp=occurrence:i=3205:si=on:rtra=on_0"); + quick.push("lrs+1010_2:1_amm=off:avsq=on:c=on:cbe=off:e2e=on:fsr=off:ins=3:s2a=on:s2at=-1.0:i=15705:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fde=none:kws=precedence:piset=not:prag=on:slsq=on:slsqc=1:sp=unary_frequency:i=23684:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4925:si=on:rtra=on_0"); + quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=14666:si=on:rtra=on_0"); + quick.push("lrs+1002_1:4_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:hud=15:inj=on:nwc=4.0:s2a=on:sac=on:sp=reverse_arity:i=3322:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1810:si=on:rtra=on_0"); + quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=2465:si=on:rtra=on_0"); quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_pi_sigma_gen:fsr=off:ins=1:kws=inv_precedence:nwc=10.0:ss=axioms:st=2.0:i=41234:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=14027:si=on:rtra=on_0"); quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:nwc=10.0:sac=on:i=27021:si=on:rtra=on_0"); quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=5643:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bd=off:bsd=on:ixr=off:sp=const_max:i=2812:si=on:rtra=on_0"); - quick.push("dis+1010_1:4_atotf=0.2:c=on:cbe=off:cnfonf=lazy_simp:fe=off:ins=2:ntd=on:s2a=on:s2at=5.0:sgt=5:ss=axioms:st=1.5:i=8216:si=on:rtra=on_0"); - quick.push("dis+1010_2:3_amm=off:fd=preordered:ixr=off:nm=0:pe=on:piset=equals:prag=on:sac=on:tgt=ground:i=8382:si=on:rtra=on_0"); - quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=4925:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=2765:si=on:rtra=on_0"); - quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=5576:si=on:rtra=on_0"); - quick.push("ott-21_5:4_atotf=0.3:e2e=on:hud=15:ins=1:plsq=on:plsqc=1:plsqr=32,1:sp=unary_frequency:tnu=2:i=12276:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); - quick.push("lrs+1002_1:12_bd=off:hud=1:ntd=on:piset=equals:prag=on:i=641:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=lazy_gen:fe=off:plsq=on:plsqc=1:plsqr=3548551,65536:s2a=on:i=5115:si=on:rtra=on_0"); - quick.push("dis+10_1:10_bd=preordered:e2e=on:fde=none:fe=axiom:hud=3:kws=precedence:nwc=3.0:prag=on:sp=const_max:tgt=full:i=4165:si=on:rtra=on_0"); - quick.push("lrs+10_1:20_au=on:c=on:cbe=off:cnfonf=lazy_gen:ins=1:plsq=on:plsqc=1:plsqr=46,31:sac=on:i=2570:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:sd=2:ss=axioms:st=2.0:i=2947:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:bd=off:cbe=off:cha=on:cnfonf=lazy_pi_sigma_gen:fd=off:fe=off:ntd=on:sp=const_frequency:i=1895:si=on:rtra=on_0"); - quick.push("ott+1010_1:32_apa=on:atotf=0.3:au=on:c=on:cnfonf=off:fe=off:fsr=off:nm=6:piset=or:sac=on:sos=on:i=631:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=4041:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=5419:si=on:rtra=on_0"); - quick.push("ott+1002_1:4_c=on:chr=on:cnfonf=lazy_not_be_gen:hud=10:nm=10:piset=all_but_not_eq:rp=on:spb=goal:uhcvi=on:i=2678:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=16164:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fde=none:kws=precedence:piset=not:prag=on:slsq=on:slsqc=1:sp=unary_frequency:i=23684:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_amm=sco:awrs=converge:bd=off:nwc=5.0:sd=3:sgt=15:ss=axioms:st=2.0:i=2077:si=on:rtra=on_0"); - quick.push("dis+10_5:1_av=off:ntd=on:s2a=on:s2at=3.0:sgt=16:sp=unary_frequency:ss=axioms:i=8425:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=15536:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_aac=none:au=on:cnfonf=lazy_not_gen_be_off:sos=all:i=5271:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=58848:si=on:rtra=on_0"); - quick.push("lrs+30_1:1_aac=none:au=on:cbe=off:cs=on:nm=2:rawr=on:sos=on:i=3107:si=on:rtra=on_0"); - quick.push("dis+1666_1:1_anc=none:bs=on:cbe=off:cha=on:cnfonf=lazy_gen:fe=off:fsr=off:hud=5:kws=precedence:piset=pi_sigma:prag=on:sos=on:sp=frequency:i=6645:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=0:i=15668:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_apa=on:au=on:av=off:cnfonf=off:e2e=on:nm=0:nwc=10.0:i=2781:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_au=on:cnfonf=conj_eager:nwc=10.0:pe=on:prag=on:s2a=on:ss=axioms:st=1.5:i=1536:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=1:sgt=8:ss=axioms:i=8517:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_gen:plsq=on:plsqc=3:plsqr=32,1:i=1337:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=3743:si=on:rtra=on_0"); + quick.push("dis+10_1:2_amm=off:bd=preordered:cnfonf=off:e2e=on:fe=off:fsr=off:hud=5:nm=3:s2a=on:sos=on:i=2571:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_cbe=off:cnfonf=conj_eager:fe=off:hud=15:nwc=3.0:piset=pi_sigma:prag=on:sd=5:sp=weighted_frequency:ss=axioms:st=2.0:i=35728:si=on:rtra=on_0"); + quick.push("lrs+1004_1:24_i=5433:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_anc=all_dependent:au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:piset=not:i=27944:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=off:ntd=on:nwc=3.0:s2a=on:sp=const_frequency:i=865:si=on:rtra=on_0"); - quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=5473:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_simp:hud=5:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=360:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_fde=unused:avsq=on:prag=on:i=3362:si=on:rtra=on_0"); - quick.push("lrs+1010_10:959_abs=on:acc=on:bd=off:ccuc=small_ones:cha=on:cnfonf=lazy_simp:fd=preordered:fe=off:hud=3:ile=on:kws=inv_frequency:nm=2:piset=and:sd=5:sp=frequency:spb=goal_then_units:ss=axioms:st=4.5:i=3629:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_gen:kws=inv_precedence:nwc=10.0:i=1810:si=on:rtra=on_0"); - quick.push("dis+10_1:4_atotf=0.1:avsq=on:bsr=unit_only:e2e=on:sd=1:sp=const_max:ss=axioms:i=1267:si=on:rtra=on_0"); - quick.push("lrs+1004_1:24_i=5508:si=on:rtra=on_0"); - quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:avsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cond=fast:fde=unused:s2a=on:sd=2:ss=axioms:i=6181:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=63457:si=on:rtra=on_0"); - quick.push("lrs+1010_1:8_au=on:bd=off:cnfonf=lazy_not_be_gen:fsr=off:kws=inv_arity_squared:piset=or:sp=weighted_frequency:i=737:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_simp:fsr=off:avsq=on:ntd=on:nwc=10.0:sp=reverse_frequency:ss=axioms:st=1.5:i=15283:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=19906:si=on:rtra=on_0"); - // Improves by expected 100.96227733242402 probs costing 959325 Mi + quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=9867:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=32,1:spb=goal_then_units:i=5419:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_au=on:cnfonf=off:e2e=on:fde=none:nicw=on:s2a=on:s2at=5.0:tgt=full:i=15386:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:bd=preordered:cnfonf=lazy_pi_sigma_gen:plsq=on:plsqc=1:plsqr=32,1:sos=all:sp=occurrence:i=4714:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:c=on:fsr=off:ntd=on:prag=on:sd=1:sos=all:ss=axioms:st=5.0:i=42749:si=on:rtra=on_0"); + quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("lrs+1_1:1_au=on:cbe=off:cs=on:nm=4:i=14341:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fde=unused:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=6604:si=on:rtra=on_0"); + // Improves by expected 96.50411951866694 probs costing 957886 Mi // Sub-schedule for 120000Mi strat cap / 960000Mi overall limit - quick.push("ott+1010_1:20_cnfonf=lazy_pi_sigma_gen:fe=axiom:plsq=on:plsqc=2:plsqr=32,1:sac=on:sos=all:i=11612:si=on:rtra=on_0"); - quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=6102:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=117046:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:bsr=unit_only:cbe=off:fe=off:fsr=off:nm=10:nwc=6.0:plsq=on:plsqc=1:plsqr=32,1:sos=all:i=2635:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=41131:si=on:rtra=on_0"); + quick.push("ott+1666_1:1_hfaw=0:hfsq=on:hfsql=off:hfsqr=1,16:hud=15:slsq=on:slsqr=1,2:tnu=2:i=3971:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:sac=on:sd=5:slsq=on:slsqr=1,4:ss=axioms:st=2.0:i=2142:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=1314:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_avsq=on:fde=unused:prag=on:i=3362:si=on:rtra=on_0"); quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=5756:si=on:rtra=on_0"); - quick.push("dis+10_3:1_anc=all:avsq=on:c=on:cnfonf=off:e2e=on:fd=off:fde=none:ins=3:nwc=5.0:plsq=on:plsqc=1:plsqr=4964065,131072:prag=on:s2a=on:s2agt=64:i=8801:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=14014:si=on:rtra=on_0"); - quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=12066:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); - quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=35698:si=on:rtra=on_0"); - quick.push("ott+2_1:1024_bd=off:cbe=off:cnfonf=off:e2e=on:fde=none:kws=precedence:pe=on:prag=on:rawr=on:rp=on:ss=included:st=3.0:tgt=full:i=5410:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=2607:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bs=on:c=on:fe=axiom:hud=5:ins=1:plsq=on:plsqc=2:plsqr=32,1:prag=on:sos=all:tnu=1:i=2580:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=9867:si=on:rtra=on_0"); - quick.push("dis+1010_1:128_au=on:awrs=converge:plsq=on:plsqc=1:tgt=full:i=11111:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=3743:si=on:rtra=on_0"); - quick.push("ott+10_1:4_cnfonf=lazy_gen:fde=unused:i=3009:si=on:rtra=on_0"); - quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:hfsq=on:hfsqc=5:hfsql=off:nwc=5.0:sd=3:ss=axioms:st=5.0:i=15187:si=on:rtra=on_0"); quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=21027:si=on:rtra=on_0"); - quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_cnfonf=conj_eager:i=18038:si=on:rtra=on_0"); - quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=6101:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_add=off:cnfonf=lazy_not_gen:kws=frequency:piset=all:i=8801:si=on:rtra=on_0"); - quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=3365:si=on:rtra=on_0"); + quick.push("lrs+1004_1:128_cond=on:e2e=on:sp=weighted_frequency:i=35698:si=on:rtra=on_0"); + quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=14573:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=14014:si=on:rtra=on_0"); + quick.push("dis+10_1:10_bd=preordered:e2e=on:fde=none:fe=axiom:hud=3:kws=precedence:nwc=3.0:prag=on:sp=const_max:tgt=full:i=4165:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=5576:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=none:nwc=10.0:s2a=on:s2at=2.0:i=4408:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=13925:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=117046:si=on:rtra=on_0"); + quick.push("lrs+1004_1:24_i=5433:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=8192:si=on:rtra=on_0"); + quick.push("lrs+32_1:1_au=on:bet=on:cbe=off:cs=on:ins=3:i=6102:si=on:rtra=on_0"); quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); + quick.push("ott+1004_1:24_anc=none:cbe=off:cnfonf=lazy_not_gen:fe=off:piset=not:prag=on:rp=on:i=6101:si=on:rtra=on_0"); + quick.push("dis+1010_3039923:1048576_bsr=unit_only:cbe=off:cha=on:cnfonf=off:e2e=on:fsr=off:hud=1:ixr=off:kws=precedence:lma=on:nm=4:piset=or:s2a=on:sp=frequency:spb=goal_then_units:i=28153:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("dis+10_1:10_bd=preordered:e2e=on:fde=none:fe=axiom:hud=3:kws=precedence:nwc=3.0:prag=on:sp=const_max:tgt=full:i=4165:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=12369:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:c=on:fsr=off:ntd=on:prag=on:sd=1:sos=all:ss=axioms:st=5.0:i=42749:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=3942:si=on:rtra=on_0"); quick.push("lrs+2_1:1_bet=on:bsr=on:cnfonf=lazy_pi_sigma_gen:er=filter:kws=inv_frequency:ntd=on:sd=3:ss=axioms:i=12389:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fde=none:kws=precedence:piset=not:prag=on:slsq=on:slsqc=1:sp=unary_frequency:i=23684:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=21829:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cnfonf=lazy_gen:ixr=off:plsq=on:plsqc=1:plsqr=32,1:i=346:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=41881:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); - quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_fde=unused:avsq=on:prag=on:i=3362:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); - quick.push("lrs+1004_1:24_i=5433:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=12787:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=56694:si=on:rtra=on_0"); - // Improves by expected 15.691880499614891 probs costing 947322 Mi - // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit - quick.push("dis+1010_5:2_anc=all_dependent:awrs=converge:bd=off:bet=on:c=on:cha=on:cnfonf=lazy_not_gen_be_off:fe=axiom:hud=5:kws=precedence:piset=and:prag=on:s2a=on:sac=on:slsq=on:slsqc=1:sp=reverse_arity:ss=axioms:st=1.5:i=29759:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=98380:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=171310:si=on:rtra=on_0"); + quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_add=off:cnfonf=lazy_not_gen:kws=frequency:piset=all:i=8801:si=on:rtra=on_0"); + quick.push("ott-21_5:4_atotf=0.3:e2e=on:hud=15:ins=1:plsq=on:plsqc=1:plsqr=32,1:sp=unary_frequency:tnu=2:i=12360:si=on:rtra=on_0"); + quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fde=none:kws=precedence:piset=not:prag=on:slsq=on:slsqc=1:sp=unary_frequency:i=23684:si=on:rtra=on_0"); + quick.push("ott+10_1:10_avsq=on:bd=off:cnfonf=lazy_gen:sd=2:sgt=16:sos=on:ss=axioms:i=56001:si=on:rtra=on_0"); + quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); + quick.push("dis+10_3:1_anc=all:avsq=on:c=on:cnfonf=off:e2e=on:fd=off:fde=none:ins=3:nwc=5.0:plsq=on:plsqc=1:plsqr=4964065,131072:prag=on:s2a=on:s2agt=64:i=8801:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:avsq=on:bd=off:cbe=off:cnfonf=off:cs=on:hud=5:nm=0:plsq=on:plsqc=1:plsqr=7,1:ss=axioms:tgt=full:i=10924:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=220001:si=on:rtra=on_0"); - quick.push("dis+10_1:1_amm=sco:au=on:cbe=off:nm=0:i=26747:si=on:rtra=on_0"); - quick.push("lrs+2_16:1_acc=model:au=on:bd=off:c=on:e2e=on:nm=2:sos=all:i=84804:si=on:rtra=on_0"); - quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=12731:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=77525:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_alpa=false:apa=on:au=on:bd=off:cnfonf=off:e2e=on:er=filter:fde=unused:plsq=on:plsqr=9699663,1048576:s2a=on:sos=on:sp=unary_first:i=45459:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:s2a=on:sd=1:sgt=50:ss=axioms:i=33734:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=lazy_gen:plsq=on:plsqc=1:plsqr=4203469,65536:i=7805:si=on:rtra=on_0"); + quick.push("lrs-1010_8:1_au=on:c=on:ins=1:i=70437:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:bd=off:e2e=on:fde=none:fe=off:piset=or:prag=on:rawr=on:sos=on:updr=off:i=11540:si=on:rtra=on_0"); + quick.push("lrs+1002_1:4_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:hud=15:inj=on:nwc=4.0:s2a=on:sac=on:sp=reverse_arity:i=32059:si=on:rtra=on_0"); quick.push("lrs+1002_1:128_atotf=0.1:au=on:cbe=off:ntd=on:sp=const_frequency:i=14041:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=83865:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=161913:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis+1010_4:1_bd=preordered:cnfonf=conj_eager:etr=on:ntd=on:prag=on:i=44612:si=on:rtra=on_0"); - quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=77282:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bsd=on:cha=on:cnfonf=lazy_not_gen_be_off:piset=small_set:s2a=on:s2at=7.0:i=200001:si=on:rtra=on_0"); - quick.push("dis+2_1:1_cbe=off:fe=off:i=13068:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=17538:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:fde=none:ixr=off:nwc=5.0:i=25994:si=on:rtra=on_0"); - quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=50861:si=on:rtra=on_0"); - quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("dis+1010_1:28_add=off:cnfonf=lazy_not_gen:kws=frequency:piset=all:i=8801:si=on:rtra=on_0"); - quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=38526:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_bd=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=137969:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fe=axiom:fsr=off:hud=5:nwc=6.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=40:sp=weighted_frequency:i=15424:si=on:rtra=on_0"); + // Improves by expected 15.178891728241835 probs costing 948589 Mi + // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit + quick.push("ott+1666_1:1_hfaw=0:hfsq=on:hfsql=off:hfsqr=1,16:hud=15:slsq=on:slsqr=1,2:tnu=2:i=3971:si=on:rtra=on_0"); + quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=2207:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:bsr=unit_only:cbe=off:fe=off:fsr=off:nm=10:nwc=6.0:plsq=on:plsqc=1:plsqr=32,1:sos=all:i=2635:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_avsq=on:fde=unused:prag=on:i=3362:si=on:rtra=on_0"); quick.push("dis+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:flr=on:nm=4:s2a=on:i=8612:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_av=off:fde=unused:hud=10:nwc=10.0:s2a=on:ss=axioms:i=129283:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:hfsq=on:hfsqc=5:hfsql=off:nwc=5.0:sd=3:ss=axioms:st=5.0:i=15187:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=36665:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=13432:si=on:rtra=on_0"); - quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=12135:si=on:rtra=on_0"); + quick.push("lrs-1010_1:50_au=on:awrs=converge:awrsf=430:bet=on:cbe=off:cha=on:nm=20:sac=on:i=14573:si=on:rtra=on_0"); + quick.push("dis+1010_1:28_add=off:cnfonf=lazy_not_gen:kws=frequency:piset=all:i=8801:si=on:rtra=on_0"); + quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=50861:si=on:rtra=on_0"); quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=120493:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1024_au=on:hud=10:ntd=on:ss=included:i=166390:si=on:rtra=on_0"); - quick.push("dis-1_1:1_amm=off:au=on:cbe=off:spb=intro:i=6077:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:bs=on:sd=5:sp=occurrence:ss=axioms:st=2.0:i=77525:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=13432:si=on:rtra=on_0"); + quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=lazy_simp:nwc=5.0:sgt=5:ss=axioms:st=1.5:i=17538:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1024_au=on:hud=10:ntd=on:ss=included:i=168763:si=on:rtra=on_0"); + quick.push("lrs+2_16:1_acc=model:au=on:bd=off:c=on:e2e=on:nm=2:sos=all:i=84973:si=on:rtra=on_0"); quick.push("ott+10_1:10_cnfonf=lazy_gen:fde=none:sp=const_frequency:i=15814:si=on:rtra=on_0"); - quick.push("dis+1002_1:1024_fe=off:hud=5:prag=on:i=25962:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_fde=unused:avsq=on:prag=on:i=3362:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=63430:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=173649:si=on:rtra=on_0"); + quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=16361:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_au=on:bd=off:c=on:cbe=off:fsr=off:ins=1:ss=axioms:st=1.5:i=15670:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_bd=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=137969:si=on:rtra=on_0"); quick.push("lrs+1004_1:24_i=198698:si=on:rtra=on_0"); - quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:avsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=50035:si=on:rtra=on_0"); - quick.push("lrs+1010_1:8_au=on:bd=off:cnfonf=lazy_not_be_gen:fsr=off:kws=inv_arity_squared:piset=or:sp=weighted_frequency:i=31367:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=158832:si=on:rtra=on_0"); - // Improves by expected 13.773932066734542 probs costing 3122762 Mi - // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit - quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=171310:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=183300:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:sd=1:ss=axioms:st=3.0:i=154574:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=occurrence:ss=axioms:i=33524:si=on:rtra=on_0"); + quick.push("dis+10_3366879:524288_awrs=decay:bd=preordered:cbe=off:e2e=on:kws=arity_squared:nwc=3.0:piset=pi_sigma:sac=on:sd=1:sgt=64:sp=const_max:ss=axioms:tgt=full:i=29485:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:nm=0:i=20308:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=22706:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_chr=on:ntd=on:i=32514:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_av=off:awrs=converge:awrsf=200:kws=precedence:i=31508:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=29617:si=on:rtra=on_0"); + quick.push("lrs-1010_8:1_au=on:c=on:ins=1:i=70437:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_atotf=0.3:erd=off:sd=2:sgt=8:ss=axioms:i=33157:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_av=off:bd=off:cnfonf=lazy_gen:fe=axiom:hud=10:prag=on:ss=axioms:i=37349:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:s2a=on:s2agt=32:sgt=8:ss=axioms:i=98380:si=on:rtra=on_0"); + quick.push("ott+10_1:10_avsq=on:bd=off:cnfonf=lazy_gen:sd=2:sgt=16:sos=on:ss=axioms:i=56001:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=141566:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=63430:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_av=off:fe=off:sd=2:slsq=on:slsqr=1,16:ss=axioms:st=5.0:i=82580:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=220001:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_cnfonf=off:e2e=on:nm=4:ntd=on:s2a=on:i=97391:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); - quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=50861:si=on:rtra=on_0"); - quick.push("lrs+10_1:156_afp=4000:avsq=on:avsqr=4,1:fe=axiom:ss=axioms:tgt=ground:i=19001:si=on:rtra=on_0"); - quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=118297:si=on:rtra=on_0"); - quick.push("lrs+1002_8:1_au=on:cs=on:e2e=on:nm=10:s2a=on:i=35602:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_anc=all_dependent:cnfonf=conj_eager:cond=fast:fe=axiom:nm=16:s2a=on:s2at=4.0:sd=2:ss=axioms:st=3.0:i=96745:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:e2e=on:nm=10:sos=all:sp=reverse_arity:i=88102:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_cnfonf=lazy_not_be_gen:fe=off:hud=10:i=171919:si=on:rtra=on_0"); + // Improves by expected 14.563032764332931 probs costing 3169082 Mi + // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit + quick.push("ott+1666_1:1_hfaw=0:hfsq=on:hfsql=off:hfsqr=1,16:hud=15:slsq=on:slsqr=1,2:tnu=2:i=3602:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=36665:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:hfsq=on:hfsqc=5:hfsql=off:nwc=5.0:sd=3:ss=axioms:st=5.0:i=15187:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_bet=on:cond=fast:e2e=on:fe=off:hud=5:nm=0:ntd=on:nwc=7.0:piset=and:prag=on:rawr=on:sgt=40:ss=included:uhcvi=on:i=42318:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:av=off:sd=1:ss=axioms:st=2.0:i=36665:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); + quick.push("dis-1666_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:i=50861:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=72226:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); quick.push("lrs+1010_1:1_e2e=on:plsq=on:i=90575:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:nwc=5.0:i=37202:si=on:rtra=on_0"); - quick.push("ott+10_1:10_bd=off:cnfonf=lazy_gen:avsq=on:sd=2:sgt=16:sos=on:ss=axioms:i=64385:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_afp=2000:afq=1.1:au=on:nm=40:rawr=on:sp=weighted_frequency:i=170931:si=on:rtra=on_0"); - // Improves by expected 2.5628576884420435 probs costing 1573274 Mi + quick.push("lrs+1002_1:14_au=on:bd=off:e2e=on:fde=unused:sac=on:sos=on:i=77965:si=on:rtra=on_0"); + quick.push("lrs-1_1:1_au=on:cbe=off:ntd=on:i=99319:si=on:rtra=on_0"); + quick.push("lrs-1010_8:1_au=on:c=on:ins=1:i=97110:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=183300:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_au=on:s2a=on:sd=2:ss=axioms:st=5.0:i=161771:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:e2e=on:fde=unused:nm=4:s2a=on:sos=all:sp=const_frequency:i=171310:si=on:rtra=on_0"); + // Improves by expected 2.3738304642733343 probs costing 1393213 Mi // Sub-schedule for 500000Mi strat cap / 4000000Mi overall limit - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=232233:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); quick.push("lrs+10_1:1_cnfonf=off:sd=1:ss=axioms:st=3.0:i=13159:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); quick.push("lrs+1002_1:1_apa=on:cnfonf=off:fd=off:flr=on:hud=1:lcm=reverse:prag=on:sd=1:sos=on:ss=axioms:i=28134:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=axiom:nwc=5.0:prag=on:sos=on:ss=axioms:i=73072:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_anc=all_dependent:au=on:cbe=off:cnfonf=lazy_pi_sigma_gen:fde=none:ins=2:nwc=10.0:piset=or:i=99377:si=on:rtra=on_0"); quick.push("ott+1010_1:4_cnfonf=lazy_simp:fe=off:hud=5:piset=or:prag=on:i=112304:si=on:rtra=on_0"); - // Improves by expected 0.7373774406757846 probs costing 558273 Mi - // Tue: HOL3 2 Overall score 2800.260571768602 probs on average / budget 7372043 Mi + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=lazy_not_be_gen:ntd=on:pe=on:i=220001:si=on:rtra=on_0"); + // Improves by expected 0.7448542041792773 probs costing 546041 Mi + // Sun16Jul HOL3: Overall score 2808.1746472908735 probs on average / budget 7225820 Mi + // Tue: HOL3 2 Overall score 2800.260571768602 probs on average / budget 7372043 Mi // Tue: HOL3 Overall score 2798.5308839897193 probs on average / budget 7843409 Mi - // Sun: HOL3 Overall score 2791.350517910691 probs on average / budget 8511622 Mi - // Fri: Overall score 2775.567019728554 probs on average / budget 8273879 Mi // Tue: Overall score 2758.4199055140407 probs on average / budget 8640381 Mi } From b54ce3e0cffd5344e7bb7a759be2b029663bd330 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Fri, 23 Jun 2023 12:10:10 +0100 Subject: [PATCH 200/210] polymorphic constant fix --- SAT/Z3Interfacing.cpp | 12 ++++++------ SAT/Z3Interfacing.hpp | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/SAT/Z3Interfacing.cpp b/SAT/Z3Interfacing.cpp index 5db492a97e..f8de64738e 100644 --- a/SAT/Z3Interfacing.cpp +++ b/SAT/Z3Interfacing.cpp @@ -863,8 +863,7 @@ struct ToZ3Expr } } else { symb = env.signature->getFunction(trm->functor()); - OperatorType* ftype = symb->fnType(); - range_sort = ftype->result(); + range_sort = SortHelper::getResultSort(trm); if (env.signature->isTermAlgebraSort(range_sort) && !self._createdTermAlgebras.contains(range_sort) ) { self.createTermAlgebra(*env.signature->getTermAlgebraOfSort(range_sort)); } @@ -910,7 +909,7 @@ struct ToZ3Expr } // If not value then create constant symbol - return self.getConst(symb, self.getz3sort(range_sort)); + return self.getConst(symb, self.getz3sort(range_sort), range_sort); } ASS(trm->numTermArguments()>0); @@ -1069,6 +1068,7 @@ struct ToZ3Expr // uninterpretd function auto f = self.z3Function(Z3Interfacing::FuncOrPredId(trm)); + return f(f.arity(), args); } }; @@ -1221,11 +1221,11 @@ z3::expr Z3Interfacing::getNamingConstantFor(TermList toName, z3::sort sort) }); } -z3::expr Z3Interfacing::getConst(Signature::Symbol* symb, z3::sort sort) +z3::expr Z3Interfacing::getConst(Signature::Symbol* symb, z3::sort sort, TermList vsrt) { - return _constantNames.getOrInit(symb, [&]() { + vstring name("c" + symb->name() + (symb->arity() ? ("$" + vsrt.toString()) : "")); + return _constantNames.getOrInit(name, [&]() { // careful: keep native constants' names distinct from the above ones (hence the "c"-prefix below) - vstring name("c" + symb->name()); outputln("(declare-fun ", name, " () ", sort, ")"); return _context.constant(name.c_str(), sort); }); diff --git a/SAT/Z3Interfacing.hpp b/SAT/Z3Interfacing.hpp index b3fe267c06..a2f10f1560 100644 --- a/SAT/Z3Interfacing.hpp +++ b/SAT/Z3Interfacing.hpp @@ -254,13 +254,13 @@ class Z3Interfacing : public PrimitiveProofRecordingSATSolver Option _out; Map _varNames; Map _termIndexedConstants; - Map _constantNames; + Map _constantNames; bool isNamedExpr(unsigned var) const; z3::expr getNameExpr(unsigned var); z3::expr getNamingConstantFor(TermList name, z3::sort sort); - z3::expr getConst(Signature::Symbol* symb, z3::sort srt); + z3::expr getConst(Signature::Symbol* symb, z3::sort srt, TermList vsrt); void __output(std::ostream& out ) { } template void __output(std::ostream& out, A a, As... as) { out << a; __output(out, as...); } From e1919bcb748eb770da4eadd9bc4c3daa224fb336 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 8 Aug 2023 10:40:39 +0100 Subject: [PATCH 201/210] when renaming and placing on an index in one go, we need to check banks are the same for _identity to be true --- Indexing/SubstitutionTree_FastInst.cpp | 2 +- Kernel/Renaming.cpp | 6 +++--- Kernel/Renaming.hpp | 6 +++--- Shell/NameReuse.cpp | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Indexing/SubstitutionTree_FastInst.cpp b/Indexing/SubstitutionTree_FastInst.cpp index e1d0c37d2f..475069e606 100644 --- a/Indexing/SubstitutionTree_FastInst.cpp +++ b/Indexing/SubstitutionTree_FastInst.cpp @@ -391,7 +391,7 @@ SubstitutionTree::QueryResultIter SubstitutionTree::FastInstancesIterator::next( ? ld->literal->ground() : (ld->term.isTerm() && ld->term.term()->ground()); if(!ground) { - Renaming normalizer; + Renaming normalizer(0, NORM_RESULT_BANK); if(_literalRetrieval) { normalizer.normalizeVariables(ld->literal); } else { diff --git a/Kernel/Renaming.cpp b/Kernel/Renaming.cpp index 8a3ce01fd7..7439343319 100644 --- a/Kernel/Renaming.cpp +++ b/Kernel/Renaming.cpp @@ -80,7 +80,7 @@ bool Renaming::identity() const shouldBeIdentity = false; } } - ASS_EQ(_identity, shouldBeIdentity); +// ASS_EQ(_identity, shouldBeIdentity); #endif return _identity; } @@ -95,7 +95,7 @@ void Renaming::normalizeVariables(const Term* t) while(vit.hasNext()) { TermList var=vit.next(); if(var.isOrdinaryVar()) { - getOrBind(var.var()); + getOrBind(var.var(), var.bank()); } } } @@ -103,7 +103,7 @@ void Renaming::normalizeVariables(const Term* t) void Renaming::normalizeVariables(TermList t) { if(t.isOrdinaryVar()) { - getOrBind(t.var()); + getOrBind(t.var(), t.bank()); } else if(t.isTerm()) { normalizeVariables(t.term()); } diff --git a/Kernel/Renaming.hpp b/Kernel/Renaming.hpp index 496d7591fb..389cbff13f 100644 --- a/Kernel/Renaming.hpp +++ b/Kernel/Renaming.hpp @@ -67,12 +67,12 @@ class Renaming { _bank = bank; } - unsigned getOrBind(unsigned v) + unsigned getOrBind(unsigned v, VarBank b) { unsigned res; if (_data.findOrInsert(v, res, _nextVar)) { _nextVar++; - if(v!=res) { + if(v!=res || b != _bank) { _identity = false; } } @@ -111,7 +111,7 @@ class Renaming { public: Applicator(Renaming* parent) : _parent(parent) {} TermList apply(unsigned var) - { return TermList(_parent->getOrBind(var), _parent->bank()); } + { return TermList(_parent->getOrBind(var, /* dummy */ DEFAULT_BANK), _parent->bank()); } private: Renaming* _parent; }; diff --git a/Shell/NameReuse.cpp b/Shell/NameReuse.cpp index b969a5f048..1f1ee3e412 100644 --- a/Shell/NameReuse.cpp +++ b/Shell/NameReuse.cpp @@ -40,7 +40,7 @@ void NameReuse::key(vstringstream &buf, TermList ts) CALL("NameReuse::key(vstringstream &, TermList)"); if(ts.isVar()) // need to rename variables occuring in terms, sorts - buf << 'x' << _renaming.getOrBind(ts.var()); + buf << 'x' << _renaming.getOrBind(ts.var(), ts.bank()); else // all functors realised as fN, where N is the functor's index // sorts are known to be sorts from their context, so this is OK @@ -124,7 +124,7 @@ vstring NameReuse::key(Formula *f) // unless they're not used, but in that case it's OK anyway VList::Iterator vars(subformula->vars()); while(vars.hasNext()) - buf << 'x' << _renaming.getOrBind(vars.next()); + buf << 'x' << _renaming.getOrBind(vars.next(), DEFAULT_BANK); break; } case BOOL_TERM: From 3e6ae4fc19a004a2378da37ea8d4d66e66f63095 Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 17 Aug 2023 11:53:01 +0100 Subject: [PATCH 202/210] fixing TH1 bug wherein we were attempting to turn type quantifiers into PI and SIGMA functions --- Shell/LambdaConversion.cpp | 32 ++++++++++++++++++++++++++++++++ Shell/Skolem.cpp | 4 ++++ 2 files changed, 36 insertions(+) diff --git a/Shell/LambdaConversion.cpp b/Shell/LambdaConversion.cpp index 07e49ec4cd..38cc9a39c5 100644 --- a/Shell/LambdaConversion.cpp +++ b/Shell/LambdaConversion.cpp @@ -47,6 +47,35 @@ TermList LambdaConversion::convertLambda(Formula* formula) { CALL("LambdaConversion::convertLambda(Formula*)"); + if(formula->connective() == FORALL){ + VList* vars = formula->vars(); + SList* sorts = formula->sorts(); + Formula* f = formula->qarg(); + TermList s; + + bool typeVarFound; + while(vars){ + SortHelper::tryGetVariableSort(vars->head(), f, s); + if(s == AtomicSort::superSort()){ + typeVarFound = true; + vars = vars->tail(); + if(sorts) + sorts = sorts->tail(); + } else { + break; + } + } + + if(typeVarFound){ + if(vars) { + formula = new QuantifiedFormula(FORALL,vars,sorts,f); + } else { + formula = f; + } + } + + } + VarToIndexMap map; return convertLambda(formula, map); } @@ -126,6 +155,9 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) while(vit.hasNext()){ int v = vit.next(); ALWAYS(SortHelper::tryGetVariableSort(v, formula->qarg(), s)); + if(s == AtomicSort::superSort()){ + USER_ERROR("Vampire does not support full TH1. This benchmark is either outside of the TH1 fragment, or outside of the fragment supported by Vampire"); + } VList* var = VList::singleton(v); SList* sort = SList::singleton(s); auto t = TermList(Term::createLambda(form, var, sort, AtomicSort::boolSort())); diff --git a/Shell/Skolem.cpp b/Shell/Skolem.cpp index d4ebcd9d0d..dd426e8831 100644 --- a/Shell/Skolem.cpp +++ b/Shell/Skolem.cpp @@ -515,6 +515,10 @@ Formula* Skolem::skolemise (Formula* f) TermList rangeSort=_varSorts.get(v, AtomicSort::defaultSort()); bool skolemisingTypeVar = rangeSort == AtomicSort::superSort(); + if(skolemisingTypeVar && termVars.size()){ + USER_ERROR("TH1 does not permit an existential type quantifer underneath a univesal term quantifier"); + } + if(rangeSort.isVar() || !rangeSort.term()->shared() || !rangeSort.term()->ground()) { //the range sort may include existential type variables that have been skolemised above From 5d9af1b18b8422eb71258c45fd9d1d8f805fd3f3 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 21 Aug 2023 07:52:56 +0200 Subject: [PATCH 203/210] added first-order sub-schedule to SLH --- CASC/Schedules.cpp | 530 +++++++++++++++++++++++++++++++++++++++++++++ z3 | 2 +- 2 files changed, 531 insertions(+), 1 deletion(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index d9f87d186f..a3c95e6567 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5467,6 +5467,7 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul } void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick) { + if (property.higherOrder()) { // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=782:si=on:rtra=on_0"); quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=754:si=on:rtra=on_0"); @@ -5978,6 +5979,535 @@ void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& q // Mon10b Overall score 3037.186917544398 probs on average / budget 3813568 Mi // Mon10a Overall score 3000.409829293265 probs on average / budget 3825232 Mi // Sun09 Overall score 2938.863699793977 probs on average / budget 1918256 Mi + } else { // if (property.higherOrder()) + // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit + quick.push("dis+1002_1:1_bd=off:fd=off:sos=on:i=601:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_bsr=unit_only:drc=off:fsr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2agt=32:urr=on:i=894:si=on:rtra=on_0"); + quick.push("dis+1011_4:1_av=off:nwc=10.0:sd=1:sgt=16:ss=axioms:i=563:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_br=off:s2a=on:s2at=5.0:sd=2:ss=axioms:st=2.0:urr=on:i=596:si=on:rtra=on_0"); + quick.push("dis+21_2:3_drc=off:kws=precedence:s2a=on:s2agt=100:sgt=10:sp=unary_first:ss=axioms:i=628:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_fd=preordered:lecc=0.5:sos=on:sp=unary_frequency:to=lpo:urr=on:i=834:si=on:rtra=on_0"); + quick.push("dis-10_1:1_atotf=0.2:bd=off:drc=off:fd=preordered:fsr=off:nwc=3.0:sd=1:sp=const_frequency:spb=goal:ss=axioms:st=1.5:to=lpo:i=236:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:drc=off:ins=3:nwc=10.0:s2a=on:ss=axioms:i=497:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=preordered:fd=preordered:fsd=on:newcnf=on:plsq=on:plsql=on:slsq=on:sos=on:sp=weighted_frequency:spb=goal:to=lpo:i=362:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_av=off:sd=2:sos=on:ss=axioms:urr=on:i=511:si=on:rtra=on_0"); + quick.push("dis+10_1:1_br=off:newcnf=on:nwc=10.0:s2a=on:ss=axioms:urr=on:i=246:si=on:rtra=on_0"); + quick.push("ott-2_2:3_av=off:drc=off:lcm=reverse:newcnf=on:nm=2:nwc=10.0:s2a=on:s2agt=10:to=lpo:urr=on:i=787:si=on:rtra=on_0"); + quick.push("lrs+1011_4:1_nwc=5.0:s2a=on:sp=const_min:ss=axioms:urr=on:i=647:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_ep=RS:fde=unused:slsq=on:slsqr=1,2:sp=occurrence:spb=goal:i=555:si=on:rtra=on_0"); + quick.push("dis-1011_1:3_fd=preordered:sd=1:sgt=100:ss=axioms:tgt=full:urr=ec_only:i=534:si=on:rtra=on_0"); + quick.push("ott+1011_8:1_br=off:drc=off:kws=precedence:nm=2:s2a=on:s2agt=16:sp=frequency:urr=on:i=1522:si=on:rtra=on_0"); + quick.push("dis+2_3:1_awrs=converge:awrsf=200:s2a=on:s2at=4.0:uhcvi=on:urr=on:i=2:si=on:rtra=on_0"); + // Improves by expected 5474.0882895272125 probs costing 9998 Mi + // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit + quick.push("dis+2_1:1_nwc=10.0:sd=1:sgt=100:sp=frequency:ss=axioms:to=lpo:urr=on:i=731:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_ep=RS:erd=off:newcnf=on:sos=on:sp=weighted_frequency:i=301:si=on:rtra=on_0"); + quick.push("lrs+1011_8:1_cond=fast:drc=off:nwc=3.0:rawr=on:s2a=on:sac=on:slsq=on:slsqr=40,243:sp=const_frequency:to=lpo:uhcvi=on:i=1612:si=on:rtra=on_0"); + quick.push("dis+1011_1:2_anc=none:fd=preordered:kws=inv_arity_squared:nm=20:s2a=on:s2agt=100:s2pl=on:sd=2:slsq=on:slsqr=7,8:spb=intro:ss=axioms:st=5.0:i=2224:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_amm=sco:ep=RST:sos=on:sp=reverse_arity:ss=axioms:st=1.5:urr=on:i=509:si=on:rtra=on_0"); + quick.push("dis+1011_1:3_av=off:bsd=on:kws=inv_arity_squared:plsq=on:plsqr=1,8:ss=axioms:tgt=full:i=2036:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_av=off:bd=off:sd=1:sos=all:ss=axioms:st=2.0:i=164:si=on:rtra=on_0"); + quick.push("lrs-1010_1:1_bd=off:sos=on:sp=weighted_frequency:to=lpo:i=373:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_avsq=on:bce=on:fde=unused:ins=2:kws=inv_frequency:sos=on:sp=reverse_arity:urr=on:i=232:si=on:rtra=on_0"); + quick.push("dis+10_1:2_newcnf=on:nm=2:sd=1:ss=axioms:i=162:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_nm=16:nwc=5.0:s2a=on:s2at=2.0:urr=on:i=780:si=on:rtra=on_0"); + quick.push("ott+10_1:1_av=off:erd=off:sos=on:ss=axioms:st=1.5:urr=on:i=197:si=on:rtra=on_0"); + quick.push("dis+1011_7:3_aac=none:bsr=unit_only:er=filter:kws=precedence:lma=on:nm=0:sd=2:sgt=16:sp=unary_first:ss=axioms:tgt=ground:i=425:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_bd=off:kws=precedence:newcnf=on:rp=on:sos=on:sp=unary_first:ss=axioms:st=1.5:i=709:si=on:rtra=on_0"); + quick.push("dis+10_1:1_kws=inv_precedence:plsq=on:rawr=on:rp=on:slsq=on:sp=unary_first:i=46:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_acc=on:avsq=on:avsqc=2:s2a=on:s2at=1.5:ss=axioms:tgt=ground:i=291:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_av=off:kws=precedence:lcm=predicate:sos=on:sp=const_frequency:spb=goal:i=356:si=on:rtra=on_0"); + quick.push("ott+10_1:1_drc=off:s2a=on:sd=1:sp=weighted_frequency:ss=axioms:st=5.0:to=lpo:i=249:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_amm=off:sgt=8:sos=all:sp=unary_first:ss=axioms:to=lpo:i=234:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_nm=2:s2a=on:s2agt=100:sd=4:sgt=8:sos=all:ss=axioms:i=446:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_drc=off:nwc=10.0:s2a=on:s2at=3.0:sp=frequency:spb=non_intro:ss=axioms:to=lpo:i=244:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:s2a=on:s2agt=32:sac=on:i=428:si=on:rtra=on_0"); + quick.push("dis+10_3:1_av=off:nwc=5.0:s2a=on:s2agt=16:s2at=1.5:sd=1:sp=reverse_frequency:spb=goal:ss=axioms:st=5.0:i=368:si=on:rtra=on_0"); + quick.push("lrs-1010_1:1_ep=RSTC:sos=on:urr=ec_only:i=305:si=on:rtra=on_0"); + quick.push("lrs-32_1:1_fde=unused:kws=arity_squared:newcnf=on:nicw=on:nwc=5.0:rnwc=on:s2a=on:s2at=-1.0:urr=on:i=79:si=on:rtra=on_0"); + quick.push("lrs-1010_2:1_drc=off:kws=precedence:nwc=10.0:s2a=on:s2at=2.5:ss=axioms:st=3.0:i=452:si=on:rtra=on_0"); + quick.push("dis-1011_1:8_drc=off:fsr=off:lsd=10:nm=0:s2a=on:s2agt=16:sgt=10:spb=goal_then_units:ss=axioms:tgt=full:to=lpo:i=1411:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_bd=off:erd=off:sos=on:sp=unary_first:to=lpo:i=159:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_bd=off:flr=on:nm=2:s2a=on:sd=2:ss=axioms:i=344:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_avsq=on:drc=off:nwc=10.0:sp=frequency:to=lpo:i=332:si=on:rtra=on_0"); + quick.push("dis+21_1:1_ins=3:newcnf=on:sos=on:sp=weighted_frequency:to=lpo:i=250:si=on:rtra=on_0"); + quick.push("dis+10_1:4_av=off:fde=none:sos=on:sp=frequency:to=lpo:i=418:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:bd=preordered:kws=precedence:nwc=10.0:sgt=16:sp=const_frequency:spb=goal_then_units:ss=axioms:i=728:si=on:rtra=on_0"); + quick.push("lrs-2_2:3_av=off:fsd=on:ins=1:lcm=predicate:nwc=8.0:s2a=on:s2at=5.0:slsq=on:slsqc=2:slsqr=2,1:sp=const_frequency:uhcvi=on:i=88:si=on:rtra=on_0"); + quick.push("ott+10_1:1_s2a=on:s2agt=16:sgt=10:slsq=on:slsqc=1:sp=const_min:spb=goal_then_units:ss=axioms:to=lpo:i=474:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:avsq=on:avsqc=1:fsr=off:tgt=ground:i=204:si=on:rtra=on_0"); + quick.push("lrs-1011_1:20_sd=2:sgt=30:sp=frequency:spb=goal_then_units:ss=axioms:tgt=full:i=259:si=on:rtra=on_0"); + quick.push("ott+1666_5:1_aac=none:bs=unit_only:kws=inv_frequency:nwc=5.0:rawr=on:s2a=on:s2agt=64:sac=on:sp=occurrence:spb=goal:urr=on:i=1418:si=on:rtra=on_0"); + // Improves by expected 283.9457762984722 probs costing 20000 Mi + // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit + quick.push("dis+1010_1:7_bd=off:kws=arity_squared:s2a=on:sp=const_frequency:tgt=ground:i=788:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_plsq=on:plsqr=32,1:rawr=on:sac=on:sos=all:sp=unary_frequency:to=lpo:i=201:si=on:rtra=on_0"); + quick.push("ott+1_8:1_add=large:nm=64:s2a=on:s2agt=5:s2at=3.0:tgt=full:uhcvi=on:urr=on:i=1258:si=on:rtra=on_0"); + quick.push("dis+10_3:1_drc=off:nwc=10.0:s2a=on:s2at=2.0:urr=on:i=2604:si=on:rtra=on_0"); + quick.push("ott+1002_5:1_drc=off:nwc=10.0:sp=const_min:spb=goal_then_units:to=lpo:urr=on:i=253:si=on:rtra=on_0"); + quick.push("dis+1011_4:1_anc=none:bd=off:fsr=off:lsd=10:s2at=4.0:sd=2:slsq=on:slsqc=1:sp=weighted_frequency:ss=axioms:st=5.0:i=302:si=on:rtra=on_0"); + quick.push("dis-1010_8:1_av=off:cond=fast:flr=on:kws=inv_frequency:nm=0:nwc=10.0:i=777:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_bd=off:ins=3:nwc=3.0:sd=2:sgt=30:sp=frequency:ss=axioms:to=lpo:urr=on:i=1497:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_ep=RS:ss=axioms:i=822:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_alpa=false:bd=preordered:fde=none:newcnf=on:nm=64:s2at=5.0:slsq=on:slsqr=4,1:sos=on:sp=frequency:to=lpo:i=203:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:drc=off:sos=on:urr=on:i=532:si=on:rtra=on_0"); + quick.push("lrs+2_3:1_bsr=unit_only:nwc=10.0:sos=all:sp=unary_frequency:ss=axioms:to=lpo:i=275:si=on:rtra=on_0"); + quick.push("dis+2_1:64_bd=off:fd=off:s2a=on:sac=on:sos=on:sp=const_frequency:i=208:si=on:rtra=on_0"); + quick.push("ott+2_4:1_br=off:bsd=on:drc=off:nm=2:sp=unary_first:urr=on:i=3039:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_fd=off:nm=2:sos=on:to=lpo:urr=on:i=416:si=on:rtra=on_0"); + quick.push("ott+10_1:128_s2a=on:sp=reverse_arity:spb=goal_then_units:to=lpo:i=65:si=on:rtra=on_0"); + quick.push("dis+1010_1:1024_bd=off:drc=off:newcnf=on:rawr=on:s2pl=on:sd=2:sgt=20:sp=const_frequency:spb=goal_then_units:ss=axioms:tgt=full:i=278:si=on:rtra=on_0"); + quick.push("dis+1002_5:1_add=large:amm=sco:gs=on:newcnf=on:s2a=on:s2agt=30:s2at=1.2:s2pl=no:slsq=on:slsqr=1,8:sp=reverse_arity:spb=intro:i=447:si=on:rtra=on_0"); + quick.push("dis+10_1:1_kws=inv_precedence:plsq=on:rawr=on:rp=on:slsq=on:sp=unary_first:i=59:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_ep=R:newcnf=on:sd=1:sos=on:ss=axioms:st=4.0:i=168:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:fd=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2at=5.0:s2pl=no:sd=1:sos=on:ss=axioms:i=222:si=on:rtra=on_0"); + quick.push("ott+10_1:1_drc=off:fd=preordered:s2a=on:s2at=2.0:sp=weighted_frequency:spb=goal:tgt=full:to=lpo:urr=on:i=471:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fsr=off:plsq=on:plsqr=32,1:sd=1:sos=on:ss=axioms:i=316:si=on:rtra=on_0"); + quick.push("dis+10_1:1_erd=off:sos=all:ss=axioms:i=247:si=on:rtra=on_0"); + quick.push("dis+1010_7:15_abs=on:anc=all:nm=0:sos=on:sp=weighted_frequency:ss=axioms:i=190:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_atotf=0.1:bd=off:fd=off:sos=on:i=228:si=on:rtra=on_0"); + quick.push("lrs+1011_29:64_av=off:bs=unit_only:drc=off:kws=inv_frequency:lcm=reverse:sp=reverse_arity:tgt=full:i=780:si=on:rtra=on_0"); + quick.push("dis+2_1:7_av=off:fd=preordered:newcnf=on:nm=10:rp=on:sgt=16:sos=all:ss=axioms:i=612:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_av=off:bd=off:fsr=off:sos=on:ss=axioms:urr=on:i=1000:si=on:rtra=on_0"); + quick.push("dis-1011_1:1_av=off:fd=preordered:fsr=off:lcm=reverse:nm=2:nwc=10.0:s2a=on:s2agt=16:spb=goal:to=lpo:i=1217:si=on:rtra=on_0"); + quick.push("dis+11_1:1_atotf=0.1:nm=32:plsq=on:plsqc=1:plsql=on:plsqr=1,1:s2agt=64:slsq=on:slsqc=1:slsqr=2,1:sp=reverse_arity:spb=non_intro:ss=axioms:i=547:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_add=large:avsq=on:avsqr=21,4:bsr=unit_only:nm=16:nwc=6.0:plsq=on:plsqr=7452629,65536:rawr=on:s2a=on:slsq=on:slsqc=1:slsqr=1,4:sp=const_frequency:uhcvi=on:i=211:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:drc=off:fd=preordered:s2a=on:sp=unary_first:to=lpo:i=333:si=on:rtra=on_0"); + quick.push("dis+1011_8:1_avsq=on:ep=RS:fsr=off:plsq=on:plsqr=32,1:ss=axioms:st=1.5:i=549:si=on:rtra=on_0"); + quick.push("dis+10_1:1_sd=1:sos=on:ss=axioms:st=2.0:i=218:si=on:rtra=on_0"); + quick.push("dis-1011_1:128_atotf=0.1:bd=off:fsr=off:s2a=on:slsq=on:slsqc=1:slsqr=1,2:sp=const_min:ss=axioms:st=5.0:tgt=full:to=lpo:i=314:si=on:rtra=on_0"); + quick.push("ott+1011_1:1_bd=off:flr=on:sos=on:i=317:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_ep=RS:fde=unused:slsq=on:slsqr=1,2:sp=occurrence:spb=goal:i=930:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_av=off:nwc=5.0:sd=1:sgt=8:ss=axioms:i=251:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:kws=precedence:lcm=reverse:sd=2:sgt=10:sp=const_max:ss=axioms:st=2.0:i=378:si=on:rtra=on_0"); + quick.push("dis+10_8:1_kws=precedence:newcnf=on:s2a=on:s2at=5.0:sd=2:slsq=on:slsqc=1:sp=unary_frequency:ss=axioms:st=3.0:urr=on:i=343:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cond=fast:drc=off:erd=off:s2a=on:sac=on:slsq=on:slsql=off:ss=axioms:i=668:si=on:rtra=on_0"); + quick.push("dis-1011_1:3_fd=preordered:sd=1:sgt=100:ss=axioms:tgt=full:urr=ec_only:i=3535:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:avsq=on:avsqc=5:avsqr=3,1:sd=1:sgt=10:spb=goal_then_units:ss=axioms:st=3.0:tgt=full:i=547:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:lwlo=on:plsq=on:sos=all:sp=const_min:ss=axioms:st=5.0:to=lpo:i=179:si=on:rtra=on_0"); + quick.push("ott+2_1:64_aac=none:acc=model:awrs=decay:awrsf=5:br=off:rawr=on:sos=all:sp=weighted_frequency:tgt=ground:to=lpo:urr=ec_only:i=563:si=on:rtra=on_0"); + quick.push("dis+10_16:1_avsq=on:avsqr=1,16:fd=preordered:sgt=8:sos=all:ss=axioms:to=lpo:i=425:si=on:rtra=on_0"); + quick.push("lrs-10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=unary_first:spb=goal:i=243:si=on:rtra=on_0"); + // Improves by expected 151.7500472259248 probs costing 29978 Mi + // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit + quick.push("ott+1002_1:1_ep=RS:erd=off:newcnf=on:sos=on:sp=weighted_frequency:i=247:si=on:rtra=on_0"); + quick.push("dis+21_16:1_ep=RST:nm=3:slsq=on:ss=axioms:st=2.0:urr=on:i=704:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_bsr=unit_only:drc=off:fsr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2agt=32:urr=on:i=1694:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_av=off:rawr=on:s2a=on:slsq=on:slsqr=1,4:sp=unary_first:tgt=ground:i=1535:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_av=off:nm=32:plsq=on:sp=const_frequency:spb=goal:urr=on:i=497:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:br=off:kws=arity_squared:newcnf=on:nm=40:nwc=10.0:sd=1:sp=unary_first:spb=goal_then_units:ss=axioms:urr=on:i=762:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:sos=on:sp=frequency:to=lpo:urr=on:i=423:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_flr=on:fsd=on:sd=2:ss=axioms:i=1254:si=on:rtra=on_0"); + quick.push("dis-11_1:1_avsq=on:avsqr=1,16:ep=R:gs=on:nm=32:plsq=on:plsqc=1:plsqr=19,1:sos=on:i=362:si=on:rtra=on_0"); + quick.push("dis+10_5:4_anc=none:bd=off:drc=off:fsr=off:ins=2:newcnf=on:sd=1:sgt=8:sp=unary_first:ss=axioms:tgt=full:i=1105:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_av=off:bd=off:bsr=unit_only:kws=frequency:lcm=reverse:nm=16:s2a=on:s2agt=8:sd=1:ss=axioms:st=3.0:urr=on:i=766:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_bd=off:kws=inv_frequency:lcm=reverse:nwc=10.0:plsq=on:plsql=on:plsqr=1,32:rawr=on:s2agt=16:s2at=3.0:sd=2:slsq=on:slsqc=2:sp=frequency:ss=axioms:st=5.0:i=312:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_bd=off:fd=off:nm=4:nwc=10.0:sd=1:ss=axioms:urr=on:i=355:si=on:rtra=on_0"); + quick.push("ott+1011_1:1_bd=off:drc=off:flr=on:kws=precedence:s2a=on:s2agt=32:sp=frequency:urr=on:i=608:si=on:rtra=on_0"); + quick.push("ott+10_1:1_av=off:erd=off:sos=on:ss=axioms:st=1.5:urr=on:i=197:si=on:rtra=on_0"); + quick.push("dis+2_4:1_acc=on:avsq=on:avsqc=1:avsqr=43,6:drc=off:fsr=off:kws=precedence:lcm=reverse:lma=on:newcnf=on:rawr=on:sac=on:sos=on:sp=weighted_frequency:i=865:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_nwc=10.0:sgt=8:ss=axioms:urr=on:i=819:si=on:rtra=on_0"); + quick.push("ott+10_1:128_s2a=on:sp=reverse_arity:spb=goal_then_units:to=lpo:i=159:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_anc=none:flr=on:kws=inv_arity:nm=0:nwc=5.0:sd=1:sgt=60:spb=units:ss=axioms:uhcvi=on:i=854:si=on:rtra=on_0"); + quick.push("ott+10_4:1_br=off:nwc=10.0:s2a=on:s2at=5.0:spb=goal:ss=axioms:st=2.0:tgt=full:to=lpo:urr=on:i=417:si=on:rtra=on_0"); + quick.push("ott+21_11537325:1048576_awrs=decay:awrsf=30:bd=off:nm=20:nwc=10.0:sd=10:sp=weighted_frequency:ss=axioms:st=2.0:urr=on:i=2221:si=on:rtra=on_0"); + quick.push("dis+21_1:1_anc=all:er=tagged:fsr=off:nm=16:s2agt=16:s2pl=on:sac=on:sos=on:sp=const_min:spb=goal_then_units:to=lpo:i=445:si=on:rtra=on_0"); + quick.push("dis+10_1:1_kws=inv_precedence:plsq=on:rawr=on:rp=on:slsq=on:sp=unary_first:i=59:si=on:rtra=on_0"); + quick.push("dis+1002_5:1_flr=on:plsq=on:s2a=on:s2agt=16:to=lpo:i=410:si=on:rtra=on_0"); + quick.push("dis+11_1:1_fsr=off:plsq=on:plsqr=3,1:s2a=on:s2agt=4:sac=on:sgt=8:ss=axioms:urr=on:i=1476:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_avsq=on:avsqc=1:avsqr=1,16:lcm=reverse:s2a=on:s2agt=16:sp=frequency:urr=on:i=575:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:br=off:s2a=on:s2agt=16:urr=on:i=1564:si=on:rtra=on_0"); + quick.push("lrs-1011_2:1_er=filter:flr=on:nwc=5.0:sac=on:sp=reverse_arity:to=lpo:i=482:si=on:rtra=on_0"); + quick.push("lrs+1002_1:2_ep=R:fsr=off:lwlo=on:s2a=on:sos=on:i=902:si=on:rtra=on_0"); + quick.push("ott+10_1:32_drc=off:kws=precedence:sd=1:spb=goal_then_units:ss=axioms:st=2.0:i=412:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_avsq=on:drc=off:ins=1:rawr=on:spb=non_intro:ss=axioms:st=2.0:tgt=ground:urr=on:i=563:si=on:rtra=on_0"); + quick.push("dis-1011_1:10_acc=on:drc=off:nm=2:s2a=on:s2at=3.0:sac=on:sd=2:sgt=10:ss=axioms:tgt=ground:i=2602:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_bd=off:kws=precedence:sd=1:slsq=on:sp=const_frequency:spb=intro:ss=axioms:tgt=full:i=462:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_newcnf=on:sp=unary_first:ss=axioms:st=3.0:urr=on:i=899:si=on:rtra=on_0"); + quick.push("lrs+10_1:40_av=off:bs=unit_only:rp=on:sd=1:ss=axioms:st=5.0:tgt=full:i=1668:si=on:rtra=on_0"); + quick.push("ott+10_8:1_acc=on:awrs=decay:awrsf=200:ccuc=first:drc=off:fde=none:newcnf=on:nm=10:nwc=6.0:sp=reverse_frequency:uhcvi=on:urr=on:i=788:si=on:rtra=on_0"); + quick.push("lrs+1002_1:2_av=off:sd=1:sos=all:ss=axioms:st=3.0:urr=ec_only:i=221:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_add=large:avsq=on:avsqr=21,4:bsr=unit_only:nm=16:nwc=6.0:plsq=on:plsqr=7452629,65536:rawr=on:s2a=on:slsq=on:slsqc=1:slsqr=1,4:sp=const_frequency:uhcvi=on:i=836:si=on:rtra=on_0"); + quick.push("ott+2_1:1_plsq=on:plsqr=32,1:rawr=on:sos=all:sp=weighted_frequency:spb=units:ss=axioms:to=lpo:i=616:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_av=off:ins=1:kws=inv_frequency:s2a=on:s2agt=8:sd=2:slsq=on:slsqc=1:slsqr=1,4:ss=axioms:st=5.0:tgt=ground:i=361:si=on:rtra=on_0"); + quick.push("lrs+2_1:67_av=off:fde=unused:kws=precedence:lcm=reverse:sos=on:i=208:si=on:rtra=on_0"); + quick.push("ott-2_2:3_av=off:drc=off:lcm=reverse:newcnf=on:nm=2:nwc=10.0:s2a=on:s2agt=10:to=lpo:urr=on:i=1514:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_flr=on:kws=precedence:s2at=5.0:slsq=on:slsqc=1:sp=const_min:ss=axioms:st=2.0:tgt=ground:i=3668:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_drc=off:kws=precedence:s2a=on:urr=on:i=435:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_av=off:bd=off:erd=off:fsr=off:gs=on:sos=on:urr=on:i=625:si=on:rtra=on_0"); + quick.push("ott+21_35:3_drc=off:s2at=5.0:sac=on:slsq=on:slsqr=1,8:sp=reverse_frequency:ss=axioms:urr=on:i=7156:si=on:rtra=on_0"); + quick.push("dis+10_1:6_awrs=converge:drc=off:nm=4:s2a=on:sp=const_frequency:to=lpo:urr=on:i=459:si=on:rtra=on_0"); + quick.push("lrs+21_1:6_av=off:drc=off:fd=preordered:kws=frequency:nwc=5.0:sd=1:sgt=30:ss=axioms:st=3.0:tgt=ground:i=941:si=on:rtra=on_0"); + quick.push("lrs+2_1:4_er=filter:plsq=on:plsqc=1:plsqr=32,1:sp=frequency:spb=goal:ss=axioms:st=2.0:tgt=ground:urr=on:i=1189:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_bd=off:cond=fast:kws=precedence:nm=2:s2a=on:sos=on:sp=unary_first:urr=ec_only:i=661:si=on:rtra=on_0"); + quick.push("dis+10_1:14_aac=none:fd=preordered:fsr=off:s2a=on:sac=on:sd=2:sgt=8:sp=weighted_frequency:ss=axioms:tgt=full:i=1613:si=on:rtra=on_0"); + quick.push("ott+10_1:1_s2a=on:s2agt=16:sgt=10:slsq=on:slsqc=1:sp=const_min:spb=goal_then_units:ss=axioms:to=lpo:i=1350:si=on:rtra=on_0"); + quick.push("lrs+3_1:6_anc=all:avsq=on:drc=off:nm=0:nwc=5.0:s2a=on:s2agt=8:spb=goal_then_units:to=lpo:urr=on:i=1116:si=on:rtra=on_0"); + quick.push("ott+1004_1:12_atotf=0.2:ins=1:sd=1:sgt=32:sp=frequency:ss=axioms:st=3.0:tgt=full:i=588:si=on:rtra=on_0"); + quick.push("ott+21_1:1_drc=off:s2a=on:s2agt=15:sp=reverse_arity:to=lpo:urr=on:i=671:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_nwc=10.0:s2a=on:ss=axioms:st=2.0:urr=on:i=499:si=on:rtra=on_0"); + quick.push("lrs-1011_1:20_sd=2:sgt=30:sp=frequency:spb=goal_then_units:ss=axioms:tgt=full:i=1353:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_aac=none:fsr=off:sos=all:sp=const_frequency:ss=axioms:st=3.0:urr=on:i=1220:si=on:rtra=on_0"); + quick.push("dis+10_16:1_avsq=on:avsqr=1,16:fd=preordered:sgt=8:sos=all:ss=axioms:to=lpo:i=1207:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_plsq=on:plsqr=1,2:s2a=on:s2agt=8:sac=on:sgt=4:ss=axioms:i=683:si=on:rtra=on_0"); + quick.push("dis+1010_5568647:1048576_awrs=decay:awrsf=200:ins=3:kws=inv_arity:nwc=5.0:ss=axioms:i=450:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_av=off:ep=RSTC:erd=off:kws=arity_squared:nwc=5.0:s2a=on:i=389:si=on:rtra=on_0"); + quick.push("lrs+1011_2:1_bd=off:br=off:s2a=on:s2agt=8:s2at=1.2:slsq=on:slsqc=1:slsqr=2,1:i=566:si=on:rtra=on_0"); + // Improves by expected 129.57230129213247 probs costing 59995 Mi + // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit + quick.push("ott+11_1:1_av=off:bsr=unit_only:sos=all:i=2836:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_av=off:fd=off:nwc=5.0:sd=2:ss=axioms:st=3.0:to=lpo:i=2899:si=on:rtra=on_0"); + quick.push("dis+1002_2:1_anc=all_dependent:drc=off:newcnf=on:nm=32:s2a=on:s2agt=20:s2at=1.5:sp=reverse_arity:i=2258:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_bsr=unit_only:drc=off:fsr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2agt=32:urr=on:i=6540:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fd=off:nwc=5.0:sos=on:spb=goal_then_units:to=lpo:i=343:si=on:rtra=on_0"); + quick.push("ott+1002_5:1_drc=off:nwc=10.0:sp=const_min:spb=goal_then_units:to=lpo:urr=on:i=2333:si=on:rtra=on_0"); + quick.push("ott+21_1:1_av=off:nwc=5.0:s2a=on:spb=intro:to=lpo:i=1038:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_fd=preordered:fde=unused:nm=10:s2at=5.0:slsq=on:slsqc=1:slsqr=4,1:spb=goal:ss=axioms:st=2.0:tgt=ground:to=lpo:i=433:si=on:rtra=on_0"); + quick.push("lrs+1011_3:2_lsd=30:nm=30:s2a=on:s2agt=15:slsq=on:spb=goal:to=lpo:i=1401:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_av=off:cond=fast:drc=off:kws=precedence:s2a=on:s2at=3.0:i=842:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:avsq=on:avsqc=2:nm=40:sac=on:sos=all:urr=on:i=2039:si=on:rtra=on_0"); + quick.push("dis+10_1:8_av=off:fsd=on:fsr=off:s2a=on:sos=all:i=2503:si=on:rtra=on_0"); + quick.push("lrs+11_4:1_br=off:bs=on:drc=off:sp=const_frequency:spb=goal_then_units:ss=axioms:to=lpo:i=840:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_kws=arity_squared:nm=32:nwc=2.0:sac=on:i=687:si=on:rtra=on_0"); + quick.push("dis-11_1:1_avsq=on:avsqr=1,16:ep=R:gs=on:nm=32:plsq=on:plsqc=1:plsqr=19,1:sos=on:i=411:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_bd=off:kws=inv_frequency:lcm=reverse:nwc=10.0:plsq=on:plsql=on:plsqr=1,32:rawr=on:s2agt=16:s2at=3.0:sd=2:slsq=on:slsqc=2:sp=frequency:ss=axioms:st=5.0:i=312:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_ep=RS:ss=axioms:i=1165:si=on:rtra=on_0"); + quick.push("dis+10_1:1_kws=precedence:newcnf=on:nm=4:sos=on:sp=const_max:i=813:si=on:rtra=on_0"); + quick.push("lrs-1002_1:1_br=off:s2a=on:sp=unary_frequency:to=lpo:urr=on:i=1313:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_alpa=false:bd=preordered:fde=none:newcnf=on:nm=64:s2at=5.0:slsq=on:slsqr=4,1:sos=on:sp=frequency:to=lpo:i=203:si=on:rtra=on_0"); + quick.push("dis+1011_2:1_afr=on:fde=none:s2a=on:s2agt=20:i=2973:si=on:rtra=on_0"); + quick.push("ott+1011_1:1_bd=off:drc=off:flr=on:kws=precedence:s2a=on:s2agt=32:sp=frequency:urr=on:i=608:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_abs=on:drc=off:nm=6:sac=on:sos=on:i=1041:si=on:rtra=on_0"); + quick.push("ott+10_1:1_av=off:erd=off:sos=on:ss=axioms:st=1.5:urr=on:i=1054:si=on:rtra=on_0"); + quick.push("dis+1011_5:1_gsp=on:ins=2:kws=inv_precedence:newcnf=on:sos=all:sp=const_max:spb=goal_then_units:i=697:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_fd=off:nm=2:sos=on:to=lpo:urr=on:i=1715:si=on:rtra=on_0"); + quick.push("dis+1010_5:1_av=off:kws=precedence:nm=64:plsq=on:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=1866:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_erd=off:ins=1:kws=frequency:nm=40:sd=1:ss=axioms:st=5.0:tgt=ground:uhcvi=on:i=2009:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_anc=none:flr=on:kws=inv_arity:nm=0:nwc=5.0:sd=1:sgt=60:spb=units:ss=axioms:uhcvi=on:i=1951:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_acc=on:anc=none:bd=off:drc=off:erd=off:nwc=10.0:rnwc=on:s2a=on:s2at=2.0:urr=ec_only:i=691:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_nm=2:s2a=on:s2agt=16:sp=const_max:ss=axioms:st=2.0:urr=on:i=1009:si=on:rtra=on_0"); + quick.push("ott+2_8:1_abs=on:br=off:kws=frequency:nm=30:s2a=on:s2at=1.2:sp=frequency:tgt=full:urr=on:i=1046:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:ss=axioms:st=3.0:urr=on:i=1855:si=on:rtra=on_0"); + quick.push("lrs+1011_1:2_av=off:fsr=off:ins=1:lsd=10:nm=16:nwc=10.0:s2a=on:s2at=3.0:sp=unary_first:urr=on:i=519:si=on:rtra=on_0"); + quick.push("dis+1_1:1_atotf=0.18:fd=off:flr=on:newcnf=on:sos=on:i=355:si=on:rtra=on_0"); + quick.push("dis+1011_1:2_av=off:drc=off:flr=on:kws=precedence:sgt=8:ss=axioms:i=555:si=on:rtra=on_0"); + quick.push("dis+10_1:1_kws=inv_precedence:plsq=on:rawr=on:rp=on:slsq=on:sp=unary_first:i=932:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cond=on:fd=preordered:flr=on:sos=on:sp=reverse_frequency:ss=axioms:i=338:si=on:rtra=on_0"); + quick.push("dis-1011_1:2_av=off:fde=unused:nwc=3.0:s2a=on:s2agt=100:tgt=full:i=1487:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_fd=preordered:lecc=0.5:sos=on:sp=unary_frequency:to=lpo:urr=on:i=1078:si=on:rtra=on_0"); + quick.push("dis+10_1:64_acc=on:bce=on:fde=none:nm=30:sd=3:sos=on:sp=frequency:ss=axioms:st=7.0:tgt=ground:to=lpo:i=905:si=on:rtra=on_0"); + quick.push("lrs-1011_1:32_av=off:bsd=on:drc=off:nm=10:sd=2:sgt=20:ss=axioms:st=1.5:tgt=ground:i=8118:si=on:rtra=on_0"); + quick.push("dis+10_4:1_cond=fast:fde=none:s2a=on:s2agt=32:s2at=1.2:i=1338:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=preordered:fd=preordered:fsd=on:newcnf=on:plsq=on:plsql=on:slsq=on:sos=on:sp=weighted_frequency:spb=goal:to=lpo:i=695:si=on:rtra=on_0"); + quick.push("ott+21_1:1_drc=off:fde=unused:s2a=on:s2at=5.0:sp=const_min:urr=ec_only:i=664:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_afr=on:kws=precedence:nm=16:sp=weighted_frequency:spb=goal_then_units:ss=axioms:tgt=ground:i=3722:si=on:rtra=on_0"); + quick.push("dis+1011_1:5_av=off:bsr=unit_only:drc=off:sp=reverse_arity:tgt=full:i=4913:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:nm=2:plsq=on:plsqc=2:sos=all:sp=const_frequency:i=397:si=on:rtra=on_0"); + quick.push("dis+21_5:1_drc=off:s2a=on:s2agt=16:s2at=5.0:tgt=full:uhcvi=on:urr=on:i=1397:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_acc=on:avsq=on:avsqc=5:drc=off:fde=none:kws=precedence:s2a=on:s2at=6.0:sp=frequency:spb=goal:tgt=ground:i=1081:si=on:rtra=on_0"); + quick.push("dis+10_1:1_s2agt=16:slsq=on:slsqc=1:sp=weighted_frequency:to=lpo:i=842:si=on:rtra=on_0"); + quick.push("lrs-1010_1:1_ep=RSTC:sos=on:urr=ec_only:i=849:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_bd=off:kws=precedence:sd=1:slsq=on:sp=const_frequency:spb=intro:ss=axioms:tgt=full:i=348:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=none:ep=RS:nm=2:sd=10:sgt=10:sp=const_max:ss=axioms:i=1105:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_fde=unused:ins=3:newcnf=on:nwc=6.0:s2a=on:s2at=3.0:spb=intro:i=2557:si=on:rtra=on_0"); + quick.push("dis+11_1:3_avsq=on:avsql=on:bd=off:drc=off:fd=preordered:kws=inv_frequency:lma=on:newcnf=on:sp=reverse_frequency:tgt=ground:uhcvi=on:i=4384:si=on:rtra=on_0"); + quick.push("dis+1011_1:4_avsq=on:bd=off:kws=inv_frequency:nwc=5.0:s2a=on:sac=on:sp=const_frequency:i=1788:si=on:rtra=on_0"); + quick.push("ott+2_2:1_br=off:drc=off:ins=3:newcnf=on:nm=0:sp=const_frequency:ss=axioms:st=3.0:tgt=full:urr=on:i=5487:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cond=fast:nm=10:sd=2:spb=intro:ss=axioms:i=1162:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_bd=preordered:nwc=5.0:sd=1:ss=axioms:urr=on:i=2880:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:avsq=on:avsqc=1:fsr=off:tgt=ground:i=182:si=on:rtra=on_0"); + quick.push("dis-1_1:1_abs=on:bd=off:sos=on:sp=frequency:to=lpo:i=481:si=on:rtra=on_0"); + quick.push("dis+1011_3:1_av=off:fsr=off:nwc=10.0:sgt=16:sp=unary_first:ss=axioms:st=2.0:i=1980:si=on:rtra=on_0"); + quick.push("ott+21_1:1_drc=off:s2a=on:s2agt=15:sp=reverse_arity:to=lpo:urr=on:i=1077:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:nm=16:s2a=on:s2agt=16:sp=frequency:to=lpo:i=732:si=on:rtra=on_0"); + quick.push("lrs-1011_1:20_sd=2:sgt=30:sp=frequency:spb=goal_then_units:ss=axioms:tgt=full:i=237:si=on:rtra=on_0"); + quick.push("ott+1011_8:1_br=off:drc=off:kws=precedence:nm=2:s2a=on:s2agt=16:sp=frequency:urr=on:i=7121:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_av=off:cond=fast:gs=on:ins=3:sos=all:sp=frequency:to=lpo:i=1438:si=on:rtra=on_0"); + quick.push("lrs+1011_2:13_av=off:awrs=decay:awrsf=300:bd=off:fd=off:fsr=off:kws=inv_precedence:s2a=on:s2at=1.5:slsq=on:spb=goal:i=1103:si=on:rtra=on_0"); + quick.push("ott+21_29:3_erd=off:s2a=on:s2at=1.5:sac=on:sd=1:ss=axioms:st=6.0:to=lpo:urr=on:i=770:si=on:rtra=on_0"); + quick.push("lrs-11_1:1_br=off:drc=off:kws=precedence:lsd=50:slsq=on:slsql=off:slsqr=1,2:spb=intro:ss=axioms:i=492:si=on:rtra=on_0"); + quick.push("dis-1010_1:6_fde=unused:ins=2:rawr=on:slsq=on:slsqc=1:slsqr=11,4:sp=reverse_arity:spb=non_intro:tgt=ground:i=760:si=on:rtra=on_0"); + quick.push("dis+10_1:1_s2a=on:sp=occurrence:to=lpo:i=293:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_anc=all:awrs=decay:bs=on:erd=off:ins=1:sd=1:sgt=16:sos=all:spb=goal:ss=axioms:st=1.5:to=lpo:i=1323:si=on:rtra=on_0"); + quick.push("dis+21_1:8_bs=unit_only:fsr=off:kws=inv_arity_squared:sos=on:sp=unary_frequency:i=1386:si=on:rtra=on_0"); + quick.push("dis+2_8:1_aac=none:abs=on:bd=off:er=tagged:fde=none:fs=off:fsr=off:sfv=off:sos=all:to=lpo:i=566:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_av=off:ep=RSTC:erd=off:kws=arity_squared:nwc=5.0:s2a=on:i=389:si=on:rtra=on_0"); + // Improves by expected 107.39643521475446 probs costing 119873 Mi + // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit + quick.push("dis+1010_1:7_bd=off:kws=arity_squared:s2a=on:sp=const_frequency:tgt=ground:i=537:si=on:rtra=on_0"); + quick.push("dis+10_1:1_fd=off:ins=2:lma=on:sos=all:spb=goal_then_units:i=369:si=on:rtra=on_0"); + quick.push("ott+1_8:1_add=large:nm=64:s2a=on:s2agt=5:s2at=3.0:tgt=full:uhcvi=on:urr=on:i=1447:si=on:rtra=on_0"); + quick.push("dis-10_1:3_acc=model:awrs=decay:br=off:bsd=on:fd=preordered:nm=2:s2a=on:s2at=3.0:tgt=full:to=lpo:i=3738:si=on:rtra=on_0"); + quick.push("dis+1011_1:3_av=off:bsd=on:kws=inv_arity_squared:plsq=on:plsqr=1,8:ss=axioms:tgt=full:i=10094:si=on:rtra=on_0"); + quick.push("dis+11_1:7_sac=on:sd=2:ss=axioms:st=4.0:i=1715:si=on:rtra=on_0"); + quick.push("ott+4_1:1024_bd=off:plsq=on:plsqc=1:plsqr=7,1:sd=2:ss=axioms:i=383:si=on:rtra=on_0"); + quick.push("lrs+1011_1:24_atotf=0.2:bd=off:s2a=on:s2agt=60:sgt=20:ss=axioms:tgt=ground:i=8128:si=on:rtra=on_0"); + quick.push("lrs+10_7:4_acc=on:drc=off:kws=inv_frequency:nm=16:sp=weighted_frequency:spb=intro:ss=axioms:tgt=full:i=476:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_bsr=unit_only:drc=off:fsr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2agt=32:urr=on:i=893:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_fd=off:nwc=5.0:sos=on:spb=goal_then_units:to=lpo:i=343:si=on:rtra=on_0"); + quick.push("ott+1002_5:1_drc=off:nwc=10.0:sp=const_min:spb=goal_then_units:to=lpo:urr=on:i=1356:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ep=RS:sos=on:ss=axioms:st=1.5:urr=on:i=3901:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:br=off:kws=arity_squared:newcnf=on:nm=40:nwc=10.0:sd=1:sp=unary_first:spb=goal_then_units:ss=axioms:urr=on:i=1084:si=on:rtra=on_0"); + quick.push("lrs+11_2:1_av=off:drc=off:lsd=50:nm=2:nwc=5.0:s2a=on:s2agt=20:i=4880:si=on:rtra=on_0"); + quick.push("lrs+1011_5:1_av=off:lwlo=on:nwc=3.0:tgt=ground:i=10632:si=on:rtra=on_0"); + quick.push("lrs+11_4:1_br=off:bs=on:drc=off:sp=const_frequency:spb=goal_then_units:ss=axioms:to=lpo:i=840:si=on:rtra=on_0"); + quick.push("dis+1004_1:1_av=off:drc=off:fd=preordered:flr=on:s2a=on:s2agt=16:sp=const_frequency:urr=ec_only:i=2191:si=on:rtra=on_0"); + quick.push("dis-1010_8:1_av=off:cond=fast:flr=on:kws=inv_frequency:nm=0:nwc=10.0:i=546:si=on:rtra=on_0"); + quick.push("ott+2_1:1_lcm=predicate:s2a=on:s2agt=4:s2at=2.0:urr=on:i=6322:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bs=on:fde=unused:flr=on:s2a=on:s2at=2.0:i=1860:si=on:rtra=on_0"); + quick.push("dis+10_5:4_anc=none:bd=off:drc=off:fsr=off:ins=2:newcnf=on:sd=1:sgt=8:sp=unary_first:ss=axioms:tgt=full:i=1834:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_av=off:bd=off:bsr=unit_only:kws=frequency:lcm=reverse:nm=16:s2a=on:s2agt=8:sd=1:ss=axioms:st=3.0:urr=on:i=713:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_bd=off:kws=inv_frequency:lcm=reverse:nwc=10.0:plsq=on:plsql=on:plsqr=1,32:rawr=on:s2agt=16:s2at=3.0:sd=2:slsq=on:slsqc=2:sp=frequency:ss=axioms:st=5.0:i=312:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_ep=RS:ss=axioms:i=1165:si=on:rtra=on_0"); + quick.push("dis+1010_1:24_kws=arity_squared:sac=on:sgt=20:sp=unary_frequency:ss=axioms:tgt=full:i=11705:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_drc=off:ins=1:plsq=on:plsqc=1:plsqr=32,1:urr=on:i=3162:si=on:rtra=on_0"); + quick.push("ott+1011_1:1_bd=off:drc=off:flr=on:kws=precedence:s2a=on:s2agt=32:sp=frequency:urr=on:i=2837:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_amm=off:bs=unit_only:fd=preordered:kws=inv_frequency:lcm=predicate:newcnf=on:spb=goal:tgt=ground:i=10191:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:ins=1:newcnf=on:nwc=10.0:s2a=on:s2at=2.0:ss=axioms:i=4466:si=on:rtra=on_0"); + quick.push("lrs-3_3:1_slsq=on:sp=frequency:to=lpo:urr=on:i=1192:si=on:rtra=on_0"); + quick.push("ott+1011_5:1_atotf=0.2:nm=0:sgt=10:ss=axioms:tgt=ground:i=2284:si=on:rtra=on_0"); + quick.push("dis-1011_1:1_av=off:fd=off:nm=2:slsq=on:slsql=off:spb=goal_then_units:ss=axioms:st=5.0:uhcvi=on:i=5106:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_fde=unused:flr=on:gsp=on:lwlo=on:nwc=10.0:sd=2:spb=units:ss=axioms:st=2.0:urr=on:i=2348:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_anc=none:flr=on:kws=inv_arity:nm=0:nwc=5.0:sd=1:sgt=60:spb=units:ss=axioms:uhcvi=on:i=1715:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_acc=on:anc=none:bd=off:drc=off:erd=off:nwc=10.0:rnwc=on:s2a=on:s2at=2.0:urr=ec_only:i=691:si=on:rtra=on_0"); + quick.push("dis+1011_1:14_ep=R:fsr=off:kws=inv_arity:lsd=50:nwc=5.0:s2a=on:s2agt=60:sp=weighted_frequency:i=1769:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_ep=R:nm=0:slsq=on:slsqr=1,16:i=8263:si=on:rtra=on_0"); + quick.push("dis+10_16:1_drc=off:sd=2:sos=on:sp=const_min:ss=axioms:to=lpo:i=2535:si=on:rtra=on_0"); + quick.push("dis+1010_16:1_sos=on:sp=const_frequency:to=lpo:i=6745:si=on:rtra=on_0"); + quick.push("dis+1010_1:24_amm=sco:nm=0:s2a=on:s2at=2.0:sp=unary_first:tgt=ground:i=2461:si=on:rtra=on_0"); + quick.push("ott+2_8:1_abs=on:br=off:kws=frequency:nm=30:s2a=on:s2at=1.2:sp=frequency:tgt=full:urr=on:i=1046:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_br=off:plsq=on:plsqr=4779363,1048576:sd=2:sos=all:ss=axioms:urr=on:i=3830:si=on:rtra=on_0"); + quick.push("dis+1002_5:1_add=large:amm=sco:gs=on:newcnf=on:s2a=on:s2agt=30:s2at=1.2:s2pl=no:slsq=on:slsqr=1,8:sp=reverse_arity:spb=intro:i=375:si=on:rtra=on_0"); + quick.push("lrs+1011_1:2_av=off:fsr=off:ins=1:lsd=10:nm=16:nwc=10.0:s2a=on:s2at=3.0:sp=unary_first:urr=on:i=2292:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_br=off:s2a=on:s2at=5.0:sd=2:ss=axioms:st=2.0:urr=on:i=2461:si=on:rtra=on_0"); + quick.push("dis+1011_1:2_av=off:drc=off:flr=on:kws=precedence:sgt=8:ss=axioms:i=555:si=on:rtra=on_0"); + quick.push("dis+10_1:1_kws=inv_precedence:plsq=on:rawr=on:rp=on:slsq=on:sp=unary_first:i=932:si=on:rtra=on_0"); + quick.push("dis+21_141:35_awrs=decay:awrsf=110:kws=precedence:lcm=reverse:lma=on:nwc=10.0:s2a=on:s2at=3.0:sp=reverse_arity:i=2411:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_av=off:bd=off:br=off:cond=fast:nwc=3.0:s2a=on:s2at=3.0:i=3870:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_atotf=0.00189482:drc=off:fsr=off:s2a=on:sd=1:ss=axioms:st=2.0:i=2594:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=preordered:fd=preordered:fsd=on:newcnf=on:plsq=on:plsql=on:slsq=on:sos=on:sp=weighted_frequency:spb=goal:to=lpo:i=4502:si=on:rtra=on_0"); + quick.push("ott+21_1:1_drc=off:fde=unused:s2a=on:s2at=5.0:sp=const_min:urr=ec_only:i=664:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=off:nm=30:slsq=on:slsqr=1,2:sp=unary_first:ss=axioms:st=2.0:uhcvi=on:urr=on:i=5300:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_amm=off:sgt=8:sos=all:sp=unary_first:ss=axioms:to=lpo:i=1515:si=on:rtra=on_0"); + quick.push("lrs-1011_8:1_amm=off:avsq=on:avsqr=1,16:bd=off:sos=on:sp=const_frequency:spb=non_intro:to=lpo:uhcvi=on:i=551:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_nm=2:s2a=on:s2agt=100:sd=4:sgt=8:sos=all:ss=axioms:i=481:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=none:ep=RS:kws=frequency:lcm=reverse:rp=on:s2a=on:sos=on:sp=occurrence:spb=goal:tgt=ground:updr=off:i=481:si=on:rtra=on_0"); + quick.push("dis+21_5:1_acc=on:br=off:lcm=predicate:newcnf=on:nicw=on:nm=2:sp=unary_first:ss=axioms:st=1.5:urr=on:i=3391:si=on:rtra=on_0"); + quick.push("dis-1011_1:28_av=off:drc=off:fde=unused:s2a=on:tgt=full:i=3375:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_avsq=on:drc=off:ins=1:rawr=on:spb=non_intro:ss=axioms:st=2.0:tgt=ground:urr=on:i=1807:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_s2a=on:s2agt=10:i=1986:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_acc=on:avsq=on:avsqc=5:drc=off:fde=none:kws=precedence:s2a=on:s2at=6.0:sp=frequency:spb=goal:tgt=ground:i=4248:si=on:rtra=on_0"); + quick.push("dis+10_1:1_s2agt=16:slsq=on:slsqc=1:sp=weighted_frequency:to=lpo:i=410:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_bd=off:kws=precedence:sd=1:slsq=on:sp=const_frequency:spb=intro:ss=axioms:tgt=full:i=1780:si=on:rtra=on_0"); + quick.push("dis-1011_1:1_av=off:fd=preordered:fsr=off:lcm=reverse:nm=2:nwc=10.0:s2a=on:s2agt=16:spb=goal:to=lpo:i=1903:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=none:ep=RS:nm=2:sd=10:sgt=10:sp=const_max:ss=axioms:i=971:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_add=large:avsq=on:avsqr=21,4:bsr=unit_only:nm=16:nwc=6.0:plsq=on:plsqr=7452629,65536:rawr=on:s2a=on:slsq=on:slsqc=1:slsqr=1,4:sp=const_frequency:uhcvi=on:i=836:si=on:rtra=on_0"); + quick.push("lrs+1011_4:1_nwc=5.0:s2a=on:sp=const_min:ss=axioms:urr=on:i=1660:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_acc=model:anc=all:bd=off:flr=on:kws=inv_frequency:nm=16:sac=on:sos=all:i=3697:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_newcnf=on:spb=non_intro:ss=axioms:st=2.0:urr=on:i=1140:si=on:rtra=on_0"); + quick.push("ott+21_1:1_bsr=unit_only:fsr=off:kws=inv_arity:nwc=10.0:rawr=on:sos=all:sp=frequency:i=1566:si=on:rtra=on_0"); + quick.push("lrs+21_1:7_drc=off:gsp=on:sd=1:sgt=64:ss=axioms:urr=on:i=4815:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.4:fde=unused:nm=2:sos=all:to=lpo:uhcvi=on:i=4977:si=on:rtra=on_0"); + quick.push("lrs+21_1:6_av=off:drc=off:fd=preordered:kws=frequency:nwc=5.0:sd=1:sgt=30:ss=axioms:st=3.0:tgt=ground:i=941:si=on:rtra=on_0"); + quick.push("ott+1004_8:1_fd=preordered:sac=on:ss=axioms:st=3.0:to=lpo:i=3117:si=on:rtra=on_0"); + quick.push("lrs+3_1:6_anc=all:avsq=on:drc=off:nm=0:nwc=5.0:s2a=on:s2agt=8:spb=goal_then_units:to=lpo:urr=on:i=2430:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_drc=off:slsq=on:slsqc=1:sp=const_min:ss=axioms:to=lpo:i=493:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:fd=off:sfv=off:sos=all:to=lpo:i=3997:si=on:rtra=on_0"); + quick.push("dis+1011_3:1_av=off:fsr=off:nwc=10.0:sgt=16:sp=unary_first:ss=axioms:st=2.0:i=1197:si=on:rtra=on_0"); + quick.push("lrs+1002_16:1_flr=on:nwc=3.0:s2a=on:s2agt=16:sp=const_min:spb=goal:to=lpo:urr=on:i=1399:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_aac=none:fsr=off:sos=all:sp=const_frequency:ss=axioms:st=3.0:urr=on:i=1072:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_bd=off:ins=1:lwlo=on:nwc=10.0:sp=weighted_frequency:urr=on:i=3443:si=on:rtra=on_0"); + quick.push("dis+10_16:1_avsq=on:avsqr=1,16:fd=preordered:sgt=8:sos=all:ss=axioms:to=lpo:i=1288:si=on:rtra=on_0"); + quick.push("dis+10_1:1_s2a=on:sp=occurrence:to=lpo:i=293:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_anc=all:awrs=decay:bs=on:erd=off:ins=1:sd=1:sgt=16:sos=all:spb=goal:ss=axioms:st=1.5:to=lpo:i=1221:si=on:rtra=on_0"); + quick.push("ott+1666_5:1_aac=none:bs=unit_only:kws=inv_frequency:nwc=5.0:rawr=on:s2a=on:s2agt=64:sac=on:sp=occurrence:spb=goal:urr=on:i=13536:si=on:rtra=on_0"); + // Improves by expected 77.33427083754582 probs costing 239991 Mi + // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit + quick.push("lrs+1011_8:1_cond=fast:drc=off:nwc=3.0:rawr=on:s2a=on:sac=on:slsq=on:slsqr=40,243:sp=const_frequency:to=lpo:uhcvi=on:i=8121:si=on:rtra=on_0"); + quick.push("dis+1011_2:1_acc=on:br=off:drc=off:kws=precedence:newcnf=on:sp=reverse_arity:tgt=ground:uhcvi=on:i=13525:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:sos=all:ss=axioms:i=3630:si=on:rtra=on_0"); + quick.push("dis+21_1:4_bs=unit_only:bsd=on:ile=on:sp=const_min:tgt=full:to=lpo:uhcvi=on:i=2762:si=on:rtra=on_0"); + quick.push("lrs+10_7:4_acc=on:drc=off:kws=inv_frequency:nm=16:sp=weighted_frequency:spb=intro:ss=axioms:tgt=full:i=3049:si=on:rtra=on_0"); + quick.push("ott+21_1:1_av=off:nwc=5.0:s2a=on:spb=intro:to=lpo:i=1038:si=on:rtra=on_0"); + quick.push("lrs+1011_3:2_lsd=30:nm=30:s2a=on:s2agt=15:slsq=on:spb=goal:to=lpo:i=1401:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_bd=off:fsr=off:lecc=0.5:lsd=50:nm=2:s2a=on:s2at=3.0:sp=frequency:tgt=ground:i=3853:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_avsq=on:bce=on:fde=unused:ins=2:kws=inv_frequency:sos=on:sp=reverse_arity:urr=on:i=3073:si=on:rtra=on_0"); + quick.push("ott+2_1:1_lcm=predicate:s2a=on:s2agt=4:s2at=2.0:urr=on:i=6097:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bs=on:fde=unused:flr=on:s2a=on:s2at=2.0:i=1860:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_ep=RS:ss=axioms:i=1165:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_fde=unused:uhcvi=on:i=16232:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:fde=none:newcnf=on:nwc=5.0:i=4876:si=on:rtra=on_0"); + quick.push("lrs+1011_3:1_nm=2:s2a=on:s2at=3.0:sp=const_min:ss=axioms:st=5.0:tgt=full:i=1673:si=on:rtra=on_0"); + quick.push("ott+10_1:1_av=off:erd=off:sos=on:ss=axioms:st=1.5:urr=on:i=10207:si=on:rtra=on_0"); + quick.push("ott+21_314:127_av=off:bd=preordered:drc=off:fde=none:gsp=on:nm=6:s2a=on:s2agt=30:sp=const_min:spb=goal:urr=ec_only:i=1565:si=on:rtra=on_0"); + quick.push("dis+1011_7:3_aac=none:bsr=unit_only:er=filter:kws=precedence:lma=on:nm=0:sd=2:sgt=16:sp=unary_first:ss=axioms:tgt=ground:i=920:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_ins=2:kws=precedence:nwc=5.0:sac=on:urr=ec_only:i=2425:si=on:rtra=on_0"); + quick.push("ott+21_11537325:1048576_awrs=decay:awrsf=30:bd=off:nm=20:nwc=10.0:sd=10:sp=weighted_frequency:ss=axioms:st=2.0:urr=on:i=3718:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_ins=2:nm=2:sp=frequency:tgt=ground:to=lpo:i=5996:si=on:rtra=on_0"); + quick.push("ott+21_1:1_kws=precedence:nm=4:sos=on:sp=frequency:uhcvi=on:updr=off:urr=on:i=5264:si=on:rtra=on_0"); + quick.push("dis+1010_1:1024_bd=off:drc=off:newcnf=on:rawr=on:s2pl=on:sd=2:sgt=20:sp=const_frequency:spb=goal_then_units:ss=axioms:tgt=full:i=3581:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_drc=off:newcnf=on:nm=2:sd=1:sp=occurrence:ss=axioms:st=3.0:i=4038:si=on:rtra=on_0"); + quick.push("dis+21_2:3_cond=on:fde=none:lcm=reverse:nm=0:plsq=on:plsqc=1:plsqr=32,1:sac=on:spb=goal_then_units:tgt=full:i=14261:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_avsq=on:avsqr=1,2:bd=off:kws=inv_frequency:nm=6:sos=all:spb=intro:i=7339:si=on:rtra=on_0"); + quick.push("dis+1011_1:7_av=off:bsd=on:drc=off:fd=preordered:ins=3:lsd=60:nm=2:nwc=10.0:sp=const_min:ss=axioms:st=3.0:i=5995:si=on:rtra=on_0"); + quick.push("dis+10_1:1_s2a=on:s2agt=16:i=1362:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_acc=on:awrs=decay:awrsf=30:fd=preordered:fde=none:ins=3:kws=arity_squared:newcnf=on:nwc=5.0:rnwc=on:s2a=on:sp=unary_frequency:ss=axioms:i=1394:si=on:rtra=on_0"); + quick.push("dis-1011_1:128_bd=off:drc=off:fsd=on:sp=const_frequency:ss=axioms:tgt=ground:i=4809:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cond=on:nwc=10.0:ss=axioms:st=2.0:urr=on:i=3544:si=on:rtra=on_0"); + quick.push("dis+10_8:1_av=off:ep=R:plsq=on:plsqr=204383,524288:sos=all:i=9186:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_avsq=on:avsqc=3:avsqr=1,16:flr=on:nwc=10.0:s2a=on:s2agt=32:sp=frequency:spb=goal_then_units:tgt=ground:i=8899:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_amm=off:sgt=8:sos=all:sp=unary_first:ss=axioms:to=lpo:i=1339:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_afr=on:kws=precedence:nm=16:sp=weighted_frequency:spb=goal_then_units:ss=axioms:tgt=ground:i=3722:si=on:rtra=on_0"); + quick.push("dis+0_16:1_br=off:kws=inv_frequency:s2a=on:s2at=5.0:urr=on:i=2417:si=on:rtra=on_0"); + quick.push("dis-1011_1:28_av=off:drc=off:fde=unused:s2a=on:tgt=full:i=3375:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_avsq=on:drc=off:ins=1:rawr=on:spb=non_intro:ss=axioms:st=2.0:tgt=ground:urr=on:i=1807:si=on:rtra=on_0"); + quick.push("ott+2_1:1_bsr=unit_only:flr=on:sac=on:sos=all:i=3511:si=on:rtra=on_0"); + quick.push("dis+10_1:1_s2agt=16:slsq=on:slsqc=1:sp=weighted_frequency:to=lpo:i=410:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_av=off:sd=2:sos=on:ss=axioms:urr=on:i=14864:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_anc=none:ep=RS:nm=2:sd=10:sgt=10:sp=const_max:ss=axioms:i=971:si=on:rtra=on_0"); + quick.push("dis+11_1:3_avsq=on:avsql=on:bd=off:drc=off:fd=preordered:kws=inv_frequency:lma=on:newcnf=on:sp=reverse_frequency:tgt=ground:uhcvi=on:i=10010:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_gsp=on:kws=arity:plsq=on:plsqr=1,1:s2a=on:s2at=2.0:sp=unary_frequency:spb=goal_then_units:i=9429:si=on:rtra=on_0"); + quick.push("dis+1011_1:4_avsq=on:bd=off:kws=inv_frequency:nwc=5.0:s2a=on:sac=on:sp=const_frequency:i=1629:si=on:rtra=on_0"); + quick.push("ott+1002_16:1_add=off:anc=all_dependent:nm=64:sac=on:slsq=on:slsqr=1,16:urr=on:i=6961:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_av=off:drc=off:foolp=on:kws=arity_squared:nm=20:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sp=unary_frequency:tgt=full:i=7727:si=on:rtra=on_0"); + quick.push("dis+1011_8:1_avsq=on:ep=RS:fsr=off:plsq=on:plsqr=32,1:ss=axioms:st=1.5:i=720:si=on:rtra=on_0"); + quick.push("ott+21_1:1_bsr=unit_only:fsr=off:kws=inv_arity:nwc=10.0:rawr=on:sos=all:sp=frequency:i=1566:si=on:rtra=on_0"); + quick.push("lrs+21_1:7_drc=off:gsp=on:sd=1:sgt=64:ss=axioms:urr=on:i=3830:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_av=off:drc=off:gsp=on:kws=precedence:s2a=on:s2at=-1.0:sos=on:spb=goal_then_units:i=5072:si=on:rtra=on_0"); + quick.push("dis-1011_1:4_av=off:drc=off:fde=unused:kws=inv_frequency:nm=32:nwc=2.0:tgt=full:i=31202:si=on:rtra=on_0"); + quick.push("lrs+1011_1:12_amm=off:br=off:ins=1:s2a=on:s2at=5.0:sims=off:urr=on:i=15694:si=on:rtra=on_0"); + quick.push("ott+21_35:3_drc=off:s2at=5.0:sac=on:slsq=on:slsqr=1,8:sp=reverse_frequency:ss=axioms:urr=on:i=26662:si=on:rtra=on_0"); + quick.push("lrs+2_1:4_er=filter:plsq=on:plsqc=1:plsqr=32,1:sp=frequency:spb=goal:ss=axioms:st=2.0:tgt=ground:urr=on:i=1189:si=on:rtra=on_0"); + quick.push("ott-10_8:1_flr=on:rawr=on:s2a=on:s2at=5.0:sac=on:slsq=on:i=9607:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_bd=preordered:nwc=5.0:sd=1:ss=axioms:urr=on:i=2880:si=on:rtra=on_0"); + quick.push("lrs+1011_1:14_av=off:drc=off:kws=frequency:lecc=1.5:lwlo=on:s2a=on:s2at=5.0:slsq=on:slsql=off:slsqr=3,4:spb=goal:tgt=full:i=16083:si=on:rtra=on_0"); + quick.push("ott+10_1:1_s2a=on:s2agt=16:sgt=10:slsq=on:slsqc=1:sp=const_min:spb=goal_then_units:ss=axioms:to=lpo:i=2785:si=on:rtra=on_0"); + quick.push("ott+10_1:1_flr=on:fsr=off:nwc=10.0:s2a=on:sac=on:spb=goal:urr=on:i=3506:si=on:rtra=on_0"); + quick.push("dis+1011_1:16_drc=off:sac=on:spb=goal_then_units:ss=axioms:st=5.0:i=10538:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_fde=none:kws=frequency:newcnf=on:s2a=on:s2agt=64:sac=on:slsq=on:slsqr=1,2:i=6707:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_aac=none:ep=RST:s2a=on:sos=all:sp=occurrence:spb=goal_then_units:i=17627:si=on:rtra=on_0"); + quick.push("lrs+1011_1:2_ins=1:newcnf=on:spb=goal:ss=axioms:tgt=full:i=22096:si=on:rtra=on_0"); + quick.push("dis+1011_3:1_av=off:fsr=off:nwc=10.0:sgt=16:sp=unary_first:ss=axioms:st=2.0:i=1406:si=on:rtra=on_0"); + quick.push("ott+1004_1:12_atotf=0.2:ins=1:sd=1:sgt=32:sp=frequency:ss=axioms:st=3.0:tgt=full:i=11080:si=on:rtra=on_0"); + quick.push("lrs+1002_16:1_flr=on:nwc=3.0:s2a=on:s2agt=16:sp=const_min:spb=goal:to=lpo:urr=on:i=1399:si=on:rtra=on_0"); + quick.push("lrs-1011_1:20_sd=2:sgt=30:sp=frequency:spb=goal_then_units:ss=axioms:tgt=full:i=1428:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_av=off:cond=fast:gs=on:ins=3:sos=all:sp=frequency:to=lpo:i=1092:si=on:rtra=on_0"); + quick.push("dis-1011_1:1_atotf=0.1:drc=off:kws=inv_precedence:s2a=on:s2agt=20:sac=on:spb=non_intro:tgt=ground:i=11373:si=on:rtra=on_0"); + quick.push("dis-1011_1:14_av=off:awrs=decay:awrsf=200:ins=1:nwc=10.0:sos=on:sp=unary_first:i=4014:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_bd=off:ins=1:lwlo=on:nwc=10.0:sp=weighted_frequency:urr=on:i=3443:si=on:rtra=on_0"); + quick.push("dis+10_16:1_avsq=on:avsqr=1,16:fd=preordered:sgt=8:sos=all:ss=axioms:to=lpo:i=1776:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_plsq=on:plsqr=1,2:s2a=on:s2agt=8:sac=on:sgt=4:ss=axioms:i=882:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_anc=all:awrs=decay:bs=on:erd=off:ins=1:sd=1:sgt=16:sos=all:spb=goal:ss=axioms:st=1.5:to=lpo:i=1221:si=on:rtra=on_0"); + quick.push("dis+10_4:1_bd=off:drc=off:kws=precedence:nm=2:rawr=on:s2a=on:slsq=on:slsqc=3:slsql=off:slsqr=1,8:sp=const_frequency:urr=ec_only:i=8538:si=on:rtra=on_0"); + quick.push("dis+2_875:524288_av=off:erd=off:kws=inv_arity_squared:rawr=on:sos=all:spb=goal_then_units:ss=axioms:st=3.0:i=2088:si=on:rtra=on_0"); + quick.push("dis+2_3:1_awrs=converge:awrsf=200:s2a=on:s2at=4.0:uhcvi=on:urr=on:i=16763:si=on:rtra=on_0"); + // Improves by expected 41.86702006570085 probs costing 479219 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("lrs+1011_8:1_cond=fast:drc=off:nwc=3.0:rawr=on:s2a=on:sac=on:slsq=on:slsqr=40,243:sp=const_frequency:to=lpo:uhcvi=on:i=8121:si=on:rtra=on_0"); + quick.push("dis+1011_2:1_acc=on:br=off:drc=off:kws=precedence:newcnf=on:sp=reverse_arity:tgt=ground:uhcvi=on:i=13525:si=on:rtra=on_0"); + quick.push("dis+1011_1:3_av=off:bsd=on:kws=inv_arity_squared:plsq=on:plsqr=1,8:ss=axioms:tgt=full:i=58470:si=on:rtra=on_0"); + quick.push("lrs+1011_1:24_atotf=0.2:bd=off:s2a=on:s2agt=60:sgt=20:ss=axioms:tgt=ground:i=8120:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_bsr=unit_only:drc=off:fsr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2agt=32:urr=on:i=6913:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_avsq=on:bce=on:fde=unused:ins=2:kws=inv_frequency:sos=on:sp=reverse_arity:urr=on:i=3073:si=on:rtra=on_0"); + quick.push("lrs+10_1:20_av=off:nm=2:sp=const_frequency:tgt=ground:i=30341:si=on:rtra=on_0"); + quick.push("ott+2_1:1_lcm=predicate:s2a=on:s2agt=4:s2at=2.0:urr=on:i=6322:si=on:rtra=on_0"); + quick.push("lrs+1011_16:1_awrs=converge:lwlo=on:nwc=3.0:s2a=on:s2agt=32:sd=1:sp=const_frequency:ss=axioms:st=3.0:i=7195:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:fde=none:newcnf=on:nwc=5.0:i=4876:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_amm=off:bs=unit_only:fd=preordered:kws=inv_frequency:lcm=predicate:newcnf=on:spb=goal:tgt=ground:i=11656:si=on:rtra=on_0"); + quick.push("ott+10_1:1_av=off:erd=off:sos=on:ss=axioms:st=1.5:urr=on:i=10207:si=on:rtra=on_0"); + quick.push("ott+2_4:1_br=off:bsd=on:drc=off:nm=2:sp=unary_first:urr=on:i=16933:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_anc=none:flr=on:kws=inv_arity:nm=0:nwc=5.0:sd=1:sgt=60:spb=units:ss=axioms:uhcvi=on:i=3056:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_ins=2:nm=2:sp=frequency:tgt=ground:to=lpo:i=5996:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_br=off:s2a=on:s2at=5.0:sd=2:ss=axioms:st=2.0:urr=on:i=3173:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_drc=off:newcnf=on:nm=2:sd=1:sp=occurrence:ss=axioms:st=3.0:i=4038:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_avsq=on:avsqr=1,2:bd=off:kws=inv_frequency:nm=6:sos=all:spb=intro:i=8587:si=on:rtra=on_0"); + quick.push("dis+1011_1:7_av=off:bsd=on:drc=off:fd=preordered:ins=3:lsd=60:nm=2:nwc=10.0:sp=const_min:ss=axioms:st=3.0:i=5995:si=on:rtra=on_0"); + quick.push("lrs-1011_1:32_av=off:bsd=on:drc=off:nm=10:sd=2:sgt=20:ss=axioms:st=1.5:tgt=ground:i=11353:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_drc=off:erd=off:flr=on:sp=frequency:ss=axioms:to=lpo:i=3413:si=on:rtra=on_0"); + quick.push("dis-1011_1:128_bd=off:drc=off:fsd=on:sp=const_frequency:ss=axioms:tgt=ground:i=4809:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=preordered:fd=preordered:fsd=on:newcnf=on:plsq=on:plsql=on:slsq=on:sos=on:sp=weighted_frequency:spb=goal:to=lpo:i=4793:si=on:rtra=on_0"); + quick.push("dis+1011_1:3_atotf=0.1:flr=on:kws=precedence:sp=const_min:i=35258:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_avsq=on:avsqc=3:avsqr=1,16:flr=on:nwc=10.0:s2a=on:s2agt=32:sp=frequency:spb=goal_then_units:tgt=ground:i=8899:si=on:rtra=on_0"); + quick.push("lrs-10_1:4_acc=model:nm=0:s2a=on:sac=on:sp=reverse_arity:ss=axioms:i=6565:si=on:rtra=on_0"); + quick.push("dis+1011_1:3_lsd=10:sp=const_frequency:ss=axioms:st=2.0:tgt=full:uhcvi=on:i=5521:si=on:rtra=on_0"); + quick.push("dis+21_5:1_acc=on:br=off:lcm=predicate:newcnf=on:nicw=on:nm=2:sp=unary_first:ss=axioms:st=1.5:urr=on:i=5474:si=on:rtra=on_0"); + quick.push("ott+2_1:1_bsr=unit_only:flr=on:sac=on:sos=all:i=5123:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_acc=on:avsq=on:avsqc=5:drc=off:fde=none:kws=precedence:s2a=on:s2at=6.0:sp=frequency:spb=goal:tgt=ground:i=22924:si=on:rtra=on_0"); + quick.push("dis+10_1:1_s2agt=16:slsq=on:slsqc=1:sp=weighted_frequency:to=lpo:i=767:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_av=off:bd=off:br=off:bs=unit_only:drc=off:nwc=5.0:sp=const_min:ss=axioms:tgt=ground:i=40987:si=on:rtra=on_0"); + quick.push("ott+10_8:1_acc=on:fsr=off:kws=frequency:nm=40:nwc=10.0:s2a=on:s2at=1.5:sac=on:tgt=full:urr=on:i=2607:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_gsp=on:kws=arity:plsq=on:plsqr=1,1:s2a=on:s2at=2.0:sp=unary_frequency:spb=goal_then_units:i=9429:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_av=off:drc=off:fde=unused:kws=inv_precedence:s2a=on:s2at=5.0:sp=reverse_arity:spb=goal_then_units:tgt=ground:i=16263:si=on:rtra=on_0"); + quick.push("ott+1002_16:1_add=off:anc=all_dependent:nm=64:sac=on:slsq=on:slsqr=1,16:urr=on:i=3798:si=on:rtra=on_0"); + quick.push("ott+21_1:1_bsr=unit_only:fsr=off:kws=inv_arity:nwc=10.0:rawr=on:sos=all:sp=frequency:i=1566:si=on:rtra=on_0"); + quick.push("lrs+21_1:7_drc=off:gsp=on:sd=1:sgt=64:ss=axioms:urr=on:i=3830:si=on:rtra=on_0"); + quick.push("dis-1011_1:4_av=off:drc=off:fde=unused:kws=inv_frequency:nm=32:nwc=2.0:tgt=full:i=172628:si=on:rtra=on_0"); + quick.push("ott+21_35:3_drc=off:s2at=5.0:sac=on:slsq=on:slsqr=1,8:sp=reverse_frequency:ss=axioms:urr=on:i=23269:si=on:rtra=on_0"); + quick.push("ott-10_8:1_flr=on:rawr=on:s2a=on:s2at=5.0:sac=on:slsq=on:i=9607:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_ep=RS:fde=unused:slsq=on:slsqr=1,2:sp=occurrence:spb=goal:i=5156:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_bd=off:drc=off:kws=inv_frequency:s2a=on:slsq=on:slsqr=1,16:sp=reverse_frequency:i=15582:si=on:rtra=on_0"); + quick.push("ott+10_1:1_flr=on:fsr=off:nwc=10.0:s2a=on:sac=on:spb=goal:urr=on:i=1480:si=on:rtra=on_0"); + quick.push("dis+1011_1:16_drc=off:sac=on:spb=goal_then_units:ss=axioms:st=5.0:i=30462:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_fde=none:kws=frequency:newcnf=on:s2a=on:s2agt=64:sac=on:slsq=on:slsqr=1,2:i=58288:si=on:rtra=on_0"); + quick.push("ott+10_5:1_newcnf=on:nm=16:sp=frequency:spb=goal:tgt=full:urr=on:i=23110:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_aac=none:ep=RST:s2a=on:sos=all:sp=occurrence:spb=goal_then_units:i=66939:si=on:rtra=on_0"); + quick.push("lrs+1011_1:2_ins=1:newcnf=on:spb=goal:ss=axioms:tgt=full:i=22096:si=on:rtra=on_0"); + quick.push("ott+1004_1:12_atotf=0.2:ins=1:sd=1:sgt=32:sp=frequency:ss=axioms:st=3.0:tgt=full:i=11080:si=on:rtra=on_0"); + quick.push("dis+10_1:1_drc=off:nm=2:nwc=3.0:sp=const_frequency:spb=non_intro:urr=on:i=12548:si=on:rtra=on_0"); + quick.push("dis-1011_1:1_atotf=0.1:drc=off:kws=inv_precedence:s2a=on:s2agt=20:sac=on:spb=non_intro:tgt=ground:i=56532:si=on:rtra=on_0"); + quick.push("dis-1011_1:14_av=off:awrs=decay:awrsf=200:ins=1:nwc=10.0:sos=on:sp=unary_first:i=3771:si=on:rtra=on_0"); + quick.push("lrs+1011_4:1_afr=on:rawr=on:slsq=on:slsqr=1,2:sp=const_max:spb=intro:uhcvi=on:urr=ec_only:i=27814:si=on:rtra=on_0"); + quick.push("dis+2_875:524288_av=off:erd=off:kws=inv_arity_squared:rawr=on:sos=all:spb=goal_then_units:ss=axioms:st=3.0:i=2088:si=on:rtra=on_0"); + // Improves by expected 18.1183416852127 probs costing 952371 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("lrs+1011_1:8_av=off:sd=1:spb=goal_then_units:ss=axioms:st=5.0:uhcvi=on:i=80949:si=on:rtra=on_0"); + quick.push("dis+1011_1:3_av=off:bsd=on:kws=inv_arity_squared:plsq=on:plsqr=1,8:ss=axioms:tgt=full:i=47349:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_bsr=unit_only:drc=off:fsr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2agt=32:urr=on:i=6913:si=on:rtra=on_0"); + quick.push("ott+2_1:1_lcm=predicate:s2a=on:s2agt=4:s2at=2.0:urr=on:i=3807:si=on:rtra=on_0"); + quick.push("lrs+1011_16:1_awrs=converge:lwlo=on:nwc=3.0:s2a=on:s2agt=32:sd=1:sp=const_frequency:ss=axioms:st=3.0:i=25600:si=on:rtra=on_0"); + quick.push("dis+1010_1:24_kws=arity_squared:sac=on:sgt=20:sp=unary_frequency:ss=axioms:tgt=full:i=52880:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:fde=none:newcnf=on:nwc=5.0:i=4876:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_amm=off:bs=unit_only:fd=preordered:kws=inv_frequency:lcm=predicate:newcnf=on:spb=goal:tgt=ground:i=83426:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_av=off:s2a=on:sp=const_frequency:tgt=full:i=26935:si=on:rtra=on_0"); + quick.push("dis-1011_1:128_bd=off:drc=off:fsd=on:sp=const_frequency:ss=axioms:tgt=ground:i=4809:si=on:rtra=on_0"); + quick.push("dis+1011_1:3_atotf=0.1:flr=on:kws=precedence:sp=const_min:i=35258:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_acc=on:avsq=on:avsqc=5:drc=off:fde=none:kws=precedence:s2a=on:s2at=6.0:sp=frequency:spb=goal:tgt=ground:i=22924:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_av=off:bd=off:br=off:bs=unit_only:drc=off:nwc=5.0:sp=const_min:ss=axioms:tgt=ground:i=27187:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_av=off:drc=off:fde=unused:kws=inv_precedence:s2a=on:s2at=5.0:sp=reverse_arity:spb=goal_then_units:tgt=ground:i=16263:si=on:rtra=on_0"); + quick.push("lrs+1011_1:12_amm=off:br=off:ins=1:s2a=on:s2at=5.0:sims=off:urr=on:i=25881:si=on:rtra=on_0"); + quick.push("ott+21_35:3_drc=off:s2at=5.0:sac=on:slsq=on:slsqr=1,8:sp=reverse_frequency:ss=axioms:urr=on:i=26662:si=on:rtra=on_0"); + quick.push("ott-10_8:1_flr=on:rawr=on:s2a=on:s2at=5.0:sac=on:slsq=on:i=9607:si=on:rtra=on_0"); + quick.push("lrs+10_1:2_av=off:br=off:drc=off:lecc=1.6:sp=weighted_frequency:tgt=full:i=179211:si=on:rtra=on_0"); + quick.push("lrs+1011_1:14_av=off:drc=off:kws=frequency:lecc=1.5:lwlo=on:s2a=on:s2at=5.0:slsq=on:slsql=off:slsqr=3,4:spb=goal:tgt=full:i=22579:si=on:rtra=on_0"); + quick.push("ott+10_1:1_flr=on:fsr=off:nwc=10.0:s2a=on:sac=on:spb=goal:urr=on:i=3506:si=on:rtra=on_0"); + quick.push("dis+1011_1:16_drc=off:sac=on:spb=goal_then_units:ss=axioms:st=5.0:i=30462:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_fde=none:kws=frequency:newcnf=on:s2a=on:s2agt=64:sac=on:slsq=on:slsqr=1,2:i=54338:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_aac=none:ep=RST:s2a=on:sos=all:sp=occurrence:spb=goal_then_units:i=66939:si=on:rtra=on_0"); + quick.push("dis+2_875:524288_av=off:erd=off:kws=inv_arity_squared:rawr=on:sos=all:spb=goal_then_units:ss=axioms:st=3.0:i=2088:si=on:rtra=on_0"); + quick.push("ott+1011_1:10_nwc=10.0:ss=axioms:tgt=full:i=36675:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_av=off:bd=off:lwlo=on:nwc=10.0:sp=unary_first:to=lpo:i=60909:si=on:rtra=on_0"); + // Improves by expected 5.968501703193174 probs costing 958007 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("dis+1011_1:3_av=off:bsd=on:kws=inv_arity_squared:plsq=on:plsqr=1,8:ss=axioms:tgt=full:i=47349:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_bsr=unit_only:drc=off:fsr=off:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2agt=32:urr=on:i=6913:si=on:rtra=on_0"); + quick.push("ott+2_1:1_lcm=predicate:s2a=on:s2agt=4:s2at=2.0:urr=on:i=6097:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:fde=none:newcnf=on:nwc=5.0:i=4876:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=off:nm=30:slsq=on:slsqr=1,2:sp=unary_first:ss=axioms:st=2.0:uhcvi=on:urr=on:i=52916:si=on:rtra=on_0"); + quick.push("dis+1011_1:3_atotf=0.1:flr=on:kws=precedence:sp=const_min:i=25809:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_acc=on:avsq=on:avsqc=5:drc=off:fde=none:kws=precedence:s2a=on:s2at=6.0:sp=frequency:spb=goal:tgt=ground:i=22924:si=on:rtra=on_0"); + quick.push("dis+10_1:14_acc=on:drc=off:fd=preordered:fde=unused:plsq=on:plsqr=1,32:sac=on:sp=occurrence:tgt=full:i=196386:si=on:rtra=on_0"); + quick.push("lrs+1011_1:1_av=off:drc=off:fde=unused:kws=inv_precedence:s2a=on:s2at=5.0:sp=reverse_arity:spb=goal_then_units:tgt=ground:i=16263:si=on:rtra=on_0"); + quick.push("dis+1011_1:1_ep=RS:fde=unused:slsq=on:slsqr=1,2:sp=occurrence:spb=goal:i=122892:si=on:rtra=on_0"); + quick.push("lrs+10_1:2_av=off:br=off:drc=off:lecc=1.6:sp=weighted_frequency:tgt=full:i=193646:si=on:rtra=on_0"); + quick.push("ott+10_1:1_flr=on:fsr=off:nwc=10.0:s2a=on:sac=on:spb=goal:urr=on:i=3506:si=on:rtra=on_0"); + quick.push("dis+1011_1:16_drc=off:sac=on:spb=goal_then_units:ss=axioms:st=5.0:i=30462:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_fde=none:kws=frequency:newcnf=on:s2a=on:s2agt=64:sac=on:slsq=on:slsqr=1,2:i=54338:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_acc=on:atotf=0.1:drc=off:gs=on:lwlo=on:sac=on:sp=const_frequency:ss=axioms:tgt=full:i=77167:si=on:rtra=on_0"); + quick.push("dis+2_875:524288_av=off:erd=off:kws=inv_arity_squared:rawr=on:sos=all:spb=goal_then_units:ss=axioms:st=3.0:i=2088:si=on:rtra=on_0"); + quick.push("ott+1011_1:10_nwc=10.0:ss=axioms:tgt=full:i=79160:si=on:rtra=on_0"); + // Improves by expected 2.9329672676943623 probs costing 942775 Mi + // Overall score 6292.973951117842 probs on average / budget 3812207 Mi + } } #endif diff --git a/z3 b/z3 index e417f7d785..6ed071b444 160000 --- a/z3 +++ b/z3 @@ -1 +1 @@ -Subproject commit e417f7d78509b2d0c9ebc911fee7632e6ef546b6 +Subproject commit 6ed071b44407cf6623b8d3c0dceb2a8fb7040cee From 564dea4fbced22a14c5039716b8390356bfd239f Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Wed, 23 Aug 2023 09:34:19 +0100 Subject: [PATCH 204/210] fixing TH1 bug. Along the way, making SortHelper::tryGetVariableSort poly safe --- Kernel/SortHelper.cpp | 23 +++++++++++++++-------- Kernel/Term.cpp | 4 ++-- Shell/LambdaConversion.cpp | 4 ++-- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/Kernel/SortHelper.cpp b/Kernel/SortHelper.cpp index 572649fedd..abb9d4b2bf 100644 --- a/Kernel/SortHelper.cpp +++ b/Kernel/SortHelper.cpp @@ -322,14 +322,21 @@ bool SortHelper::tryGetVariableSort(unsigned var, Formula* f, TermList& res) // first handle the special equality case if(lit->isEquality()){ - TermList* left = lit->nthArgument(0); - TermList* right = lit->nthArgument(1); - if((left->isVar() && left->var()==var) || - (right->isVar() && right->var()==var)){ - - res = getEqualityArgumentSort(lit); - return true; - } + TermList* left = lit->nthArgument(0); + TermList* right = lit->nthArgument(1); + if((left->isVar() && left->var()==var) || + (right->isVar() && right->var()==var)){ + + res = getEqualityArgumentSort(lit); + return true; + } + if(lit->isTwoVarEquality()){ + TermList sort = lit->twoVarEqSort(); + if(sort.containsSubterm(varTerm)){ + res = AtomicSort::superSort(); + return true; + } + } } if(tryGetVariableSort(varTerm, lit, res)){ return true; diff --git a/Kernel/Term.cpp b/Kernel/Term.cpp index 020301a829..e87b2f3fd2 100644 --- a/Kernel/Term.cpp +++ b/Kernel/Term.cpp @@ -2066,9 +2066,9 @@ bool Term::skip() const return false; } } - NonVariableIterator nvi(const_cast(this)); + NonVariableNonTypeIterator nvi(const_cast(this)); while (nvi.hasNext()) { - unsigned func=nvi.next().term()->functor(); + unsigned func=nvi.next()->functor(); if (!env.signature->getFunction(func)->skip()) { return false; } diff --git a/Shell/LambdaConversion.cpp b/Shell/LambdaConversion.cpp index 38cc9a39c5..6c30592511 100644 --- a/Shell/LambdaConversion.cpp +++ b/Shell/LambdaConversion.cpp @@ -47,6 +47,7 @@ TermList LambdaConversion::convertLambda(Formula* formula) { CALL("LambdaConversion::convertLambda(Formula*)"); + // remove top level universal type quantifiers. if(formula->connective() == FORALL){ VList* vars = formula->vars(); SList* sorts = formula->sorts(); @@ -73,7 +74,6 @@ TermList LambdaConversion::convertLambda(Formula* formula) formula = f; } } - } VarToIndexMap map; @@ -87,7 +87,7 @@ TermList LambdaConversion::convertLambda(Formula* formula, VarToIndexMap& map) TermList appTerm; //The resulting term Connective conn = formula->connective(); - + switch(conn){ case LITERAL: { Literal* lit = formula->literal(); From c155f7f60a6de3852c7f1e618d79804d1c08bf5b Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Tue, 29 Aug 2023 10:43:30 +0100 Subject: [PATCH 205/210] fix leaking index bug --- Inferences/SubsumptionDemodulationHelper.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Inferences/SubsumptionDemodulationHelper.hpp b/Inferences/SubsumptionDemodulationHelper.hpp index efb30f0056..67c3b33570 100644 --- a/Inferences/SubsumptionDemodulationHelper.hpp +++ b/Inferences/SubsumptionDemodulationHelper.hpp @@ -85,6 +85,13 @@ class OverlayBinder return base_it->second == term; } else { +#if VHOL + if(env.property->higherOrder()){ + if(term.containsLooseIndex()){ + return false; + } + } +#endif auto res = m_overlay.insert({var, term}); auto it = res.first; bool inserted = res.second; From 6f064f5c547677e0fb76cceab523fafdbbd70fb1 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Thu, 7 Sep 2023 11:38:11 +0200 Subject: [PATCH 206/210] adding a prelim version of a TH1 schedule --- CASC/Schedules.cpp | 1551 +++++++++++++++++++++++++++++--------------- z3 | 2 +- 2 files changed, 1043 insertions(+), 510 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index a3c95e6567..4a61596576 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5468,517 +5468,1050 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick) { if (property.higherOrder()) { + if (property.hasPolymorphicSym()) { + // th1_sledgehammering/TH1.txt // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=782:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=754:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=810:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=617:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=660:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=707:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=826:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=835:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=705:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=608:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=876:si=on:rtra=on_0"); - quick.push("lrs+1010_1:5_cnfonf=lazy_pi_sigma_gen:kws=precedence:nm=32:nwc=10.0:sp=const_frequency:i=15:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=1727:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:sd=1:ss=axioms:i=2:si=on:rtra=on_0"); - // Improves by expected 2258.269138383958 probs costing 9910 Mi - // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit - quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=947:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=2392:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=2494:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1258:si=on:rtra=on_0"); - quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=297:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_fe=off:prag=on:sos=all:ss=axioms:i=988:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=423:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:kws=precedence:sos=on:sp=reverse_arity:ss=axioms:i=742:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:avsq=on:sd=2:sgt=8:ss=axioms:i=313:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=3335:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=229:si=on:rtra=on_0"); - quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=328:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_bd=off:cbe=off:hud=1:prag=on:sos=on:sp=const_min:ss=axioms:i=649:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:plsq=on:plsqc=1:plsqr=32,1:sos=on:sp=const_frequency:ss=axioms:st=3.0:i=1048:si=on:rtra=on_0"); - quick.push("ott+1002_17:12_au=on:ins=3:sac=on:sd=3:sos=on:sp=occurrence:ss=axioms:i=1918:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=942:si=on:rtra=on_0"); - quick.push("dis+1002_1:32_au=on:c=on:fd=off:nm=2:sd=1:sos=on:sp=frequency:ss=axioms:st=3.0:i=1354:si=on:rtra=on_0"); - quick.push("dis+10_1:1_s2a=on:s2agt=8:sd=2:sgt=8:ss=axioms:i=355:si=on:rtra=on_0"); - // Improves by expected 212.0573861120701 probs costing 19994 Mi - // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit - quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); - quick.push("dis+10_1:1_avsq=on:cs=on:e2e=on:i=290:si=on:rtra=on_0"); - quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=2233:si=on:rtra=on_0"); - quick.push("dis+10_1:1_avsq=on:cnfonf=lazy_pi_sigma_gen:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); - quick.push("lrs+2_1:64_bd=off:nwc=5.0:sd=2:ss=axioms:i=290:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=3711:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:hud=15:sos=on:i=1337:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1186:si=on:rtra=on_0"); - quick.push("lrs+4_1:1_fd=off:fs=off:fsr=off:sac=on:sos=on:ss=axioms:i=413:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=980:si=on:rtra=on_0"); - quick.push("dis+10_3:1_avsq=on:sd=1:ss=axioms:st=2.0:tgt=ground:i=278:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_kws=precedence:sos=on:sp=frequency:ss=axioms:i=252:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=289:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=401:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=633:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=134:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=493:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=719:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1029:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=640:si=on:rtra=on_0"); - quick.push("dis+10_1:32_fd=off:kws=precedence:sd=2:sos=on:ss=axioms:i=237:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=751:si=on:rtra=on_0"); - quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2166:si=on:rtra=on_0"); - quick.push("lrs+1002_1:2_e2e=on:sd=2:sgt=16:ss=axioms:i=502:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=4453:si=on:rtra=on_0"); - quick.push("dis+10_4:1_apa=on:au=on:cnfonf=off:fde=none:sd=2:ss=axioms:st=3.0:i=691:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_au=on:av=off:bd=off:e2e=on:sos=all:i=1786:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=621:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fd=preordered:sos=on:ss=axioms:st=1.5:i=621:si=on:rtra=on_0"); - // Improves by expected 134.93277978747452 probs costing 29914 Mi - // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=541:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2132:si=on:rtra=on_0"); - quick.push("dis+2_16:1_e2e=on:gs=on:s2a=on:s2agt=32:sgt=32:ss=axioms:i=1182:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=567:si=on:rtra=on_0"); - quick.push("ott+10_5:4_au=on:avsq=on:bs=unit_only:bsr=unit_only:fsr=off:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1467:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=890:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=5985:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_bd=off:fd=off:kws=inv_precedence:sos=on:ss=axioms:i=375:si=on:rtra=on_0"); - quick.push("ott+10_1:1_acc=model:avsq=on:c=on:cnfonf=off:fd=off:nm=0:sp=reverse_arity:ss=axioms:i=551:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1031:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:avsq=on:cbe=off:fde=none:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1600:si=on:rtra=on_0"); - quick.push("dis+10_5:1_au=on:avsq=on:ss=axioms:i=516:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=3945:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:cnfonf=conj_eager:ins=1:sac=on:sp=const_max:ss=axioms:st=3.0:tgt=ground:i=267:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=828:si=on:rtra=on_0"); - quick.push("ott+1010_1:4_au=on:avsq=on:avsqc=1:cnfonf=off:e2e=on:fsr=off:ins=1:nwc=10.0:s2a=on:s2at=2.5:sac=on:sp=const_min:i=693:si=on:rtra=on_0"); - quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1381:si=on:rtra=on_0"); - quick.push("dis+10_1:64_cnfonf=lazy_not_be_gen:cond=fast:fsr=off:hud=5:ntd=on:nwc=10.0:sac=on:sd=1:sos=on:sp=const_max:ss=axioms:i=798:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=3962:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=577:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_au=on:avsq=on:cbe=off:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=5743:si=on:rtra=on_0"); - quick.push("dis+10_5:1_cnfonf=off:slsq=on:sp=const_max:i=571:si=on:rtra=on_0"); - quick.push("dis+10_1:1_e2e=on:hflw=5:hfsq=on:hfsqc=8:hfsql=off:i=273:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=476:si=on:rtra=on_0"); - quick.push("dis+2_1:1_cnfonf=off:e2e=on:kws=inv_frequency:nm=0:nwc=5.0:s2a=on:s2agt=32:ss=axioms:i=487:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_e2e=on:plsq=on:plsqr=32,1:sgt=8:ss=axioms:i=1796:si=on:rtra=on_0"); - quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=559:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=638:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:avsq=on:fde=unused:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=6474:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=597:si=on:rtra=on_0"); - quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=290:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:avsq=on:nm=0:sd=1:ss=axioms:i=708:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_avsq=on:fsr=off:nm=2:prag=on:sos=on:i=748:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=1806:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=preordered:hud=15:kws=precedence:nm=16:sd=3:sgt=16:sos=on:sp=frequency:ss=axioms:i=483:si=on:rtra=on_0"); - quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=5155:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fd=off:fsr=off:s2a=on:s2agt=10:i=1398:si=on:rtra=on_0"); - quick.push("dis+32_1:2_au=on:cnfonf=lazy_pi_sigma_gen:kws=inv_precedence:nwc=10.0:s2a=on:s2agt=30:i=1441:si=on:rtra=on_0"); - quick.push("dis+10_1:8_ins=1:nm=6:s2a=on:sd=3:ss=axioms:i=451:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=350:si=on:rtra=on_0"); - // Improves by expected 120.32336523397528 probs costing 59931 Mi - // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit - quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1328:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cs=on:prag=on:sos=on:i=1475:si=on:rtra=on_0"); - quick.push("ott+10_1:1_hud=15:ins=1:sd=1:sgt=32:sos=all:ss=axioms:st=2.0:i=1132:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=4969:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_cbe=off:e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=1144:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_au=on:avsq=on:e2e=on:fde=unused:nm=6:nwc=10.0:sac=on:i=4810:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=944:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:avsq=on:e2e=on:nm=0:s2a=on:s2at=1.5:i=2837:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1511:si=on:rtra=on_0"); - quick.push("dis-1004_8:1_av=off:bd=off:fd=off:fe=off:hud=22:sos=on:tnu=2:i=883:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:av=off:fde=unused:hfsq=on:hfsqr=16,1:hud=10:lma=on:nm=3:piset=and:sos=all:sp=const_frequency:i=408:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=1080:si=on:rtra=on_0"); - quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=1108:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_ins=3:prag=on:sos=on:sp=const_min:i=907:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1025:si=on:rtra=on_0"); - quick.push("ott+1010_1:128_afp=1010:afq=2.19963:avsq=on:avsqr=1,8:er=known:sd=1:ss=axioms:i=1045:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:cnfonf=conj_eager:ins=1:sac=on:sp=const_max:ss=axioms:st=3.0:tgt=ground:i=241:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_au=on:av=off:cnfonf=off:cond=fast:nm=6:sos=all:i=2216:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_av=off:bd=off:fd=off:kws=inv_frequency:sos=on:i=766:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=3722:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_apa=on:au=on:bsr=on:cnfonf=off:fe=off:nm=32:prag=on:sac=on:sos=on:sp=unary_first:ss=axioms:i=1895:si=on:rtra=on_0"); - quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=1467:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=464:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:e2e=on:fe=off:prag=on:sos=all:sp=const_frequency:ss=axioms:i=4945:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:e2e=on:ins=2:sd=1:sos=all:ss=axioms:st=3.0:i=326:si=on:rtra=on_0"); - quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=1443:si=on:rtra=on_0"); - quick.push("lrs+2_1:6_au=on:cnfonf=off:ss=axioms:st=1.5:i=1438:si=on:rtra=on_0"); - quick.push("dis+21_8:1_au=on:cbe=off:cnfonf=off:hud=15:nwc=5.0:piset=not:sos=all:sp=unary_frequency:ss=axioms:i=3365:si=on:rtra=on_0"); - quick.push("dis+10_1:128_av=off:fde=unused:hud=1:prag=on:sos=all:ss=axioms:i=3425:si=on:rtra=on_0"); - quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=2203:si=on:rtra=on_0"); - quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=289:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_avsq=on:bsd=on:cnfonf=off:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=2214:si=on:rtra=on_0"); - quick.push("ott+2_1:1024_apa=on:atotf=0.2:bd=off:cnfonf=off:erd=off:fd=off:nm=0:sos=all:i=1527:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_c=on:fsr=off:hud=0:kws=inv_arity:ntd=on:sos=on:sp=occurrence:i=1098:si=on:rtra=on_0"); - quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=1348:si=on:rtra=on_0"); - quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=7135:si=on:rtra=on_0"); - quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=791:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=6037:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=938:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=4357:si=on:rtra=on_0"); - quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=938:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=2052:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=753:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=1213:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=1417:si=on:rtra=on_0"); - quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=2643:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=991:si=on:rtra=on_0"); - quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=1247:si=on:rtra=on_0"); - quick.push("ott+10_4:1_au=on:cnfonf=lazy_gen:fde=unused:kws=precedence:s2a=on:s2at=2.0:sd=1:ss=axioms:st=5.0:i=2161:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fde=none:sos=all:i=1840:si=on:rtra=on_0"); - quick.push("dis+1010_1:20_au=on:av=off:cbe=off:fe=off:nm=2:sos=on:sp=weighted_frequency:uhcvi=on:i=1141:si=on:rtra=on_0"); - quick.push("dis+10_1:8_au=on:c=on:sos=all:ss=axioms:i=1777:si=on:rtra=on_0"); - quick.push("dis+10_1:5_cnfonf=off:e2e=on:fsr=off:prag=on:s2a=on:i=647:si=on:rtra=on_0"); - quick.push("dis+10_1:128_atotf=0.1:fd=off:fsr=off:hflw=5:hfsq=on:hfsqc=5:hfsql=off:hfsqr=1,16:plsq=on:plsqr=9,8:tnu=1:i=1197:si=on:rtra=on_0"); - quick.push("ott+1666_4:1_au=on:bd=off:erd=off:ntd=on:sos=all:i=1038:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:e2e=on:hfsq=on:hfsql=off:lcm=reverse:nm=32:nwc=10.0:s2a=on:s2at=3.0:sd=1:ss=axioms:st=6.0:i=1290:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_acc=on:au=on:bd=off:sgt=16:ss=axioms:tgt=full:i=6550:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cnfonf=off:sos=on:ss=axioms:i=4664:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_afr=on:cs=on:e2e=on:hfsq=on:hfsqc=20:ntd=on:nwc=10.0:s2a=on:i=1215:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_bd=preordered:fde=unused:prag=on:sos=on:i=743:si=on:rtra=on_0"); - // Improves by expected 102.61049630834741 probs costing 119999 Mi - // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit - quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=972:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=4577:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:bsd=on:ins=3:plsq=on:plsqc=1:plsqr=1,1:s2a=on:s2at=3.0:sd=10:sp=weighted_frequency:ss=axioms:i=1655:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2115:si=on:rtra=on_0"); - quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=7155:si=on:rtra=on_0"); - quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4273:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:e2e=on:fde=none:ins=3:kws=precedence:s2a=on:s2at=5.0:sp=frequency:i=2335:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=3375:si=on:rtra=on_0"); - quick.push("ott+10_5:4_au=on:avsq=on:bs=unit_only:bsr=unit_only:fsr=off:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=5339:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); - quick.push("dis+21_2:3_cnfonf=conj_eager:fsr=off:sd=1:slsq=on:ss=axioms:st=4.0:i=1845:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6172:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:av=off:fde=unused:hfsq=on:hfsqr=16,1:hud=10:lma=on:nm=3:piset=and:sos=all:sp=const_frequency:i=9434:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4927:si=on:rtra=on_0"); - quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1805:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6247:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:avsq=on:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=2589:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:cnfonf=conj_eager:ins=1:sac=on:sp=const_max:ss=axioms:st=3.0:tgt=ground:i=241:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=9473:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=4492:si=on:rtra=on_0"); - quick.push("dis+10_1:64_cnfonf=lazy_not_be_gen:cond=fast:fsr=off:hud=5:ntd=on:nwc=10.0:sac=on:sd=1:sos=on:sp=const_max:ss=axioms:i=798:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:avsq=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=3218:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=464:si=on:rtra=on_0"); - quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2601:si=on:rtra=on_0"); - quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=11317:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:avsq=on:c=on:chr=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=2545:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=11785:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4513:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=10881:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=1928:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=1063:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:avsq=on:fsr=off:ins=3:kws=frequency:sos=all:i=1479:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=10373:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:avsq=on:bet=on:cbe=off:cnfonf=off:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); - quick.push("dis+10_1:12_cnfonf=conj_eager:ss=axioms:st=3.0:tgt=full:i=620:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3365:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:fde=none:ss=axioms:i=1579:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=490:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=7308:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1367:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=3577:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_aac=none:c=on:cnfonf=lazy_not_gen:sos=on:i=3633:si=on:rtra=on_0"); - quick.push("dis+1004_1:5_avsq=on:cs=on:e2e=on:ins=2:sos=all:i=1188:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=357:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=568:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=5301:si=on:rtra=on_0"); - quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=909:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_av=off:cnfonf=lazy_pi_sigma_gen:nwc=5.0:prag=on:s2a=on:s2agt=16:i=3801:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=preordered:hud=15:kws=precedence:nm=16:sd=3:sgt=16:sos=on:sp=frequency:ss=axioms:i=668:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_aac=none:bd=off:ins=2:sos=on:sp=reverse_frequency:ss=axioms:i=559:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:c=on:cnfonf=off:kws=inv_precedence:piset=and:sd=1:ss=axioms:tgt=ground:tnu=2:i=9010:si=on:rtra=on_0"); - quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1342:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); - quick.push("dis+10_8:1_au=on:nwc=10.0:sos=all:i=3282:si=on:rtra=on_0"); - quick.push("lrs-4_1:1_sd=1:sgt=8:sos=all:ss=axioms:i=882:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=5939:si=on:rtra=on_0"); - quick.push("ott+10_1:64_aac=none:acc=on:au=on:avsq=on:avsqr=2,15:cnfonf=lazy_not_gen_be_off:ins=1:tgt=full:i=3310:si=on:rtra=on_0"); - quick.push("ott+10_2:1_au=on:cnfonf=off:ins=1:plsq=on:plsqc=1:plsqr=10813507,131072:i=6244:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:e2e=on:sos=all:ss=axioms:i=1198:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_afr=on:cs=on:e2e=on:hfsq=on:hfsqc=20:ntd=on:nwc=10.0:s2a=on:i=4753:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=4954:si=on:rtra=on_0"); - // Improves by expected 83.63371839116107 probs costing 239607 Mi - // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit - quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19923:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=13542:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:bsd=on:ins=3:plsq=on:plsqc=1:plsqr=1,1:s2a=on:s2at=3.0:sd=10:sp=weighted_frequency:ss=axioms:i=1655:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2115:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=1623:si=on:rtra=on_0"); - quick.push("ott+10_1:1_atotf=0.1:bd=off:cnfonf=off:cs=on:ins=2:nwc=3.0:sd=10:ss=axioms:i=3771:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=925:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=14632:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:plsq=on:sos=on:i=9176:si=on:rtra=on_0"); - quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=12374:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1557:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:avsq=on:e2e=on:nm=0:s2a=on:s2at=1.5:i=15824:si=on:rtra=on_0"); - quick.push("dis+1004_1:4_av=off:e2e=on:hud=3:prag=on:sos=on:ss=axioms:i=953:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=5996:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=14840:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); - quick.push("lrs+2_1:6_apa=on:cnfonf=off:e2e=on:fe=off:fsr=off:hud=1:prag=on:sos=on:sp=unary_frequency:i=9099:si=on:rtra=on_0"); - quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1042:si=on:rtra=on_0"); - quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6247:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_alpa=true:anc=none:atotf=0.1:au=on:cnfonf=off:ins=3:nm=64:sd=1:sp=occurrence:ss=axioms:st=5.0:i=6117:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=7827:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=3081:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:av=off:bs=unit_only:bsr=unit_only:e2e=on:er=filter:fde=unused:lecc=1.3:nm=4:sp=frequency:i=11051:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_au=on:av=off:cnfonf=off:cond=fast:nm=6:sos=all:i=4759:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=1340:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_apa=on:au=on:bsr=on:cnfonf=off:fe=off:nm=32:prag=on:sac=on:sos=on:sp=unary_first:ss=axioms:i=1895:si=on:rtra=on_0"); - quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=4581:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4854:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=11200:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=870:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:sd=2:sos=on:ss=axioms:i=1561:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_avsq=on:bd=off:cnfonf=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=4597:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:avsq=on:c=on:chr=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=6520:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=1303:si=on:rtra=on_0"); - quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=8152:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:prag=on:sos=all:sp=frequency:i=7003:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:avsq=on:fsr=off:ins=3:kws=frequency:sos=all:i=1479:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_avsq=on:bsd=on:cnfonf=off:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=1368:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=964:si=on:rtra=on_0"); - quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=791:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2146:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=8947:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=2167:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("lrs+1002_1:3_au=on:bs=unit_only:c=on:cnfonf=off:fde=none:kws=inv_arity_squared:nm=32:nwc=5.0:sos=on:i=12312:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=724:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:piset=pi_sigma:plsq=on:plsqr=9,2:prag=on:sd=1:sgt=32:sp=occurrence:ss=axioms:uhcvi=on:i=3366:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1384:si=on:rtra=on_0"); - quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1540:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:avsq=on:fde=unused:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=61085:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=1486:si=on:rtra=on_0"); - quick.push("dis+1004_1:5_avsq=on:cs=on:e2e=on:ins=2:sos=all:i=1188:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); - quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1141:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=20139:si=on:rtra=on_0"); - quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=909:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=30846:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=9747:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=751:si=on:rtra=on_0"); - quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1342:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_abs=on:acc=model:au=on:bsr=unit_only:e2e=on:fde=none:sos=on:sp=const_frequency:i=5109:si=on:rtra=on_0"); - quick.push("ott+10_4:1_au=on:cnfonf=lazy_gen:fde=unused:kws=precedence:s2a=on:s2at=2.0:sd=1:ss=axioms:st=5.0:i=1125:si=on:rtra=on_0"); - quick.push("dis+10_1:128_atotf=0.1:fd=off:fsr=off:hflw=5:hfsq=on:hfsqc=5:hfsql=off:hfsqr=1,16:plsq=on:plsqr=9,8:tnu=1:i=1197:si=on:rtra=on_0"); - quick.push("ott+1666_4:1_au=on:bd=off:erd=off:ntd=on:sos=all:i=1038:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:e2e=on:hfsq=on:hfsql=off:lcm=reverse:nm=32:nwc=10.0:s2a=on:s2at=3.0:sd=1:ss=axioms:st=6.0:i=3014:si=on:rtra=on_0"); - quick.push("dis+1004_1:1_cnfonf=lazy_gen:fe=off:sd=1:sgt=30:slsq=on:ss=axioms:i=9638:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_bet=on:cnfonf=lazy_not_gen:fde=unused:nwc=10.0:sd=1:sp=unary_first:ss=axioms:i=6897:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:e2e=on:sos=all:ss=axioms:i=7846:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=12360:si=on:rtra=on_0"); - // Improves by expected 68.48008648144638 probs costing 479536 Mi - // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("lrs+21_1:1_au=on:bsd=on:ins=3:plsq=on:plsqc=1:plsqr=1,1:s2a=on:s2at=3.0:sd=10:sp=weighted_frequency:ss=axioms:i=1655:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1997:si=on:rtra=on_0"); - quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=4783:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=5570:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=925:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=68605:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1526:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=13141:si=on:rtra=on_0"); - quick.push("lrs+1010_1:64_acc=model:anc=all:bd=off:bsd=on:bsr=on:ins=3:ntd=on:prag=on:sos=all:i=40579:si=on:rtra=on_0"); - quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=37097:si=on:rtra=on_0"); - quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:hud=15:sos=on:i=1967:si=on:rtra=on_0"); - quick.push("ott+10_1:1_cbe=off:cnfonf=lazy_gen:ins=3:nwc=10.0:s2a=on:i=10040:si=on:rtra=on_0"); - quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1042:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:avsq=on:cbe=off:fde=none:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); - quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=4783:si=on:rtra=on_0"); - quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:avsq=on:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=2579:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=65701:si=on:rtra=on_0"); - quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=69646:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=9162:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4186:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=3319:si=on:rtra=on_0"); - quick.push("dis+10_16:1_au=on:avsq=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=3218:si=on:rtra=on_0"); - quick.push("lrs+1010_1:6_avsq=on:bd=off:cnfonf=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); - quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=18139:si=on:rtra=on_0"); - quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); - quick.push("dis+21_8:1_au=on:cbe=off:cnfonf=off:hud=15:nwc=5.0:piset=not:sos=all:sp=unary_frequency:ss=axioms:i=6753:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=3344:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_au=on:bd=preordered:e2e=on:ins=3:kws=inv_frequency:nwc=10.0:sp=const_min:i=7911:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4081:si=on:rtra=on_0"); - quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=1325:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=10373:si=on:rtra=on_0"); - quick.push("dis+10_4:1_atotf=0.3:bs=on:cnfonf=lazy_simp:fe=axiom:gs=on:nm=0:nwc=10.0:sp=const_frequency:i=23452:si=on:rtra=on_0"); - quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=14769:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_au=on:avsq=on:fsr=off:ins=3:kws=frequency:sos=all:i=1479:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:cnfonf=lazy_not_gen:fe=off:hud=15:ins=2:nm=16:prag=on:uhcvi=on:i=17013:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9328:si=on:rtra=on_0"); - quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=18879:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=9251:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2146:si=on:rtra=on_0"); - quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2778:si=on:rtra=on_0"); - quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=33343:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2695:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=13229:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:piset=pi_sigma:plsq=on:plsqr=9,2:prag=on:sd=1:sgt=32:sp=occurrence:ss=axioms:uhcvi=on:i=3366:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); - quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1540:si=on:rtra=on_0"); - quick.push("dis+1004_1:5_avsq=on:cs=on:e2e=on:ins=2:sos=all:i=1188:si=on:rtra=on_0"); - quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=15049:si=on:rtra=on_0"); - quick.push("ott+1010_44:25_afr=on:avsq=on:c=on:cnfonf=off:e2e=on:fd=preordered:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7623:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_avsq=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_au=on:cnfonf=lazy_gen:fsr=off:hfsq=on:hfsqr=1,32:sgt=16:ss=axioms:i=23300:si=on:rtra=on_0"); - quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=34824:si=on:rtra=on_0"); - quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=14011:si=on:rtra=on_0"); - quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=13248:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:c=on:cnfonf=off:kws=inv_precedence:piset=and:sd=1:ss=axioms:tgt=ground:tnu=2:i=20260:si=on:rtra=on_0"); - quick.push("dis+10_2:3_avsq=on:fd=off:fde=none:lcm=reverse:prag=on:sac=on:sos=on:i=4887:si=on:rtra=on_0"); - quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=24752:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=2286:si=on:rtra=on_0"); - quick.push("ott+10_4:1_au=on:cnfonf=lazy_gen:fde=unused:kws=precedence:s2a=on:s2at=2.0:sd=1:ss=axioms:st=5.0:i=1125:si=on:rtra=on_0"); - quick.push("lrs+1_1:1_acc=on:au=on:ccuc=first:erd=off:fde=none:fsr=off:nm=10:ntd=on:s2a=on:s2at=5.0:i=17270:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:sd=1:ss=axioms:i=2489:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:plsq=on:plsqc=1:plsqr=32,1:sos=on:sp=const_frequency:ss=axioms:st=3.0:i=9026:si=on:rtra=on_0"); - quick.push("ott+1002_17:12_au=on:ins=3:sac=on:sd=3:sos=on:sp=occurrence:ss=axioms:i=2265:si=on:rtra=on_0"); - quick.push("dis+10_1:128_atotf=0.1:fd=off:fsr=off:hflw=5:hfsq=on:hfsqc=5:hfsql=off:hfsqr=1,16:plsq=on:plsqr=9,8:tnu=1:i=1197:si=on:rtra=on_0"); - quick.push("dis+10_1:3_au=on:av=off:cha=on:cnfonf=conj_eager:etr=on:fde=none:nwc=3.0:sp=weighted_frequency:i=12872:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=4954:si=on:rtra=on_0"); - // Improves by expected 49.127566684028515 probs costing 957834 Mi - // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=18622:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=4533:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=5570:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=44027:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=4753:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=6251:si=on:rtra=on_0"); - quick.push("dis-1010_1:1_au=on:avsq=on:e2e=on:nm=0:s2a=on:s2at=1.5:i=11778:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); - quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=22053:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=46089:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_bd=off:e2e=on:hud=15:s2a=on:sos=on:ss=axioms:tnu=1:i=5292:si=on:rtra=on_0"); - quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1805:si=on:rtra=on_0"); - quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_acc=model:avsq=on:ccuc=small_ones:cnfonf=lazy_simp:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=22253:si=on:rtra=on_0"); - quick.push("ott+10_1:1_afp=2000:avsq=on:bsr=unit_only:chr=on:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=6236:si=on:rtra=on_0"); - quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); - quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=28120:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14683:si=on:rtra=on_0"); - quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=5696:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=85280:si=on:rtra=on_0"); - quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=5088:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=10373:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:cnfonf=lazy_not_gen:fe=off:hud=15:ins=2:nm=16:prag=on:uhcvi=on:i=17013:si=on:rtra=on_0"); - quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2146:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2778:si=on:rtra=on_0"); - quick.push("lrs+0_1:1_hfsq=on:hud=10:ins=2:prag=on:sac=on:sp=const_frequency:i=48810:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); - quick.push("lrs+1002_1:3_au=on:bs=unit_only:c=on:cnfonf=off:fde=none:kws=inv_arity_squared:nm=32:nwc=5.0:sos=on:i=12312:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:piset=pi_sigma:plsq=on:plsqr=9,2:prag=on:sd=1:sgt=32:sp=occurrence:ss=axioms:uhcvi=on:i=3366:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2946:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:avsq=on:fde=unused:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=90050:si=on:rtra=on_0"); - quick.push("ott+1010_44:25_afr=on:avsq=on:c=on:cnfonf=off:e2e=on:fd=preordered:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7601:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_avsq=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=95997:si=on:rtra=on_0"); - quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4759:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=80153:si=on:rtra=on_0"); - quick.push("dis+10_2:3_avsq=on:fd=off:fde=none:lcm=reverse:prag=on:sac=on:sos=on:i=4887:si=on:rtra=on_0"); - quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=85427:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=15115:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fde=none:sos=all:i=11130:si=on:rtra=on_0"); - quick.push("ott+1002_17:12_au=on:ins=3:sac=on:sd=3:sos=on:sp=occurrence:ss=axioms:i=2265:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_bet=on:cnfonf=lazy_not_gen:fde=unused:nwc=10.0:sd=1:sp=unary_first:ss=axioms:i=6897:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:e2e=on:sos=all:ss=axioms:i=4492:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=11980:si=on:rtra=on_0"); - // Improves by expected 20.832310444427776 probs costing 953511 Mi - // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_au=on:bsd=on:c=on:fde=none:piset=equals:sac=on:sp=const_min:i=71177:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=15983:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=26900:si=on:rtra=on_0"); - quick.push("lrs+1010_1:64_acc=model:anc=all:bd=off:bsd=on:bsr=on:ins=3:ntd=on:prag=on:sos=all:i=40579:si=on:rtra=on_0"); - quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=18776:si=on:rtra=on_0"); - quick.push("lrs+2_1:6_apa=on:cnfonf=off:e2e=on:fe=off:fsr=off:hud=1:prag=on:sos=on:sp=unary_frequency:i=9099:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_bd=off:e2e=on:hud=15:s2a=on:sos=on:ss=axioms:tnu=1:i=5292:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_aac=none:au=on:avsq=on:cbe=off:fde=none:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_c=on:cnfonf=off:hud=15:rawr=on:sd=1:sos=all:ss=axioms:i=73159:si=on:rtra=on_0"); - quick.push("dis+1010_1:5_au=on:avsq=on:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=11506:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:av=off:bs=unit_only:bsr=unit_only:e2e=on:er=filter:fde=unused:lecc=1.3:nm=4:sp=frequency:i=18598:si=on:rtra=on_0"); - quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=6236:si=on:rtra=on_0"); - quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=15576:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_c=on:cnfonf=off:hud=10:nm=10:ntd=on:s2a=on:sac=on:sgt=30:ss=included:i=41932:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=11232:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=188785:si=on:rtra=on_0"); - quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=9862:si=on:rtra=on_0"); - quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9102:si=on:rtra=on_0"); - quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=13047:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_aac=none:au=on:bd=off:cnfonf=off:nm=0:s2at=3.0:s2pl=on:sac=on:sos=on:i=74823:si=on:rtra=on_0"); - quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); - quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=111726:si=on:rtra=on_0"); - quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=9441:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); - quick.push("dis+1010_1:2_avsq=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); - quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=44526:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=15115:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=4811:si=on:rtra=on_0"); - // Improves by expected 11.519827354524478 probs costing 955651 Mi + quick.push("lrs+2_3:1_bd=off:fd=off:fde=none:fe=off:prag=on:sos=on:i=568:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqc=1:bd=off:c=on:sac=on:sd=1:sos=all:ss=axioms:st=2.0:i=439:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:apa=on:au=on:avsq=on:avsqr=561497,524288:cnfonf=off:e2e=on:s2a=on:s2agt=64:s2at=2.0:ss=axioms:i=1083:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fd=off:sd=1:sgt=16:sos=all:ss=axioms:i=571:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=model:avsq=on:fe=axiom:fsr=off:nm=16:piset=pi_sigma:prag=on:sd=2:sgt=16:sp=weighted_frequency:ss=axioms:i=590:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_au=on:bd=off:cnfonf=off:plsq=on:plsqr=32,1:sac=on:sos=all:i=1062:si=on:rtra=on_0"); + quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=1862:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=1:sos=on:sp=frequency:ss=axioms:i=865:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:fe=off:kws=precedence:sos=on:sp=frequency:i=1309:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=824:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_av=off:e2e=on:hud=1:prag=on:sd=2:sgt=10:sos=all:ss=axioms:i=617:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fsr=off:sd=1:sgt=32:ss=axioms:i=213:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_apa=on:bd=off:cnfonf=off:e2e=on:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=2:si=on:rtra=on_0"); + quick.push("lrs+10_14:471_cnfonf=lazy_not_gen_be_off:fde=none:fe=off:lecc=1.7:nm=16:ntd=on:sp=frequency:i=6:si=on:rtra=on_0"); + // Improves by expected 2062.066157116461 probs costing 9997 Mi + // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit + quick.push("lrs+1002_1:32_au=on:avsq=on:sd=1:sgt=16:sos=on:ss=axioms:st=2.0:i=900:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:sd=2:sgt=8:sp=reverse_frequency:ss=axioms:i=519:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:fde=none:nwc=10.0:sd=1:sgt=16:sos=all:ss=axioms:i=270:si=on:rtra=on_0"); + quick.push("dis+10_1:1_e2e=on:nwc=10.0:s2a=on:s2agt=64:i=648:si=on:rtra=on_0"); + quick.push("ott+10_1:1_kws=arity:prag=on:sd=1:sos=all:ss=axioms:st=3.0:i=469:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=none:fe=off:kws=precedence:prag=on:sos=on:sp=frequency:i=630:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:ntd=on:s2a=on:sfv=off:ss=axioms:i=980:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=const_frequency:ss=axioms:i=596:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_au=on:e2e=on:fd=off:fe=axiom:sos=on:i=2082:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=1177:si=on:rtra=on_0"); + quick.push("dis+1002_1:32_au=on:av=off:cnfonf=off:fsr=off:sd=2:sgt=4:sos=on:ss=axioms:i=315:si=on:rtra=on_0"); + quick.push("dis+10_3:1_au=on:e2e=on:fsr=off:sd=1:sgt=16:ss=axioms:i=799:si=on:rtra=on_0"); + quick.push("lrs+1002_1:5_acc=on:avsq=on:avsqr=1,16:fe=axiom:prag=on:sd=1:ss=axioms:st=4.0:i=696:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=938:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:ntd=on:nwc=10.0:slsq=on:slsqc=1:sp=unary_frequency:uhcvi=on:i=1261:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:e2e=on:ins=3:sd=1:sos=all:ss=axioms:i=382:si=on:rtra=on_0"); + quick.push("lrs-1002_8:1_av=off:bd=off:bs=unit_only:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:st=3.0:i=1521:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:au=on:avsq=on:bd=off:cnfonf=off:fe=off:sd=2:ss=axioms:st=2.0:i=1085:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:av=off:e2e=on:kws=inv_precedence:nwc=10.0:sos=on:i=2239:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:sd=2:sos=all:ss=axioms:i=515:si=on:rtra=on_0"); + quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=1962:si=on:rtra=on_0"); + // Improves by expected 258.0957885290929 probs costing 19963 Mi + // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit + quick.push("lrs+1002_1:2_au=on:av=off:bd=off:cnfonf=off:ntd=on:sgt=50:sos=on:ss=axioms:i=1163:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_au=on:cnfonf=lazy_pi_sigma_gen:sd=2:sos=all:ss=axioms:st=1.5:i=418:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:cnfonf=off:prag=on:sd=2:sos=all:ss=axioms:i=3266:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_c=on:sac=on:sos=on:ss=axioms:i=659:si=on:rtra=on_0"); + quick.push("lrs+10_1:64_bsr=unit_only:cnfonf=off:fsr=off:sd=1:sgt=100:ss=axioms:i=290:si=on:rtra=on_0"); + quick.push("dis+10_5:1_au=on:nwc=10.0:sac=on:sd=1:sos=on:ss=axioms:i=1027:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_au=on:fde=none:s2a=on:slsq=on:i=4556:si=on:rtra=on_0"); + quick.push("dis+1002_1:3_au=on:fsr=off:sd=1:sgt=16:sos=on:ss=axioms:i=486:si=on:rtra=on_0"); + quick.push("dis+21_1:2_e2e=on:fe=off:hud=15:sac=on:sos=on:tnu=1:i=1273:si=on:rtra=on_0"); + quick.push("dis+10_1:1_nwc=3.0:sd=2:ss=axioms:i=175:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_au=on:cnfonf=off:fde=unused:fe=axiom:prag=on:slsq=on:slsqc=2:sos=on:i=959:si=on:rtra=on_0"); + quick.push("dis+10_1:8_fsr=off:hud=5:nm=16:prag=on:sd=1:sos=on:sp=frequency:ss=axioms:i=782:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:cnfonf=off:fs=off:fsr=off:ins=3:kws=precedence:sd=2:sp=reverse_arity:ss=axioms:sup=off:i=408:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:c=on:cnfonf=off:e2e=on:nm=32:nwc=10.0:sgt=8:ss=axioms:i=493:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_au=on:av=off:bd=off:plsq=on:plsqc=1:plsqr=32,1:sos=on:ss=axioms:st=2.0:i=399:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:sd=1:sgt=100:ss=axioms:i=1662:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=2503:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:fd=off:nm=20:nwc=10.0:plsq=on:s2a=on:s2agt=64:ss=axioms:st=5.0:i=854:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:e2e=on:sd=1:sos=all:sp=const_frequency:ss=axioms:i=589:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:sgt=4:sos=on:ss=axioms:i=407:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_acc=on:au=on:avsq=on:avsqr=1,2:bd=off:bs=unit_only:fe=axiom:sp=const_max:i=2286:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=off:prag=on:sd=1:sos=all:ss=axioms:st=2.5:i=308:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:avsq=on:hfsq=on:hfsqr=5,33:kws=arity_squared:piset=equals:plsq=on:plsql=on:plsqr=1,32:sd=1:sos=all:ss=axioms:st=5.0:i=832:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:erd=off:fd=off:fde=none:sos=all:ss=axioms:i=601:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_au=on:avsq=on:bsr=on:cnfonf=off:e2e=on:nm=2:sac=on:sos=all:i=2179:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=1450:si=on:rtra=on_0"); + // Improves by expected 152.26842275295667 probs costing 29999 Mi + // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit + quick.push("lrs+10_8:1_au=on:av=off:cnfonf=lazy_pi_sigma_gen:fsr=off:nwc=6.0:s2a=on:s2agt=16:i=3050:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:cnfonf=lazy_not_be_gen:fde=unused:piset=not:sd=1:slsq=on:ss=axioms:st=3.0:i=1778:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:s2a=on:s2agt=8:sd=2:sgt=4:ss=axioms:i=355:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:e2e=on:fs=off:fsr=off:ins=1:plsq=on:plsqc=1:plsqr=8653723,131072:sd=2:ss=axioms:i=317:si=on:rtra=on_0"); + quick.push("dis+10_1:64_au=on:fe=off:ixr=off:ntd=on:nwc=5.0:sd=2:ss=axioms:i=408:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=off:s2a=on:s2agt=32:sd=1:ss=axioms:st=6.0:i=401:si=on:rtra=on_0"); + quick.push("lrs+2_3:1_bd=off:fd=off:fde=none:fe=off:prag=on:sos=on:i=1005:si=on:rtra=on_0"); + quick.push("lrs+21_1:8_aac=none:bd=off:bet=on:cnfonf=lazy_not_gen:ins=2:prag=on:sos=all:sp=const_frequency:i=784:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqc=1:bd=off:c=on:sac=on:sd=1:sos=all:ss=axioms:st=2.0:i=5199:si=on:rtra=on_0"); + quick.push("ott+33_1:1_au=on:cnfonf=off:fsr=off:ntd=on:plsq=on:plsqr=32,1:sos=on:sp=const_frequency:ss=axioms:i=1063:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_erd=off:fe=off:ins=3:plsq=on:sos=on:i=398:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:apa=on:au=on:avsq=on:avsqr=561497,524288:cnfonf=off:e2e=on:s2a=on:s2agt=64:s2at=2.0:ss=axioms:i=1794:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fd=off:sd=1:sgt=16:sos=all:ss=axioms:i=3346:si=on:rtra=on_0"); + quick.push("dis+21_1:1_av=off:cnfonf=off:prag=on:s2a=on:sos=on:i=484:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=2187:si=on:rtra=on_0"); + quick.push("dis+1002_1:8_avsq=on:avsqr=1,16:e2e=on:s2a=on:ss=axioms:st=3.0:i=358:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_fe=axiom:prag=on:sos=all:sp=reverse_arity:ss=axioms:i=718:si=on:rtra=on_0"); + quick.push("dis+10_1:50_av=off:cnfonf=off:prag=on:sd=2:sos=on:ss=axioms:st=1.5:i=828:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_au=on:cbe=off:s2a=on:s2agt=32:sac=on:i=3644:si=on:rtra=on_0"); + quick.push("dis+1002_1:8_av=off:fd=off:fsr=off:prag=on:sos=on:ss=axioms:i=773:si=on:rtra=on_0"); + quick.push("lrs+31_1:1024_apa=on:au=on:cnfonf=off:e2e=on:fsr=off:sd=2:sgt=4:sos=on:ss=axioms:i=371:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_au=on:cnfonf=off:e2e=on:nm=16:plsq=on:plsqr=1,2:sac=on:sos=on:sp=reverse_frequency:ss=axioms:i=2885:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:bd=off:cnfonf=off:fd=off:ntd=on:piset=all_but_not_eq:sos=all:i=587:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:avsq=on:bd=off:fd=off:fe=axiom:fsr=off:sac=on:sos=on:i=528:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:fde=none:kws=frequency:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=434:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:sd=2:sgt=64:sos=all:ss=axioms:i=6100:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bsr=unit_only:s2a=on:sos=all:ss=axioms:i=802:si=on:rtra=on_0"); + quick.push("dis+1002_1:16_fde=unused:fe=off:hud=10:sos=on:i=672:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:ins=3:sd=1:sos=on:ss=axioms:i=340:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:erd=off:sos=on:i=463:si=on:rtra=on_0"); + quick.push("ott+21_1:1_bd=preordered:fd=off:fe=off:fs=off:fsr=off:sos=on:i=377:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=2502:si=on:rtra=on_0"); + quick.push("dis+10_16:1_acc=on:avsq=on:fe=axiom:fsr=off:s2a=on:s2agt=16:s2at=3.0:i=3950:si=on:rtra=on_0"); + quick.push("dis+1004_1:4_fde=none:sd=1:sgt=32:ss=axioms:tgt=ground:i=569:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_erd=off:fe=axiom:hud=10:lma=on:sfv=off:slsq=on:sos=all:i=397:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_afr=on:au=on:ins=2:kws=precedence:sos=on:sp=weighted_frequency:i=1204:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_hud=24:plsq=on:sd=1:sos=all:ss=axioms:tnu=1:i=581:si=on:rtra=on_0"); + quick.push("dis+10_1:2_cnfonf=off:fsr=off:sp=unary_first:ss=axioms:st=1.5:i=663:si=on:rtra=on_0"); + quick.push("dis-21_1:5_anc=all_dependent:au=on:fde=none:fe=off:sd=1:sos=on:ss=axioms:st=3.0:i=994:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_avsq=on:avsqr=1,16:nwc=10.0:sd=1:sp=reverse_frequency:ss=axioms:st=5.0:i=360:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_au=on:av=off:bd=off:cond=fast:nm=2:s2a=on:s2agt=40:sos=all:spb=non_intro:i=1601:si=on:rtra=on_0"); + quick.push("dis+2_1:32_au=on:kws=precedence:sp=weighted_frequency:ss=axioms:tgt=ground:i=446:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cnfonf=conj_eager:fe=axiom:sd=1:ss=axioms:i=407:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_atotf=0.2:au=on:bsr=unit_only:cha=on:e2e=on:fsr=off:sd=1:sp=unary_first:ss=axioms:st=4.0:i=836:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:fe=axiom:hfsq=on:ntd=on:sd=1:sgt=32:ss=axioms:i=456:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:bet=on:c=on:cnfonf=off:lcm=reverse:piset=small_set:sd=1:sp=reverse_frequency:ss=axioms:i=586:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_au=on:e2e=on:fe=off:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); + quick.push("ott+10_1:2_ins=4:lcm=predicate:nm=6:s2a=on:s2at=-1.0:sac=on:sd=1:sgt=64:sp=weighted_frequency:ss=axioms:st=1.2:i=1516:si=on:rtra=on_0"); + // Improves by expected 145.48675040870236 probs costing 59963 Mi + // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit + quick.push("dis+21_3:1_au=on:c=on:nwc=3.0:s2a=on:s2agt=64:sd=1:sp=reverse_arity:ss=axioms:st=5.0:i=1510:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_pi_sigma_gen:nwc=8.0:sd=1:ss=axioms:i=668:si=on:rtra=on_0"); + quick.push("lrs+10_1:2_e2e=on:sd=1:ss=axioms:st=3.0:i=1016:si=on:rtra=on_0"); + quick.push("lrs+1010_2:1_au=on:av=off:e2e=on:fe=off:kws=inv_frequency:sos=on:i=1356:si=on:rtra=on_0"); + quick.push("dis+10_1:14_au=on:fe=axiom:lma=on:nm=2:nwc=5.0:sac=on:sos=all:ss=axioms:i=2118:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_au=on:avsq=on:sd=1:sgt=16:sos=on:ss=axioms:st=2.0:i=382:si=on:rtra=on_0"); + quick.push("ott+21_1:16_fe=axiom:kws=precedence:ntd=on:sos=on:sp=unary_frequency:i=440:si=on:rtra=on_0"); + quick.push("ott+21_163:29_au=on:fde=unused:lcm=predicate:sos=on:sp=const_frequency:i=2752:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_av=off:bd=off:sd=2:sos=on:ss=axioms:st=3.0:i=1277:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:bd=off:cnfonf=off:fe=axiom:hud=5:nwc=10.0:sd=1:sos=on:ss=axioms:st=2.0:i=2108:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:nm=4:prag=on:sac=on:sd=1:sos=on:spb=goal_then_units:ss=axioms:i=986:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:cbe=off:plsq=on:plsqc=1:plsqr=6694409,65536:i=8493:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_piset=or:prag=on:s2a=on:sos=on:ss=axioms:i=3296:si=on:rtra=on_0"); + quick.push("dis+10_2:1_cnfonf=lazy_simp:fe=axiom:nwc=3.0:sd=1:sgt=32:ss=axioms:i=1695:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_av=off:bsr=unit_only:e2e=on:fd=preordered:prag=on:sos=all:sp=const_frequency:i=3416:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=2288:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_aac=none:bd=off:e2e=on:fe=off:fsr=off:prag=on:sos=on:i=767:si=on:rtra=on_0"); + quick.push("ott+21_1:20_avsq=on:fde=none:sos=on:i=1016:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_au=on:cnfonf=lazy_pi_sigma_gen:ins=1:tgt=ground:i=644:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_au=on:e2e=on:fd=off:fe=axiom:sos=on:i=4322:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_cnfonf=off:e2e=on:hud=10:kws=inv_frequency:sos=all:ss=axioms:i=1440:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=model:avsq=on:fe=axiom:fsr=off:nm=16:piset=pi_sigma:prag=on:sd=2:sgt=16:sp=weighted_frequency:ss=axioms:i=12986:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fe=axiom:plsq=on:plsqr=32,1:sos=all:ss=axioms:i=1298:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:e2e=on:er=known:sos=all:sp=const_max:ss=axioms:i=640:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_anc=all:au=on:fe=off:plsq=on:plsqr=32,1:sac=on:sos=all:ss=axioms:i=1301:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_au=on:bd=off:cnfonf=off:plsq=on:plsqr=32,1:sac=on:sos=all:i=2182:si=on:rtra=on_0"); + quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=4395:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=1799:si=on:rtra=on_0"); + quick.push("lrs+31_1:1024_apa=on:au=on:cnfonf=off:e2e=on:fsr=off:sd=2:sgt=4:sos=on:ss=axioms:i=2158:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fd=off:hud=10:ntd=on:sgt=16:sos=on:ss=axioms:i=644:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:c=on:cnfonf=off:e2e=on:nm=32:nwc=10.0:sgt=8:ss=axioms:i=806:si=on:rtra=on_0"); + quick.push("dis+10_1:16_acc=model:avsq=on:avsqr=1,16:cnfonf=lazy_not_be_gen:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=853:si=on:rtra=on_0"); + quick.push("lrs+1010_1:8_afp=30:au=on:bd=off:c=on:cbe=off:cnfonf=off:hud=15:nm=30:piset=equals:sd=1:sos=on:ss=axioms:i=548:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=1:sos=on:sp=frequency:ss=axioms:i=4551:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_au=on:av=off:cnfonf=off:fe=off:s2a=on:sos=on:i=2161:si=on:rtra=on_0"); + quick.push("dis+21_1:64_apa=on:au=on:cnfonf=off:ins=2:sd=1:sgt=16:sos=on:ss=axioms:st=3.0:i=1118:si=on:rtra=on_0"); + quick.push("ott+10_1:1_acc=on:c=on:cnfonf=off:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=1.5:i=495:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_kws=arity:nwc=10.0:prag=on:sd=1:sgt=16:ss=axioms:i=723:si=on:rtra=on_0"); + quick.push("dis-1003_1:5_c=on:fd=off:fe=axiom:fsr=off:sd=1:sos=on:ss=axioms:st=1.2:i=479:si=on:rtra=on_0"); + quick.push("dis+32_2:1_au=on:av=off:cnfonf=lazy_pi_sigma_gen:ntd=on:s2a=on:slsq=on:i=1282:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:avsq=on:bd=off:cnfonf=lazy_pi_sigma_gen:fd=off:sos=on:i=876:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=2354:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:av=off:bd=off:fd=off:sos=on:sp=const_frequency:i=1670:si=on:rtra=on_0"); + quick.push("lrs+21_1:1024_au=on:chr=on:erd=off:fe=axiom:sos=all:ss=axioms:i=988:si=on:rtra=on_0"); + quick.push("dis+21_1:8_bd=off:cbe=off:fe=off:kws=inv_arity_squared:plsq=on:plsqc=1:plsqr=375431,1048576:sd=1:ss=axioms:st=3.0:tgt=full:tnu=2:i=592:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_au=on:cnfonf=lazy_pi_sigma_gen:fe=off:kws=inv_arity:sd=2:sp=reverse_arity:ss=axioms:st=3.0:tgt=full:i=947:si=on:rtra=on_0"); + quick.push("ott+10_1:1_nwc=2.0:sd=1:sgt=64:sos=all:ss=axioms:i=695:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:nm=2:plsq=on:plsqr=32,1:sos=all:i=4382:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_cnfonf=off:e2e=on:er=known:hud=15:inj=on:sd=1:sgt=40:ss=axioms:tnu=9:i=2044:si=on:rtra=on_0"); + quick.push("dis+10_1:16_au=on:cnfonf=off:fe=off:plsq=on:plsqc=1:plsqr=32,1:rawr=on:tgt=ground:i=1020:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_apa=on:av=off:cnfonf=off:e2e=on:fe=axiom:hud=23:plsq=on:plsqr=10937,262144:sos=on:tnu=5:i=4701:si=on:rtra=on_0"); + quick.push("dis+10_6:1_fs=off:fsr=off:hfsq=on:kws=frequency:ntd=on:prag=on:sd=2:ss=axioms:i=862:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cnfonf=conj_eager:fe=axiom:sd=1:ss=axioms:i=4007:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_fsr=off:ntd=on:nwc=5.0:prag=on:sos=on:sp=unary_first:i=858:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_amm=off:au=on:fsr=off:nwc=7.0:s2a=on:s2agt=16:ss=axioms:st=3.0:i=3546:si=on:rtra=on_0"); + quick.push("lrs+20_1:4_au=on:bd=off:e2e=on:slsq=on:slsqr=1,8:sos=on:i=1902:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:bet=on:c=on:cnfonf=off:lcm=reverse:piset=small_set:sd=1:sp=reverse_frequency:ss=axioms:i=297:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_bsr=unit_only:cnfonf=conj_eager:nwc=3.0:sd=1:ss=axioms:i=663:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:fsr=off:sac=on:sd=1:sgt=32:sos=all:ss=axioms:i=1380:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_acc=on:au=on:bd=off:fde=none:hud=15:sgt=4:sp=const_max:ss=axioms:uhcvi=on:i=1095:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_au=on:cnfonf=off:fe=off:lcm=reverse:sd=1:sos=on:sp=const_frequency:ss=axioms:i=1029:si=on:rtra=on_0"); + quick.push("dis-1002_1:16_av=off:fe=off:hud=19:nwc=12.0:sos=on:ss=axioms:st=2.0:i=1025:si=on:rtra=on_0"); + quick.push("dis+10_1:10_acc=model:e2e=on:fe=off:s2a=on:s2at=3.0:tgt=full:i=699:si=on:rtra=on_0"); + // Improves by expected 131.9932975570063 probs costing 119978 Mi + // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_not_gen:nwc=5.0:sos=all:i=1973:si=on:rtra=on_0"); + quick.push("ott+10_16:1_br=off:bsr=unit_only:fe=axiom:flr=on:nm=64:sos=on:sp=occurrence:i=1383:si=on:rtra=on_0"); + quick.push("lrs+1004_5:1_apa=on:avsq=on:cnfonf=off:e2e=on:fe=axiom:fsr=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:i=1958:si=on:rtra=on_0"); + quick.push("lrs+1003_4:1_au=on:cbe=off:cs=on:sd=1:sos=on:sp=frequency:ss=axioms:st=2.0:i=5543:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_acc=on:bd=off:cnfonf=off:fe=axiom:kws=inv_arity_squared:piset=equals:prag=on:sd=1:sp=reverse_arity:ss=axioms:tgt=ground:i=1969:si=on:rtra=on_0"); + quick.push("dis+1010_3:2_e2e=on:rawr=on:sac=on:sd=1:sos=all:ss=axioms:st=3.0:i=1969:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=preordered:cnfonf=lazy_not_be_gen:fe=axiom:kws=precedence:ntd=on:nwc=10.0:sd=2:ss=axioms:st=2.0:i=838:si=on:rtra=on_0"); + quick.push("lrs+2_3:1_bd=off:fd=off:fde=none:fe=off:prag=on:sos=on:i=3351:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:fde=none:nwc=10.0:sd=1:sgt=16:sos=all:ss=axioms:i=2290:si=on:rtra=on_0"); + quick.push("dis+2_1:3_au=on:bs=on:bsr=unit_only:e2e=on:hud=5:nwc=10.0:sgt=10:sos=on:sp=frequency:ss=axioms:i=1910:si=on:rtra=on_0"); + quick.push("dis+1002_1:3_atotf=0.2:bd=off:cnfonf=conj_eager:fd=off:fe=off:ins=1:nwc=2.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=4:sos=all:i=1525:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:nm=4:prag=on:sac=on:sd=1:sos=on:spb=goal_then_units:ss=axioms:i=986:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:ss=axioms:i=2903:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:cbe=off:plsq=on:plsqc=1:plsqr=6694409,65536:i=29386:si=on:rtra=on_0"); + quick.push("lrs+1010_1:3_cnfonf=off:fsr=off:gs=on:nm=3:s2a=on:sp=const_frequency:i=3382:si=on:rtra=on_0"); + quick.push("ott+10_1:1_apa=on:bsr=unit_only:cnfonf=off:fe=off:fsr=off:hud=8:ntd=on:prag=on:sos=all:ss=axioms:i=781:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:s2a=on:s2at=3.0:sd=3:ss=axioms:i=2287:si=on:rtra=on_0"); + quick.push("ott+10_16:1_amm=off:au=on:avsq=on:cnfonf=lazy_not_gen_be_off:piset=equals:s2a=on:s2at=3.0:i=8464:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:cbe=off:cnfonf=lazy_gen:fd=off:fsr=off:ins=2:sos=all:i=537:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:ntd=on:s2a=on:sfv=off:ss=axioms:i=855:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=sco:ins=3:ss=axioms:st=1.5:i=3408:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:avsq=on:avsqr=1,6:bsr=unit_only:nm=2:nwc=2.0:sac=on:sos=all:ss=axioms:i=7305:si=on:rtra=on_0"); + quick.push("dis+21_1:1_av=off:cnfonf=off:prag=on:s2a=on:sos=on:i=1304:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=2187:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_au=on:av=off:c=on:cbe=off:fe=off:plsq=on:plsqr=263619,8192:sos=on:ss=axioms:i=1835:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:cnfonf=off:e2e=on:fe=off:nwc=3.0:s2a=on:s2at=7.0:sp=weighted_frequency:i=2138:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=off:hud=10:piset=all_but_not_eq:prag=on:s2a=on:s2at=2.0:sos=all:i=1630:si=on:rtra=on_0"); + quick.push("dis+10_1:50_av=off:cnfonf=off:prag=on:sd=2:sos=on:ss=axioms:st=1.5:i=828:si=on:rtra=on_0"); + quick.push("dis+10_1:8_fsr=off:hud=5:nm=16:prag=on:sd=1:sos=on:sp=frequency:ss=axioms:i=812:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_avsq=on:bsr=unit_only:cnfonf=off:kws=frequency:nm=32:sos=on:sp=const_frequency:i=3838:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_aac=none:au=on:bd=off:c=on:erd=off:ntd=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=2178:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:bd=off:cnfonf=off:fd=off:ntd=on:piset=all_but_not_eq:sos=all:i=587:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:avsq=on:e2e=on:sos=on:i=4358:si=on:rtra=on_0"); + quick.push("ott+1002_5:1_cond=fast:e2e=on:fe=off:hud=15:piset=all_but_not_eq:s2a=on:s2agt=100:s2at=5.0:sac=on:sos=on:i=802:si=on:rtra=on_0"); + quick.push("dis+10_1:16_acc=model:avsq=on:avsqr=1,16:cnfonf=lazy_not_be_gen:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=2250:si=on:rtra=on_0"); + quick.push("lrs+1002_1:5_acc=on:avsq=on:avsqr=1,16:fe=axiom:prag=on:sd=1:ss=axioms:st=4.0:i=589:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_hud=1:inj=on:prag=on:s2a=on:sos=all:i=1791:si=on:rtra=on_0"); + quick.push("dis+2_1:1_av=off:fe=off:prag=on:s2a=on:sos=on:i=4397:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_aac=none:cbe=off:fsr=off:kws=inv_frequency:nwc=4.0:tnu=1:i=2128:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=535:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_avsq=on:fd=off:sos=on:i=1662:si=on:rtra=on_0"); + quick.push("dis+10_1:64_au=on:cnfonf=off:fde=none:ins=2:nm=6:sos=on:i=1929:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:erd=off:sos=on:i=1520:si=on:rtra=on_0"); + quick.push("ott+2_8:1_au=on:awrs=converge:e2e=on:fsr=off:hud=10:ins=3:ntd=on:s2at=2.5:slsq=on:slsqc=1:i=5044:si=on:rtra=on_0"); + quick.push("ott+1010_452:41_au=on:fsr=off:hfaw=0:hfsq=on:hfsqc=10:ins=3:kws=inv_frequency:nm=2:rawr=on:s2a=on:s2at=5.0:s2pl=on:sac=on:uhcvi=on:i=2186:si=on:rtra=on_0"); + quick.push("lrs+21_5:4_apa=on:c=on:cnfonf=off:er=known:fe=axiom:fs=off:fsr=off:prag=on:sos=on:i=1063:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_au=on:av=off:bd=off:plsq=on:plsqc=1:plsqr=32,1:sos=on:ss=axioms:st=2.0:i=2529:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=4679:si=on:rtra=on_0"); + quick.push("ott+4_1:1_cbe=off:cnfonf=lazy_not_be_gen:hud=20:irw=on:nwc=5.0:piset=all:plsq=on:plsqr=32,1:prag=on:sos=all:sp=occurrence:i=2356:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:cnfonf=lazy_gen:hflw=2:hfsq=on:hfsqc=2:hfsqr=4,1:kws=precedence:s2a=on:s2at=1.5:sp=unary_first:i=2708:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:ntd=on:nwc=10.0:slsq=on:slsqc=1:sp=unary_frequency:uhcvi=on:i=5065:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_av=off:e2e=on:hud=1:prag=on:sd=2:sgt=10:sos=all:ss=axioms:i=8878:si=on:rtra=on_0"); + quick.push("dis+10_1:4_aac=none:amm=off:au=on:cnfonf=off:fd=off:ntd=on:nwc=15.0:sos=on:i=3877:si=on:rtra=on_0"); + quick.push("lrs+1002_1:28_bd=off:e2e=on:hud=10:sd=1:sos=on:ss=axioms:st=4.0:i=1533:si=on:rtra=on_0"); + quick.push("dis+10_16:1_hud=1:lma=on:ntd=on:prag=on:sos=all:sp=occurrence:ss=axioms:i=1876:si=on:rtra=on_0"); + quick.push("dis+1010_1:3_bd=preordered:cnfonf=lazy_simp:nwc=5.0:s2a=on:s2at=3.0:sp=unary_first:i=3446:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:s2a=on:s2agt=32:i=4604:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_cnfonf=lazy_gen:fe=off:nwc=10.0:prag=on:s2a=on:s2at=3.0:i=2106:si=on:rtra=on_0"); + quick.push("ott+30_1:1_cnfonf=off:fd=off:nm=4:ntd=on:plsq=on:plsqr=32,1:sac=on:i=2533:si=on:rtra=on_0"); + quick.push("dis+1002_1:1024_av=off:e2e=on:fe=axiom:sos=on:sp=unary_first:i=2585:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:cnfonf=lazy_gen:nwc=10.0:s2a=on:sp=unary_first:i=10706:si=on:rtra=on_0"); + quick.push("lrs-1004_16:1_ins=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sac=on:sd=1:sos=on:spb=goal_then_units:ss=axioms:st=4.0:i=2524:si=on:rtra=on_0"); + quick.push("lrs+1002_1:7_au=on:cnfonf=off:fe=axiom:ins=2:lecc=0.5:nm=32:sd=1:sgt=64:ss=axioms:i=5822:si=on:rtra=on_0"); + quick.push("dis+2_12:1_afp=100000:afq=1.0:apa=on:au=on:c=on:cnfonf=off:fe=off:ins=2:nm=32:sos=all:sp=occurrence:i=1742:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_atotf=0.3:bsr=on:nm=10:sd=1:sgt=16:slsq=on:slsqc=4:slsqr=1,3:sp=frequency:ss=axioms:tgt=full:i=6501:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_cnfonf=conj_eager:sd=1:ss=axioms:i=485:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:avsq=on:hfsq=on:hfsqr=5,33:kws=arity_squared:piset=equals:plsq=on:plsql=on:plsqr=1,32:sd=1:sos=all:ss=axioms:st=5.0:i=1307:si=on:rtra=on_0"); + quick.push("ott+1010_2:1_e2e=on:fsr=off:hud=1:ins=3:sd=1:ss=axioms:st=3.0:i=2736:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:fde=unused:fsr=off:gs=on:s2a=on:s2at=1.5:i=1590:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:ins=3:nm=4:sgt=20:sos=all:ss=axioms:i=1183:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:er=known:fe=off:s2a=on:sac=on:sos=on:i=4209:si=on:rtra=on_0"); + quick.push("ott+1010_2:1_bs=unit_only:bsr=unit_only:cnfonf=lazy_not_gen:etr=on:fe=off:piset=pi_sigma:plsq=on:plsqc=1:plsqr=32,1:sos=all:i=6148:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=5.0:i=916:si=on:rtra=on_0"); + quick.push("dis+1002_1:28_aac=none:plsq=on:plsqc=2:plsqr=8,1:sd=2:sp=frequency:ss=axioms:tgt=ground:i=2092:si=on:rtra=on_0"); + quick.push("dis+1002_5:1_atotf=0.2:au=on:kws=precedence:sd=1:sos=on:ss=axioms:st=5.0:i=1635:si=on:rtra=on_0"); + quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=3670:si=on:rtra=on_0"); + quick.push("ott+10_4:1_cnfonf=lazy_gen:fe=axiom:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2agt=32:ss=axioms:i=1469:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=1162:si=on:rtra=on_0"); + quick.push("lrs+10_1:40_atotf=0.3:au=on:avsq=on:avsqr=1,2:fe=axiom:nwc=10.0:sd=2:sgt=4:sos=all:ss=axioms:i=393:si=on:rtra=on_0"); + quick.push("dis+21_1:1_av=off:fe=off:hud=1:kws=inv_precedence:sos=on:i=1039:si=on:rtra=on_0"); + quick.push("ott+1002_1:20_au=on:cnfonf=off:fd=off:sos=on:sp=unary_frequency:i=1039:si=on:rtra=on_0"); + // Improves by expected 106.48288474670751 probs costing 239656 Mi + // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit + quick.push("lrs+1004_5:1_apa=on:avsq=on:cnfonf=off:e2e=on:fe=axiom:fsr=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:i=1958:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_bs=unit_only:cnfonf=lazy_not_gen_be_off:fe=off:fsr=off:hfsq=on:lecc=1.5:nwc=7.0:piset=equals:s2a=on:s2agt=10:sac=on:i=8945:si=on:rtra=on_0"); + quick.push("dis+21_3:1_au=on:c=on:nwc=3.0:s2a=on:s2agt=64:sd=1:sp=reverse_arity:ss=axioms:st=5.0:i=8021:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cnfonf=off:e2e=on:hud=10:ins=2:plsq=on:plsqc=1:plsqr=32,1:s2a=on:sac=on:sos=on:i=22560:si=on:rtra=on_0"); + quick.push("lrs+1010_2:1_au=on:av=off:e2e=on:fe=off:kws=inv_frequency:sos=on:i=8672:si=on:rtra=on_0"); + quick.push("lrs+1004_2:3_au=on:c=on:cnfonf=off:fe=off:ins=1:sd=1:sgt=16:ss=axioms:i=6080:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_au=on:avsq=on:sd=1:sgt=16:sos=on:ss=axioms:st=2.0:i=459:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:sd=2:sgt=8:sp=reverse_frequency:ss=axioms:i=8842:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_atotf=0.3:cnfonf=lazy_not_be_gen:sos=on:ss=axioms:i=3520:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_aac=none:cnfonf=lazy_not_be_gen:sos=all:i=6050:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=preordered:cnfonf=lazy_not_be_gen:fe=axiom:kws=precedence:ntd=on:nwc=10.0:sd=2:ss=axioms:st=2.0:i=10891:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_piset=or:prag=on:s2a=on:sos=on:ss=axioms:i=1445:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:e2e=on:s2a=on:s2agt=64:sac=on:sos=on:i=10086:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_av=off:cnfonf=off:ntd=on:prag=on:sos=on:sp=occurrence:tnu=5:i=630:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:ss=axioms:i=7546:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:cbe=off:cnfonf=lazy_gen:fd=off:fsr=off:ins=2:sos=all:i=537:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:ntd=on:s2a=on:sfv=off:ss=axioms:i=7823:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_c=on:cnfonf=off:nm=2:plsq=on:plsqc=1:plsqr=14,1:sp=const_frequency:ss=axioms:i=9327:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:e2e=on:ntd=on:prag=on:sos=on:i=4316:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fe=axiom:plsq=on:plsqr=32,1:sos=all:ss=axioms:i=5319:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:e2e=on:er=known:sos=all:sp=const_max:ss=axioms:i=640:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_av=off:bd=off:ntd=on:prag=on:sos=all:sp=occurrence:i=5212:si=on:rtra=on_0"); + quick.push("dis+21_1:1_av=off:cnfonf=off:prag=on:s2a=on:sos=on:i=1304:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=1093:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_au=on:av=off:c=on:cbe=off:fe=off:plsq=on:plsqr=263619,8192:sos=on:ss=axioms:i=1835:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_fe=axiom:prag=on:sos=all:sp=reverse_arity:ss=axioms:i=3880:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_au=on:fe=off:hud=10:ntd=on:sd=2:ss=axioms:st=3.0:i=2145:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=off:e2e=on:gs=on:hud=1:nm=0:prag=on:s2pl=no:sos=all:sp=unary_first:i=4090:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_avsq=on:bsr=unit_only:cnfonf=off:kws=frequency:nm=32:sos=on:sp=const_frequency:i=3838:si=on:rtra=on_0"); + quick.push("dis+10_1:8_cnfonf=lazy_not_gen:plsq=on:plsqc=1:plsqr=19,2:s2pl=on:sd=1:sp=unary_frequency:ss=axioms:st=4.0:i=5801:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=2007:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=off:erd=off:hud=21:ins=2:plsq=on:plsqr=32,1:sac=on:sos=on:i=7556:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_au=on:cnfonf=off:e2e=on:nm=16:plsq=on:plsqr=1,2:sac=on:sos=on:sp=reverse_frequency:ss=axioms:i=6991:si=on:rtra=on_0"); + quick.push("ott+1002_5:1_cond=fast:e2e=on:fe=off:hud=15:piset=all_but_not_eq:s2a=on:s2agt=100:s2at=5.0:sac=on:sos=on:i=802:si=on:rtra=on_0"); + quick.push("dis+21_1:16_avsq=on:avsqr=3,1:bd=preordered:cha=on:cnfonf=off:e2e=on:fsr=off:sos=on:sp=weighted_frequency:tnu=2:i=3358:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_au=on:avsq=on:avsqr=7,8:erd=off:sos=on:i=3395:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_apa=on:cnfonf=off:kws=inv_precedence:lma=on:ntd=on:nwc=10.0:plsq=on:plsqc=1:plsqr=29,1:spb=goal:i=2902:si=on:rtra=on_0"); + quick.push("lrs+1002_1:5_acc=on:avsq=on:avsqr=1,16:fe=axiom:prag=on:sd=1:ss=axioms:st=4.0:i=589:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bsr=unit_only:cbe=off:fd=off:fsr=off:sos=on:ss=axioms:i=1477:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_kws=arity:nwc=10.0:prag=on:sd=1:sgt=16:ss=axioms:i=723:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=535:si=on:rtra=on_0"); + quick.push("dis-1004_16:1_awrs=converge:cnfonf=conj_eager:fe=off:fsr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=4709875,524288:sp=const_frequency:i=9984:si=on:rtra=on_0"); + quick.push("ott+10_2:1_acc=model:cnfonf=lazy_not_be_gen:hud=10:inj=on:plsq=on:plsqc=1:plsqr=1351,66:sp=const_frequency:i=6090:si=on:rtra=on_0"); + quick.push("lrs+21_5:4_apa=on:c=on:cnfonf=off:er=known:fe=axiom:fs=off:fsr=off:prag=on:sos=on:i=1063:si=on:rtra=on_0"); + quick.push("dis+21_1:1_avsq=on:avsqr=1,16:bd=off:hud=1:ins=1:prag=on:sos=on:ss=included:i=9461:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=20258:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:fsr=off:plsq=on:plsqr=32,1:sd=1:sos=on:ss=axioms:i=4520:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_atotf=0.2:bd=off:e2e=on:fe=axiom:hud=1:prag=on:sos=all:i=6143:si=on:rtra=on_0"); + quick.push("lrs+21_1:1024_au=on:chr=on:erd=off:fe=axiom:sos=all:ss=axioms:i=2525:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=3320:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:av=off:bsr=unit_only:fe=axiom:kws=inv_frequency:lwlo=on:nm=4:sos=all:i=6465:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=off:piset=equals:sd=1:sos=all:ss=axioms:i=11466:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:ntd=on:nwc=10.0:slsq=on:slsqc=1:sp=unary_frequency:uhcvi=on:i=18308:si=on:rtra=on_0"); + quick.push("dis+21_1:8_bd=off:cbe=off:fe=off:kws=inv_arity_squared:plsq=on:plsqc=1:plsqr=375431,1048576:sd=1:ss=axioms:st=3.0:tgt=full:tnu=2:i=592:si=on:rtra=on_0"); + quick.push("lrs+21_1:64_bd=off:cnfonf=off:fde=none:fe=axiom:nwc=10.0:sos=on:tnu=1:i=3862:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:e2e=on:ins=3:sd=1:sos=all:ss=axioms:i=968:si=on:rtra=on_0"); + quick.push("lrs+10_7:4_cnfonf=off:hfsq=on:ntd=on:prag=on:sd=1:ss=axioms:i=3730:si=on:rtra=on_0"); + quick.push("ott+10_1:4_amm=sco:au=on:nwc=5.0:s2a=on:s2at=3.0:sp=const_max:i=5864:si=on:rtra=on_0"); + quick.push("lrs+21_1:3_bd=off:bet=on:bsr=on:cnfonf=off:e2e=on:fsr=off:s2a=on:sd=1:sp=weighted_frequency:ss=axioms:st=5.5:tgt=ground:tnu=1:i=4771:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:au=on:avsq=on:bd=off:cnfonf=off:fe=off:sd=2:ss=axioms:st=2.0:i=6777:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_au=on:av=off:bd=off:cond=fast:nm=2:s2a=on:s2agt=40:sos=all:spb=non_intro:i=10639:si=on:rtra=on_0"); + quick.push("ott+1004_4:1_av=off:cbe=off:fsr=off:ins=3:kws=inv_frequency:nm=20:prag=on:i=9775:si=on:rtra=on_0"); + quick.push("dis+2_12:1_afp=100000:afq=1.0:apa=on:au=on:c=on:cnfonf=off:fe=off:ins=2:nm=32:sos=all:sp=occurrence:i=1742:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:ins=3:nm=4:sgt=20:sos=all:ss=axioms:i=16449:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_atotf=0.2:au=on:bsr=unit_only:cha=on:e2e=on:fsr=off:sd=1:sp=unary_first:ss=axioms:st=4.0:i=14118:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:fe=axiom:fs=off:fsr=off:plsq=on:s2a=on:s2at=2.0:sos=all:i=3340:si=on:rtra=on_0"); + quick.push("ott+1010_2:1_bs=unit_only:bsr=unit_only:cnfonf=lazy_not_gen:etr=on:fe=off:piset=pi_sigma:plsq=on:plsqc=1:plsqr=32,1:sos=all:i=12001:si=on:rtra=on_0"); + quick.push("lrs+20_1:4_au=on:bd=off:e2e=on:slsq=on:slsqr=1,8:sos=on:i=5185:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cnfonf=lazy_not_be_gen:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=19,2:sac=on:slsq=on:i=6917:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:av=off:e2e=on:kws=inv_precedence:nwc=10.0:sos=on:i=6640:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_aac=none:au=on:cnfonf=lazy_pi_sigma_gen:s2a=on:slsq=on:slsqr=1,4:i=11506:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=5.0:i=916:si=on:rtra=on_0"); + quick.push("lrs+1002_1:64_au=on:e2e=on:fe=off:kws=precedence:ntd=on:sac=on:sp=reverse_arity:tgt=ground:i=1968:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_apa=on:av=off:cnfonf=off:piset=pi_sigma:prag=on:slsq=on:slsqr=2,1:ss=axioms:i=5341:si=on:rtra=on_0"); + quick.push("dis+21_8:1_avsq=on:avsqr=1,16:cnfonf=off:fd=off:prag=on:s2a=on:slsq=on:slsqc=2:slsqr=2,31:sos=all:i=7099:si=on:rtra=on_0"); + quick.push("dis+1002_5:1_atotf=0.2:au=on:kws=precedence:sd=1:sos=on:ss=axioms:st=5.0:i=1635:si=on:rtra=on_0"); + quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=3019:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_au=on:avsq=on:bsr=on:cnfonf=off:e2e=on:nm=2:sac=on:sos=all:i=28426:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:fsr=off:sac=on:sd=1:sgt=32:sos=all:ss=axioms:i=849:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=1966:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=1162:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_au=on:cnfonf=off:fe=off:lcm=reverse:sd=1:sos=on:sp=const_frequency:ss=axioms:i=1029:si=on:rtra=on_0"); + quick.push("lrs+10_1:40_atotf=0.3:au=on:avsq=on:avsqr=1,2:fe=axiom:nwc=10.0:sd=2:sgt=4:sos=all:ss=axioms:i=393:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fd=off:ntd=on:sos=on:i=1555:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_apa=on:bd=off:cnfonf=off:e2e=on:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=6312:si=on:rtra=on_0"); + // Improves by expected 76.50177208874663 probs costing 479264 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("ott+10_8:1_apa=on:au=on:av=off:cnfonf=off:nwc=10.0:sp=reverse_arity:ss=axioms:i=23852:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:av=off:cnfonf=lazy_pi_sigma_gen:fsr=off:nwc=6.0:s2a=on:s2agt=16:i=24878:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=off:prag=on:sd=2:sos=on:ss=axioms:i=10106:si=on:rtra=on_0"); + quick.push("lrs+1004_5:1_apa=on:avsq=on:cnfonf=off:e2e=on:fe=axiom:fsr=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:i=1958:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:cnfonf=off:prag=on:sd=2:sos=all:ss=axioms:i=20823:si=on:rtra=on_0"); + quick.push("ott+2_3:1_cnfonf=lazy_not_gen_be_off:fe=axiom:hud=10:sos=on:sp=const_min:uhcvi=on:i=5969:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_acc=on:bd=off:cnfonf=off:fe=axiom:kws=inv_arity_squared:piset=equals:prag=on:sd=1:sp=reverse_arity:ss=axioms:tgt=ground:i=2716:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:sd=2:sgt=8:sp=reverse_frequency:ss=axioms:i=20720:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:bd=off:cnfonf=off:fe=axiom:hud=5:nwc=10.0:sd=1:sos=on:ss=axioms:st=2.0:i=2307:si=on:rtra=on_0"); + quick.push("dis+10_3:1_e2e=on:prag=on:sgt=8:ss=axioms:i=3502:si=on:rtra=on_0"); + quick.push("lrs+10_1:40_au=on:av=off:fde=unused:sos=all:sp=const_frequency:i=1957:si=on:rtra=on_0"); + quick.push("dis+2_1:3_au=on:bs=on:bsr=unit_only:e2e=on:hud=5:nwc=10.0:sgt=10:sos=on:sp=frequency:ss=axioms:i=22664:si=on:rtra=on_0"); + quick.push("lrs-1004_8:1_cnfonf=off:ins=2:kws=precedence:sp=reverse_arity:i=13721:si=on:rtra=on_0"); + quick.push("lrs+1002_11:1_au=on:c=on:cbe=off:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:s2at=2.0:i=2446:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_acc=on:cnfonf=lazy_not_be_gen:hud=23:sos=all:i=4674:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=9251:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:sos=all:i=9092:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqc=1:bd=off:c=on:sac=on:sd=1:sos=all:ss=axioms:st=2.0:i=13410:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bsr=unit_only:fsr=off:s2a=on:s2agt=16:s2pl=no:spb=goal:i=19177:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_au=on:av=off:ntd=on:sos=on:sp=frequency:ss=axioms:st=5.0:i=3525:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:apa=on:au=on:avsq=on:avsqr=561497,524288:cnfonf=off:e2e=on:s2a=on:s2agt=64:s2at=2.0:ss=axioms:i=1712:si=on:rtra=on_0"); + quick.push("dis+2_1:40_au=on:av=off:fd=off:hfsq=on:hfsqr=1,32:nm=2:sos=on:sp=const_min:i=11391:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fd=off:hud=25:s2a=on:sac=on:sos=on:sp=unary_first:i=3758:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_au=on:fde=none:s2a=on:slsq=on:i=4476:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fd=off:sd=1:sgt=16:sos=all:ss=axioms:i=3528:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fe=axiom:plsq=on:plsqr=32,1:sos=all:ss=axioms:i=4406:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=1093:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_fe=axiom:prag=on:sos=all:sp=reverse_arity:ss=axioms:i=7232:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:cnfonf=off:e2e=on:fe=off:nwc=3.0:s2a=on:s2at=7.0:sp=weighted_frequency:i=2877:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:cbe=off:fe=axiom:sd=1:ss=axioms:st=1.5:i=32268:si=on:rtra=on_0"); + quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=14357:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=16649:si=on:rtra=on_0"); + quick.push("lrs+31_1:1024_apa=on:au=on:cnfonf=off:e2e=on:fsr=off:sd=2:sgt=4:sos=on:ss=axioms:i=2401:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_au=on:cnfonf=off:e2e=on:nm=16:plsq=on:plsqr=1,2:sac=on:sos=on:sp=reverse_frequency:ss=axioms:i=7643:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=1:sos=on:sp=frequency:ss=axioms:i=3291:si=on:rtra=on_0"); + quick.push("dis+21_1:16_avsq=on:avsqr=3,1:bd=preordered:cha=on:cnfonf=off:e2e=on:fsr=off:sos=on:sp=weighted_frequency:tnu=2:i=3358:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_au=on:avsq=on:avsqr=7,8:erd=off:sos=on:i=3395:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bsr=unit_only:cbe=off:fd=off:fsr=off:sos=on:ss=axioms:i=3810:si=on:rtra=on_0"); + quick.push("ott+2_1:1_anc=all_dependent:cnfonf=lazy_pi_sigma_gen:fe=off:nwc=10.0:s2a=on:s2agt=100:i=39415:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:sd=2:sgt=64:sos=all:ss=axioms:i=6939:si=on:rtra=on_0"); + quick.push("dis-1002_16:1_au=on:cbe=off:nm=3:s2a=on:sos=on:i=3989:si=on:rtra=on_0"); + quick.push("lrs+1_1:7_bs=on:fe=axiom:hud=5:ins=2:prag=on:sos=on:spb=non_intro:ss=axioms:i=9619:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:av=off:cbe=off:fd=preordered:piset=or:sos=all:sp=unary_first:i=13317:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=1020:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_avsq=on:fd=off:sos=on:i=15956:si=on:rtra=on_0"); + quick.push("lrs+1003_1:1_au=on:bd=preordered:cnfonf=off:ntd=on:nwc=10.0:rp=on:sp=const_frequency:i=3473:si=on:rtra=on_0"); + quick.push("dis+10_1:1_bsd=on:cnfonf=conj_eager:fe=off:nwc=10.0:plsq=on:plsqc=1:plsqr=397,25:sac=on:sp=reverse_arity:ss=included:tnu=9:i=1987:si=on:rtra=on_0"); + quick.push("ott+10_1:8_fe=off:hfaw=5:hfsq=on:hfsqc=1:hfsqr=5,1:hud=15:nwc=15.0:prag=on:s2a=on:s2agt=16:ss=axioms:st=2.0:i=24782:si=on:rtra=on_0"); + quick.push("ott+1004_8:1_abs=on:awrs=decay:cnfonf=lazy_not_be_gen:fe=off:fsr=off:prag=on:rawr=on:s2pl=on:sos=all:spb=goal_then_units:i=11155:si=on:rtra=on_0"); + quick.push("ott+10_16:1_bsd=on:c=on:nm=32:s2a=on:sac=on:sos=all:i=13341:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=4321:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=3320:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:av=off:bsr=unit_only:fe=axiom:kws=inv_frequency:lwlo=on:nm=4:sos=all:i=21685:si=on:rtra=on_0"); + quick.push("lrs+21_1:6_abs=on:au=on:awrs=converge:awrsf=260:ntd=on:prag=on:sos=on:i=1608:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_cnfonf=lazy_simp:fsr=off:hud=1:ixr=off:nm=16:nwc=5.0:s2a=on:sac=on:sp=const_min:ss=axioms:i=5692:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_afr=on:au=on:ins=2:kws=precedence:sos=on:sp=weighted_frequency:i=12621:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:s2a=on:s2agt=32:i=4604:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_aac=none:anc=all:au=on:bd=off:fd=off:fe=off:kws=precedence:piset=pi_sigma:plsq=on:plsqr=4689123,65536:sos=all:sp=unary_frequency:i=7093:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_acc=on:au=on:avsq=on:avsqr=1,2:bd=off:bs=unit_only:fe=axiom:sp=const_max:i=107085:si=on:rtra=on_0"); + quick.push("ott+1002_1:64_atotf=0.2:au=on:hflw=2:hfsq=on:hfsql=off:hfsqr=1,2:kws=inv_frequency:sos=on:sp=occurrence:i=2036:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:nm=2:plsq=on:plsqr=32,1:sos=all:i=20407:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_simp:fd=off:fsr=off:sd=3:sgt=20:sp=unary_frequency:ss=axioms:i=8801:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_afr=on:au=on:sac=on:sd=2:sgt=32:ss=axioms:i=24615:si=on:rtra=on_0"); + quick.push("dis+10_5:4_acc=on:amm=off:cnfonf=off:ins=3:ixr=off:nwc=3.0:ss=axioms:st=2.0:i=8889:si=on:rtra=on_0"); + quick.push("lrs+1002_1:7_au=on:cnfonf=off:fe=axiom:ins=2:lecc=0.5:nm=32:sd=1:sgt=64:ss=axioms:i=5822:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_apa=on:av=off:cnfonf=off:e2e=on:fe=axiom:hud=23:plsq=on:plsqr=10937,262144:sos=on:tnu=5:i=4701:si=on:rtra=on_0"); + quick.push("ott+1004_4:1_av=off:cbe=off:fsr=off:ins=3:kws=inv_frequency:nm=20:prag=on:i=38170:si=on:rtra=on_0"); + quick.push("lrs+21_3:1_au=on:avsq=on:avsqr=1,2:fsr=off:hfsq=on:nm=0:ntd=on:sd=1:ss=axioms:i=14710:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_avsq=on:avsqr=1,2:bd=off:bsr=unit_only:fsr=off:kws=inv_precedence:sos=all:ss=axioms:i=5226:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:ins=2:ixr=off:nm=2:nwc=3.0:sac=on:sos=on:i=7792:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:erd=off:fd=off:fde=none:sos=all:ss=axioms:i=5871:si=on:rtra=on_0"); + quick.push("dis+10_6:1_fs=off:fsr=off:hfsq=on:kws=frequency:ntd=on:prag=on:sd=2:ss=axioms:i=1486:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:fe=axiom:fs=off:fsr=off:plsq=on:s2a=on:s2at=2.0:sos=all:i=3340:si=on:rtra=on_0"); + quick.push("lrs+21_4:1_au=on:fe=axiom:ins=3:ntd=on:nwc=10.0:i=11226:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:er=known:fe=off:s2a=on:sac=on:sos=on:i=4209:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_apa=on:au=on:av=off:cnfonf=off:fe=axiom:sos=on:i=9375:si=on:rtra=on_0"); + quick.push("lrs+20_1:4_au=on:bd=off:e2e=on:slsq=on:slsqr=1,8:sos=on:i=5185:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=5.0:i=4448:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_apa=on:av=off:cnfonf=off:piset=pi_sigma:prag=on:slsq=on:slsqr=2,1:ss=axioms:i=17621:si=on:rtra=on_0"); + quick.push("dis+21_8:1_avsq=on:avsqr=1,16:cnfonf=off:fd=off:prag=on:s2a=on:slsq=on:slsqc=2:slsqr=2,31:sos=all:i=7099:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_atotf=0.4:au=on:bsr=unit_only:cbe=off:e2e=on:fe=axiom:sos=on:sp=reverse_arity:i=4862:si=on:rtra=on_0"); + quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=16078:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:e2e=on:fde=none:fe=off:irw=on:ss=axioms:st=4.0:i=18072:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=1966:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=6386:si=on:rtra=on_0"); + quick.push("lrs+10_1:40_atotf=0.3:au=on:avsq=on:avsqr=1,2:fe=axiom:nwc=10.0:sd=2:sgt=4:sos=all:ss=axioms:i=393:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_apa=on:bd=off:cnfonf=off:e2e=on:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=30260:si=on:rtra=on_0"); + quick.push("dis+1010_3:2_avsq=on:cnfonf=conj_eager:prag=on:s2a=on:s2at=2.0:sp=unary_frequency:i=9912:si=on:rtra=on_0"); + // Improves by expected 55.52758541308132 probs costing 956285 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("dis+10_1:1_sd=2:ss=axioms:i=3862:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=off:prag=on:sd=2:sos=on:ss=axioms:i=6147:si=on:rtra=on_0"); + quick.push("lrs+1004_5:1_apa=on:avsq=on:cnfonf=off:e2e=on:fe=axiom:fsr=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:i=4559:si=on:rtra=on_0"); + quick.push("ott+2_3:1_cnfonf=lazy_not_gen_be_off:fe=axiom:hud=10:sos=on:sp=const_min:uhcvi=on:i=5969:si=on:rtra=on_0"); + quick.push("dis+1002_5:1_au=on:cnfonf=lazy_pi_sigma_gen:fe=off:s2a=on:s2at=1.5:i=27060:si=on:rtra=on_0"); + quick.push("lrs+1002_1:4_au=on:av=off:bd=off:e2e=on:fd=off:fsr=off:s2a=on:sos=on:i=11139:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=preordered:cnfonf=lazy_not_be_gen:fe=axiom:kws=precedence:ntd=on:nwc=10.0:sd=2:ss=axioms:st=2.0:i=12247:si=on:rtra=on_0"); + quick.push("ott+10_1:1_kws=arity:prag=on:sd=1:sos=all:ss=axioms:st=3.0:i=39576:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:cnfonf=off:fd=off:fe=off:ntd=on:prag=on:sos=all:i=9759:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_acc=on:cnfonf=lazy_not_be_gen:hud=23:sos=all:i=6313:si=on:rtra=on_0"); + quick.push("ott+21_4:1_e2e=on:flr=on:nwc=10.0:s2a=on:s2at=3.0:i=32613:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=6478:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:sos=all:i=28740:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:s2a=on:s2at=3.0:sd=3:ss=axioms:i=14945:si=on:rtra=on_0"); + quick.push("ott+10_16:1_amm=off:au=on:avsq=on:cnfonf=lazy_not_gen_be_off:piset=equals:s2a=on:s2at=3.0:i=8464:si=on:rtra=on_0"); + quick.push("dis+2_1:40_au=on:av=off:fd=off:hfsq=on:hfsqr=1,32:nm=2:sos=on:sp=const_min:i=11391:si=on:rtra=on_0"); + quick.push("ott+1010_1:8_au=on:cnfonf=off:fsr=off:ins=3:kws=inv_arity_squared:prag=on:i=20996:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=2401:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_fe=axiom:prag=on:sos=all:sp=reverse_arity:ss=axioms:i=7232:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_au=on:cbe=off:s2a=on:s2agt=32:sac=on:i=152807:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_avsq=on:avsqr=7,4:cnfonf=lazy_not_gen:fe=axiom:nwc=10.0:piset=small_set:sac=on:sos=on:i=11751:si=on:rtra=on_0"); + quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=14357:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=off:erd=off:hud=21:ins=2:plsq=on:plsqr=32,1:sac=on:sos=on:i=7700:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_au=on:cnfonf=off:e2e=on:nm=16:plsq=on:plsqr=1,2:sac=on:sos=on:sp=reverse_frequency:ss=axioms:i=7643:si=on:rtra=on_0"); + quick.push("dis+21_1:16_avsq=on:avsqr=3,1:bd=preordered:cha=on:cnfonf=off:e2e=on:fsr=off:sos=on:sp=weighted_frequency:tnu=2:i=3358:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_hud=1:inj=on:prag=on:s2a=on:sos=all:i=16774:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:sd=2:sgt=64:sos=all:ss=axioms:i=6939:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:av=off:cbe=off:fd=preordered:piset=or:sos=all:sp=unary_first:i=13317:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_avsq=on:fd=off:sos=on:i=15956:si=on:rtra=on_0"); + quick.push("ott+1004_8:1_abs=on:awrs=decay:cnfonf=lazy_not_be_gen:fe=off:fsr=off:prag=on:rawr=on:s2pl=on:sos=all:spb=goal_then_units:i=11155:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=20258:si=on:rtra=on_0"); + quick.push("lrs+21_1:1024_au=on:chr=on:erd=off:fe=axiom:sos=all:ss=axioms:i=5097:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=3320:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=off:piset=equals:sd=1:sos=all:ss=axioms:i=9969:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:ntd=on:nwc=10.0:slsq=on:slsqc=1:sp=unary_frequency:uhcvi=on:i=32057:si=on:rtra=on_0"); + quick.push("ott+10_1:4_amm=sco:au=on:nwc=5.0:s2a=on:s2at=3.0:sp=const_max:i=5864:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_aac=none:anc=all:au=on:bd=off:fd=off:fe=off:kws=precedence:piset=pi_sigma:plsq=on:plsqr=4689123,65536:sos=all:sp=unary_frequency:i=7093:si=on:rtra=on_0"); + quick.push("lrs+21_1:3_bd=off:bet=on:bsr=on:cnfonf=off:e2e=on:fsr=off:s2a=on:sd=1:sp=weighted_frequency:ss=axioms:st=5.5:tgt=ground:tnu=1:i=6736:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_cnfonf=off:e2e=on:er=known:hud=15:inj=on:sd=1:sgt=40:ss=axioms:tnu=9:i=12571:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_au=on:av=off:bd=off:cond=fast:nm=2:s2a=on:s2agt=40:sos=all:spb=non_intro:i=10639:si=on:rtra=on_0"); + quick.push("lrs+21_3:1_au=on:avsq=on:avsqr=1,2:fsr=off:hfsq=on:nm=0:ntd=on:sd=1:ss=axioms:i=12690:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:erd=off:fd=off:fde=none:sos=all:ss=axioms:i=5871:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_atotf=0.2:au=on:bsr=unit_only:cha=on:e2e=on:fsr=off:sd=1:sp=unary_first:ss=axioms:st=4.0:i=18153:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:fe=axiom:fs=off:fsr=off:plsq=on:s2a=on:s2at=2.0:sos=all:i=3340:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_apa=on:au=on:av=off:cnfonf=off:fe=axiom:sos=on:i=7293:si=on:rtra=on_0"); + quick.push("lrs+1010_7:1_cnfonf=off:e2e=on:fe=off:hfaw=0:hflw=3:hfsq=on:hfsqc=3:ins=2:piset=or:spb=non_intro:i=25011:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:bet=on:c=on:cnfonf=off:lcm=reverse:piset=small_set:sd=1:sp=reverse_frequency:ss=axioms:i=90001:si=on:rtra=on_0"); + quick.push("dis+21_8:1_avsq=on:avsqr=1,16:cnfonf=off:fd=off:prag=on:s2a=on:slsq=on:slsqc=2:slsqr=2,31:sos=all:i=7099:si=on:rtra=on_0"); + quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=16038:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=8726:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=6386:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fd=off:ntd=on:sos=on:i=121498:si=on:rtra=on_0"); + // Improves by expected 20.068673084800533 probs costing 957306 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("ott+10_8:1_apa=on:au=on:av=off:cnfonf=off:nwc=10.0:sp=reverse_arity:ss=axioms:i=50131:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=off:prag=on:sd=2:sos=on:ss=axioms:i=6147:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cnfonf=off:e2e=on:hud=10:ins=2:plsq=on:plsqc=1:plsqr=32,1:s2a=on:sac=on:sos=on:i=26547:si=on:rtra=on_0"); + quick.push("dis+1002_5:1_au=on:cnfonf=lazy_pi_sigma_gen:fe=off:s2a=on:s2at=1.5:i=27060:si=on:rtra=on_0"); + quick.push("dis+10_3:1_e2e=on:prag=on:sgt=8:ss=axioms:i=14813:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:cbe=off:plsq=on:plsqc=1:plsqr=6694409,65536:i=31204:si=on:rtra=on_0"); + quick.push("ott+21_4:1_e2e=on:flr=on:nwc=10.0:s2a=on:s2at=3.0:i=32613:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=7389:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:sos=all:i=28740:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_au=on:av=off:c=on:cbe=off:fe=off:plsq=on:plsqr=263619,8192:sos=on:ss=axioms:i=12062:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=12001:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_hud=1:inj=on:prag=on:s2a=on:sos=all:i=16774:si=on:rtra=on_0"); + quick.push("ott+1010_4:1_cnfonf=lazy_simp:fe=axiom:s2agt=16:slsq=on:sp=weighted_frequency:i=25181:si=on:rtra=on_0"); + quick.push("dis-1002_16:1_au=on:cbe=off:nm=3:s2a=on:sos=on:i=44471:si=on:rtra=on_0"); + quick.push("ott+1004_8:1_abs=on:awrs=decay:cnfonf=lazy_not_be_gen:fe=off:fsr=off:prag=on:rawr=on:s2pl=on:sos=all:spb=goal_then_units:i=11155:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=16940:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=off:piset=equals:sd=1:sos=all:ss=axioms:i=64031:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_acc=on:au=on:avsq=on:avsqr=1,2:bd=off:bs=unit_only:fe=axiom:sp=const_max:i=107085:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_cnfonf=off:e2e=on:er=known:hud=15:inj=on:sd=1:sgt=40:ss=axioms:tnu=9:i=12571:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_afr=on:au=on:sac=on:sd=2:sgt=32:ss=axioms:i=79146:si=on:rtra=on_0"); + quick.push("ott+1004_4:1_av=off:cbe=off:fsr=off:ins=3:kws=inv_frequency:nm=20:prag=on:i=120001:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:erd=off:fd=off:fde=none:sos=all:ss=axioms:i=5871:si=on:rtra=on_0"); + quick.push("lrs+1010_7:1_cnfonf=off:e2e=on:fe=off:hfaw=0:hflw=3:hfsq=on:hfsqc=3:ins=2:piset=or:spb=non_intro:i=25011:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_aac=none:au=on:cnfonf=lazy_pi_sigma_gen:s2a=on:slsq=on:slsqr=1,4:i=14364:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=5.0:i=49826:si=on:rtra=on_0"); + quick.push("dis+10_8:1_au=on:avsq=on:avsqr=1,16:fe=off:fsr=off:plsq=on:plsqc=1:plsqr=32,1:rawr=on:i=68450:si=on:rtra=on_0"); + quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=16038:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=8726:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=6386:si=on:rtra=on_0"); + quick.push("ott+1002_1:20_au=on:cnfonf=off:fd=off:sos=on:sp=unary_frequency:i=16220:si=on:rtra=on_0"); + // Improves by expected 9.653174675566516 probs costing 956924 Mi + // Overall score 3018.1445063731217 probs on average / budget 3829335 Mi + } else { + // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=782:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=754:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=810:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=617:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=660:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=707:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=826:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=835:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=705:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=608:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=876:si=on:rtra=on_0"); + quick.push("lrs+1010_1:5_cnfonf=lazy_pi_sigma_gen:kws=precedence:nm=32:nwc=10.0:sp=const_frequency:i=15:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=1727:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:sd=1:ss=axioms:i=2:si=on:rtra=on_0"); + // Improves by expected 2258.269138383958 probs costing 9910 Mi + // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit + quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=947:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=2392:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=2494:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1258:si=on:rtra=on_0"); + quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=297:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_fe=off:prag=on:sos=all:ss=axioms:i=988:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:cbe=off:nm=10:sd=1:sos=all:ss=axioms:st=3.0:i=423:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:kws=precedence:sos=on:sp=reverse_arity:ss=axioms:i=742:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:avsq=on:sd=2:sgt=8:ss=axioms:i=313:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=3335:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_hud=10:ins=2:sos=all:ss=axioms:tnu=1:i=229:si=on:rtra=on_0"); + quick.push("dis+10_8:1_au=on:e2e=on:sgt=8:ss=axioms:i=328:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_bd=off:cbe=off:hud=1:prag=on:sos=on:sp=const_min:ss=axioms:i=649:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:plsq=on:plsqc=1:plsqr=32,1:sos=on:sp=const_frequency:ss=axioms:st=3.0:i=1048:si=on:rtra=on_0"); + quick.push("ott+1002_17:12_au=on:ins=3:sac=on:sd=3:sos=on:sp=occurrence:ss=axioms:i=1918:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=942:si=on:rtra=on_0"); + quick.push("dis+1002_1:32_au=on:c=on:fd=off:nm=2:sd=1:sos=on:sp=frequency:ss=axioms:st=3.0:i=1354:si=on:rtra=on_0"); + quick.push("dis+10_1:1_s2a=on:s2agt=8:sd=2:sgt=8:ss=axioms:i=355:si=on:rtra=on_0"); + // Improves by expected 212.0573861120701 probs costing 19994 Mi + // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit + quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:cs=on:e2e=on:i=290:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=2233:si=on:rtra=on_0"); + quick.push("dis+10_1:1_avsq=on:cnfonf=lazy_pi_sigma_gen:sd=1:ss=axioms:i=265:si=on:rtra=on_0"); + quick.push("lrs+2_1:64_bd=off:nwc=5.0:sd=2:ss=axioms:i=290:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=3711:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_bd=off:e2e=on:ins=1:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=585:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:hud=15:sos=on:i=1337:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:sd=1:sos=all:ss=axioms:st=1.5:i=1186:si=on:rtra=on_0"); + quick.push("lrs+4_1:1_fd=off:fs=off:fsr=off:sac=on:sos=on:ss=axioms:i=413:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=980:si=on:rtra=on_0"); + quick.push("dis+10_3:1_avsq=on:sd=1:ss=axioms:st=2.0:tgt=ground:i=278:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_kws=precedence:sos=on:sp=frequency:ss=axioms:i=252:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=289:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bsd=on:fsd=on:nwc=10.0:sd=1:ss=axioms:i=401:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_sd=1:sgt=30:sp=reverse_arity:ss=axioms:tgt=full:i=633:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=134:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=493:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=unused:fe=off:fs=off:fsr=off:hud=10:sos=on:i=719:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1029:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=640:si=on:rtra=on_0"); + quick.push("dis+10_1:32_fd=off:kws=precedence:sd=2:sos=on:ss=axioms:i=237:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=751:si=on:rtra=on_0"); + quick.push("ott+10_1:1_atotf=0.1:au=on:cnfonf=off:e2e=on:fsr=off:ins=4:kws=precedence:s2a=on:i=2166:si=on:rtra=on_0"); + quick.push("lrs+1002_1:2_e2e=on:sd=2:sgt=16:ss=axioms:i=502:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=4453:si=on:rtra=on_0"); + quick.push("dis+10_4:1_apa=on:au=on:cnfonf=off:fde=none:sd=2:ss=axioms:st=3.0:i=691:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_au=on:av=off:bd=off:e2e=on:sos=all:i=1786:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=621:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fd=preordered:sos=on:ss=axioms:st=1.5:i=621:si=on:rtra=on_0"); + // Improves by expected 134.93277978747452 probs costing 29914 Mi + // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=541:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2132:si=on:rtra=on_0"); + quick.push("dis+2_16:1_e2e=on:gs=on:s2a=on:s2agt=32:sgt=32:ss=axioms:i=1182:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:c=on:ins=3:plsq=on:plsqc=5:sd=1:sos=on:ss=axioms:i=567:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:avsq=on:bs=unit_only:bsr=unit_only:fsr=off:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=1467:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=890:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=5985:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_bd=off:fd=off:kws=inv_precedence:sos=on:ss=axioms:i=375:si=on:rtra=on_0"); + quick.push("ott+10_1:1_acc=model:avsq=on:c=on:cnfonf=off:fd=off:nm=0:sp=reverse_arity:ss=axioms:i=551:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_afp=1010:fde=unused:fe=off:hud=10:kws=arity_squared:prag=on:sos=on:sp=reverse_arity:i=1031:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:avsq=on:cbe=off:fde=none:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=1600:si=on:rtra=on_0"); + quick.push("dis+10_5:1_au=on:avsq=on:ss=axioms:i=516:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=3945:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:cnfonf=conj_eager:ins=1:sac=on:sp=const_max:ss=axioms:st=3.0:tgt=ground:i=267:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=828:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_au=on:avsq=on:avsqc=1:cnfonf=off:e2e=on:fsr=off:ins=1:nwc=10.0:s2a=on:s2at=2.5:sac=on:sp=const_min:i=693:si=on:rtra=on_0"); + quick.push("lrs+1010_1:4_au=on:e2e=on:hud=10:nm=32:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=1381:si=on:rtra=on_0"); + quick.push("dis+10_1:64_cnfonf=lazy_not_be_gen:cond=fast:fsr=off:hud=5:ntd=on:nwc=10.0:sac=on:sd=1:sos=on:sp=const_max:ss=axioms:i=798:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=3962:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=577:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_au=on:avsq=on:cbe=off:plsq=on:plsqc=1:plsqr=32,1:rawr=on:rp=on:sd=2:ss=axioms:st=3.0:i=5743:si=on:rtra=on_0"); + quick.push("dis+10_5:1_cnfonf=off:slsq=on:sp=const_max:i=571:si=on:rtra=on_0"); + quick.push("dis+10_1:1_e2e=on:hflw=5:hfsq=on:hfsqc=8:hfsql=off:i=273:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_au=on:ins=3:kws=precedence:ntd=on:sos=on:sp=const_max:ss=axioms:i=476:si=on:rtra=on_0"); + quick.push("dis+2_1:1_cnfonf=off:e2e=on:kws=inv_frequency:nm=0:nwc=5.0:s2a=on:s2agt=32:ss=axioms:i=487:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_e2e=on:plsq=on:plsqr=32,1:sgt=8:ss=axioms:i=1796:si=on:rtra=on_0"); + quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=559:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=638:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:avsq=on:fde=unused:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=6474:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=597:si=on:rtra=on_0"); + quick.push("ott+2_1:128_bd=off:ins=3:kws=precedence:sd=1:sos=on:sp=frequency:ss=axioms:st=5.0:i=290:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:avsq=on:nm=0:sd=1:ss=axioms:i=708:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_avsq=on:fsr=off:nm=2:prag=on:sos=on:i=748:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=1806:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=preordered:hud=15:kws=precedence:nm=16:sd=3:sgt=16:sos=on:sp=frequency:ss=axioms:i=483:si=on:rtra=on_0"); + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=5155:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:fd=off:fsr=off:s2a=on:s2agt=10:i=1398:si=on:rtra=on_0"); + quick.push("dis+32_1:2_au=on:cnfonf=lazy_pi_sigma_gen:kws=inv_precedence:nwc=10.0:s2a=on:s2agt=30:i=1441:si=on:rtra=on_0"); + quick.push("dis+10_1:8_ins=1:nm=6:s2a=on:sd=3:ss=axioms:i=451:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:ins=2:sos=on:ss=axioms:st=1.5:i=350:si=on:rtra=on_0"); + // Improves by expected 120.32336523397528 probs costing 59931 Mi + // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:fde=none:fsr=off:sos=on:sp=const_frequency:i=854:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=1328:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cs=on:prag=on:sos=on:i=1475:si=on:rtra=on_0"); + quick.push("ott+10_1:1_hud=15:ins=1:sd=1:sgt=32:sos=all:ss=axioms:st=2.0:i=1132:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=4969:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_cbe=off:e2e=on:hud=10:sd=1:ss=axioms:st=3.0:tgt=ground:i=1144:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:avsq=on:e2e=on:fde=unused:nm=6:nwc=10.0:sac=on:i=4810:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=944:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:avsq=on:e2e=on:nm=0:s2a=on:s2at=1.5:i=2837:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_apa=on:bsr=on:cnfonf=off:hud=10:ins=2:kws=inv_frequency:sd=2:slsq=on:slsqc=5:sos=on:ss=axioms:i=240:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_bd=off:cnfonf=off:hud=10:nm=32:sac=on:sd=1:sims=off:sos=all:ss=axioms:st=2.0:i=1511:si=on:rtra=on_0"); + quick.push("dis-1004_8:1_av=off:bd=off:fd=off:fe=off:hud=22:sos=on:tnu=2:i=883:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:av=off:fde=unused:hfsq=on:hfsqr=16,1:hud=10:lma=on:nm=3:piset=and:sos=all:sp=const_frequency:i=408:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_cnfonf=lazy_pi_sigma_gen:ins=1:nm=32:ntd=on:nwc=10.0:prag=on:s2at=3.0:slsq=on:slsqr=1,16:i=1080:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_amm=off:bs=on:c=on:cbe=off:nm=64:nwc=6.0:s2a=on:s2at=5.0:sac=on:slsq=on:slsqr=1,8:i=1108:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_ins=3:prag=on:sos=on:sp=const_min:i=907:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=1025:si=on:rtra=on_0"); + quick.push("ott+1010_1:128_afp=1010:afq=2.19963:avsq=on:avsqr=1,8:er=known:sd=1:ss=axioms:i=1045:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:cnfonf=conj_eager:ins=1:sac=on:sp=const_max:ss=axioms:st=3.0:tgt=ground:i=241:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_au=on:av=off:cnfonf=off:cond=fast:nm=6:sos=all:i=2216:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_av=off:bd=off:fd=off:kws=inv_frequency:sos=on:i=766:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=3722:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_apa=on:au=on:bsr=on:cnfonf=off:fe=off:nm=32:prag=on:sac=on:sos=on:sp=unary_first:ss=axioms:i=1895:si=on:rtra=on_0"); + quick.push("dis+10_1:1_atotf=0.5:fe=axiom:fsr=off:sd=1:sgt=16:sos=all:ss=axioms:i=1467:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=464:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:e2e=on:fe=off:prag=on:sos=all:sp=const_frequency:ss=axioms:i=4945:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:e2e=on:ins=2:sd=1:sos=all:ss=axioms:st=3.0:i=326:si=on:rtra=on_0"); + quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=1443:si=on:rtra=on_0"); + quick.push("lrs+2_1:6_au=on:cnfonf=off:ss=axioms:st=1.5:i=1438:si=on:rtra=on_0"); + quick.push("dis+21_8:1_au=on:cbe=off:cnfonf=off:hud=15:nwc=5.0:piset=not:sos=all:sp=unary_frequency:ss=axioms:i=3365:si=on:rtra=on_0"); + quick.push("dis+10_1:128_av=off:fde=unused:hud=1:prag=on:sos=all:ss=axioms:i=3425:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=2203:si=on:rtra=on_0"); + quick.push("lrs+31_1:1_au=on:cnfonf=off:ins=3:plsq=on:sd=1:sgt=32:sos=on:ss=axioms:i=289:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_aac=none:cbe=off:cnfonf=lazy_pi_sigma_gen:sos=all:sp=const_max:uhcvi=on:i=753:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_avsq=on:bsd=on:cnfonf=off:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=2214:si=on:rtra=on_0"); + quick.push("ott+2_1:1024_apa=on:atotf=0.2:bd=off:cnfonf=off:erd=off:fd=off:nm=0:sos=all:i=1527:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_c=on:fsr=off:hud=0:kws=inv_arity:ntd=on:sos=on:sp=occurrence:i=1098:si=on:rtra=on_0"); + quick.push("dis+22_1:1_au=on:fe=axiom:ntd=on:nwc=10.0:s2a=on:i=1348:si=on:rtra=on_0"); + quick.push("ott+10_1:1_s2a=on:s2at=2.0:sd=2:ss=axioms:i=7135:si=on:rtra=on_0"); + quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=791:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:sd=1:ss=axioms:st=3.0:i=6037:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_acc=on:au=on:chr=on:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:i=938:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=4357:si=on:rtra=on_0"); + quick.push("dis+10_1:2_au=on:cnfonf=lazy_pi_sigma_gen:ss=axioms:st=1.2:tgt=ground:i=938:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bs=on:e2e=on:prag=on:sos=on:ss=axioms:i=2052:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=753:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=1213:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=1417:si=on:rtra=on_0"); + quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=2643:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=991:si=on:rtra=on_0"); + quick.push("dis+21_1:1_bd=off:e2e=on:s2a=on:s2agt=32:sfv=off:ss=axioms:st=2.0:i=1247:si=on:rtra=on_0"); + quick.push("ott+10_4:1_au=on:cnfonf=lazy_gen:fde=unused:kws=precedence:s2a=on:s2at=2.0:sd=1:ss=axioms:st=5.0:i=2161:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fde=none:sos=all:i=1840:si=on:rtra=on_0"); + quick.push("dis+1010_1:20_au=on:av=off:cbe=off:fe=off:nm=2:sos=on:sp=weighted_frequency:uhcvi=on:i=1141:si=on:rtra=on_0"); + quick.push("dis+10_1:8_au=on:c=on:sos=all:ss=axioms:i=1777:si=on:rtra=on_0"); + quick.push("dis+10_1:5_cnfonf=off:e2e=on:fsr=off:prag=on:s2a=on:i=647:si=on:rtra=on_0"); + quick.push("dis+10_1:128_atotf=0.1:fd=off:fsr=off:hflw=5:hfsq=on:hfsqc=5:hfsql=off:hfsqr=1,16:plsq=on:plsqr=9,8:tnu=1:i=1197:si=on:rtra=on_0"); + quick.push("ott+1666_4:1_au=on:bd=off:erd=off:ntd=on:sos=all:i=1038:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:e2e=on:hfsq=on:hfsql=off:lcm=reverse:nm=32:nwc=10.0:s2a=on:s2at=3.0:sd=1:ss=axioms:st=6.0:i=1290:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_acc=on:au=on:bd=off:sgt=16:ss=axioms:tgt=full:i=6550:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cnfonf=off:sos=on:ss=axioms:i=4664:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_afr=on:cs=on:e2e=on:hfsq=on:hfsqc=20:ntd=on:nwc=10.0:s2a=on:i=1215:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_bd=preordered:fde=unused:prag=on:sos=on:i=743:si=on:rtra=on_0"); + // Improves by expected 102.61049630834741 probs costing 119999 Mi + // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit + quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=1101:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=3.0:i=972:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=4577:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:bsd=on:ins=3:plsq=on:plsqc=1:plsqr=1,1:s2a=on:s2at=3.0:sd=10:sp=weighted_frequency:ss=axioms:i=1655:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2115:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=7155:si=on:rtra=on_0"); + quick.push("dis+1010_8:1_cnfonf=lazy_gen:fe=off:fsr=off:hud=15:nwc=10.0:s2a=on:i=4273:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:e2e=on:fde=none:ins=3:kws=precedence:s2a=on:s2at=5.0:sp=frequency:i=2335:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=3375:si=on:rtra=on_0"); + quick.push("ott+10_5:4_au=on:avsq=on:bs=unit_only:bsr=unit_only:fsr=off:ins=3:kws=arity:sd=1:sos=all:ss=axioms:i=5339:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); + quick.push("dis+21_2:3_cnfonf=conj_eager:fsr=off:sd=1:slsq=on:ss=axioms:st=4.0:i=1845:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=6172:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:av=off:fde=unused:hfsq=on:hfsqr=16,1:hud=10:lma=on:nm=3:piset=and:sos=all:sp=const_frequency:i=9434:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_av=off:fe=off:hud=10:ins=5:nwc=3.0:prag=on:rawr=on:i=4927:si=on:rtra=on_0"); + quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1805:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6247:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=2589:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:cnfonf=conj_eager:ins=1:sac=on:sp=const_max:ss=axioms:st=3.0:tgt=ground:i=241:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_au=on:bd=off:fde=none:lecc=1.5:nwc=10.0:i=9473:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=4492:si=on:rtra=on_0"); + quick.push("dis+10_1:64_cnfonf=lazy_not_be_gen:cond=fast:fsr=off:hud=5:ntd=on:nwc=10.0:sac=on:sd=1:sos=on:sp=const_max:ss=axioms:i=798:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:avsq=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=3218:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=464:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_au=on:bd=off:e2e=on:sos=on:ss=axioms:i=2601:si=on:rtra=on_0"); + quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=11317:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:avsq=on:c=on:chr=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=2545:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=11785:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4513:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_acc=on:au=on:bd=off:sfv=off:ss=axioms:i=10881:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=1928:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_fd=off:hud=20:sos=on:ss=axioms:tnu=2:i=1063:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:avsq=on:fsr=off:ins=3:kws=frequency:sos=all:i=1479:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_bd=off:chr=on:erd=off:fd=off:fe=axiom:hud=10:sac=on:sos=on:i=538:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=10373:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:avsq=on:bet=on:cbe=off:cnfonf=off:ins=3:ntd=on:plsq=on:plsqc=1:plsqr=32,1:i=3847:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); + quick.push("dis+10_1:12_cnfonf=conj_eager:ss=axioms:st=3.0:tgt=full:i=620:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_atotf=0.2:au=on:bd=off:cnfonf=off:e2e=on:sos=all:i=3365:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fde=none:ss=axioms:i=1579:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=490:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=7308:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_er=filter:fd=off:flr=on:nwc=10.0:ss=axioms:st=3.0:i=365:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:sd=1:sgt=16:sp=occurrence:ss=axioms:i=1367:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=3577:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_aac=none:c=on:cnfonf=lazy_not_gen:sos=on:i=3633:si=on:rtra=on_0"); + quick.push("dis+1004_1:5_avsq=on:cs=on:e2e=on:ins=2:sos=all:i=1188:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=357:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_pi_sigma_gen:sd=1:slsq=on:ss=axioms:i=568:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=5301:si=on:rtra=on_0"); + quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=909:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_av=off:cnfonf=lazy_pi_sigma_gen:nwc=5.0:prag=on:s2a=on:s2agt=16:i=3801:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=preordered:hud=15:kws=precedence:nm=16:sd=3:sgt=16:sos=on:sp=frequency:ss=axioms:i=668:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_aac=none:bd=off:ins=2:sos=on:sp=reverse_frequency:ss=axioms:i=559:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:c=on:cnfonf=off:kws=inv_precedence:piset=and:sd=1:ss=axioms:tgt=ground:tnu=2:i=9010:si=on:rtra=on_0"); + quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1342:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=494:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); + quick.push("dis+10_8:1_au=on:nwc=10.0:sos=all:i=3282:si=on:rtra=on_0"); + quick.push("lrs-4_1:1_sd=1:sgt=8:sos=all:ss=axioms:i=882:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=5939:si=on:rtra=on_0"); + quick.push("ott+10_1:64_aac=none:acc=on:au=on:avsq=on:avsqr=2,15:cnfonf=lazy_not_gen_be_off:ins=1:tgt=full:i=3310:si=on:rtra=on_0"); + quick.push("ott+10_2:1_au=on:cnfonf=off:ins=1:plsq=on:plsqc=1:plsqr=10813507,131072:i=6244:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:sos=all:ss=axioms:i=1198:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_afr=on:cs=on:e2e=on:hfsq=on:hfsqc=20:ntd=on:nwc=10.0:s2a=on:i=4753:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=4954:si=on:rtra=on_0"); + // Improves by expected 83.63371839116107 probs costing 239607 Mi + // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit + quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=19923:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:fde=none:kws=inv_precedence:nwc=5.0:plsq=on:plsqc=1:plsqr=6,1:prag=on:s2a=on:i=13542:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:bsd=on:ins=3:plsq=on:plsqc=1:plsqr=1,1:s2a=on:s2at=3.0:sd=10:sp=weighted_frequency:ss=axioms:i=1655:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=2115:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:i=1623:si=on:rtra=on_0"); + quick.push("ott+10_1:1_atotf=0.1:bd=off:cnfonf=off:cs=on:ins=2:nwc=3.0:sd=10:ss=axioms:i=3771:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=925:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=14632:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:plsq=on:sos=on:i=9176:si=on:rtra=on_0"); + quick.push("ott+1010_16:1_au=on:cnfonf=off:e2e=on:i=12374:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1557:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:avsq=on:e2e=on:nm=0:s2a=on:s2at=1.5:i=15824:si=on:rtra=on_0"); + quick.push("dis+1004_1:4_av=off:e2e=on:hud=3:prag=on:sos=on:ss=axioms:i=953:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=5996:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=14840:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); + quick.push("lrs+2_1:6_apa=on:cnfonf=off:e2e=on:fe=off:fsr=off:hud=1:prag=on:sos=on:sp=unary_frequency:i=9099:si=on:rtra=on_0"); + quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1042:si=on:rtra=on_0"); + quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=6247:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_alpa=true:anc=none:atotf=0.1:au=on:cnfonf=off:ins=3:nm=64:sd=1:sp=occurrence:ss=axioms:st=5.0:i=6117:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=7827:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:hud=10:sd=4:sos=on:ss=axioms:st=2.0:i=3081:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:av=off:bs=unit_only:bsr=unit_only:e2e=on:er=filter:fde=unused:lecc=1.3:nm=4:sp=frequency:i=11051:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:ins=3:sos=on:ss=axioms:i=1761:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_au=on:av=off:cnfonf=off:cond=fast:nm=6:sos=all:i=4759:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:kws=inv_precedence:nwc=5.0:sd=1:sgt=32:ss=axioms:i=1340:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_apa=on:au=on:bsr=on:cnfonf=off:fe=off:nm=32:prag=on:sac=on:sos=on:sp=unary_first:ss=axioms:i=1895:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=4581:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4854:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:fsr=off:sd=1:sgt=100:ss=axioms:i=11200:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_e2e=on:nwc=5.0:sd=1:sgt=30:ss=axioms:i=870:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:sd=2:sos=on:ss=axioms:i=1561:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_avsq=on:bd=off:cnfonf=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:e2e=on:fd=off:sos=on:sp=unary_frequency:ss=axioms:i=4597:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:avsq=on:c=on:chr=on:nm=2:sac=on:sp=unary_first:ss=axioms:i=1781:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=6520:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=1303:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=8152:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:prag=on:sos=all:sp=frequency:i=7003:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:avsq=on:fsr=off:ins=3:kws=frequency:sos=all:i=1479:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_avsq=on:bsd=on:cnfonf=off:nm=10:piset=all_but_not_eq:s2a=on:s2at=6.0:sp=const_min:i=1368:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:avsqr=1,16:kws=arity_squared:nm=20:sd=1:sp=const_frequency:ss=axioms:i=964:si=on:rtra=on_0"); + quick.push("dis+21_1:4_avsq=on:avsqr=924271,1048576:c=on:e2e=on:fs=off:fsr=off:piset=and:plsq=on:plsqr=32,1:sd=10:sos=on:sp=unary_first:ss=axioms:st=1.5:tnu=2:i=791:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_au=on:bs=on:bsr=unit_only:c=on:fsr=off:hud=10:kws=inv_precedence:nm=6:ntd=on:nwc=10.0:sac=on:sos=on:i=1617:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2146:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=8947:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=2167:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_au=on:bs=unit_only:c=on:cnfonf=off:fde=none:kws=inv_arity_squared:nm=32:nwc=5.0:sos=on:i=12312:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=724:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:piset=pi_sigma:plsq=on:plsqr=9,2:prag=on:sd=1:sgt=32:sp=occurrence:ss=axioms:uhcvi=on:i=3366:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=1384:si=on:rtra=on_0"); + quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1540:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:avsq=on:fde=unused:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=61085:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_cnfonf=lazy_not_gen_be_off:hud=5:sd=1:ss=axioms:i=1486:si=on:rtra=on_0"); + quick.push("dis+1004_1:5_avsq=on:cs=on:e2e=on:ins=2:sos=all:i=1188:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:bd=off:kws=precedence:sos=on:sp=frequency:ss=axioms:st=3.0:i=728:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=5:nm=16:prag=on:sac=on:sos=on:ss=axioms:tnu=2:i=1141:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:er=filter:fde=none:ntd=on:nwc=10.0:i=20139:si=on:rtra=on_0"); + quick.push("dis+1010_73:128_bd=preordered:fsr=off:nwc=3.0:s2a=on:s2at=2.0:i=909:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=30846:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=off:awrs=decay:bsr=on:cbe=off:e2e=on:fde=none:fe=axiom:nwc=5.0:prag=on:sac=on:sd=1:spb=goal_then_units:ss=axioms:i=9747:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_sd=2:slsq=on:slsqc=1:ss=axioms:i=751:si=on:rtra=on_0"); + quick.push("lrs+10_97:429_c=on:cnfonf=lazy_gen:fe=axiom:ntd=on:s2a=on:sp=const_frequency:tgt=ground:i=1342:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cbe=off:cnfonf=lazy_not_gen:nwc=13.0:prag=on:s2a=on:sp=weighted_frequency:i=1957:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_acc=model:au=on:cbe=off:e2e=on:pe=on:piset=small_set:sos=on:sp=occurrence:ss=axioms:i=1179:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_abs=on:acc=model:au=on:bsr=unit_only:e2e=on:fde=none:sos=on:sp=const_frequency:i=5109:si=on:rtra=on_0"); + quick.push("ott+10_4:1_au=on:cnfonf=lazy_gen:fde=unused:kws=precedence:s2a=on:s2at=2.0:sd=1:ss=axioms:st=5.0:i=1125:si=on:rtra=on_0"); + quick.push("dis+10_1:128_atotf=0.1:fd=off:fsr=off:hflw=5:hfsq=on:hfsqc=5:hfsql=off:hfsqr=1,16:plsq=on:plsqr=9,8:tnu=1:i=1197:si=on:rtra=on_0"); + quick.push("ott+1666_4:1_au=on:bd=off:erd=off:ntd=on:sos=all:i=1038:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:e2e=on:hfsq=on:hfsql=off:lcm=reverse:nm=32:nwc=10.0:s2a=on:s2at=3.0:sd=1:ss=axioms:st=6.0:i=3014:si=on:rtra=on_0"); + quick.push("dis+1004_1:1_cnfonf=lazy_gen:fe=off:sd=1:sgt=30:slsq=on:ss=axioms:i=9638:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_bet=on:cnfonf=lazy_not_gen:fde=unused:nwc=10.0:sd=1:sp=unary_first:ss=axioms:i=6897:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:sos=all:ss=axioms:i=7846:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=12360:si=on:rtra=on_0"); + // Improves by expected 68.48008648144638 probs costing 479536 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("lrs+21_1:1_au=on:bsd=on:ins=3:plsq=on:plsqc=1:plsqr=1,1:s2a=on:s2at=3.0:sd=10:sp=weighted_frequency:ss=axioms:i=1655:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=1997:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_bd=preordered:cbe=off:e2e=on:fe=axiom:hud=5:s2a=on:s2agt=60:slsq=on:ss=axioms:tnu=1:i=4783:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_cnfonf=off:e2e=on:fde=unused:hud=10:nm=16:pe=on:s2a=on:s2at=2.0:tgt=ground:i=2601:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=1016:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=5570:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=925:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=3973:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=5800:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=68605:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_atotf=0.1:au=on:cnfonf=off:inj=on:piset=and:s2a=on:sos=on:i=1526:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_au=on:cnfonf=off:ins=1:nm=2:ntd=on:slsq=on:slsqc=4:sos=on:i=13141:si=on:rtra=on_0"); + quick.push("lrs+1010_1:64_acc=model:anc=all:bd=off:bsd=on:bsr=on:ins=3:ntd=on:prag=on:sos=all:i=40579:si=on:rtra=on_0"); + quick.push("lrs+1002_2:3_avsq=on:fde=none:nwc=3.0:prag=on:sac=on:sd=2:sgt=32:sos=on:sp=unary_frequency:ss=axioms:i=37097:si=on:rtra=on_0"); + quick.push("ott+1010_1:64_au=on:cbe=off:cnfonf=off:nwc=10.0:s2a=on:ss=axioms:i=5101:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:au=on:cnfonf=off:e2e=on:hud=15:sos=on:i=1967:si=on:rtra=on_0"); + quick.push("ott+10_1:1_cbe=off:cnfonf=lazy_gen:ins=3:nwc=10.0:s2a=on:i=10040:si=on:rtra=on_0"); + quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1042:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:avsq=on:cbe=off:fde=none:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); + quick.push("dis+1010_13:15_au=on:bd=off:bet=on:cnfonf=off:fe=axiom:hud=10:nm=0:ntd=on:nwc=5.0:sp=const_max:updr=off:i=1615:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:e2e=on:fde=none:ins=1:prag=on:sos=on:i=4783:si=on:rtra=on_0"); + quick.push("ott+10_1:1_bd=preordered:bsr=on:cnfonf=lazy_gen:ntd=on:nwc=10.0:sims=off:sp=const_frequency:i=3527:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:avsq=on:hud=22:ins=3:ntd=on:nwc=3.0:s2a=on:sp=weighted_frequency:i=2579:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_e2e=on:ntd=on:nwc=5.0:sac=on:sd=1:sgt=16:spb=units:ss=axioms:i=65701:si=on:rtra=on_0"); + quick.push("lrs+1010_1:16_av=off:awrs=converge:cnfonf=off:nwc=4.0:plsq=on:plsqc=1:plsql=on:plsqr=3090729,1048576:ss=axioms:tgt=ground:i=69646:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fd=off:sos=all:i=9162:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_acc=on:au=on:bd=off:bsr=unit_only:cnfonf=off:fsr=off:nm=2:sos=all:i=40221:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_atotf=0.2:au=on:bd=off:cnfonf=off:plsq=on:plsqc=1:plsqr=1,2:prag=on:sd=1:ss=axioms:st=3.0:tgt=full:i=4186:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_e2e=on:fd=off:fe=off:prag=on:sos=on:i=3319:si=on:rtra=on_0"); + quick.push("dis+10_16:1_au=on:avsq=on:cnfonf=conj_eager:piset=equals:s2a=on:sp=occurrence:ss=axioms:i=3218:si=on:rtra=on_0"); + quick.push("lrs+1010_1:6_avsq=on:bd=off:cnfonf=off:ins=2:kws=precedence:ntd=on:sp=const_frequency:spb=units:tgt=full:i=4317:si=on:rtra=on_0"); + quick.push("ott+2_1:1_au=on:cnfonf=off:sos=all:ss=axioms:st=3.0:i=18139:si=on:rtra=on_0"); + quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); + quick.push("dis+21_8:1_au=on:cbe=off:cnfonf=off:hud=15:nwc=5.0:piset=not:sos=all:sp=unary_frequency:ss=axioms:i=6753:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_abs=on:au=on:cnfonf=off:fde=unused:inj=on:sos=on:i=3344:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_au=on:bd=preordered:e2e=on:ins=3:kws=inv_frequency:nwc=10.0:sp=const_min:i=7911:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=4081:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=1325:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=10373:si=on:rtra=on_0"); + quick.push("dis+10_4:1_atotf=0.3:bs=on:cnfonf=lazy_simp:fe=axiom:gs=on:nm=0:nwc=10.0:sp=const_frequency:i=23452:si=on:rtra=on_0"); + quick.push("lrs+32_1:2_au=on:cbe=off:lecc=0.75:s2a=on:s2at=6.0:tgt=ground:i=14769:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_au=on:avsq=on:fsr=off:ins=3:kws=frequency:sos=all:i=1479:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=lazy_not_gen:fe=off:hud=15:ins=2:nm=16:prag=on:uhcvi=on:i=17013:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9328:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=18879:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=off:fd=off:rp=on:sac=on:sos=on:i=1264:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_amm=off:au=on:bd=off:fde=unused:fe=off:fsr=off:nm=16:ntd=on:s2a=on:s2at=2.0:ss=axioms:st=3.0:i=9251:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:ins=1:nm=2:sac=on:sos=all:i=2811:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2146:si=on:rtra=on_0"); + quick.push("ott+1002_23:4_fsd=on:ins=3:nwc=10.0:prag=on:i=1671:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2778:si=on:rtra=on_0"); + quick.push("lrs+21_7:1_bd=preordered:c=on:cnfonf=lazy_gen:fde=unused:fe=axiom:hud=10:piset=not:s2at=3.0:slsq=on:slsqr=9,7:ss=axioms:i=33343:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2695:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:avsq=on:e2e=on:ixr=off:s2a=on:sd=2:sp=occurrence:ss=axioms:i=13229:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:piset=pi_sigma:plsq=on:plsqr=9,2:prag=on:sd=1:sgt=32:sp=occurrence:ss=axioms:uhcvi=on:i=3366:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); + quick.push("ott+2_1:1_amm=off:atotf=0.4:cnfonf=off:fde=none:lma=on:nm=2:prag=on:sos=all:sp=const_max:tgt=ground:tnu=9:i=1540:si=on:rtra=on_0"); + quick.push("dis+1004_1:5_avsq=on:cs=on:e2e=on:ins=2:sos=all:i=1188:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_cnfonf=off:e2e=on:fde=unused:fsr=off:sac=on:sfv=off:tgt=full:i=15049:si=on:rtra=on_0"); + quick.push("ott+1010_44:25_afr=on:avsq=on:c=on:cnfonf=off:e2e=on:fd=preordered:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7623:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_avsq=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_au=on:cnfonf=lazy_gen:fsr=off:hfsq=on:hfsqr=1,32:sgt=16:ss=axioms:i=23300:si=on:rtra=on_0"); + quick.push("dis+1010_1:16_amm=sco:cnfonf=off:sd=1:ss=axioms:st=2.0:tgt=full:tnu=5:i=34824:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=14011:si=on:rtra=on_0"); + quick.push("ott+2_4:1_au=on:cnfonf=lazy_pi_sigma_gen:hud=16:ins=3:nm=20:plsq=on:plsqc=1:plsqr=13,2:rawr=on:sp=reverse_arity:ss=axioms:st=3.0:i=24800:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=13248:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:c=on:cnfonf=off:kws=inv_precedence:piset=and:sd=1:ss=axioms:tgt=ground:tnu=2:i=20260:si=on:rtra=on_0"); + quick.push("dis+10_2:3_avsq=on:fd=off:fde=none:lcm=reverse:prag=on:sac=on:sos=on:i=4887:si=on:rtra=on_0"); + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=24752:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bd=off:bs=unit_only:bsd=on:cnfonf=off:fde=unused:fsr=off:hud=5:kws=inv_arity_squared:sp=const_min:i=2235:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_acc=model:au=on:avsq=on:fd=off:hfsq=on:s2a=on:s2agt=16:sgt=10:sp=unary_frequency:ss=axioms:i=2286:si=on:rtra=on_0"); + quick.push("ott+10_4:1_au=on:cnfonf=lazy_gen:fde=unused:kws=precedence:s2a=on:s2at=2.0:sd=1:ss=axioms:st=5.0:i=1125:si=on:rtra=on_0"); + quick.push("lrs+1_1:1_acc=on:au=on:ccuc=first:erd=off:fde=none:fsr=off:nm=10:ntd=on:s2a=on:s2at=5.0:i=17270:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:sd=1:ss=axioms:i=2489:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:plsq=on:plsqc=1:plsqr=32,1:sos=on:sp=const_frequency:ss=axioms:st=3.0:i=9026:si=on:rtra=on_0"); + quick.push("ott+1002_17:12_au=on:ins=3:sac=on:sd=3:sos=on:sp=occurrence:ss=axioms:i=2265:si=on:rtra=on_0"); + quick.push("dis+10_1:128_atotf=0.1:fd=off:fsr=off:hflw=5:hfsq=on:hfsqc=5:hfsql=off:hfsqr=1,16:plsq=on:plsqr=9,8:tnu=1:i=1197:si=on:rtra=on_0"); + quick.push("dis+10_1:3_au=on:av=off:cha=on:cnfonf=conj_eager:etr=on:fde=none:nwc=3.0:sp=weighted_frequency:i=12872:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=4954:si=on:rtra=on_0"); + // Improves by expected 49.127566684028515 probs costing 957834 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("dis+10_4:1_avsq=on:e2e=on:fde=none:s2a=on:s2at=3.0:slsq=on:slsqc=1:i=18622:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=4533:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:av=off:cnfonf=lazy_not_gen_be_off:fe=axiom:kws=arity:nwc=5.0:ss=axioms:i=5570:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:bsd=on:cnfonf=off:kws=arity_squared:sp=const_min:ss=axioms:i=44027:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqr=16,1:fd=off:nm=2:sos=all:i=4753:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=6251:si=on:rtra=on_0"); + quick.push("dis-1010_1:1_au=on:avsq=on:e2e=on:nm=0:s2a=on:s2at=1.5:i=11778:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_fsd=on:hud=10:ntd=on:sp=reverse_arity:ss=axioms:i=13001:si=on:rtra=on_0"); + quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=22053:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:cnfonf=off:e2e=on:piset=small_set:sac=on:sd=1:sos=all:ss=axioms:st=5.0:i=46089:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:e2e=on:hud=15:s2a=on:sos=on:ss=axioms:tnu=1:i=5292:si=on:rtra=on_0"); + quick.push("dis+2_1:1_hflw=5:hfsq=on:hfsqc=8:hfsql=off:hfsqr=1,2:piset=pi_sigma:spb=goal:i=1805:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_acc=model:avsq=on:ccuc=small_ones:cnfonf=lazy_simp:nm=16:nwc=10.0:s2a=on:sac=on:sp=const_frequency:i=22253:si=on:rtra=on_0"); + quick.push("ott+10_1:1_afp=2000:avsq=on:bsr=unit_only:chr=on:ntd=on:piset=and:sos=on:sp=weighted_frequency:i=5377:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=6236:si=on:rtra=on_0"); + quick.push("dis+10_3:2_cnfonf=lazy_pi_sigma_gen:fe=off:nwc=5.0:prag=on:s2a=on:s2at=3.0:sp=frequency:i=9898:si=on:rtra=on_0"); + quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=28120:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_fde=none:prag=on:sd=2:sgt=8:ss=axioms:tgt=ground:i=14683:si=on:rtra=on_0"); + quick.push("ott+1002_2:1_au=on:cnfonf=lazy_gen:fde=none:nm=32:s2a=on:sp=const_min:i=5696:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=85280:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=5088:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_avsq=on:avsqr=16,1:cnfonf=conj_eager:nwc=10.0:plsq=on:plsqc=1:plsqr=32,1:sd=2:spb=intro:ss=axioms:i=10373:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=lazy_not_gen:fe=off:hud=15:ins=2:nm=16:prag=on:uhcvi=on:i=17013:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=14123:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_bs=on:cnfonf=lazy_not_be_gen:kws=inv_frequency:nwc=10.0:rawr=on:slsq=on:sp=weighted_frequency:uhcvi=on:i=2146:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:ntd=on:sos=on:sp=frequency:uhcvi=on:i=2778:si=on:rtra=on_0"); + quick.push("lrs+0_1:1_hfsq=on:hud=10:ins=2:prag=on:sac=on:sp=const_frequency:i=48810:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_bd=off:bet=on:bsd=on:bsr=unit_only:fde=none:nwc=10.0:sp=occurrence:i=2482:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_au=on:bs=unit_only:c=on:cnfonf=off:fde=none:kws=inv_arity_squared:nm=32:nwc=5.0:sos=on:i=12312:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=lazy_pi_sigma_gen:fe=off:piset=pi_sigma:plsq=on:plsqr=9,2:prag=on:sd=1:sgt=32:sp=occurrence:ss=axioms:uhcvi=on:i=3366:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=2946:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_acc=on:anc=all_dependent:avsq=on:fde=unused:hud=1:ins=2:piset=all_but_not_eq:prag=on:sac=on:i=90050:si=on:rtra=on_0"); + quick.push("ott+1010_44:25_afr=on:avsq=on:c=on:cnfonf=off:e2e=on:fd=preordered:hud=5:rawr=on:sp=frequency:spb=non_intro:tgt=full:tnu=1:i=7601:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_avsq=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:bet=on:fde=none:nm=20:sos=on:i=95997:si=on:rtra=on_0"); + quick.push("ott+2_1:1_abs=on:e2e=on:fsd=on:fsr=off:kws=inv_precedence:piset=not:prag=on:s2a=on:s2pl=no:sos=on:i=4759:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:e2e=on:fde=unused:nwc=5.0:sac=on:sos=all:sp=const_frequency:i=80153:si=on:rtra=on_0"); + quick.push("dis+10_2:3_avsq=on:fd=off:fde=none:lcm=reverse:prag=on:sac=on:sos=on:i=4887:si=on:rtra=on_0"); + quick.push("ott+10_16:1_aac=none:au=on:cnfonf=off:nm=20:s2a=on:ss=axioms:i=85427:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=15115:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fde=none:sos=all:i=11130:si=on:rtra=on_0"); + quick.push("ott+1002_17:12_au=on:ins=3:sac=on:sd=3:sos=on:sp=occurrence:ss=axioms:i=2265:si=on:rtra=on_0"); + quick.push("lrs+1010_3:1_bet=on:cnfonf=lazy_not_gen:fde=unused:nwc=10.0:sd=1:sp=unary_first:ss=axioms:i=6897:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:sos=all:ss=axioms:i=4492:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=11980:si=on:rtra=on_0"); + // Improves by expected 20.832310444427776 probs costing 953511 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("dis+1002_1:1_fe=off:hud=10:sos=on:ss=axioms:i=6230:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_au=on:bsd=on:c=on:fde=none:piset=equals:sac=on:sp=const_min:i=71177:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=lazy_gen:fe=off:ins=2:nwc=5.0:s2a=on:sp=occurrence:i=15983:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:fde=unused:nm=2:sac=on:sos=all:i=26900:si=on:rtra=on_0"); + quick.push("lrs+1010_1:64_acc=model:anc=all:bd=off:bsd=on:bsr=on:ins=3:ntd=on:prag=on:sos=all:i=40579:si=on:rtra=on_0"); + quick.push("ott+10_15:2_au=on:avsq=on:cnfonf=lazy_pi_sigma_gen:cs=on:fde=none:ins=2:sp=unary_first:i=18776:si=on:rtra=on_0"); + quick.push("lrs+2_1:6_apa=on:cnfonf=off:e2e=on:fe=off:fsr=off:hud=1:prag=on:sos=on:sp=unary_frequency:i=9099:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_bd=off:e2e=on:hud=15:s2a=on:sos=on:ss=axioms:tnu=1:i=5292:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_aac=none:au=on:avsq=on:cbe=off:fde=none:lcm=predicate:nm=32:prag=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=22803:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_c=on:cnfonf=off:hud=15:rawr=on:sd=1:sos=all:ss=axioms:i=73159:si=on:rtra=on_0"); + quick.push("dis+1010_1:5_au=on:avsq=on:ins=3:nm=0:nwc=10.0:prag=on:sos=all:sp=const_frequency:i=11506:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:av=off:bs=unit_only:bsr=unit_only:e2e=on:er=filter:fde=unused:lecc=1.3:nm=4:sp=frequency:i=18598:si=on:rtra=on_0"); + quick.push("lrs+21_16:1_au=on:bd=preordered:fde=none:ins=2:nwc=10.0:ss=axioms:st=2.0:i=12174:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_atotf=0.0319537:au=on:sos=on:sp=unary_frequency:i=6236:si=on:rtra=on_0"); + quick.push("ott+10_4:1_e2e=on:fde=unused:nm=40:nwc=10.0:s2a=on:s2at=2.0:sp=unary_frequency:ss=axioms:i=15576:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=off:hud=10:nm=10:ntd=on:s2a=on:sac=on:sgt=30:ss=included:i=41932:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:cnfonf=lazy_simp:fde=none:sp=occurrence:i=11232:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_au=on:cnfonf=lazy_pi_sigma_gen:fde=none:nwc=10.0:s2a=on:sac=on:i=188785:si=on:rtra=on_0"); + quick.push("dis+3_7:4_bsr=on:c=on:erd=off:fde=none:hud=10:lma=on:nwc=5.0:sac=on:sos=on:sp=frequency:i=9862:si=on:rtra=on_0"); + quick.push("lrs+21_8:1_cnfonf=lazy_not_gen:nm=2:nwc=10.0:plsq=on:plsqc=2:plsqr=6,1:prag=on:sgt=8:sp=unary_frequency:ss=axioms:i=9102:si=on:rtra=on_0"); + quick.push("ott+1002_14:1_c=on:cnfonf=lazy_gen:er=tagged:fe=axiom:s2a=on:ss=included:i=13047:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_aac=none:au=on:bd=off:cnfonf=off:nm=0:s2at=3.0:s2pl=on:sac=on:sos=on:i=74823:si=on:rtra=on_0"); + quick.push("dis+10_3:1_acc=on:avsq=on:bs=unit_only:cnfonf=off:fe=axiom:ins=3:plsq=on:plsqc=1:plsqr=32,1:prag=on:i=20702:si=on:rtra=on_0"); + quick.push("lrs+20_1:1_au=on:bd=off:erd=off:fde=none:sos=on:i=111726:si=on:rtra=on_0"); + quick.push("dis+2_5:1_au=on:e2e=on:fsr=off:sos=on:sp=unary_first:ss=axioms:i=9441:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=off:fe=off:nwc=10.0:s2a=on:s2agt=8:sd=1:ss=axioms:st=5.0:i=8973:si=on:rtra=on_0"); + quick.push("dis+1010_1:2_avsq=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:hud=10:sd=2:ss=axioms:i=3633:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:c=on:cnfonf=off:e2e=on:ins=1:kws=precedence:ntd=on:sd=2:sos=on:ss=axioms:st=2.0:i=25272:si=on:rtra=on_0"); + quick.push("dis+2_1:1_bd=off:prag=on:sos=all:sp=frequency:ss=axioms:uhcvi=on:i=8613:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_au=on:bd=off:sac=on:sos=all:i=44526:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_e2e=on:prag=on:rawr=on:sos=on:sp=weighted_frequency:i=15115:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:fde=none:kws=inv_frequency:ntd=on:sos=on:i=4811:si=on:rtra=on_0"); + // Improves by expected 11.519827354524478 probs costing 955651 Mi - // Fri14 Overall score 3061.786675181413 probs on average / budget 3825887 Mi - // Wed12 Overall score 3048.3069003468577 probs on average / budget 3833691 Mi - // Tue11 Overall score 3039.0840598543527 probs on average / budget 3828761 Mi - // Mon10b Overall score 3037.186917544398 probs on average / budget 3813568 Mi - // Mon10a Overall score 3000.409829293265 probs on average / budget 3825232 Mi - // Sun09 Overall score 2938.863699793977 probs on average / budget 1918256 Mi + // Fri14 Overall score 3061.786675181413 probs on average / budget 3825887 Mi + // Wed12 Overall score 3048.3069003468577 probs on average / budget 3833691 Mi + // Tue11 Overall score 3039.0840598543527 probs on average / budget 3828761 Mi + // Mon10b Overall score 3037.186917544398 probs on average / budget 3813568 Mi + // Mon10a Overall score 3000.409829293265 probs on average / budget 3825232 Mi + // Sun09 Overall score 2938.863699793977 probs on average / budget 1918256 Mi + } } else { // if (property.higherOrder()) // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit quick.push("dis+1002_1:1_bd=off:fd=off:sos=on:i=601:si=on:rtra=on_0"); diff --git a/z3 b/z3 index 6ed071b444..e417f7d785 160000 --- a/z3 +++ b/z3 @@ -1 +1 @@ -Subproject commit 6ed071b44407cf6623b8d3c0dceb2a8fb7040cee +Subproject commit e417f7d78509b2d0c9ebc911fee7632e6ef546b6 From f99adf402242eb8fa81b5caed884acd7334e6e52 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Mon, 11 Sep 2023 13:39:19 +0000 Subject: [PATCH 207/210] th1_sledgehammering/TH1.txt - but done in a weighted way (problems already covered by the other subscheds weigh less) --- CASC/Schedules.cpp | 994 +++++++++++++++++++++------------------------ 1 file changed, 464 insertions(+), 530 deletions(-) diff --git a/CASC/Schedules.cpp b/CASC/Schedules.cpp index 4a61596576..858d929d80 100644 --- a/CASC/Schedules.cpp +++ b/CASC/Schedules.cpp @@ -5469,536 +5469,470 @@ void Schedules::getSnakeTptpHolSchedule(const Shell::Property& property, Schedul void Schedules::getSnakeSlhSchedule(const Shell::Property& property, Schedule& quick) { if (property.higherOrder()) { if (property.hasPolymorphicSym()) { - // th1_sledgehammering/TH1.txt - // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit - quick.push("lrs+2_3:1_bd=off:fd=off:fde=none:fe=off:prag=on:sos=on:i=568:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqc=1:bd=off:c=on:sac=on:sd=1:sos=all:ss=axioms:st=2.0:i=439:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:apa=on:au=on:avsq=on:avsqr=561497,524288:cnfonf=off:e2e=on:s2a=on:s2agt=64:s2at=2.0:ss=axioms:i=1083:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fd=off:sd=1:sgt=16:sos=all:ss=axioms:i=571:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_acc=model:avsq=on:fe=axiom:fsr=off:nm=16:piset=pi_sigma:prag=on:sd=2:sgt=16:sp=weighted_frequency:ss=axioms:i=590:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_au=on:bd=off:cnfonf=off:plsq=on:plsqr=32,1:sac=on:sos=all:i=1062:si=on:rtra=on_0"); - quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=1862:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=1:sos=on:sp=frequency:ss=axioms:i=865:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:fe=off:kws=precedence:sos=on:sp=frequency:i=1309:si=on:rtra=on_0"); - quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=824:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_av=off:e2e=on:hud=1:prag=on:sd=2:sgt=10:sos=all:ss=axioms:i=617:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fsr=off:sd=1:sgt=32:ss=axioms:i=213:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_apa=on:bd=off:cnfonf=off:e2e=on:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=2:si=on:rtra=on_0"); - quick.push("lrs+10_14:471_cnfonf=lazy_not_gen_be_off:fde=none:fe=off:lecc=1.7:nm=16:ntd=on:sp=frequency:i=6:si=on:rtra=on_0"); - // Improves by expected 2062.066157116461 probs costing 9997 Mi - // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit - quick.push("lrs+1002_1:32_au=on:avsq=on:sd=1:sgt=16:sos=on:ss=axioms:st=2.0:i=900:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:sd=2:sgt=8:sp=reverse_frequency:ss=axioms:i=519:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:fde=none:nwc=10.0:sd=1:sgt=16:sos=all:ss=axioms:i=270:si=on:rtra=on_0"); - quick.push("dis+10_1:1_e2e=on:nwc=10.0:s2a=on:s2agt=64:i=648:si=on:rtra=on_0"); - quick.push("ott+10_1:1_kws=arity:prag=on:sd=1:sos=all:ss=axioms:st=3.0:i=469:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_bd=off:fde=none:fe=off:kws=precedence:prag=on:sos=on:sp=frequency:i=630:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:ntd=on:s2a=on:sfv=off:ss=axioms:i=980:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=const_frequency:ss=axioms:i=596:si=on:rtra=on_0"); - quick.push("lrs+1002_3:1_au=on:e2e=on:fd=off:fe=axiom:sos=on:i=2082:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=1177:si=on:rtra=on_0"); - quick.push("dis+1002_1:32_au=on:av=off:cnfonf=off:fsr=off:sd=2:sgt=4:sos=on:ss=axioms:i=315:si=on:rtra=on_0"); - quick.push("dis+10_3:1_au=on:e2e=on:fsr=off:sd=1:sgt=16:ss=axioms:i=799:si=on:rtra=on_0"); - quick.push("lrs+1002_1:5_acc=on:avsq=on:avsqr=1,16:fe=axiom:prag=on:sd=1:ss=axioms:st=4.0:i=696:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=938:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:ntd=on:nwc=10.0:slsq=on:slsqc=1:sp=unary_frequency:uhcvi=on:i=1261:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:e2e=on:ins=3:sd=1:sos=all:ss=axioms:i=382:si=on:rtra=on_0"); - quick.push("lrs-1002_8:1_av=off:bd=off:bs=unit_only:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:st=3.0:i=1521:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=on:au=on:avsq=on:bd=off:cnfonf=off:fe=off:sd=2:ss=axioms:st=2.0:i=1085:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:av=off:e2e=on:kws=inv_precedence:nwc=10.0:sos=on:i=2239:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:sd=2:sos=all:ss=axioms:i=515:si=on:rtra=on_0"); - quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=1962:si=on:rtra=on_0"); - // Improves by expected 258.0957885290929 probs costing 19963 Mi - // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit - quick.push("lrs+1002_1:2_au=on:av=off:bd=off:cnfonf=off:ntd=on:sgt=50:sos=on:ss=axioms:i=1163:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_au=on:cnfonf=lazy_pi_sigma_gen:sd=2:sos=all:ss=axioms:st=1.5:i=418:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:cnfonf=off:prag=on:sd=2:sos=all:ss=axioms:i=3266:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_c=on:sac=on:sos=on:ss=axioms:i=659:si=on:rtra=on_0"); - quick.push("lrs+10_1:64_bsr=unit_only:cnfonf=off:fsr=off:sd=1:sgt=100:ss=axioms:i=290:si=on:rtra=on_0"); - quick.push("dis+10_5:1_au=on:nwc=10.0:sac=on:sd=1:sos=on:ss=axioms:i=1027:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_au=on:fde=none:s2a=on:slsq=on:i=4556:si=on:rtra=on_0"); - quick.push("dis+1002_1:3_au=on:fsr=off:sd=1:sgt=16:sos=on:ss=axioms:i=486:si=on:rtra=on_0"); - quick.push("dis+21_1:2_e2e=on:fe=off:hud=15:sac=on:sos=on:tnu=1:i=1273:si=on:rtra=on_0"); - quick.push("dis+10_1:1_nwc=3.0:sd=2:ss=axioms:i=175:si=on:rtra=on_0"); - quick.push("lrs+1002_1:128_au=on:cnfonf=off:fde=unused:fe=axiom:prag=on:slsq=on:slsqc=2:sos=on:i=959:si=on:rtra=on_0"); - quick.push("dis+10_1:8_fsr=off:hud=5:nm=16:prag=on:sd=1:sos=on:sp=frequency:ss=axioms:i=782:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_av=off:cnfonf=off:fs=off:fsr=off:ins=3:kws=precedence:sd=2:sp=reverse_arity:ss=axioms:sup=off:i=408:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:c=on:cnfonf=off:e2e=on:nm=32:nwc=10.0:sgt=8:ss=axioms:i=493:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_au=on:av=off:bd=off:plsq=on:plsqc=1:plsqr=32,1:sos=on:ss=axioms:st=2.0:i=399:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:sd=1:sgt=100:ss=axioms:i=1662:si=on:rtra=on_0"); - quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=2503:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:fd=off:nm=20:nwc=10.0:plsq=on:s2a=on:s2agt=64:ss=axioms:st=5.0:i=854:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:av=off:e2e=on:sd=1:sos=all:sp=const_frequency:ss=axioms:i=589:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:sgt=4:sos=on:ss=axioms:i=407:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_acc=on:au=on:avsq=on:avsqr=1,2:bd=off:bs=unit_only:fe=axiom:sp=const_max:i=2286:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fe=off:prag=on:sd=1:sos=all:ss=axioms:st=2.5:i=308:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:avsq=on:hfsq=on:hfsqr=5,33:kws=arity_squared:piset=equals:plsq=on:plsql=on:plsqr=1,32:sd=1:sos=all:ss=axioms:st=5.0:i=832:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:erd=off:fd=off:fde=none:sos=all:ss=axioms:i=601:si=on:rtra=on_0"); - quick.push("ott+1010_1:4_au=on:avsq=on:bsr=on:cnfonf=off:e2e=on:nm=2:sac=on:sos=all:i=2179:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=1450:si=on:rtra=on_0"); - // Improves by expected 152.26842275295667 probs costing 29999 Mi - // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit - quick.push("lrs+10_8:1_au=on:av=off:cnfonf=lazy_pi_sigma_gen:fsr=off:nwc=6.0:s2a=on:s2agt=16:i=3050:si=on:rtra=on_0"); - quick.push("dis+1002_16:1_au=on:cnfonf=lazy_not_be_gen:fde=unused:piset=not:sd=1:slsq=on:ss=axioms:st=3.0:i=1778:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:s2a=on:s2agt=8:sd=2:sgt=4:ss=axioms:i=355:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:e2e=on:fs=off:fsr=off:ins=1:plsq=on:plsqc=1:plsqr=8653723,131072:sd=2:ss=axioms:i=317:si=on:rtra=on_0"); - quick.push("dis+10_1:64_au=on:fe=off:ixr=off:ntd=on:nwc=5.0:sd=2:ss=axioms:i=408:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_cnfonf=off:s2a=on:s2agt=32:sd=1:ss=axioms:st=6.0:i=401:si=on:rtra=on_0"); - quick.push("lrs+2_3:1_bd=off:fd=off:fde=none:fe=off:prag=on:sos=on:i=1005:si=on:rtra=on_0"); - quick.push("lrs+21_1:8_aac=none:bd=off:bet=on:cnfonf=lazy_not_gen:ins=2:prag=on:sos=all:sp=const_frequency:i=784:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqc=1:bd=off:c=on:sac=on:sd=1:sos=all:ss=axioms:st=2.0:i=5199:si=on:rtra=on_0"); - quick.push("ott+33_1:1_au=on:cnfonf=off:fsr=off:ntd=on:plsq=on:plsqr=32,1:sos=on:sp=const_frequency:ss=axioms:i=1063:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_erd=off:fe=off:ins=3:plsq=on:sos=on:i=398:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:apa=on:au=on:avsq=on:avsqr=561497,524288:cnfonf=off:e2e=on:s2a=on:s2agt=64:s2at=2.0:ss=axioms:i=1794:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fd=off:sd=1:sgt=16:sos=all:ss=axioms:i=3346:si=on:rtra=on_0"); - quick.push("dis+21_1:1_av=off:cnfonf=off:prag=on:s2a=on:sos=on:i=484:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=2187:si=on:rtra=on_0"); - quick.push("dis+1002_1:8_avsq=on:avsqr=1,16:e2e=on:s2a=on:ss=axioms:st=3.0:i=358:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_fe=axiom:prag=on:sos=all:sp=reverse_arity:ss=axioms:i=718:si=on:rtra=on_0"); - quick.push("dis+10_1:50_av=off:cnfonf=off:prag=on:sd=2:sos=on:ss=axioms:st=1.5:i=828:si=on:rtra=on_0"); - quick.push("lrs+1010_5:1_au=on:cbe=off:s2a=on:s2agt=32:sac=on:i=3644:si=on:rtra=on_0"); - quick.push("dis+1002_1:8_av=off:fd=off:fsr=off:prag=on:sos=on:ss=axioms:i=773:si=on:rtra=on_0"); - quick.push("lrs+31_1:1024_apa=on:au=on:cnfonf=off:e2e=on:fsr=off:sd=2:sgt=4:sos=on:ss=axioms:i=371:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_au=on:cnfonf=off:e2e=on:nm=16:plsq=on:plsqr=1,2:sac=on:sos=on:sp=reverse_frequency:ss=axioms:i=2885:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:bd=off:cnfonf=off:fd=off:ntd=on:piset=all_but_not_eq:sos=all:i=587:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:avsq=on:bd=off:fd=off:fe=axiom:fsr=off:sac=on:sos=on:i=528:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bd=off:fde=none:kws=frequency:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=434:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:sd=2:sgt=64:sos=all:ss=axioms:i=6100:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bsr=unit_only:s2a=on:sos=all:ss=axioms:i=802:si=on:rtra=on_0"); - quick.push("dis+1002_1:16_fde=unused:fe=off:hud=10:sos=on:i=672:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:ins=3:sd=1:sos=on:ss=axioms:i=340:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:erd=off:sos=on:i=463:si=on:rtra=on_0"); - quick.push("ott+21_1:1_bd=preordered:fd=off:fe=off:fs=off:fsr=off:sos=on:i=377:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=2502:si=on:rtra=on_0"); - quick.push("dis+10_16:1_acc=on:avsq=on:fe=axiom:fsr=off:s2a=on:s2agt=16:s2at=3.0:i=3950:si=on:rtra=on_0"); - quick.push("dis+1004_1:4_fde=none:sd=1:sgt=32:ss=axioms:tgt=ground:i=569:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_erd=off:fe=axiom:hud=10:lma=on:sfv=off:slsq=on:sos=all:i=397:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_afr=on:au=on:ins=2:kws=precedence:sos=on:sp=weighted_frequency:i=1204:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_hud=24:plsq=on:sd=1:sos=all:ss=axioms:tnu=1:i=581:si=on:rtra=on_0"); - quick.push("dis+10_1:2_cnfonf=off:fsr=off:sp=unary_first:ss=axioms:st=1.5:i=663:si=on:rtra=on_0"); - quick.push("dis-21_1:5_anc=all_dependent:au=on:fde=none:fe=off:sd=1:sos=on:ss=axioms:st=3.0:i=994:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_avsq=on:avsqr=1,16:nwc=10.0:sd=1:sp=reverse_frequency:ss=axioms:st=5.0:i=360:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_au=on:av=off:bd=off:cond=fast:nm=2:s2a=on:s2agt=40:sos=all:spb=non_intro:i=1601:si=on:rtra=on_0"); - quick.push("dis+2_1:32_au=on:kws=precedence:sp=weighted_frequency:ss=axioms:tgt=ground:i=446:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cnfonf=conj_eager:fe=axiom:sd=1:ss=axioms:i=407:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_atotf=0.2:au=on:bsr=unit_only:cha=on:e2e=on:fsr=off:sd=1:sp=unary_first:ss=axioms:st=4.0:i=836:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_cnfonf=lazy_simp:fe=axiom:hfsq=on:ntd=on:sd=1:sgt=32:ss=axioms:i=456:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_au=on:bet=on:c=on:cnfonf=off:lcm=reverse:piset=small_set:sd=1:sp=reverse_frequency:ss=axioms:i=586:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1024_au=on:e2e=on:fe=off:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); - quick.push("ott+10_1:2_ins=4:lcm=predicate:nm=6:s2a=on:s2at=-1.0:sac=on:sd=1:sgt=64:sp=weighted_frequency:ss=axioms:st=1.2:i=1516:si=on:rtra=on_0"); - // Improves by expected 145.48675040870236 probs costing 59963 Mi - // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit - quick.push("dis+21_3:1_au=on:c=on:nwc=3.0:s2a=on:s2agt=64:sd=1:sp=reverse_arity:ss=axioms:st=5.0:i=1510:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:bd=off:cnfonf=lazy_pi_sigma_gen:nwc=8.0:sd=1:ss=axioms:i=668:si=on:rtra=on_0"); - quick.push("lrs+10_1:2_e2e=on:sd=1:ss=axioms:st=3.0:i=1016:si=on:rtra=on_0"); - quick.push("lrs+1010_2:1_au=on:av=off:e2e=on:fe=off:kws=inv_frequency:sos=on:i=1356:si=on:rtra=on_0"); - quick.push("dis+10_1:14_au=on:fe=axiom:lma=on:nm=2:nwc=5.0:sac=on:sos=all:ss=axioms:i=2118:si=on:rtra=on_0"); - quick.push("lrs+1002_1:32_au=on:avsq=on:sd=1:sgt=16:sos=on:ss=axioms:st=2.0:i=382:si=on:rtra=on_0"); - quick.push("ott+21_1:16_fe=axiom:kws=precedence:ntd=on:sos=on:sp=unary_frequency:i=440:si=on:rtra=on_0"); - quick.push("ott+21_163:29_au=on:fde=unused:lcm=predicate:sos=on:sp=const_frequency:i=2752:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1024_av=off:bd=off:sd=2:sos=on:ss=axioms:st=3.0:i=1277:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:bd=off:cnfonf=off:fe=axiom:hud=5:nwc=10.0:sd=1:sos=on:ss=axioms:st=2.0:i=2108:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:nm=4:prag=on:sac=on:sd=1:sos=on:spb=goal_then_units:ss=axioms:i=986:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:cbe=off:plsq=on:plsqc=1:plsqr=6694409,65536:i=8493:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_piset=or:prag=on:s2a=on:sos=on:ss=axioms:i=3296:si=on:rtra=on_0"); - quick.push("dis+10_2:1_cnfonf=lazy_simp:fe=axiom:nwc=3.0:sd=1:sgt=32:ss=axioms:i=1695:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_av=off:bsr=unit_only:e2e=on:fd=preordered:prag=on:sos=all:sp=const_frequency:i=3416:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=2288:si=on:rtra=on_0"); - quick.push("dis+1002_1:4_aac=none:bd=off:e2e=on:fe=off:fsr=off:prag=on:sos=on:i=767:si=on:rtra=on_0"); - quick.push("ott+21_1:20_avsq=on:fde=none:sos=on:i=1016:si=on:rtra=on_0"); - quick.push("dis+10_1:1024_au=on:cnfonf=lazy_pi_sigma_gen:ins=1:tgt=ground:i=644:si=on:rtra=on_0"); - quick.push("lrs+1002_3:1_au=on:e2e=on:fd=off:fe=axiom:sos=on:i=4322:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_cnfonf=off:e2e=on:hud=10:kws=inv_frequency:sos=all:ss=axioms:i=1440:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_acc=model:avsq=on:fe=axiom:fsr=off:nm=16:piset=pi_sigma:prag=on:sd=2:sgt=16:sp=weighted_frequency:ss=axioms:i=12986:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fe=axiom:plsq=on:plsqr=32,1:sos=all:ss=axioms:i=1298:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:e2e=on:er=known:sos=all:sp=const_max:ss=axioms:i=640:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_anc=all:au=on:fe=off:plsq=on:plsqr=32,1:sac=on:sos=all:ss=axioms:i=1301:si=on:rtra=on_0"); - quick.push("lrs+10_1:128_au=on:bd=off:cnfonf=off:plsq=on:plsqr=32,1:sac=on:sos=all:i=2182:si=on:rtra=on_0"); - quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=4395:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=1799:si=on:rtra=on_0"); - quick.push("lrs+31_1:1024_apa=on:au=on:cnfonf=off:e2e=on:fsr=off:sd=2:sgt=4:sos=on:ss=axioms:i=2158:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_bd=off:fd=off:hud=10:ntd=on:sgt=16:sos=on:ss=axioms:i=644:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:c=on:cnfonf=off:e2e=on:nm=32:nwc=10.0:sgt=8:ss=axioms:i=806:si=on:rtra=on_0"); - quick.push("dis+10_1:16_acc=model:avsq=on:avsqr=1,16:cnfonf=lazy_not_be_gen:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=853:si=on:rtra=on_0"); - quick.push("lrs+1010_1:8_afp=30:au=on:bd=off:c=on:cbe=off:cnfonf=off:hud=15:nm=30:piset=equals:sd=1:sos=on:ss=axioms:i=548:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=1:sos=on:sp=frequency:ss=axioms:i=4551:si=on:rtra=on_0"); - quick.push("dis+1002_1:2_au=on:av=off:cnfonf=off:fe=off:s2a=on:sos=on:i=2161:si=on:rtra=on_0"); - quick.push("dis+21_1:64_apa=on:au=on:cnfonf=off:ins=2:sd=1:sgt=16:sos=on:ss=axioms:st=3.0:i=1118:si=on:rtra=on_0"); - quick.push("ott+10_1:1_acc=on:c=on:cnfonf=off:fe=axiom:prag=on:sd=1:sos=on:ss=axioms:st=1.5:i=495:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_kws=arity:nwc=10.0:prag=on:sd=1:sgt=16:ss=axioms:i=723:si=on:rtra=on_0"); - quick.push("dis-1003_1:5_c=on:fd=off:fe=axiom:fsr=off:sd=1:sos=on:ss=axioms:st=1.2:i=479:si=on:rtra=on_0"); - quick.push("dis+32_2:1_au=on:av=off:cnfonf=lazy_pi_sigma_gen:ntd=on:s2a=on:slsq=on:i=1282:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:avsq=on:bd=off:cnfonf=lazy_pi_sigma_gen:fd=off:sos=on:i=876:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=2354:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:av=off:bd=off:fd=off:sos=on:sp=const_frequency:i=1670:si=on:rtra=on_0"); - quick.push("lrs+21_1:1024_au=on:chr=on:erd=off:fe=axiom:sos=all:ss=axioms:i=988:si=on:rtra=on_0"); - quick.push("dis+21_1:8_bd=off:cbe=off:fe=off:kws=inv_arity_squared:plsq=on:plsqc=1:plsqr=375431,1048576:sd=1:ss=axioms:st=3.0:tgt=full:tnu=2:i=592:si=on:rtra=on_0"); - quick.push("lrs+10_2:3_au=on:cnfonf=lazy_pi_sigma_gen:fe=off:kws=inv_arity:sd=2:sp=reverse_arity:ss=axioms:st=3.0:tgt=full:i=947:si=on:rtra=on_0"); - quick.push("ott+10_1:1_nwc=2.0:sd=1:sgt=64:sos=all:ss=axioms:i=695:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:nm=2:plsq=on:plsqr=32,1:sos=all:i=4382:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_cnfonf=off:e2e=on:er=known:hud=15:inj=on:sd=1:sgt=40:ss=axioms:tnu=9:i=2044:si=on:rtra=on_0"); - quick.push("dis+10_1:16_au=on:cnfonf=off:fe=off:plsq=on:plsqc=1:plsqr=32,1:rawr=on:tgt=ground:i=1020:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_apa=on:av=off:cnfonf=off:e2e=on:fe=axiom:hud=23:plsq=on:plsqr=10937,262144:sos=on:tnu=5:i=4701:si=on:rtra=on_0"); - quick.push("dis+10_6:1_fs=off:fsr=off:hfsq=on:kws=frequency:ntd=on:prag=on:sd=2:ss=axioms:i=862:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:cnfonf=conj_eager:fe=axiom:sd=1:ss=axioms:i=4007:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_fsr=off:ntd=on:nwc=5.0:prag=on:sos=on:sp=unary_first:i=858:si=on:rtra=on_0"); - quick.push("dis+1002_2:3_amm=off:au=on:fsr=off:nwc=7.0:s2a=on:s2agt=16:ss=axioms:st=3.0:i=3546:si=on:rtra=on_0"); - quick.push("lrs+20_1:4_au=on:bd=off:e2e=on:slsq=on:slsqr=1,8:sos=on:i=1902:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_au=on:bet=on:c=on:cnfonf=off:lcm=reverse:piset=small_set:sd=1:sp=reverse_frequency:ss=axioms:i=297:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_bsr=unit_only:cnfonf=conj_eager:nwc=3.0:sd=1:ss=axioms:i=663:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:fsr=off:sac=on:sd=1:sgt=32:sos=all:ss=axioms:i=1380:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_acc=on:au=on:bd=off:fde=none:hud=15:sgt=4:sp=const_max:ss=axioms:uhcvi=on:i=1095:si=on:rtra=on_0"); - quick.push("lrs+1002_3:1_au=on:cnfonf=off:fe=off:lcm=reverse:sd=1:sos=on:sp=const_frequency:ss=axioms:i=1029:si=on:rtra=on_0"); - quick.push("dis-1002_1:16_av=off:fe=off:hud=19:nwc=12.0:sos=on:ss=axioms:st=2.0:i=1025:si=on:rtra=on_0"); - quick.push("dis+10_1:10_acc=model:e2e=on:fe=off:s2a=on:s2at=3.0:tgt=full:i=699:si=on:rtra=on_0"); - // Improves by expected 131.9932975570063 probs costing 119978 Mi - // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit - quick.push("lrs+10_1:1_au=on:cnfonf=lazy_not_gen:nwc=5.0:sos=all:i=1973:si=on:rtra=on_0"); - quick.push("ott+10_16:1_br=off:bsr=unit_only:fe=axiom:flr=on:nm=64:sos=on:sp=occurrence:i=1383:si=on:rtra=on_0"); - quick.push("lrs+1004_5:1_apa=on:avsq=on:cnfonf=off:e2e=on:fe=axiom:fsr=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:i=1958:si=on:rtra=on_0"); - quick.push("lrs+1003_4:1_au=on:cbe=off:cs=on:sd=1:sos=on:sp=frequency:ss=axioms:st=2.0:i=5543:si=on:rtra=on_0"); - quick.push("dis+1010_2:3_acc=on:bd=off:cnfonf=off:fe=axiom:kws=inv_arity_squared:piset=equals:prag=on:sd=1:sp=reverse_arity:ss=axioms:tgt=ground:i=1969:si=on:rtra=on_0"); - quick.push("dis+1010_3:2_e2e=on:rawr=on:sac=on:sd=1:sos=all:ss=axioms:st=3.0:i=1969:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=preordered:cnfonf=lazy_not_be_gen:fe=axiom:kws=precedence:ntd=on:nwc=10.0:sd=2:ss=axioms:st=2.0:i=838:si=on:rtra=on_0"); - quick.push("lrs+2_3:1_bd=off:fd=off:fde=none:fe=off:prag=on:sos=on:i=3351:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_e2e=on:fde=none:nwc=10.0:sd=1:sgt=16:sos=all:ss=axioms:i=2290:si=on:rtra=on_0"); - quick.push("dis+2_1:3_au=on:bs=on:bsr=unit_only:e2e=on:hud=5:nwc=10.0:sgt=10:sos=on:sp=frequency:ss=axioms:i=1910:si=on:rtra=on_0"); - quick.push("dis+1002_1:3_atotf=0.2:bd=off:cnfonf=conj_eager:fd=off:fe=off:ins=1:nwc=2.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=4:sos=all:i=1525:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_ins=2:nm=4:prag=on:sac=on:sd=1:sos=on:spb=goal_then_units:ss=axioms:i=986:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:ss=axioms:i=2903:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:cbe=off:plsq=on:plsqc=1:plsqr=6694409,65536:i=29386:si=on:rtra=on_0"); - quick.push("lrs+1010_1:3_cnfonf=off:fsr=off:gs=on:nm=3:s2a=on:sp=const_frequency:i=3382:si=on:rtra=on_0"); - quick.push("ott+10_1:1_apa=on:bsr=unit_only:cnfonf=off:fe=off:fsr=off:hud=8:ntd=on:prag=on:sos=all:ss=axioms:i=781:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:s2a=on:s2at=3.0:sd=3:ss=axioms:i=2287:si=on:rtra=on_0"); - quick.push("ott+10_16:1_amm=off:au=on:avsq=on:cnfonf=lazy_not_gen_be_off:piset=equals:s2a=on:s2at=3.0:i=8464:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:cbe=off:cnfonf=lazy_gen:fd=off:fsr=off:ins=2:sos=all:i=537:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:ntd=on:s2a=on:sfv=off:ss=axioms:i=855:si=on:rtra=on_0"); - quick.push("lrs+1010_4:1_amm=sco:ins=3:ss=axioms:st=1.5:i=3408:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:avsq=on:avsqr=1,6:bsr=unit_only:nm=2:nwc=2.0:sac=on:sos=all:ss=axioms:i=7305:si=on:rtra=on_0"); - quick.push("dis+21_1:1_av=off:cnfonf=off:prag=on:s2a=on:sos=on:i=1304:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=2187:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_au=on:av=off:c=on:cbe=off:fe=off:plsq=on:plsqr=263619,8192:sos=on:ss=axioms:i=1835:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:cnfonf=off:e2e=on:fe=off:nwc=3.0:s2a=on:s2at=7.0:sp=weighted_frequency:i=2138:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fe=off:hud=10:piset=all_but_not_eq:prag=on:s2a=on:s2at=2.0:sos=all:i=1630:si=on:rtra=on_0"); - quick.push("dis+10_1:50_av=off:cnfonf=off:prag=on:sd=2:sos=on:ss=axioms:st=1.5:i=828:si=on:rtra=on_0"); - quick.push("dis+10_1:8_fsr=off:hud=5:nm=16:prag=on:sd=1:sos=on:sp=frequency:ss=axioms:i=812:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_avsq=on:bsr=unit_only:cnfonf=off:kws=frequency:nm=32:sos=on:sp=const_frequency:i=3838:si=on:rtra=on_0"); - quick.push("lrs+2_1:1_aac=none:au=on:bd=off:c=on:erd=off:ntd=on:sos=on:sp=unary_first:ss=axioms:st=2.0:i=2178:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_aac=none:au=on:bd=off:cnfonf=off:fd=off:ntd=on:piset=all_but_not_eq:sos=all:i=587:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:avsq=on:e2e=on:sos=on:i=4358:si=on:rtra=on_0"); - quick.push("ott+1002_5:1_cond=fast:e2e=on:fe=off:hud=15:piset=all_but_not_eq:s2a=on:s2agt=100:s2at=5.0:sac=on:sos=on:i=802:si=on:rtra=on_0"); - quick.push("dis+10_1:16_acc=model:avsq=on:avsqr=1,16:cnfonf=lazy_not_be_gen:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=2250:si=on:rtra=on_0"); - quick.push("lrs+1002_1:5_acc=on:avsq=on:avsqr=1,16:fe=axiom:prag=on:sd=1:ss=axioms:st=4.0:i=589:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_hud=1:inj=on:prag=on:s2a=on:sos=all:i=1791:si=on:rtra=on_0"); - quick.push("dis+2_1:1_av=off:fe=off:prag=on:s2a=on:sos=on:i=4397:si=on:rtra=on_0"); - quick.push("ott+1010_3:1_aac=none:cbe=off:fsr=off:kws=inv_frequency:nwc=4.0:tnu=1:i=2128:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=535:si=on:rtra=on_0"); - quick.push("lrs+1002_1:32_avsq=on:fd=off:sos=on:i=1662:si=on:rtra=on_0"); - quick.push("dis+10_1:64_au=on:cnfonf=off:fde=none:ins=2:nm=6:sos=on:i=1929:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:erd=off:sos=on:i=1520:si=on:rtra=on_0"); - quick.push("ott+2_8:1_au=on:awrs=converge:e2e=on:fsr=off:hud=10:ins=3:ntd=on:s2at=2.5:slsq=on:slsqc=1:i=5044:si=on:rtra=on_0"); - quick.push("ott+1010_452:41_au=on:fsr=off:hfaw=0:hfsq=on:hfsqc=10:ins=3:kws=inv_frequency:nm=2:rawr=on:s2a=on:s2at=5.0:s2pl=on:sac=on:uhcvi=on:i=2186:si=on:rtra=on_0"); - quick.push("lrs+21_5:4_apa=on:c=on:cnfonf=off:er=known:fe=axiom:fs=off:fsr=off:prag=on:sos=on:i=1063:si=on:rtra=on_0"); - quick.push("lrs+1004_1:1_au=on:av=off:bd=off:plsq=on:plsqc=1:plsqr=32,1:sos=on:ss=axioms:st=2.0:i=2529:si=on:rtra=on_0"); - quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=4679:si=on:rtra=on_0"); - quick.push("ott+4_1:1_cbe=off:cnfonf=lazy_not_be_gen:hud=20:irw=on:nwc=5.0:piset=all:plsq=on:plsqr=32,1:prag=on:sos=all:sp=occurrence:i=2356:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:cnfonf=lazy_gen:hflw=2:hfsq=on:hfsqc=2:hfsqr=4,1:kws=precedence:s2a=on:s2at=1.5:sp=unary_first:i=2708:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:ntd=on:nwc=10.0:slsq=on:slsqc=1:sp=unary_frequency:uhcvi=on:i=5065:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_av=off:e2e=on:hud=1:prag=on:sd=2:sgt=10:sos=all:ss=axioms:i=8878:si=on:rtra=on_0"); - quick.push("dis+10_1:4_aac=none:amm=off:au=on:cnfonf=off:fd=off:ntd=on:nwc=15.0:sos=on:i=3877:si=on:rtra=on_0"); - quick.push("lrs+1002_1:28_bd=off:e2e=on:hud=10:sd=1:sos=on:ss=axioms:st=4.0:i=1533:si=on:rtra=on_0"); - quick.push("dis+10_16:1_hud=1:lma=on:ntd=on:prag=on:sos=all:sp=occurrence:ss=axioms:i=1876:si=on:rtra=on_0"); - quick.push("dis+1010_1:3_bd=preordered:cnfonf=lazy_simp:nwc=5.0:s2a=on:s2at=3.0:sp=unary_first:i=3446:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bd=off:cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:s2a=on:s2agt=32:i=4604:si=on:rtra=on_0"); - quick.push("lrs+1002_1:3_cnfonf=lazy_gen:fe=off:nwc=10.0:prag=on:s2a=on:s2at=3.0:i=2106:si=on:rtra=on_0"); - quick.push("ott+30_1:1_cnfonf=off:fd=off:nm=4:ntd=on:plsq=on:plsqr=32,1:sac=on:i=2533:si=on:rtra=on_0"); - quick.push("dis+1002_1:1024_av=off:e2e=on:fe=axiom:sos=on:sp=unary_first:i=2585:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:cnfonf=lazy_gen:nwc=10.0:s2a=on:sp=unary_first:i=10706:si=on:rtra=on_0"); - quick.push("lrs-1004_16:1_ins=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sac=on:sd=1:sos=on:spb=goal_then_units:ss=axioms:st=4.0:i=2524:si=on:rtra=on_0"); - quick.push("lrs+1002_1:7_au=on:cnfonf=off:fe=axiom:ins=2:lecc=0.5:nm=32:sd=1:sgt=64:ss=axioms:i=5822:si=on:rtra=on_0"); - quick.push("dis+2_12:1_afp=100000:afq=1.0:apa=on:au=on:c=on:cnfonf=off:fe=off:ins=2:nm=32:sos=all:sp=occurrence:i=1742:si=on:rtra=on_0"); - quick.push("lrs+10_1:16_atotf=0.3:bsr=on:nm=10:sd=1:sgt=16:slsq=on:slsqc=4:slsqr=1,3:sp=frequency:ss=axioms:tgt=full:i=6501:si=on:rtra=on_0"); - quick.push("dis+1010_4:1_cnfonf=conj_eager:sd=1:ss=axioms:i=485:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:avsq=on:hfsq=on:hfsqr=5,33:kws=arity_squared:piset=equals:plsq=on:plsql=on:plsqr=1,32:sd=1:sos=all:ss=axioms:st=5.0:i=1307:si=on:rtra=on_0"); - quick.push("ott+1010_2:1_e2e=on:fsr=off:hud=1:ins=3:sd=1:ss=axioms:st=3.0:i=2736:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:fde=unused:fsr=off:gs=on:s2a=on:s2at=1.5:i=1590:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:ins=3:nm=4:sgt=20:sos=all:ss=axioms:i=1183:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:er=known:fe=off:s2a=on:sac=on:sos=on:i=4209:si=on:rtra=on_0"); - quick.push("ott+1010_2:1_bs=unit_only:bsr=unit_only:cnfonf=lazy_not_gen:etr=on:fe=off:piset=pi_sigma:plsq=on:plsqc=1:plsqr=32,1:sos=all:i=6148:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=5.0:i=916:si=on:rtra=on_0"); - quick.push("dis+1002_1:28_aac=none:plsq=on:plsqc=2:plsqr=8,1:sd=2:sp=frequency:ss=axioms:tgt=ground:i=2092:si=on:rtra=on_0"); - quick.push("dis+1002_5:1_atotf=0.2:au=on:kws=precedence:sd=1:sos=on:ss=axioms:st=5.0:i=1635:si=on:rtra=on_0"); - quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=3670:si=on:rtra=on_0"); - quick.push("ott+10_4:1_cnfonf=lazy_gen:fe=axiom:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2agt=32:ss=axioms:i=1469:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=1162:si=on:rtra=on_0"); - quick.push("lrs+10_1:40_atotf=0.3:au=on:avsq=on:avsqr=1,2:fe=axiom:nwc=10.0:sd=2:sgt=4:sos=all:ss=axioms:i=393:si=on:rtra=on_0"); - quick.push("dis+21_1:1_av=off:fe=off:hud=1:kws=inv_precedence:sos=on:i=1039:si=on:rtra=on_0"); - quick.push("ott+1002_1:20_au=on:cnfonf=off:fd=off:sos=on:sp=unary_frequency:i=1039:si=on:rtra=on_0"); - // Improves by expected 106.48288474670751 probs costing 239656 Mi - // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit - quick.push("lrs+1004_5:1_apa=on:avsq=on:cnfonf=off:e2e=on:fe=axiom:fsr=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:i=1958:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_bs=unit_only:cnfonf=lazy_not_gen_be_off:fe=off:fsr=off:hfsq=on:lecc=1.5:nwc=7.0:piset=equals:s2a=on:s2agt=10:sac=on:i=8945:si=on:rtra=on_0"); - quick.push("dis+21_3:1_au=on:c=on:nwc=3.0:s2a=on:s2agt=64:sd=1:sp=reverse_arity:ss=axioms:st=5.0:i=8021:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cnfonf=off:e2e=on:hud=10:ins=2:plsq=on:plsqc=1:plsqr=32,1:s2a=on:sac=on:sos=on:i=22560:si=on:rtra=on_0"); - quick.push("lrs+1010_2:1_au=on:av=off:e2e=on:fe=off:kws=inv_frequency:sos=on:i=8672:si=on:rtra=on_0"); - quick.push("lrs+1004_2:3_au=on:c=on:cnfonf=off:fe=off:ins=1:sd=1:sgt=16:ss=axioms:i=6080:si=on:rtra=on_0"); - quick.push("lrs+1002_1:32_au=on:avsq=on:sd=1:sgt=16:sos=on:ss=axioms:st=2.0:i=459:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:sd=2:sgt=8:sp=reverse_frequency:ss=axioms:i=8842:si=on:rtra=on_0"); - quick.push("lrs+10_1:8_atotf=0.3:cnfonf=lazy_not_be_gen:sos=on:ss=axioms:i=3520:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_aac=none:cnfonf=lazy_not_be_gen:sos=all:i=6050:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=preordered:cnfonf=lazy_not_be_gen:fe=axiom:kws=precedence:ntd=on:nwc=10.0:sd=2:ss=axioms:st=2.0:i=10891:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_piset=or:prag=on:s2a=on:sos=on:ss=axioms:i=1445:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_au=on:e2e=on:s2a=on:s2agt=64:sac=on:sos=on:i=10086:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1024_av=off:cnfonf=off:ntd=on:prag=on:sos=on:sp=occurrence:tnu=5:i=630:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:ss=axioms:i=7546:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:cbe=off:cnfonf=lazy_gen:fd=off:fsr=off:ins=2:sos=all:i=537:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:ntd=on:s2a=on:sfv=off:ss=axioms:i=7823:si=on:rtra=on_0"); - quick.push("lrs-1004_1:1_c=on:cnfonf=off:nm=2:plsq=on:plsqc=1:plsqr=14,1:sp=const_frequency:ss=axioms:i=9327:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:e2e=on:ntd=on:prag=on:sos=on:i=4316:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fe=axiom:plsq=on:plsqr=32,1:sos=all:ss=axioms:i=5319:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_au=on:e2e=on:er=known:sos=all:sp=const_max:ss=axioms:i=640:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_av=off:bd=off:ntd=on:prag=on:sos=all:sp=occurrence:i=5212:si=on:rtra=on_0"); - quick.push("dis+21_1:1_av=off:cnfonf=off:prag=on:s2a=on:sos=on:i=1304:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=1093:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_au=on:av=off:c=on:cbe=off:fe=off:plsq=on:plsqr=263619,8192:sos=on:ss=axioms:i=1835:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_fe=axiom:prag=on:sos=all:sp=reverse_arity:ss=axioms:i=3880:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_au=on:fe=off:hud=10:ntd=on:sd=2:ss=axioms:st=3.0:i=2145:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=off:e2e=on:gs=on:hud=1:nm=0:prag=on:s2pl=no:sos=all:sp=unary_first:i=4090:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_avsq=on:bsr=unit_only:cnfonf=off:kws=frequency:nm=32:sos=on:sp=const_frequency:i=3838:si=on:rtra=on_0"); - quick.push("dis+10_1:8_cnfonf=lazy_not_gen:plsq=on:plsqc=1:plsqr=19,2:s2pl=on:sd=1:sp=unary_frequency:ss=axioms:st=4.0:i=5801:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=2007:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=off:erd=off:hud=21:ins=2:plsq=on:plsqr=32,1:sac=on:sos=on:i=7556:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_au=on:cnfonf=off:e2e=on:nm=16:plsq=on:plsqr=1,2:sac=on:sos=on:sp=reverse_frequency:ss=axioms:i=6991:si=on:rtra=on_0"); - quick.push("ott+1002_5:1_cond=fast:e2e=on:fe=off:hud=15:piset=all_but_not_eq:s2a=on:s2agt=100:s2at=5.0:sac=on:sos=on:i=802:si=on:rtra=on_0"); - quick.push("dis+21_1:16_avsq=on:avsqr=3,1:bd=preordered:cha=on:cnfonf=off:e2e=on:fsr=off:sos=on:sp=weighted_frequency:tnu=2:i=3358:si=on:rtra=on_0"); - quick.push("lrs-1004_1:1_au=on:avsq=on:avsqr=7,8:erd=off:sos=on:i=3395:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_apa=on:cnfonf=off:kws=inv_precedence:lma=on:ntd=on:nwc=10.0:plsq=on:plsqc=1:plsqr=29,1:spb=goal:i=2902:si=on:rtra=on_0"); - quick.push("lrs+1002_1:5_acc=on:avsq=on:avsqr=1,16:fe=axiom:prag=on:sd=1:ss=axioms:st=4.0:i=589:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bsr=unit_only:cbe=off:fd=off:fsr=off:sos=on:ss=axioms:i=1477:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_kws=arity:nwc=10.0:prag=on:sd=1:sgt=16:ss=axioms:i=723:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=535:si=on:rtra=on_0"); - quick.push("dis-1004_16:1_awrs=converge:cnfonf=conj_eager:fe=off:fsr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=4709875,524288:sp=const_frequency:i=9984:si=on:rtra=on_0"); - quick.push("ott+10_2:1_acc=model:cnfonf=lazy_not_be_gen:hud=10:inj=on:plsq=on:plsqc=1:plsqr=1351,66:sp=const_frequency:i=6090:si=on:rtra=on_0"); - quick.push("lrs+21_5:4_apa=on:c=on:cnfonf=off:er=known:fe=axiom:fs=off:fsr=off:prag=on:sos=on:i=1063:si=on:rtra=on_0"); - quick.push("dis+21_1:1_avsq=on:avsqr=1,16:bd=off:hud=1:ins=1:prag=on:sos=on:ss=included:i=9461:si=on:rtra=on_0"); - quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=20258:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:fsr=off:plsq=on:plsqr=32,1:sd=1:sos=on:ss=axioms:i=4520:si=on:rtra=on_0"); - quick.push("lrs+10_1:4_atotf=0.2:bd=off:e2e=on:fe=axiom:hud=1:prag=on:sos=all:i=6143:si=on:rtra=on_0"); - quick.push("lrs+21_1:1024_au=on:chr=on:erd=off:fe=axiom:sos=all:ss=axioms:i=2525:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=3320:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:av=off:bsr=unit_only:fe=axiom:kws=inv_frequency:lwlo=on:nm=4:sos=all:i=6465:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=off:piset=equals:sd=1:sos=all:ss=axioms:i=11466:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:ntd=on:nwc=10.0:slsq=on:slsqc=1:sp=unary_frequency:uhcvi=on:i=18308:si=on:rtra=on_0"); - quick.push("dis+21_1:8_bd=off:cbe=off:fe=off:kws=inv_arity_squared:plsq=on:plsqc=1:plsqr=375431,1048576:sd=1:ss=axioms:st=3.0:tgt=full:tnu=2:i=592:si=on:rtra=on_0"); - quick.push("lrs+21_1:64_bd=off:cnfonf=off:fde=none:fe=axiom:nwc=10.0:sos=on:tnu=1:i=3862:si=on:rtra=on_0"); - quick.push("lrs+10_3:1_au=on:e2e=on:ins=3:sd=1:sos=all:ss=axioms:i=968:si=on:rtra=on_0"); - quick.push("lrs+10_7:4_cnfonf=off:hfsq=on:ntd=on:prag=on:sd=1:ss=axioms:i=3730:si=on:rtra=on_0"); - quick.push("ott+10_1:4_amm=sco:au=on:nwc=5.0:s2a=on:s2at=3.0:sp=const_max:i=5864:si=on:rtra=on_0"); - quick.push("lrs+21_1:3_bd=off:bet=on:bsr=on:cnfonf=off:e2e=on:fsr=off:s2a=on:sd=1:sp=weighted_frequency:ss=axioms:st=5.5:tgt=ground:tnu=1:i=4771:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_acc=on:au=on:avsq=on:bd=off:cnfonf=off:fe=off:sd=2:ss=axioms:st=2.0:i=6777:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_au=on:av=off:bd=off:cond=fast:nm=2:s2a=on:s2agt=40:sos=all:spb=non_intro:i=10639:si=on:rtra=on_0"); - quick.push("ott+1004_4:1_av=off:cbe=off:fsr=off:ins=3:kws=inv_frequency:nm=20:prag=on:i=9775:si=on:rtra=on_0"); - quick.push("dis+2_12:1_afp=100000:afq=1.0:apa=on:au=on:c=on:cnfonf=off:fe=off:ins=2:nm=32:sos=all:sp=occurrence:i=1742:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:ins=3:nm=4:sgt=20:sos=all:ss=axioms:i=16449:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_atotf=0.2:au=on:bsr=unit_only:cha=on:e2e=on:fsr=off:sd=1:sp=unary_first:ss=axioms:st=4.0:i=14118:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:fe=axiom:fs=off:fsr=off:plsq=on:s2a=on:s2at=2.0:sos=all:i=3340:si=on:rtra=on_0"); - quick.push("ott+1010_2:1_bs=unit_only:bsr=unit_only:cnfonf=lazy_not_gen:etr=on:fe=off:piset=pi_sigma:plsq=on:plsqc=1:plsqr=32,1:sos=all:i=12001:si=on:rtra=on_0"); - quick.push("lrs+20_1:4_au=on:bd=off:e2e=on:slsq=on:slsqr=1,8:sos=on:i=5185:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cnfonf=lazy_not_be_gen:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=19,2:sac=on:slsq=on:i=6917:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:av=off:e2e=on:kws=inv_precedence:nwc=10.0:sos=on:i=6640:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_aac=none:au=on:cnfonf=lazy_pi_sigma_gen:s2a=on:slsq=on:slsqr=1,4:i=11506:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=5.0:i=916:si=on:rtra=on_0"); - quick.push("lrs+1002_1:64_au=on:e2e=on:fe=off:kws=precedence:ntd=on:sac=on:sp=reverse_arity:tgt=ground:i=1968:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_apa=on:av=off:cnfonf=off:piset=pi_sigma:prag=on:slsq=on:slsqr=2,1:ss=axioms:i=5341:si=on:rtra=on_0"); - quick.push("dis+21_8:1_avsq=on:avsqr=1,16:cnfonf=off:fd=off:prag=on:s2a=on:slsq=on:slsqc=2:slsqr=2,31:sos=all:i=7099:si=on:rtra=on_0"); - quick.push("dis+1002_5:1_atotf=0.2:au=on:kws=precedence:sd=1:sos=on:ss=axioms:st=5.0:i=1635:si=on:rtra=on_0"); - quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=3019:si=on:rtra=on_0"); - quick.push("ott+1010_1:4_au=on:avsq=on:bsr=on:cnfonf=off:e2e=on:nm=2:sac=on:sos=all:i=28426:si=on:rtra=on_0"); - quick.push("lrs+21_1:1_au=on:fsr=off:sac=on:sd=1:sgt=32:sos=all:ss=axioms:i=849:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=1966:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=1162:si=on:rtra=on_0"); - quick.push("lrs+1002_3:1_au=on:cnfonf=off:fe=off:lcm=reverse:sd=1:sos=on:sp=const_frequency:ss=axioms:i=1029:si=on:rtra=on_0"); - quick.push("lrs+10_1:40_atotf=0.3:au=on:avsq=on:avsqr=1,2:fe=axiom:nwc=10.0:sd=2:sgt=4:sos=all:ss=axioms:i=393:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:fd=off:ntd=on:sos=on:i=1555:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_apa=on:bd=off:cnfonf=off:e2e=on:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=6312:si=on:rtra=on_0"); - // Improves by expected 76.50177208874663 probs costing 479264 Mi - // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("ott+10_8:1_apa=on:au=on:av=off:cnfonf=off:nwc=10.0:sp=reverse_arity:ss=axioms:i=23852:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_au=on:av=off:cnfonf=lazy_pi_sigma_gen:fsr=off:nwc=6.0:s2a=on:s2agt=16:i=24878:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fe=off:prag=on:sd=2:sos=on:ss=axioms:i=10106:si=on:rtra=on_0"); - quick.push("lrs+1004_5:1_apa=on:avsq=on:cnfonf=off:e2e=on:fe=axiom:fsr=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:i=1958:si=on:rtra=on_0"); - quick.push("dis+10_1:1_av=off:cnfonf=off:prag=on:sd=2:sos=all:ss=axioms:i=20823:si=on:rtra=on_0"); - quick.push("ott+2_3:1_cnfonf=lazy_not_gen_be_off:fe=axiom:hud=10:sos=on:sp=const_min:uhcvi=on:i=5969:si=on:rtra=on_0"); - quick.push("dis+1010_2:3_acc=on:bd=off:cnfonf=off:fe=axiom:kws=inv_arity_squared:piset=equals:prag=on:sd=1:sp=reverse_arity:ss=axioms:tgt=ground:i=2716:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:sd=2:sgt=8:sp=reverse_frequency:ss=axioms:i=20720:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_av=off:bd=off:cnfonf=off:fe=axiom:hud=5:nwc=10.0:sd=1:sos=on:ss=axioms:st=2.0:i=2307:si=on:rtra=on_0"); - quick.push("dis+10_3:1_e2e=on:prag=on:sgt=8:ss=axioms:i=3502:si=on:rtra=on_0"); - quick.push("lrs+10_1:40_au=on:av=off:fde=unused:sos=all:sp=const_frequency:i=1957:si=on:rtra=on_0"); - quick.push("dis+2_1:3_au=on:bs=on:bsr=unit_only:e2e=on:hud=5:nwc=10.0:sgt=10:sos=on:sp=frequency:ss=axioms:i=22664:si=on:rtra=on_0"); - quick.push("lrs-1004_8:1_cnfonf=off:ins=2:kws=precedence:sp=reverse_arity:i=13721:si=on:rtra=on_0"); - quick.push("lrs+1002_11:1_au=on:c=on:cbe=off:cnfonf=off:fd=preordered:nwc=10.0:s2a=on:s2at=2.0:i=2446:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_acc=on:cnfonf=lazy_not_be_gen:hud=23:sos=all:i=4674:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=9251:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:sos=all:i=9092:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:avsq=on:avsqc=1:bd=off:c=on:sac=on:sd=1:sos=all:ss=axioms:st=2.0:i=13410:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bsr=unit_only:fsr=off:s2a=on:s2agt=16:s2pl=no:spb=goal:i=19177:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1024_au=on:av=off:ntd=on:sos=on:sp=frequency:ss=axioms:st=5.0:i=3525:si=on:rtra=on_0"); - quick.push("dis+10_1:1_acc=on:apa=on:au=on:avsq=on:avsqr=561497,524288:cnfonf=off:e2e=on:s2a=on:s2agt=64:s2at=2.0:ss=axioms:i=1712:si=on:rtra=on_0"); - quick.push("dis+2_1:40_au=on:av=off:fd=off:hfsq=on:hfsqr=1,32:nm=2:sos=on:sp=const_min:i=11391:si=on:rtra=on_0"); - quick.push("dis+1002_1:1_fd=off:hud=25:s2a=on:sac=on:sos=on:sp=unary_first:i=3758:si=on:rtra=on_0"); - quick.push("dis+1002_8:1_au=on:fde=none:s2a=on:slsq=on:i=4476:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fd=off:sd=1:sgt=16:sos=all:ss=axioms:i=3528:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:fe=axiom:plsq=on:plsqr=32,1:sos=all:ss=axioms:i=4406:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=1093:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_fe=axiom:prag=on:sos=all:sp=reverse_arity:ss=axioms:i=7232:si=on:rtra=on_0"); - quick.push("dis+2_1:1_au=on:cnfonf=off:e2e=on:fe=off:nwc=3.0:s2a=on:s2at=7.0:sp=weighted_frequency:i=2877:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:bd=off:cbe=off:fe=axiom:sd=1:ss=axioms:st=1.5:i=32268:si=on:rtra=on_0"); - quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=14357:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=16649:si=on:rtra=on_0"); - quick.push("lrs+31_1:1024_apa=on:au=on:cnfonf=off:e2e=on:fsr=off:sd=2:sgt=4:sos=on:ss=axioms:i=2401:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_au=on:cnfonf=off:e2e=on:nm=16:plsq=on:plsqr=1,2:sac=on:sos=on:sp=reverse_frequency:ss=axioms:i=7643:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=1:sos=on:sp=frequency:ss=axioms:i=3291:si=on:rtra=on_0"); - quick.push("dis+21_1:16_avsq=on:avsqr=3,1:bd=preordered:cha=on:cnfonf=off:e2e=on:fsr=off:sos=on:sp=weighted_frequency:tnu=2:i=3358:si=on:rtra=on_0"); - quick.push("lrs-1004_1:1_au=on:avsq=on:avsqr=7,8:erd=off:sos=on:i=3395:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:bsr=unit_only:cbe=off:fd=off:fsr=off:sos=on:ss=axioms:i=3810:si=on:rtra=on_0"); - quick.push("ott+2_1:1_anc=all_dependent:cnfonf=lazy_pi_sigma_gen:fe=off:nwc=10.0:s2a=on:s2agt=100:i=39415:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:sd=2:sgt=64:sos=all:ss=axioms:i=6939:si=on:rtra=on_0"); - quick.push("dis-1002_16:1_au=on:cbe=off:nm=3:s2a=on:sos=on:i=3989:si=on:rtra=on_0"); - quick.push("lrs+1_1:7_bs=on:fe=axiom:hud=5:ins=2:prag=on:sos=on:spb=non_intro:ss=axioms:i=9619:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:av=off:cbe=off:fd=preordered:piset=or:sos=all:sp=unary_first:i=13317:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=1020:si=on:rtra=on_0"); - quick.push("lrs+1002_1:32_avsq=on:fd=off:sos=on:i=15956:si=on:rtra=on_0"); - quick.push("lrs+1003_1:1_au=on:bd=preordered:cnfonf=off:ntd=on:nwc=10.0:rp=on:sp=const_frequency:i=3473:si=on:rtra=on_0"); - quick.push("dis+10_1:1_bsd=on:cnfonf=conj_eager:fe=off:nwc=10.0:plsq=on:plsqc=1:plsqr=397,25:sac=on:sp=reverse_arity:ss=included:tnu=9:i=1987:si=on:rtra=on_0"); - quick.push("ott+10_1:8_fe=off:hfaw=5:hfsq=on:hfsqc=1:hfsqr=5,1:hud=15:nwc=15.0:prag=on:s2a=on:s2agt=16:ss=axioms:st=2.0:i=24782:si=on:rtra=on_0"); - quick.push("ott+1004_8:1_abs=on:awrs=decay:cnfonf=lazy_not_be_gen:fe=off:fsr=off:prag=on:rawr=on:s2pl=on:sos=all:spb=goal_then_units:i=11155:si=on:rtra=on_0"); - quick.push("ott+10_16:1_bsd=on:c=on:nm=32:s2a=on:sac=on:sos=all:i=13341:si=on:rtra=on_0"); - quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=4321:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=3320:si=on:rtra=on_0"); - quick.push("lrs+1010_3:1_au=on:av=off:bsr=unit_only:fe=axiom:kws=inv_frequency:lwlo=on:nm=4:sos=all:i=21685:si=on:rtra=on_0"); - quick.push("lrs+21_1:6_abs=on:au=on:awrs=converge:awrsf=260:ntd=on:prag=on:sos=on:i=1608:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_cnfonf=lazy_simp:fsr=off:hud=1:ixr=off:nm=16:nwc=5.0:s2a=on:sac=on:sp=const_min:ss=axioms:i=5692:si=on:rtra=on_0"); - quick.push("lrs+1002_4:1_afr=on:au=on:ins=2:kws=precedence:sos=on:sp=weighted_frequency:i=12621:si=on:rtra=on_0"); - quick.push("ott+1010_1:1_au=on:bd=off:cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:s2a=on:s2agt=32:i=4604:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_aac=none:anc=all:au=on:bd=off:fd=off:fe=off:kws=precedence:piset=pi_sigma:plsq=on:plsqr=4689123,65536:sos=all:sp=unary_frequency:i=7093:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_acc=on:au=on:avsq=on:avsqr=1,2:bd=off:bs=unit_only:fe=axiom:sp=const_max:i=107085:si=on:rtra=on_0"); - quick.push("ott+1002_1:64_atotf=0.2:au=on:hflw=2:hfsq=on:hfsql=off:hfsqr=1,2:kws=inv_frequency:sos=on:sp=occurrence:i=2036:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:nm=2:plsq=on:plsqr=32,1:sos=all:i=20407:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_simp:fd=off:fsr=off:sd=3:sgt=20:sp=unary_frequency:ss=axioms:i=8801:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_afr=on:au=on:sac=on:sd=2:sgt=32:ss=axioms:i=24615:si=on:rtra=on_0"); - quick.push("dis+10_5:4_acc=on:amm=off:cnfonf=off:ins=3:ixr=off:nwc=3.0:ss=axioms:st=2.0:i=8889:si=on:rtra=on_0"); - quick.push("lrs+1002_1:7_au=on:cnfonf=off:fe=axiom:ins=2:lecc=0.5:nm=32:sd=1:sgt=64:ss=axioms:i=5822:si=on:rtra=on_0"); - quick.push("lrs+21_1:128_apa=on:av=off:cnfonf=off:e2e=on:fe=axiom:hud=23:plsq=on:plsqr=10937,262144:sos=on:tnu=5:i=4701:si=on:rtra=on_0"); - quick.push("ott+1004_4:1_av=off:cbe=off:fsr=off:ins=3:kws=inv_frequency:nm=20:prag=on:i=38170:si=on:rtra=on_0"); - quick.push("lrs+21_3:1_au=on:avsq=on:avsqr=1,2:fsr=off:hfsq=on:nm=0:ntd=on:sd=1:ss=axioms:i=14710:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_avsq=on:avsqr=1,2:bd=off:bsr=unit_only:fsr=off:kws=inv_precedence:sos=all:ss=axioms:i=5226:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:ins=2:ixr=off:nm=2:nwc=3.0:sac=on:sos=on:i=7792:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:erd=off:fd=off:fde=none:sos=all:ss=axioms:i=5871:si=on:rtra=on_0"); - quick.push("dis+10_6:1_fs=off:fsr=off:hfsq=on:kws=frequency:ntd=on:prag=on:sd=2:ss=axioms:i=1486:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:fe=axiom:fs=off:fsr=off:plsq=on:s2a=on:s2at=2.0:sos=all:i=3340:si=on:rtra=on_0"); - quick.push("lrs+21_4:1_au=on:fe=axiom:ins=3:ntd=on:nwc=10.0:i=11226:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:er=known:fe=off:s2a=on:sac=on:sos=on:i=4209:si=on:rtra=on_0"); - quick.push("lrs+1010_5:1_apa=on:au=on:av=off:cnfonf=off:fe=axiom:sos=on:i=9375:si=on:rtra=on_0"); - quick.push("lrs+20_1:4_au=on:bd=off:e2e=on:slsq=on:slsqr=1,8:sos=on:i=5185:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=5.0:i=4448:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_apa=on:av=off:cnfonf=off:piset=pi_sigma:prag=on:slsq=on:slsqr=2,1:ss=axioms:i=17621:si=on:rtra=on_0"); - quick.push("dis+21_8:1_avsq=on:avsqr=1,16:cnfonf=off:fd=off:prag=on:s2a=on:slsq=on:slsqc=2:slsqr=2,31:sos=all:i=7099:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_atotf=0.4:au=on:bsr=unit_only:cbe=off:e2e=on:fe=axiom:sos=on:sp=reverse_arity:i=4862:si=on:rtra=on_0"); - quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=16078:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:e2e=on:fde=none:fe=off:irw=on:ss=axioms:st=4.0:i=18072:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=1966:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=6386:si=on:rtra=on_0"); - quick.push("lrs+10_1:40_atotf=0.3:au=on:avsq=on:avsqr=1,2:fe=axiom:nwc=10.0:sd=2:sgt=4:sos=all:ss=axioms:i=393:si=on:rtra=on_0"); - quick.push("lrs+1010_1:128_apa=on:bd=off:cnfonf=off:e2e=on:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=30260:si=on:rtra=on_0"); - quick.push("dis+1010_3:2_avsq=on:cnfonf=conj_eager:prag=on:s2a=on:s2at=2.0:sp=unary_frequency:i=9912:si=on:rtra=on_0"); - // Improves by expected 55.52758541308132 probs costing 956285 Mi - // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("dis+10_1:1_sd=2:ss=axioms:i=3862:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fe=off:prag=on:sd=2:sos=on:ss=axioms:i=6147:si=on:rtra=on_0"); - quick.push("lrs+1004_5:1_apa=on:avsq=on:cnfonf=off:e2e=on:fe=axiom:fsr=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:i=4559:si=on:rtra=on_0"); - quick.push("ott+2_3:1_cnfonf=lazy_not_gen_be_off:fe=axiom:hud=10:sos=on:sp=const_min:uhcvi=on:i=5969:si=on:rtra=on_0"); - quick.push("dis+1002_5:1_au=on:cnfonf=lazy_pi_sigma_gen:fe=off:s2a=on:s2at=1.5:i=27060:si=on:rtra=on_0"); - quick.push("lrs+1002_1:4_au=on:av=off:bd=off:e2e=on:fd=off:fsr=off:s2a=on:sos=on:i=11139:si=on:rtra=on_0"); - quick.push("dis+1010_3:1_au=on:bd=preordered:cnfonf=lazy_not_be_gen:fe=axiom:kws=precedence:ntd=on:nwc=10.0:sd=2:ss=axioms:st=2.0:i=12247:si=on:rtra=on_0"); - quick.push("ott+10_1:1_kws=arity:prag=on:sd=1:sos=all:ss=axioms:st=3.0:i=39576:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_bd=off:cnfonf=off:fd=off:fe=off:ntd=on:prag=on:sos=all:i=9759:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_acc=on:cnfonf=lazy_not_be_gen:hud=23:sos=all:i=6313:si=on:rtra=on_0"); - quick.push("ott+21_4:1_e2e=on:flr=on:nwc=10.0:s2a=on:s2at=3.0:i=32613:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=6478:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:sos=all:i=28740:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:s2a=on:s2at=3.0:sd=3:ss=axioms:i=14945:si=on:rtra=on_0"); - quick.push("ott+10_16:1_amm=off:au=on:avsq=on:cnfonf=lazy_not_gen_be_off:piset=equals:s2a=on:s2at=3.0:i=8464:si=on:rtra=on_0"); - quick.push("dis+2_1:40_au=on:av=off:fd=off:hfsq=on:hfsqr=1,32:nm=2:sos=on:sp=const_min:i=11391:si=on:rtra=on_0"); - quick.push("ott+1010_1:8_au=on:cnfonf=off:fsr=off:ins=3:kws=inv_arity_squared:prag=on:i=20996:si=on:rtra=on_0"); - quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=2401:si=on:rtra=on_0"); - quick.push("lrs+1666_1:1_fe=axiom:prag=on:sos=all:sp=reverse_arity:ss=axioms:i=7232:si=on:rtra=on_0"); - quick.push("lrs+1010_5:1_au=on:cbe=off:s2a=on:s2agt=32:sac=on:i=152807:si=on:rtra=on_0"); - quick.push("lrs+1010_8:1_avsq=on:avsqr=7,4:cnfonf=lazy_not_gen:fe=axiom:nwc=10.0:piset=small_set:sac=on:sos=on:i=11751:si=on:rtra=on_0"); - quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=14357:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_cnfonf=off:erd=off:hud=21:ins=2:plsq=on:plsqr=32,1:sac=on:sos=on:i=7700:si=on:rtra=on_0"); - quick.push("dis-1002_1:1_au=on:cnfonf=off:e2e=on:nm=16:plsq=on:plsqr=1,2:sac=on:sos=on:sp=reverse_frequency:ss=axioms:i=7643:si=on:rtra=on_0"); - quick.push("dis+21_1:16_avsq=on:avsqr=3,1:bd=preordered:cha=on:cnfonf=off:e2e=on:fsr=off:sos=on:sp=weighted_frequency:tnu=2:i=3358:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_hud=1:inj=on:prag=on:s2a=on:sos=all:i=16774:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:av=off:sd=2:sgt=64:sos=all:ss=axioms:i=6939:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:av=off:cbe=off:fd=preordered:piset=or:sos=all:sp=unary_first:i=13317:si=on:rtra=on_0"); - quick.push("lrs+1002_1:32_avsq=on:fd=off:sos=on:i=15956:si=on:rtra=on_0"); - quick.push("ott+1004_8:1_abs=on:awrs=decay:cnfonf=lazy_not_be_gen:fe=off:fsr=off:prag=on:rawr=on:s2pl=on:sos=all:spb=goal_then_units:i=11155:si=on:rtra=on_0"); - quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=20258:si=on:rtra=on_0"); - quick.push("lrs+21_1:1024_au=on:chr=on:erd=off:fe=axiom:sos=all:ss=axioms:i=5097:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=3320:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=off:piset=equals:sd=1:sos=all:ss=axioms:i=9969:si=on:rtra=on_0"); - quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:ntd=on:nwc=10.0:slsq=on:slsqc=1:sp=unary_frequency:uhcvi=on:i=32057:si=on:rtra=on_0"); - quick.push("ott+10_1:4_amm=sco:au=on:nwc=5.0:s2a=on:s2at=3.0:sp=const_max:i=5864:si=on:rtra=on_0"); - quick.push("lrs+10_1:1024_aac=none:anc=all:au=on:bd=off:fd=off:fe=off:kws=precedence:piset=pi_sigma:plsq=on:plsqr=4689123,65536:sos=all:sp=unary_frequency:i=7093:si=on:rtra=on_0"); - quick.push("lrs+21_1:3_bd=off:bet=on:bsr=on:cnfonf=off:e2e=on:fsr=off:s2a=on:sd=1:sp=weighted_frequency:ss=axioms:st=5.5:tgt=ground:tnu=1:i=6736:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_cnfonf=off:e2e=on:er=known:hud=15:inj=on:sd=1:sgt=40:ss=axioms:tnu=9:i=12571:si=on:rtra=on_0"); - quick.push("lrs+1010_16:1_au=on:av=off:bd=off:cond=fast:nm=2:s2a=on:s2agt=40:sos=all:spb=non_intro:i=10639:si=on:rtra=on_0"); - quick.push("lrs+21_3:1_au=on:avsq=on:avsqr=1,2:fsr=off:hfsq=on:nm=0:ntd=on:sd=1:ss=axioms:i=12690:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:erd=off:fd=off:fde=none:sos=all:ss=axioms:i=5871:si=on:rtra=on_0"); - quick.push("ott+1010_8:1_atotf=0.2:au=on:bsr=unit_only:cha=on:e2e=on:fsr=off:sd=1:sp=unary_first:ss=axioms:st=4.0:i=18153:si=on:rtra=on_0"); - quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:fe=axiom:fs=off:fsr=off:plsq=on:s2a=on:s2at=2.0:sos=all:i=3340:si=on:rtra=on_0"); - quick.push("lrs+1010_5:1_apa=on:au=on:av=off:cnfonf=off:fe=axiom:sos=on:i=7293:si=on:rtra=on_0"); - quick.push("lrs+1010_7:1_cnfonf=off:e2e=on:fe=off:hfaw=0:hflw=3:hfsq=on:hfsqc=3:ins=2:piset=or:spb=non_intro:i=25011:si=on:rtra=on_0"); - quick.push("lrs+10_8:1_au=on:bet=on:c=on:cnfonf=off:lcm=reverse:piset=small_set:sd=1:sp=reverse_frequency:ss=axioms:i=90001:si=on:rtra=on_0"); - quick.push("dis+21_8:1_avsq=on:avsqr=1,16:cnfonf=off:fd=off:prag=on:s2a=on:slsq=on:slsqc=2:slsqr=2,31:sos=all:i=7099:si=on:rtra=on_0"); - quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=16038:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=8726:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=6386:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_au=on:bd=off:fd=off:ntd=on:sos=on:i=121498:si=on:rtra=on_0"); - // Improves by expected 20.068673084800533 probs costing 957306 Mi - // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit - quick.push("ott+10_8:1_apa=on:au=on:av=off:cnfonf=off:nwc=10.0:sp=reverse_arity:ss=axioms:i=50131:si=on:rtra=on_0"); - quick.push("lrs+1002_1:1_fe=off:prag=on:sd=2:sos=on:ss=axioms:i=6147:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cnfonf=off:e2e=on:hud=10:ins=2:plsq=on:plsqc=1:plsqr=32,1:s2a=on:sac=on:sos=on:i=26547:si=on:rtra=on_0"); - quick.push("dis+1002_5:1_au=on:cnfonf=lazy_pi_sigma_gen:fe=off:s2a=on:s2at=1.5:i=27060:si=on:rtra=on_0"); - quick.push("dis+10_3:1_e2e=on:prag=on:sgt=8:ss=axioms:i=14813:si=on:rtra=on_0"); - quick.push("lrs+10_5:1_au=on:cbe=off:plsq=on:plsqc=1:plsqr=6694409,65536:i=31204:si=on:rtra=on_0"); - quick.push("ott+21_4:1_e2e=on:flr=on:nwc=10.0:s2a=on:s2at=3.0:i=32613:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=7389:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:sos=all:i=28740:si=on:rtra=on_0"); - quick.push("lrs+1002_1:16_au=on:av=off:c=on:cbe=off:fe=off:plsq=on:plsqr=263619,8192:sos=on:ss=axioms:i=12062:si=on:rtra=on_0"); - quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=12001:si=on:rtra=on_0"); - quick.push("lrs+10_4:1_hud=1:inj=on:prag=on:s2a=on:sos=all:i=16774:si=on:rtra=on_0"); - quick.push("ott+1010_4:1_cnfonf=lazy_simp:fe=axiom:s2agt=16:slsq=on:sp=weighted_frequency:i=25181:si=on:rtra=on_0"); - quick.push("dis-1002_16:1_au=on:cbe=off:nm=3:s2a=on:sos=on:i=44471:si=on:rtra=on_0"); - quick.push("ott+1004_8:1_abs=on:awrs=decay:cnfonf=lazy_not_be_gen:fe=off:fsr=off:prag=on:rawr=on:s2pl=on:sos=all:spb=goal_then_units:i=11155:si=on:rtra=on_0"); - quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=16940:si=on:rtra=on_0"); - quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=off:piset=equals:sd=1:sos=all:ss=axioms:i=64031:si=on:rtra=on_0"); - quick.push("dis+1010_2:1_acc=on:au=on:avsq=on:avsqr=1,2:bd=off:bs=unit_only:fe=axiom:sp=const_max:i=107085:si=on:rtra=on_0"); - quick.push("lrs+10_1:5_cnfonf=off:e2e=on:er=known:hud=15:inj=on:sd=1:sgt=40:ss=axioms:tnu=9:i=12571:si=on:rtra=on_0"); - quick.push("lrs+10_1:1_afr=on:au=on:sac=on:sd=2:sgt=32:ss=axioms:i=79146:si=on:rtra=on_0"); - quick.push("ott+1004_4:1_av=off:cbe=off:fsr=off:ins=3:kws=inv_frequency:nm=20:prag=on:i=120001:si=on:rtra=on_0"); - quick.push("dis+10_1:1_au=on:erd=off:fd=off:fde=none:sos=all:ss=axioms:i=5871:si=on:rtra=on_0"); - quick.push("lrs+1010_7:1_cnfonf=off:e2e=on:fe=off:hfaw=0:hflw=3:hfsq=on:hfsqc=3:ins=2:piset=or:spb=non_intro:i=25011:si=on:rtra=on_0"); - quick.push("lrs+10_16:1_aac=none:au=on:cnfonf=lazy_pi_sigma_gen:s2a=on:slsq=on:slsqr=1,4:i=14364:si=on:rtra=on_0"); - quick.push("ott+10_1:1_au=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=5.0:i=49826:si=on:rtra=on_0"); - quick.push("dis+10_8:1_au=on:avsq=on:avsqr=1,16:fe=off:fsr=off:plsq=on:plsqc=1:plsqr=32,1:rawr=on:i=68450:si=on:rtra=on_0"); - quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=16038:si=on:rtra=on_0"); - quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=8726:si=on:rtra=on_0"); - quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=6386:si=on:rtra=on_0"); - quick.push("ott+1002_1:20_au=on:cnfonf=off:fd=off:sos=on:sp=unary_frequency:i=16220:si=on:rtra=on_0"); - // Improves by expected 9.653174675566516 probs costing 956924 Mi - // Overall score 3018.1445063731217 probs on average / budget 3829335 Mi + // th1_sledgehammering/TH1.txt - but done in a weighted way (problems already covered by the other subscheds weigh less) + // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit + quick.push("lrs+10_1:128_au=on:bd=off:cnfonf=off:plsq=on:plsqr=32,1:sac=on:sos=all:i=1086:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=817:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:e2e=on:er=filter:hud=10:kws=precedence:sos=on:sp=weighted_frequency:ss=axioms:st=3.0:uhcvi=on:i=795:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_av=off:e2e=on:hud=1:prag=on:sd=2:sgt=10:sos=all:ss=axioms:i=494:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=1:sos=on:sp=frequency:ss=axioms:i=851:si=on:rtra=on_0"); + quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=970:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:cnfonf=lazy_not_gen_be_off:ntd=on:prag=on:s2a=on:s2agt=32:s2at=5.0:sp=unary_frequency:tnu=5:i=11:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_av=off:prag=on:sd=1:sos=on:sp=const_frequency:ss=axioms:i=240:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_bd=off:fde=none:fe=off:kws=precedence:prag=on:sos=on:sp=frequency:i=646:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fd=off:sd=1:sgt=16:sos=all:ss=axioms:i=583:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:e2e=on:s2a=on:s2agt=16:slsq=on:i=1662:si=on:rtra=on_0"); + quick.push("lrs+1002_1:7_au=on:cnfonf=off:fe=axiom:ins=2:lecc=0.5:nm=32:sd=1:sgt=64:ss=axioms:i=208:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:apa=on:au=on:avsq=on:avsqr=561497,524288:cnfonf=off:e2e=on:s2a=on:s2agt=64:s2at=2.0:ss=axioms:i=1077:si=on:rtra=on_0"); + quick.push("dis+3_10:23_bd=off:fde=none:fe=off:nwc=5.0:sac=on:sfv=off:sp=occurrence:i=2:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=model:avsq=on:fe=axiom:fsr=off:nm=16:piset=pi_sigma:prag=on:sd=2:sgt=16:sp=weighted_frequency:ss=axioms:i=570:si=on:rtra=on_0"); + // Improves by expected 539.2390664018176 probs costing 9997 Mi + // Sub-schedule for 20000Mi strat cap / 20000Mi overall limit + quick.push("lrs+2_3:1_bd=off:fd=off:fde=none:fe=off:prag=on:sos=on:i=567:si=on:rtra=on_0"); + quick.push("dis+1002_1:32_au=on:av=off:cnfonf=off:fsr=off:sd=2:sgt=4:sos=on:ss=axioms:i=315:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_au=on:cnfonf=off:fde=unused:fe=axiom:prag=on:slsq=on:slsqc=2:sos=on:i=959:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_au=on:e2e=on:fd=off:fe=axiom:sos=on:i=2294:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:av=off:e2e=on:kws=inv_precedence:nwc=10.0:sos=on:i=1240:si=on:rtra=on_0"); + quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=2032:si=on:rtra=on_0"); + quick.push("dis+1002_1:2_au=on:av=off:cnfonf=off:fe=off:s2a=on:sos=on:i=1247:si=on:rtra=on_0"); + quick.push("dis+10_1:1_nwc=3.0:sd=2:ss=axioms:i=175:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_au=on:cnfonf=lazy_pi_sigma_gen:sd=2:sos=all:ss=axioms:st=1.5:i=281:si=on:rtra=on_0"); + quick.push("dis+10_1:8_fsr=off:hud=5:nm=16:prag=on:sd=1:sos=on:sp=frequency:ss=axioms:i=754:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:erd=off:fd=off:fde=none:sos=all:ss=axioms:i=549:si=on:rtra=on_0"); + quick.push("ott+10_1:1_kws=arity:prag=on:sd=1:sos=all:ss=axioms:st=3.0:i=469:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:cnfonf=off:prag=on:sd=2:sos=all:ss=axioms:i=793:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_au=on:avsq=on:sd=1:sgt=16:sos=on:ss=axioms:st=2.0:i=405:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:ntd=on:s2a=on:sfv=off:ss=axioms:i=971:si=on:rtra=on_0"); + quick.push("lrs+2_1:1_erd=off:fe=off:ins=3:plsq=on:sos=on:i=398:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cnfonf=conj_eager:fe=axiom:sd=1:ss=axioms:i=1807:si=on:rtra=on_0"); + quick.push("lrs+1002_1:5_acc=on:avsq=on:avsqr=1,16:fe=axiom:prag=on:sd=1:ss=axioms:st=4.0:i=293:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:sd=2:sgt=8:sp=reverse_frequency:ss=axioms:i=505:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:fe=off:nwc=10.0:sd=1:sos=on:ss=axioms:st=1.5:i=567:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_c=on:sac=on:sos=on:ss=axioms:i=672:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:au=on:avsq=on:bd=off:cnfonf=off:fe=off:sd=2:ss=axioms:st=2.0:i=1062:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:cs=on:fde=unused:ntd=on:nwc=10.0:sac=on:sd=1:sgt=10:sos=on:ss=axioms:i=891:si=on:rtra=on_0"); + quick.push("lrs+31_1:1024_apa=on:au=on:cnfonf=off:e2e=on:fsr=off:sd=2:sgt=4:sos=on:ss=axioms:i=628:si=on:rtra=on_0"); + // Improves by expected 83.38577641685194 probs costing 19850 Mi + // Sub-schedule for 30000Mi strat cap / 30000Mi overall limit + quick.push("lrs+10_1:1_au=on:fe=axiom:plsq=on:plsqr=32,1:sos=all:ss=axioms:i=1826:si=on:rtra=on_0"); + quick.push("dis+1002_1:8_av=off:fd=off:fsr=off:prag=on:sos=on:ss=axioms:i=423:si=on:rtra=on_0"); + quick.push("dis+10_3:1_au=on:e2e=on:fsr=off:sd=1:sgt=16:ss=axioms:i=799:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=2432:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:fe=off:kws=precedence:sos=on:sp=frequency:i=2599:si=on:rtra=on_0"); + quick.push("dis+1002_1:3_au=on:fsr=off:sd=1:sgt=16:sos=on:ss=axioms:i=649:si=on:rtra=on_0"); + quick.push("dis+10_1:16_bd=preordered:cnfonf=lazy_pi_sigma_gen:sos=on:ss=axioms:st=1.2:i=495:si=on:rtra=on_0"); + quick.push("lrs+1010_16:1_au=on:av=off:bd=off:cond=fast:nm=2:s2a=on:s2agt=40:sos=all:spb=non_intro:i=834:si=on:rtra=on_0"); + quick.push("dis+1002_8:1_au=on:fde=none:s2a=on:slsq=on:i=3477:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_av=off:cnfonf=off:fs=off:fsr=off:ins=3:kws=precedence:sd=2:sp=reverse_arity:ss=axioms:sup=off:i=408:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_acc=on:au=on:avsq=on:avsqr=1,2:bd=off:bs=unit_only:fe=axiom:sp=const_max:i=2235:si=on:rtra=on_0"); + quick.push("lrs-1002_1:64_bd=off:fde=none:fe=off:hud=10:sos=on:i=586:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=547:si=on:rtra=on_0"); + quick.push("dis+1002_2:3_amm=off:au=on:fsr=off:nwc=7.0:s2a=on:s2agt=16:ss=axioms:st=3.0:i=611:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_au=on:av=off:bd=off:plsq=on:plsqc=1:plsqr=32,1:sos=on:ss=axioms:st=2.0:i=399:si=on:rtra=on_0"); + quick.push("lrs-1002_8:1_av=off:bd=off:bs=unit_only:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:st=3.0:i=1521:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_au=on:bd=off:e2e=on:fsr=off:nwc=10.0:sac=on:sos=all:ss=axioms:st=3.0:i=678:si=on:rtra=on_0"); + quick.push("ott+10_1:1_nwc=2.0:sd=1:sgt=64:sos=all:ss=axioms:i=695:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:av=off:e2e=on:sd=1:sos=all:sp=const_frequency:ss=axioms:i=589:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:sd=2:sgt=64:sos=all:ss=axioms:i=4566:si=on:rtra=on_0"); + quick.push("lrs+1002_1:4_au=on:av=off:bd=off:e2e=on:fd=off:fsr=off:s2a=on:sos=on:i=800:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_au=on:cnfonf=off:e2e=on:nm=16:plsq=on:plsqr=1,2:sac=on:sos=on:sp=reverse_frequency:ss=axioms:i=2241:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:avsq=on:bd=off:fd=off:fe=axiom:fsr=off:sac=on:sos=on:i=528:si=on:rtra=on_0"); + // Improves by expected 50.792548623271934 probs costing 29915 Mi + // Sub-schedule for 60000Mi strat cap / 60000Mi overall limit + quick.push("lrs+1002_1:1_piset=or:prag=on:s2a=on:sos=on:ss=axioms:i=1425:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_au=on:e2e=on:fe=off:sos=on:ss=axioms:i=494:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:av=off:bd=off:fd=off:sos=on:sp=const_frequency:i=1750:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:fde=none:kws=frequency:plsq=on:plsqc=1:plsqr=32,1:sac=on:sos=on:i=434:si=on:rtra=on_0"); + quick.push("ott+21_1:1_bd=preordered:fd=off:fe=off:fs=off:fsr=off:sos=on:i=377:si=on:rtra=on_0"); + quick.push("dis+21_1:1_av=off:cnfonf=off:prag=on:s2a=on:sos=on:i=484:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:e2e=on:er=filter:hud=10:kws=precedence:sos=on:sp=weighted_frequency:ss=axioms:st=3.0:uhcvi=on:i=3504:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqc=1:bd=off:c=on:sac=on:sd=1:sos=all:ss=axioms:st=2.0:i=3204:si=on:rtra=on_0"); + quick.push("dis+2_1:32_au=on:kws=precedence:sp=weighted_frequency:ss=axioms:tgt=ground:i=446:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_erd=off:fe=axiom:hud=10:lma=on:sfv=off:slsq=on:sos=all:i=397:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_anc=all:au=on:bd=off:cnfonf=off:fd=off:fs=off:fsr=off:nwc=5.0:sac=on:sos=on:ss=axioms:i=2030:si=on:rtra=on_0"); + quick.push("dis+32_2:1_au=on:av=off:cnfonf=lazy_pi_sigma_gen:ntd=on:s2a=on:slsq=on:i=1282:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:cnfonf=lazy_not_be_gen:fde=unused:piset=not:sd=1:slsq=on:ss=axioms:st=3.0:i=1778:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:cnfonf=lazy_not_be_gen:s2a=on:slsq=on:i=1059:si=on:rtra=on_0"); + quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=2194:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_cnfonf=lazy_simp:fe=axiom:hfsq=on:ntd=on:sd=1:sgt=32:ss=axioms:i=456:si=on:rtra=on_0"); + quick.push("ott+10_1:2_ins=4:lcm=predicate:nm=6:s2a=on:s2at=-1.0:sac=on:sd=1:sgt=64:sp=weighted_frequency:ss=axioms:st=1.2:i=1498:si=on:rtra=on_0"); + quick.push("ott+10_16:1_br=off:bsr=unit_only:fe=axiom:flr=on:nm=64:sos=on:sp=occurrence:i=1383:si=on:rtra=on_0"); + quick.push("dis+10_5:1_au=on:nwc=10.0:sac=on:sd=1:sos=on:ss=axioms:i=1027:si=on:rtra=on_0"); + quick.push("dis+10_1:50_av=off:cnfonf=off:prag=on:sd=2:sos=on:ss=axioms:st=1.5:i=926:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_cnfonf=lazy_pi_sigma_gen:fe=axiom:s2a=on:s2agt=8:sd=2:sgt=4:ss=axioms:i=355:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_bsr=unit_only:cnfonf=conj_eager:nwc=3.0:sd=1:ss=axioms:i=663:si=on:rtra=on_0"); + quick.push("dis+1002_1:8_avsq=on:avsqr=1,16:e2e=on:s2a=on:ss=axioms:st=3.0:i=358:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:c=on:cnfonf=off:e2e=on:nm=32:nwc=10.0:sgt=8:ss=axioms:i=493:si=on:rtra=on_0"); + quick.push("lrs+10_1:8_au=on:cnfonf=lazy_pi_sigma_gen:sd=2:sos=all:ss=axioms:st=1.5:i=418:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_atotf=0.2:au=on:bsr=unit_only:cha=on:e2e=on:fsr=off:sd=1:sp=unary_first:ss=axioms:st=4.0:i=836:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_fe=off:prag=on:sd=1:sos=all:ss=axioms:st=2.5:i=308:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:fd=off:sd=1:sgt=16:sos=all:ss=axioms:i=3033:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=conj_eager:sd=1:sgt=100:ss=axioms:i=1662:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:sgt=4:sos=on:ss=axioms:i=407:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_au=on:cbe=off:s2a=on:s2agt=32:sac=on:i=3644:si=on:rtra=on_0"); + quick.push("dis+10_1:2_cnfonf=off:fsr=off:sp=unary_first:ss=axioms:st=1.5:i=663:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:fde=none:nwc=10.0:sd=1:sgt=16:sos=all:ss=axioms:i=251:si=on:rtra=on_0"); + quick.push("ott+10_1:1_fsr=off:hfaw=0:hfsq=on:hfsql=off:hfsqr=4,1:ins=3:kws=precedence:ntd=on:sp=frequency:i=813:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_apa=on:bd=off:bs=unit_only:cnfonf=off:fd=off:fsr=off:hud=3:ins=3:prag=on:sd=2:sgt=8:sos=on:ss=axioms:i=1144:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_av=off:bsr=unit_only:e2e=on:fd=preordered:prag=on:sos=all:sp=const_frequency:i=3763:si=on:rtra=on_0"); + quick.push("dis+10_1:1_hud=10:prag=on:s2a=on:s2at=1.2:sac=on:sos=all:i=1345:si=on:rtra=on_0"); + quick.push("dis+10_1:1_acc=on:apa=on:au=on:avsq=on:avsqr=561497,524288:cnfonf=off:e2e=on:s2a=on:s2agt=64:s2at=2.0:ss=axioms:i=1956:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:erd=off:sos=on:i=354:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:fde=none:sd=2:sos=all:ss=axioms:i=347:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_aac=none:e2e=on:fsr=off:nm=4:prag=on:sac=on:sd=1:sos=on:ss=axioms:st=4.0:i=730:si=on:rtra=on_0"); + quick.push("lrs+1002_1:8_au=on:ins=2:sd=1:sos=on:ss=axioms:i=435:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=off:s2a=on:s2agt=32:sd=1:ss=axioms:st=6.0:i=401:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:e2e=on:ins=3:sd=1:sos=all:ss=axioms:i=378:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:avsq=on:avsqr=1,6:bsr=unit_only:nm=2:nwc=2.0:sac=on:sos=all:ss=axioms:i=756:si=on:rtra=on_0"); + quick.push("lrs+1002_1:128_bd=off:fe=axiom:hud=19:sac=on:sos=on:tnu=1:i=722:si=on:rtra=on_0"); + quick.push("dis+21_1:4_au=on:ntd=on:s2a=on:s2agt=32:s2at=1.2:slsq=on:slsqc=1:i=776:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=1711:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_fde=none:sd=1:sos=on:ss=axioms:st=2.0:i=406:si=on:rtra=on_0"); + quick.push("lrs+4_1:10_awrs=converge:awrsf=500:bd=off:kws=inv_frequency:sd=1:ss=axioms:st=3.0:tgt=ground:i=1137:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=model:avsq=on:fe=axiom:fsr=off:nm=16:piset=pi_sigma:prag=on:sd=2:sgt=16:sp=weighted_frequency:ss=axioms:i=3579:si=on:rtra=on_0"); + // Improves by expected 51.41792201759229 probs costing 59941 Mi + // Sub-schedule for 120000Mi strat cap / 120000Mi overall limit + quick.push("lrs+1010_16:1_acc=on:au=on:e2e=on:nm=32:sac=on:sd=1:sos=on:ss=axioms:st=5.0:i=4879:si=on:rtra=on_0"); + quick.push("lrs+21_1:64_au=on:cnfonf=lazy_pi_sigma_gen:fsr=off:kws=frequency:s2at=5.0:slsq=on:slsqc=1:i=1100:si=on:rtra=on_0"); + quick.push("dis+1002_1:8_av=off:fd=off:fsr=off:prag=on:sos=on:ss=axioms:i=773:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:bet=on:c=on:cnfonf=off:lcm=reverse:piset=small_set:sd=1:sp=reverse_frequency:ss=axioms:i=364:si=on:rtra=on_0"); + quick.push("dis+1002_1:1024_av=off:e2e=on:fe=axiom:sos=on:sp=unary_first:i=2641:si=on:rtra=on_0"); + quick.push("lrs+10_1:128_au=on:bd=off:cnfonf=off:plsq=on:plsqr=32,1:sac=on:sos=all:i=2281:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=2421:si=on:rtra=on_0"); + quick.push("dis+1004_1:4_fde=none:sd=1:sgt=32:ss=axioms:tgt=ground:i=569:si=on:rtra=on_0"); + quick.push("lrs+10_2:3_au=on:cnfonf=lazy_pi_sigma_gen:fe=off:kws=inv_arity:sd=2:sp=reverse_arity:ss=axioms:st=3.0:tgt=full:i=947:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:fd=off:fde=none:sos=all:i=1670:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:av=off:cnfonf=lazy_pi_sigma_gen:fsr=off:nwc=6.0:s2a=on:s2agt=16:i=4110:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_ins=2:nm=4:prag=on:sac=on:sd=1:sos=on:spb=goal_then_units:ss=axioms:i=986:si=on:rtra=on_0"); + quick.push("lrs+10_1:5_cnfonf=off:e2e=on:er=known:hud=15:inj=on:sd=1:sgt=40:ss=axioms:tnu=9:i=2044:si=on:rtra=on_0"); + quick.push("lrs+21_1:1024_au=on:nwc=10.0:piset=small_set:sac=on:sfv=off:sos=on:sp=unary_frequency:i=1868:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=1:sos=on:sp=frequency:ss=axioms:i=1081:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:avsq=on:e2e=on:sos=on:i=2248:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:er=filter:fe=off:flr=on:hud=10:ntd=on:nwc=10.0:i=1795:si=on:rtra=on_0"); + quick.push("dis+21_1:8_bd=off:cbe=off:fe=off:kws=inv_arity_squared:plsq=on:plsqc=1:plsqr=375431,1048576:sd=1:ss=axioms:st=3.0:tgt=full:tnu=2:i=592:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:e2e=on:fd=off:fe=off:sos=on:i=2401:si=on:rtra=on_0"); + quick.push("ott+10_5:4_amm=off:apa=on:bd=off:bsr=unit_only:cnfonf=off:cond=fast:fe=off:fsr=off:nm=7:plsq=on:prag=on:sac=on:sfv=off:sos=all:sp=const_frequency:tnu=8:i=1206:si=on:rtra=on_0"); + quick.push("ott+10_1:1_apa=on:bsr=unit_only:cnfonf=off:fe=off:fsr=off:hud=8:ntd=on:prag=on:sos=all:ss=axioms:i=781:si=on:rtra=on_0"); + quick.push("dis+21_1:1_av=off:fe=off:hud=1:kws=inv_precedence:sos=on:i=1125:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:cnfonf=off:fe=axiom:hud=5:sac=on:sd=1:sos=on:ss=axioms:st=2.0:i=416:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:bd=off:cnfonf=off:fd=off:ntd=on:piset=all_but_not_eq:sos=all:i=587:si=on:rtra=on_0"); + quick.push("lrs-1004_16:1_ins=1:plsq=on:plsqc=1:plsqr=32,1:prag=on:sac=on:sd=1:sos=on:spb=goal_then_units:ss=axioms:st=4.0:i=2524:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_au=on:av=off:e2e=on:fe=off:kws=inv_arity:sos=on:sp=unary_frequency:i=679:si=on:rtra=on_0"); + quick.push("dis+1002_1:28_aac=none:plsq=on:plsqc=2:plsqr=8,1:sd=2:sp=frequency:ss=axioms:tgt=ground:i=2092:si=on:rtra=on_0"); + quick.push("dis+21_3:1_au=on:c=on:nwc=3.0:s2a=on:s2agt=64:sd=1:sp=reverse_arity:ss=axioms:st=5.0:i=3412:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:e2e=on:er=known:sos=all:sp=const_max:ss=axioms:i=640:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=2074:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:avsq=on:hfsq=on:hfsqr=5,33:kws=arity_squared:piset=equals:plsq=on:plsql=on:plsqr=1,32:sd=1:sos=all:ss=axioms:st=5.0:i=832:si=on:rtra=on_0"); + quick.push("dis+10_6:1_fs=off:fsr=off:hfsq=on:kws=frequency:ntd=on:prag=on:sd=2:ss=axioms:i=862:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_avsq=on:fd=off:sos=on:i=1662:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=718:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_anc=all:au=on:fe=off:plsq=on:plsqr=32,1:sac=on:sos=all:ss=axioms:i=1004:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_bd=off:fd=off:hud=10:ntd=on:sgt=16:sos=on:ss=axioms:i=644:si=on:rtra=on_0"); + quick.push("dis+10_1:8_fsr=off:hud=5:nm=16:prag=on:sd=1:sos=on:sp=frequency:ss=axioms:i=812:si=on:rtra=on_0"); + quick.push("lrs+10_3:1_au=on:bd=off:sd=1:sos=on:ss=axioms:st=5.0:i=968:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:kws=precedence:sos=on:sp=const_max:ss=axioms:i=547:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:cnfonf=off:prag=on:sd=2:sos=all:ss=axioms:i=3486:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=3320:si=on:rtra=on_0"); + quick.push("dis+10_1:14_au=on:fe=axiom:lma=on:nm=2:nwc=5.0:sac=on:sos=all:ss=axioms:i=1526:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:cbe=off:plsq=on:plsqc=1:plsqr=6694409,65536:i=7208:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:cnfonf=conj_eager:fe=axiom:sd=1:ss=axioms:i=4007:si=on:rtra=on_0"); + quick.push("ott+21_163:29_au=on:fde=unused:lcm=predicate:sos=on:sp=const_frequency:i=1097:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:cnfonf=lazy_not_gen:fd=off:sos=on:i=495:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:cnfonf=lazy_gen:hflw=2:hfsq=on:hfsqc=2:hfsqr=4,1:kws=precedence:s2a=on:s2at=1.5:sp=unary_first:i=2708:si=on:rtra=on_0"); + quick.push("dis+10_1:16_acc=model:avsq=on:avsqr=1,16:cnfonf=lazy_not_be_gen:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=853:si=on:rtra=on_0"); + quick.push("dis+10_1:10_acc=model:e2e=on:fe=off:s2a=on:s2at=3.0:tgt=full:i=699:si=on:rtra=on_0"); + quick.push("dis+10_16:1_acc=on:au=on:fd=off:fsr=off:hflw=0:hfsq=on:kws=precedence:sd=1:ss=axioms:st=1.5:i=3212:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_hud=1:inj=on:prag=on:s2a=on:sos=all:i=1517:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:nm=2:plsq=on:plsqr=32,1:sos=all:i=4382:si=on:rtra=on_0"); + quick.push("lrs+1002_1:5_acc=on:avsq=on:avsqr=1,16:fe=axiom:prag=on:sd=1:ss=axioms:st=4.0:i=663:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_au=on:c=on:cnfonf=off:e2e=on:fe=off:fsr=off:nwc=5.0:s2a=on:s2agt=100:ss=axioms:i=4502:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:fsr=off:sac=on:sd=1:sgt=32:sos=all:ss=axioms:i=1380:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bsr=unit_only:e2e=on:sos=on:ss=axioms:st=2.0:i=1514:si=on:rtra=on_0"); + quick.push("lrs+1010_1:8_afp=30:au=on:bd=off:c=on:cbe=off:cnfonf=off:hud=15:nm=30:piset=equals:sd=1:sos=on:ss=axioms:i=481:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_fsr=off:ntd=on:nwc=5.0:prag=on:sos=on:sp=unary_first:i=858:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_simp:fd=off:fsr=off:sd=3:sgt=20:sp=unary_frequency:ss=axioms:i=861:si=on:rtra=on_0"); + quick.push("dis-1002_1:16_av=off:fe=off:hud=19:nwc=12.0:sos=on:ss=axioms:st=2.0:i=1025:si=on:rtra=on_0"); + quick.push("dis+10_16:1_acc=on:avsq=on:fe=axiom:fsr=off:s2a=on:s2agt=16:s2at=3.0:i=3806:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:hfsq=on:ins=2:s2a=on:s2at=1.5:sd=1:ss=axioms:st=3.0:i=617:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_hud=24:plsq=on:sd=1:sos=all:ss=axioms:tnu=1:i=581:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_au=on:cnfonf=off:fe=off:lcm=reverse:sd=1:sos=on:sp=const_frequency:ss=axioms:i=1125:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:ntd=on:nwc=10.0:slsq=on:slsqc=1:sp=unary_frequency:uhcvi=on:i=4051:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:fd=off:nm=20:nwc=10.0:plsq=on:s2a=on:s2agt=64:ss=axioms:st=5.0:i=702:si=on:rtra=on_0"); + quick.push("dis+10_1:1024_au=on:cnfonf=lazy_pi_sigma_gen:ins=1:tgt=ground:i=644:si=on:rtra=on_0"); + quick.push("dis-1002_1:1_av=off:bs=unit_only:fe=axiom:hud=10:prag=on:sos=on:sp=const_frequency:ss=axioms:tnu=2:i=974:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_aac=none:bd=off:e2e=on:kws=inv_frequency:sos=all:ss=axioms:i=1008:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:avsq=on:bd=off:cnfonf=lazy_pi_sigma_gen:fd=off:sos=on:i=876:si=on:rtra=on_0"); + quick.push("dis+1002_1:4_aac=none:bd=off:e2e=on:fe=off:fsr=off:prag=on:sos=on:i=767:si=on:rtra=on_0"); + quick.push("dis+10_1:16_awrs=converge:e2e=on:fe=off:nwc=10.0:s2a=on:s2at=4.0:sd=2:ss=axioms:st=2.0:i=672:si=on:rtra=on_0"); + // Improves by expected 44.20607043074075 probs costing 119900 Mi + // Sub-schedule for 240000Mi strat cap / 240000Mi overall limit + quick.push("lrs+10_1:1_au=on:fe=axiom:plsq=on:plsqr=32,1:sos=all:ss=axioms:i=4406:si=on:rtra=on_0"); + quick.push("ott+2_8:1_au=on:awrs=converge:e2e=on:fsr=off:hud=10:ins=3:ntd=on:s2at=2.5:slsq=on:slsqc=1:i=4617:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_piset=or:prag=on:s2a=on:sos=on:ss=axioms:i=3296:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_aac=none:cbe=off:fsr=off:kws=inv_frequency:nwc=4.0:tnu=1:i=2128:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_amm=sco:ins=3:ss=axioms:st=1.5:i=3408:si=on:rtra=on_0"); + quick.push("dis+10_1:8_au=on:bd=off:cnfonf=off:e2e=on:fde=none:lma=on:sgt=5:sos=all:ss=axioms:i=3184:si=on:rtra=on_0"); + quick.push("dis+21_1:1_av=off:cnfonf=off:prag=on:s2a=on:sos=on:i=1304:si=on:rtra=on_0"); + quick.push("lrs+21_1:128_av=off:e2e=on:hud=1:prag=on:sd=2:sgt=10:sos=all:ss=axioms:i=3585:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:fe=axiom:fs=off:fsr=off:plsq=on:s2a=on:s2at=2.0:sos=all:i=3340:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_anc=all:au=on:bd=off:cnfonf=off:fd=off:fs=off:fsr=off:nwc=5.0:sac=on:sos=on:ss=axioms:i=5830:si=on:rtra=on_0"); + quick.push("dis+10_1:16_au=on:cnfonf=off:fe=off:plsq=on:plsqc=1:plsqr=32,1:rawr=on:tgt=ground:i=1020:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:ins=2:ixr=off:nm=2:nwc=3.0:sac=on:sos=on:i=1087:si=on:rtra=on_0"); + quick.push("dis+1002_1:3_atotf=0.2:bd=off:cnfonf=conj_eager:fd=off:fe=off:ins=1:nwc=2.0:plsq=on:plsqc=2:plsqr=32,1:s2a=on:s2agt=4:sos=all:i=1525:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:av=off:e2e=on:kws=inv_precedence:nwc=10.0:sos=on:i=7200:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:e2e=on:sd=1:sos=on:sp=frequency:ss=axioms:i=4551:si=on:rtra=on_0"); + quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=14357:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_acc=on:au=on:bd=off:fde=none:hud=15:sgt=4:sp=const_max:ss=axioms:uhcvi=on:i=1095:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:cnfonf=lazy_gen:nwc=10.0:s2a=on:sp=unary_first:i=9755:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=2288:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_not_gen:nwc=5.0:sos=all:i=1973:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:ins=3:nm=4:sgt=20:sos=all:ss=axioms:i=11085:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:er=filter:fd=off:fs=off:fsr=off:hud=20:kws=arity:nm=40:nwc=6.0:sd=7:sos=on:ss=axioms:i=491:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:er=known:fe=off:s2a=on:sac=on:sos=on:i=4606:si=on:rtra=on_0"); + quick.push("ott+30_1:1_cnfonf=off:fd=off:nm=4:ntd=on:plsq=on:plsqr=32,1:sac=on:i=2533:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_avsq=on:bsr=unit_only:cnfonf=off:kws=frequency:nm=32:sos=on:sp=const_frequency:i=3838:si=on:rtra=on_0"); + quick.push("lrs+2_1:3_apa=on:au=on:avsq=on:cnfonf=off:fde=unused:fs=off:fsr=off:rawr=on:sos=all:i=901:si=on:rtra=on_0"); + quick.push("dis+10_1:50_av=off:cnfonf=off:prag=on:sd=2:sos=on:ss=axioms:st=1.5:i=828:si=on:rtra=on_0"); + quick.push("lrs+1002_1:16_au=on:av=off:c=on:cbe=off:fe=off:plsq=on:plsqr=263619,8192:sos=on:ss=axioms:i=1835:si=on:rtra=on_0"); + quick.push("ott+1010_2:3_aac=none:afr=on:cnfonf=lazy_gen:fe=axiom:hud=1:nwc=10.0:piset=all_but_not_eq:prag=on:s2a=on:s2at=3.0:i=1901:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=2007:si=on:rtra=on_0"); + quick.push("ott+1002_5:1_cond=fast:e2e=on:fe=off:hud=15:piset=all_but_not_eq:s2a=on:s2agt=100:s2at=5.0:sac=on:sos=on:i=802:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:cnfonf=off:fsr=off:sd=1:sgt=32:ss=axioms:i=1817:si=on:rtra=on_0"); + quick.push("ott+1010_452:41_au=on:fsr=off:hfaw=0:hfsq=on:hfsqc=10:ins=3:kws=inv_frequency:nm=2:rawr=on:s2a=on:s2at=5.0:s2pl=on:sac=on:uhcvi=on:i=2186:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_apa=on:av=off:cnfonf=off:piset=pi_sigma:prag=on:slsq=on:slsqr=2,1:ss=axioms:i=5341:si=on:rtra=on_0"); + quick.push("dis+21_8:1_acc=model:au=on:avsq=on:avsqr=1,8:bsr=on:e2e=on:fd=off:fe=off:ixr=off:ntd=on:nwc=5.0:plsq=on:plsqc=1:plsqr=4056251,32768:s2a=on:i=1946:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_atotf=0.2:au=on:bsr=unit_only:cha=on:e2e=on:fsr=off:sd=1:sp=unary_first:ss=axioms:st=4.0:i=14118:si=on:rtra=on_0"); + quick.push("lrs+21_1:1024_au=on:chr=on:erd=off:fe=axiom:sos=all:ss=axioms:i=1892:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_bd=off:cbe=off:fe=axiom:flr=on:prag=on:sd=2:ss=axioms:st=1.5:i=1162:si=on:rtra=on_0"); + quick.push("lrs+10_1:2_e2e=on:sd=1:ss=axioms:st=3.0:i=1016:si=on:rtra=on_0"); + quick.push("lrs+1004_1:1_au=on:av=off:bd=off:plsq=on:plsqc=1:plsqr=32,1:sos=on:ss=axioms:st=2.0:i=1141:si=on:rtra=on_0"); + quick.push("dis+10_16:1_hud=1:lma=on:ntd=on:prag=on:sos=all:sp=occurrence:ss=axioms:i=1830:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_acc=on:bd=off:cnfonf=off:fe=axiom:kws=inv_arity_squared:piset=equals:prag=on:sd=1:sp=reverse_arity:ss=axioms:tgt=ground:i=1674:si=on:rtra=on_0"); + quick.push("ott+4_1:1_cbe=off:cnfonf=lazy_not_be_gen:hud=20:irw=on:nwc=5.0:piset=all:plsq=on:plsqr=32,1:prag=on:sos=all:sp=occurrence:i=2039:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bsr=unit_only:s2a=on:sos=all:ss=axioms:i=802:si=on:rtra=on_0"); + quick.push("dis+10_1:16_acc=model:avsq=on:avsqr=1,16:cnfonf=lazy_not_be_gen:plsq=on:plsqc=1:plsqr=32,1:ss=axioms:i=2250:si=on:rtra=on_0"); + quick.push("lrs+20_1:4_au=on:bd=off:e2e=on:slsq=on:slsqr=1,8:sos=on:i=4703:si=on:rtra=on_0"); + quick.push("dis+10_1:64_au=on:cnfonf=off:fde=none:ins=2:nm=6:sos=on:i=1929:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_apa=on:atotf=0.3:au=on:cnfonf=off:s2a=on:s2agt=16:sgt=8:sos=on:sp=frequency:ss=axioms:i=4669:si=on:rtra=on_0"); + quick.push("dis+1010_1:3_bd=preordered:cnfonf=lazy_simp:nwc=5.0:s2a=on:s2at=3.0:sp=unary_first:i=3446:si=on:rtra=on_0"); + quick.push("dis+1010_3:2_e2e=on:rawr=on:sac=on:sd=1:sos=all:ss=axioms:st=3.0:i=1969:si=on:rtra=on_0"); + quick.push("lrs-1002_8:1_av=off:bd=off:bs=unit_only:e2e=on:fe=axiom:prag=on:sos=on:ss=axioms:st=3.0:i=4393:si=on:rtra=on_0"); + quick.push("lrs+1002_1:7_au=on:cnfonf=off:fe=axiom:ins=2:lecc=0.5:nm=32:sd=1:sgt=64:ss=axioms:i=2917:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_kws=arity:nwc=10.0:prag=on:sd=1:sgt=16:ss=axioms:i=723:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_av=off:bd=off:sd=2:sos=on:ss=axioms:st=3.0:i=1277:si=on:rtra=on_0"); + quick.push("ott+10_4:1_cnfonf=lazy_gen:fe=axiom:plsq=on:plsqc=1:plsqr=32,1:s2a=on:s2agt=32:ss=axioms:i=1469:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:bd=off:cnfonf=off:fe=axiom:hud=5:nwc=10.0:sd=1:sos=on:ss=axioms:st=2.0:i=1156:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:cbe=off:cnfonf=lazy_pi_sigma_gen:fe=off:s2a=on:s2agt=32:i=4604:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:fe=off:nwc=10.0:sd=1:sos=on:ss=axioms:st=1.5:i=3044:si=on:rtra=on_0"); + quick.push("ott+1010_1:4_au=on:avsq=on:bsr=on:cnfonf=off:e2e=on:nm=2:sac=on:sos=all:i=13916:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:avsq=on:avsqr=1,6:bsr=unit_only:nm=2:nwc=2.0:sac=on:sos=all:ss=axioms:i=3820:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:bd=off:fd=off:sos=all:ss=axioms:i=2903:si=on:rtra=on_0"); + quick.push("dis-33_1:62_fsr=off:hfsq=on:s2a=on:sac=on:slsq=on:slsqc=1:slsqr=2735097,1048576:i=1308:si=on:rtra=on_0"); + quick.push("dis+10_1:1_alpa=true:atotf=0.4:avsq=on:avsqr=1,16:cnfonf=lazy_pi_sigma_gen:fd=off:fde=unused:fe=axiom:ins=1:s2a=on:s2at=1.5:i=3339:si=on:rtra=on_0"); + quick.push("dis+21_1:1_au=on:cs=on:fde=unused:ntd=on:nwc=10.0:sac=on:sd=1:sgt=10:sos=on:ss=axioms:i=891:si=on:rtra=on_0"); + quick.push("dis+1004_5:1_au=on:fe=off:plsq=on:plsqc=1:plsqr=32,1:sos=on:sp=const_frequency:spb=goal:i=1058:si=on:rtra=on_0"); + quick.push("dis+2_1:1_au=on:cnfonf=off:e2e=on:fe=off:nwc=3.0:s2a=on:s2at=7.0:sp=weighted_frequency:i=2138:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:sd=2:sgt=64:sos=all:ss=axioms:i=6939:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=model:avsq=on:fe=axiom:fsr=off:nm=16:piset=pi_sigma:prag=on:sd=2:sgt=16:sp=weighted_frequency:ss=axioms:i=14103:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:nwc=10.0:s2agt=32:s2at=7.0:s2pl=on:sp=frequency:ss=axioms:uhcvi=on:i=3332:si=on:rtra=on_0"); + // Improves by expected 38.33506744983474 probs costing 239967 Mi + // Sub-schedule for 480000Mi strat cap / 480000Mi overall limit + quick.push("lrs+10_1:1_au=on:fe=axiom:plsq=on:plsqr=32,1:sos=all:ss=axioms:i=4201:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:av=off:cnfonf=conj_eager:fe=off:nwc=5.0:sp=unary_first:ss=axioms:st=3.0:i=20925:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cnfonf=lazy_not_be_gen:piset=all_but_not_eq:plsq=on:plsqc=1:plsqr=19,2:sac=on:slsq=on:i=6917:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_avsq=on:cbe=off:prag=on:s2a=on:sac=on:i=3537:si=on:rtra=on_0"); + quick.push("lrs+1004_2:3_au=on:c=on:cnfonf=off:ins=2:kws=precedence:ntd=on:sp=reverse_frequency:spb=goal:i=3785:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=20258:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:avsq=on:avsqc=1:bd=off:c=on:sac=on:sd=1:sos=all:ss=axioms:st=2.0:i=7608:si=on:rtra=on_0"); + quick.push("dis+10_1:8_cnfonf=lazy_not_gen:plsq=on:plsqc=1:plsqr=19,2:s2pl=on:sd=1:sp=unary_frequency:ss=axioms:st=4.0:i=6035:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:fe=axiom:fs=off:fsr=off:plsq=on:s2a=on:s2at=2.0:sos=all:i=3340:si=on:rtra=on_0"); + quick.push("lrs+1002_3:1_au=on:e2e=on:fd=off:fe=axiom:sos=on:i=4637:si=on:rtra=on_0"); + quick.push("dis+10_1:3_aac=none:bd=off:cnfonf=lazy_not_gen:fe=axiom:kws=inv_frequency:nwc=3.0:prag=on:s2a=on:s2at=7.0:i=2787:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:ins=2:ixr=off:nm=2:nwc=3.0:sac=on:sos=on:i=7814:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_bet=on:erd=off:fe=off:hud=10:prag=on:sac=on:sos=all:sp=const_max:i=3587:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:avsq=on:e2e=on:sos=on:i=4358:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:cs=on:fd=off:fde=unused:nm=4:ntd=on:prag=on:sos=all:sp=unary_first:i=4381:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_cnfonf=lazy_pi_sigma_gen:ins=1:ntd=on:plsq=on:sp=const_min:i=3405:si=on:rtra=on_0"); + quick.push("ott-1002_8:1_au=on:bd=off:bsr=unit_only:ntd=on:sac=on:sos=on:sp=reverse_arity:i=5401:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:er=filter:fd=off:fs=off:fsr=off:hud=20:kws=arity:nm=40:nwc=6.0:sd=7:sos=on:ss=axioms:i=5708:si=on:rtra=on_0"); + quick.push("ott+10_1:4_amm=sco:au=on:nwc=5.0:s2a=on:s2at=3.0:sp=const_max:i=5864:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:er=known:fe=off:s2a=on:sac=on:sos=on:i=4606:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_abs=on:amm=off:atotf=0.4:au=on:avsq=on:fe=axiom:hfsq=on:hfsqc=1:kws=frequency:ntd=on:nwc=3.0:prag=on:s2a=on:i=6978:si=on:rtra=on_0"); + quick.push("lrs+1004_5:1_apa=on:avsq=on:cnfonf=off:e2e=on:fe=axiom:fsr=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:i=1958:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_avsq=on:bsr=unit_only:cnfonf=off:kws=frequency:nm=32:sos=on:sp=const_frequency:i=3838:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_atotf=0.3:bsr=on:nm=10:sd=1:sgt=16:slsq=on:slsqc=4:slsqr=1,3:sp=frequency:ss=axioms:tgt=full:i=4750:si=on:rtra=on_0"); + quick.push("ott+1002_1:64_atotf=0.2:au=on:hflw=2:hfsq=on:hfsql=off:hfsqr=1,2:kws=inv_frequency:sos=on:sp=occurrence:i=2036:si=on:rtra=on_0"); + quick.push("lrs+10_16:1_aac=none:au=on:cnfonf=lazy_pi_sigma_gen:s2a=on:slsq=on:slsqr=1,4:i=10956:si=on:rtra=on_0"); + quick.push("dis+2_1:1_av=off:fe=off:prag=on:s2a=on:sos=on:i=3686:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:e2e=on:s2a=on:s2agt=64:sac=on:sos=on:i=10086:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=11839:si=on:rtra=on_0"); + quick.push("lrs+21_5:4_apa=on:c=on:cnfonf=off:er=known:fe=axiom:fs=off:fsr=off:prag=on:sos=on:i=1063:si=on:rtra=on_0"); + quick.push("dis+1010_1:8_au=on:ins=1:sd=1:sos=on:sp=unary_first:ss=axioms:i=3992:si=on:rtra=on_0"); + quick.push("ott+1010_2:1_bs=unit_only:bsr=unit_only:cnfonf=lazy_not_gen:etr=on:fe=off:piset=pi_sigma:plsq=on:plsqc=1:plsqr=32,1:sos=all:i=12001:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=off:nm=32:ntd=on:nwc=10.0:i=3901:si=on:rtra=on_0"); + quick.push("ott+1010_2:1_e2e=on:fsr=off:hud=1:ins=3:sd=1:ss=axioms:st=3.0:i=2736:si=on:rtra=on_0"); + quick.push("lrs+1010_1:128_apa=on:bd=off:cnfonf=off:e2e=on:prag=on:sd=1:sos=on:ss=axioms:st=2.0:i=6312:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_apa=on:av=off:cnfonf=off:piset=pi_sigma:prag=on:slsq=on:slsqr=2,1:ss=axioms:i=17621:si=on:rtra=on_0"); + quick.push("lrs+21_4:1_au=on:fe=axiom:ins=3:ntd=on:nwc=10.0:i=11226:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_cnfonf=off:erd=off:hud=21:ins=2:plsq=on:plsqr=32,1:sac=on:sos=on:i=7700:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_av=off:fsr=off:plsq=on:plsqr=32,1:sd=1:sos=on:ss=axioms:i=4520:si=on:rtra=on_0"); + quick.push("lrs+21_1:1024_au=on:chr=on:erd=off:fe=axiom:sos=all:ss=axioms:i=1892:si=on:rtra=on_0"); + quick.push("lrs+1004_2:3_au=on:c=on:cnfonf=off:fe=off:ins=1:sd=1:sgt=16:ss=axioms:i=6080:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=3320:si=on:rtra=on_0"); + quick.push("lrs+10_5:1_au=on:cbe=off:plsq=on:plsqc=1:plsqr=6694409,65536:i=29072:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_acc=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:fe=axiom:i=2145:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_e2e=on:fde=none:nwc=10.0:sd=1:sgt=16:sos=all:ss=axioms:i=2290:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_au=on:bd=off:cnfonf=lazy_pi_sigma_gen:ss=axioms:i=6538:si=on:rtra=on_0"); + quick.push("dis+2_12:1_afp=100000:afq=1.0:apa=on:au=on:c=on:cnfonf=off:fe=off:ins=2:nm=32:sos=all:sp=occurrence:i=1742:si=on:rtra=on_0"); + quick.push("dis-1004_16:1_awrs=converge:cnfonf=conj_eager:fe=off:fsr=off:nwc=5.0:plsq=on:plsqc=1:plsqr=4709875,524288:sp=const_frequency:i=9984:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_aac=none:anc=all:au=on:bd=off:fd=off:fe=off:kws=precedence:piset=pi_sigma:plsq=on:plsqr=4689123,65536:sos=all:sp=unary_frequency:i=7093:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_fe=axiom:prag=on:sos=all:sp=reverse_arity:ss=axioms:i=4712:si=on:rtra=on_0"); + quick.push("lrs+1002_1:64_au=on:e2e=on:fe=off:kws=precedence:ntd=on:sac=on:sp=reverse_arity:tgt=ground:i=1968:si=on:rtra=on_0"); + quick.push("dis+21_1:1_fe=axiom:sd=1:sos=on:ss=axioms:i=1812:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_au=on:cnfonf=off:e2e=on:s2a=on:s2agt=16:slsq=on:i=6205:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_aac=none:cnfonf=lazy_not_be_gen:sos=all:i=5492:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:bd=off:cnfonf=off:fd=off:fe=axiom:sd=2:sgt=8:sp=reverse_frequency:ss=axioms:i=20720:si=on:rtra=on_0"); + quick.push("dis+1002_1:128_acc=on:amm=off:au=on:cha=on:cnfonf=lazy_pi_sigma_gen:fe=off:hflw=2:hfsq=on:hud=10:ntd=on:piset=or:i=1689:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_au=on:kws=inv_frequency:lma=on:sos=all:sp=const_frequency:i=5065:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_au=on:c=on:cnfonf=off:e2e=on:fe=off:fsr=off:nwc=5.0:s2a=on:s2agt=100:ss=axioms:i=7852:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:bsr=unit_only:cbe=off:fd=off:fsr=off:sos=on:ss=axioms:i=2910:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:fsr=off:sac=on:sd=1:sgt=32:sos=all:ss=axioms:i=2138:si=on:rtra=on_0"); + quick.push("dis+21_8:1_avsq=on:avsqr=1,16:cnfonf=off:fd=off:prag=on:s2a=on:slsq=on:slsqc=2:slsqr=2,31:sos=all:i=7099:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:fe=off:nwc=10.0:sd=1:sos=on:ss=axioms:st=1.5:i=8702:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_av=off:bd=off:ntd=on:prag=on:sos=all:sp=occurrence:i=5212:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:au=on:avsq=on:bd=off:cnfonf=off:fe=off:sd=2:ss=axioms:st=2.0:i=6777:si=on:rtra=on_0"); + quick.push("dis+1010_3:1_au=on:bd=off:cnfonf=lazy_simp:fd=off:fsr=off:sd=3:sgt=20:sp=unary_frequency:ss=axioms:i=8801:si=on:rtra=on_0"); + quick.push("ott+1010_3:1_av=off:ins=3:sos=all:ss=axioms:i=10813:si=on:rtra=on_0"); + quick.push("ott+10_16:1_amm=off:au=on:avsq=on:cnfonf=lazy_not_gen_be_off:piset=equals:s2a=on:s2at=3.0:i=8464:si=on:rtra=on_0"); + quick.push("dis+3_10:23_bd=off:fde=none:fe=off:nwc=5.0:sac=on:sfv=off:sp=occurrence:i=14070:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:cnfonf=off:piset=equals:sd=1:sos=all:ss=axioms:i=11466:si=on:rtra=on_0"); + quick.push("dis+2_1:40_au=on:av=off:fd=off:hfsq=on:hfsqr=1,32:nm=2:sos=on:sp=const_min:i=11391:si=on:rtra=on_0"); + // Improves by expected 33.334496597666266 probs costing 479797 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("lrs+10_1:1_au=on:fe=axiom:plsq=on:plsqr=32,1:sos=all:ss=axioms:i=4201:si=on:rtra=on_0"); + quick.push("lrs+10_1:4_av=off:fd=off:fsr=off:hud=1:plsq=on:plsqr=32,1:prag=on:sd=2:sos=all:ss=axioms:st=2.0:i=13662:si=on:rtra=on_0"); + quick.push("dis+10_1:1_nwc=10.0:prag=on:s2a=on:s2agt=64:sp=unary_first:uhcvi=on:i=12648:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_bd=off:cnfonf=off:fd=off:fe=off:ntd=on:prag=on:sos=all:i=9759:si=on:rtra=on_0"); + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=16940:si=on:rtra=on_0"); + quick.push("ott+10_8:1_apa=on:au=on:av=off:cnfonf=off:nwc=10.0:sp=reverse_arity:ss=axioms:i=50131:si=on:rtra=on_0"); + quick.push("dis+10_1:1_cnfonf=lazy_not_be_gen:fe=axiom:fs=off:fsr=off:plsq=on:s2a=on:s2at=2.0:sos=all:i=3340:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:av=off:cnfonf=lazy_pi_sigma_gen:fsr=off:nwc=6.0:s2a=on:s2agt=16:i=24878:si=on:rtra=on_0"); + quick.push("ott+2_1:1_anc=all_dependent:cnfonf=lazy_pi_sigma_gen:fe=off:nwc=10.0:s2a=on:s2agt=100:i=39415:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1024_au=on:av=off:ntd=on:sos=on:sp=frequency:ss=axioms:st=5.0:i=3525:si=on:rtra=on_0"); + quick.push("dis+21_1:16_avsq=on:avsqr=3,1:bd=preordered:cha=on:cnfonf=off:e2e=on:fsr=off:sos=on:sp=weighted_frequency:tnu=2:i=3358:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=9251:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:cs=on:fd=off:fde=unused:nm=4:ntd=on:prag=on:sos=all:sp=unary_first:i=9543:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_au=on:av=off:bd=preordered:bsr=on:c=on:nwc=10.0:s2a=on:ss=axioms:i=20296:si=on:rtra=on_0"); + quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=16038:si=on:rtra=on_0"); + quick.push("lrs-1004_1:1_c=on:cnfonf=off:nm=2:plsq=on:plsqc=1:plsqr=14,1:sp=const_frequency:ss=axioms:i=9327:si=on:rtra=on_0"); + quick.push("dis+1002_16:1_au=on:er=filter:fd=off:fs=off:fsr=off:hud=20:kws=arity:nm=40:nwc=6.0:sd=7:sos=on:ss=axioms:i=5708:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:e2e=on:nm=0:sos=all:sp=const_frequency:i=7666:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:er=known:fe=off:s2a=on:sac=on:sos=on:i=4146:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_abs=on:amm=off:atotf=0.4:au=on:avsq=on:fe=axiom:hfsq=on:hfsqc=1:kws=frequency:ntd=on:nwc=3.0:prag=on:s2a=on:i=6978:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:ins=3:nwc=4.0:plsq=on:plsqc=1:plsqr=15179,262144:sac=on:sd=1:ss=axioms:i=9037:si=on:rtra=on_0"); + quick.push("lrs+1004_5:1_apa=on:avsq=on:cnfonf=off:e2e=on:fe=axiom:fsr=off:ntd=on:plsq=on:plsqc=1:plsqr=32,1:sp=const_max:i=4559:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_avsq=on:bsr=unit_only:cnfonf=off:kws=frequency:nm=32:sos=on:sp=const_frequency:i=4544:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=5.0:i=2889:si=on:rtra=on_0"); + quick.push("lrs+1010_8:1_bs=unit_only:cnfonf=lazy_not_gen_be_off:fe=off:fsr=off:hfsq=on:lecc=1.5:nwc=7.0:piset=equals:s2a=on:s2agt=10:sac=on:i=8945:si=on:rtra=on_0"); + quick.push("dis+1010_2:1_acc=on:au=on:avsq=on:avsqr=1,2:bd=off:bs=unit_only:fe=axiom:sp=const_max:i=107085:si=on:rtra=on_0"); + quick.push("ott+1010_2:3_aac=none:afr=on:cnfonf=lazy_gen:fe=axiom:hud=1:nwc=10.0:piset=all_but_not_eq:prag=on:s2a=on:s2at=3.0:i=38728:si=on:rtra=on_0"); + quick.push("ott+10_3:1_c=on:cnfonf=lazy_not_be_gen:fsr=off:ntd=on:sd=10:sos=all:ss=axioms:st=2.0:i=8601:si=on:rtra=on_0"); + quick.push("dis+1010_1:64_acc=model:au=on:awrs=converge:awrsf=200:nwc=10.0:s2a=on:s2at=1.2:slsq=on:i=16649:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cnfonf=off:e2e=on:hud=10:ins=2:plsq=on:plsqc=1:plsqr=32,1:s2a=on:sac=on:sos=on:i=26547:si=on:rtra=on_0"); + quick.push("lrs+1002_1:32_avsq=on:fd=off:sos=on:i=15956:si=on:rtra=on_0"); + quick.push("dis+1010_4:1_au=on:cnfonf=lazy_pi_sigma_gen:sac=on:sgt=8:ss=axioms:i=6334:si=on:rtra=on_0"); + quick.push("dis+10_1:3_au=on:cnfonf=lazy_pi_sigma_gen:fe=axiom:nwc=5.0:s2a=on:s2at=3.0:sac=on:sp=const_max:i=3701:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_apa=on:au=on:av=off:cnfonf=off:fe=axiom:sos=on:i=7349:si=on:rtra=on_0"); + quick.push("lrs+1010_2:1_au=on:av=off:e2e=on:fe=off:kws=inv_frequency:sos=on:i=8672:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:cnfonf=off:prag=on:sd=2:sos=all:ss=axioms:i=22332:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=3320:si=on:rtra=on_0"); + quick.push("ott+1004_4:1_av=off:cbe=off:fsr=off:ins=3:kws=inv_frequency:nm=20:prag=on:i=38170:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:sos=all:i=9092:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_acc=on:bd=off:cnfonf=off:fe=axiom:kws=inv_arity_squared:piset=equals:prag=on:sd=1:sp=reverse_arity:ss=axioms:tgt=ground:i=4302:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_atotf=0.4:au=on:bsr=unit_only:cbe=off:e2e=on:fe=axiom:sos=on:sp=reverse_arity:i=8305:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bsr=unit_only:s2a=on:sos=all:ss=axioms:i=10056:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fe=off:sos=on:sp=unary_first:i=6400:si=on:rtra=on_0"); + quick.push("lrs+20_1:4_au=on:bd=off:e2e=on:slsq=on:slsqr=1,8:sos=on:i=5185:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_hud=1:inj=on:prag=on:s2a=on:sos=all:i=16774:si=on:rtra=on_0"); + quick.push("dis+10_1:1_au=on:nm=2:plsq=on:plsqr=32,1:sos=all:i=20437:si=on:rtra=on_0"); + quick.push("dis+21_1:1_c=on:e2e=on:fe=axiom:sd=2:sp=frequency:ss=axioms:i=31036:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_cnfonf=conj_eager:fe=off:fsr=off:piset=and:prag=on:s2a=on:s2agt=40:sp=const_min:spb=non_intro:i=19675:si=on:rtra=on_0"); + quick.push("dis+2_1:3_au=on:bs=on:bsr=unit_only:e2e=on:hud=5:nwc=10.0:sgt=10:sos=on:sp=frequency:ss=axioms:i=22664:si=on:rtra=on_0"); + quick.push("lrs+10_1:1024_aac=none:anc=all:au=on:bd=off:fd=off:fe=off:kws=precedence:piset=pi_sigma:plsq=on:plsqr=4689123,65536:sos=all:sp=unary_frequency:i=7093:si=on:rtra=on_0"); + quick.push("ott+21_4:1_e2e=on:flr=on:nwc=10.0:s2a=on:s2at=3.0:i=32613:si=on:rtra=on_0"); + quick.push("lrs+1666_1:1_fe=axiom:prag=on:sos=all:sp=reverse_arity:ss=axioms:i=4712:si=on:rtra=on_0"); + quick.push("dis+21_1:1_fe=axiom:sd=1:sos=on:ss=axioms:i=6777:si=on:rtra=on_0"); + quick.push("dis+21_8:1_avsq=on:avsqr=1,16:cnfonf=off:fd=off:prag=on:s2a=on:slsq=on:slsqc=2:slsqr=2,31:sos=all:i=7099:si=on:rtra=on_0"); + quick.push("lrs+1002_4:1_afr=on:au=on:ins=2:kws=precedence:sos=on:sp=weighted_frequency:i=12621:si=on:rtra=on_0"); + quick.push("lrs+1010_4:1_avsq=on:sac=on:sp=const_max:ss=axioms:i=8888:si=on:rtra=on_0"); + quick.push("dis+10_5:4_acc=on:amm=off:cnfonf=off:ins=3:ixr=off:nwc=3.0:ss=axioms:st=2.0:i=8889:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_aac=none:au=on:cnfonf=lazy_not_gen_be_off:nm=16:ntd=on:nwc=5.0:s2a=on:s2at=4.5:i=8124:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_acc=on:au=on:avsq=on:bd=off:cnfonf=off:fe=off:sd=2:ss=axioms:st=2.0:i=8034:si=on:rtra=on_0"); + quick.push("lrs+21_3:1_au=on:avsq=on:avsqr=1,2:fsr=off:hfsq=on:nm=0:ntd=on:sd=1:ss=axioms:i=12690:si=on:rtra=on_0"); + quick.push("dis+2_1:40_au=on:av=off:fd=off:hfsq=on:hfsqr=1,32:nm=2:sos=on:sp=const_min:i=11391:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=8726:si=on:rtra=on_0"); + quick.push("ott+1010_2:1_abs=on:au=on:e2e=on:fde=unused:piset=equals:s2a=on:s2at=5.0:i=41200:si=on:rtra=on_0"); + quick.push("dis+21_1:1_avsq=on:avsqr=1,16:bd=off:hud=1:ins=1:prag=on:sos=on:ss=included:i=9461:si=on:rtra=on_0"); + quick.push("ott+10_16:1_bsd=on:c=on:nm=32:s2a=on:sac=on:sos=all:i=13341:si=on:rtra=on_0"); + // Improves by expected 21.49337275538251 probs costing 959748 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("ott-32_8:1_ntd=on:nwc=10.0:prag=on:sos=on:uhcvi=on:i=18524:si=on:rtra=on_0"); + quick.push("lrs+10_8:1_au=on:bet=on:c=on:cnfonf=off:lcm=reverse:piset=small_set:sd=1:sp=reverse_frequency:ss=axioms:i=90001:si=on:rtra=on_0"); + quick.push("lrs+1666_4:1_au=on:i=60219:si=on:rtra=on_0"); + quick.push("dis+1002_1:1_anc=all:au=on:bd=off:cnfonf=off:fd=off:fs=off:fsr=off:nwc=5.0:sac=on:sos=on:ss=axioms:i=42160:si=on:rtra=on_0"); + quick.push("ott+1010_3:2_acc=on:au=on:cnfonf=off:fsr=off:ins=3:nm=40:ntd=on:s2a=on:s2agt=60:slsq=on:i=14357:si=on:rtra=on_0"); + quick.push("lrs+1002_1:3_apa=on:atotf=0.1:au=on:bd=off:cnfonf=off:plsq=on:plsqr=178679,1048576:sos=on:i=10665:si=on:rtra=on_0"); + quick.push("lrs+10_2:1_au=on:awrs=decay:bsr=on:e2e=on:fe=off:nm=40:nwc=10.0:piset=all:sos=all:i=9251:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:cs=on:fd=off:fde=unused:nm=4:ntd=on:prag=on:sos=all:sp=unary_first:i=9543:si=on:rtra=on_0"); + quick.push("lrs+1002_3:2_au=on:bsr=unit_only:hud=10:ntd=on:piset=all_but_not_eq:s2a=on:s2at=7.0:sd=2:sos=all:ss=axioms:i=16038:si=on:rtra=on_0"); + quick.push("lrs+10_8:3_bd=off:e2e=on:inj=on:s2agt=16:slsq=on:slsqc=1:ss=axioms:i=16221:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bd=off:fd=off:ntd=on:sos=on:i=111403:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_abs=on:amm=off:atotf=0.4:au=on:avsq=on:fe=axiom:hfsq=on:hfsqc=1:kws=frequency:ntd=on:nwc=3.0:prag=on:s2a=on:i=6978:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_c=on:cnfonf=conj_eager:ins=3:nwc=4.0:plsq=on:plsqc=1:plsqr=15179,262144:sac=on:sd=1:ss=axioms:i=9037:si=on:rtra=on_0"); + quick.push("ott+10_3:1_c=on:cnfonf=lazy_not_be_gen:fsr=off:ntd=on:sd=10:sos=all:ss=axioms:st=2.0:i=9176:si=on:rtra=on_0"); + quick.push("lrs+1010_7:1_cnfonf=off:e2e=on:fe=off:hfaw=0:hflw=3:hfsq=on:hfsqc=3:ins=2:piset=or:spb=non_intro:i=25452:si=on:rtra=on_0"); + quick.push("dis+10_1:1_av=off:cnfonf=lazy_not_gen:fe=axiom:fsr=off:ins=3:nwc=10.0:s2a=on:i=35527:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cnfonf=off:e2e=on:hud=10:ins=2:plsq=on:plsqc=1:plsqr=32,1:s2a=on:sac=on:sos=on:i=26547:si=on:rtra=on_0"); + quick.push("ott+1010_8:1_atotf=0.2:au=on:bsr=unit_only:cha=on:e2e=on:fsr=off:sd=1:sp=unary_first:ss=axioms:st=4.0:i=14118:si=on:rtra=on_0"); + quick.push("ott+10_1:1_kws=arity:prag=on:sd=1:sos=all:ss=axioms:st=3.0:i=20084:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:cnfonf=lazy_gen:fsr=off:ntd=on:sp=const_min:tgt=full:i=29543:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_aac=none:au=on:cnfonf=off:inj=on:kws=precedence:ntd=on:sos=on:sp=reverse_arity:i=5501:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:sos=all:i=28740:si=on:rtra=on_0"); + quick.push("ott+4_1:1_cbe=off:cnfonf=lazy_not_be_gen:hud=20:irw=on:nwc=5.0:piset=all:plsq=on:plsqr=32,1:prag=on:sos=all:sp=occurrence:i=9860:si=on:rtra=on_0"); + quick.push("ott+10_1:8_fe=off:hfaw=5:hfsq=on:hfsqc=1:hfsqr=5,1:hud=15:nwc=15.0:prag=on:s2a=on:s2agt=16:ss=axioms:st=2.0:i=24782:si=on:rtra=on_0"); + quick.push("lrs+21_1:1_av=off:e2e=on:nwc=13.0:s2a=on:ss=axioms:i=16679:si=on:rtra=on_0"); + quick.push("dis+10_16:1_acc=on:au=on:fd=off:fsr=off:hflw=0:hfsq=on:kws=precedence:sd=1:ss=axioms:st=1.5:i=15687:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_hud=1:inj=on:prag=on:s2a=on:sos=all:i=16774:si=on:rtra=on_0"); + quick.push("ott+21_4:1_e2e=on:flr=on:nwc=10.0:s2a=on:s2at=3.0:i=32613:si=on:rtra=on_0"); + quick.push("dis+1002_5:1_au=on:cnfonf=lazy_pi_sigma_gen:fe=off:s2a=on:s2at=1.5:i=27060:si=on:rtra=on_0"); + quick.push("lrs+1002_1:1_au=on:bsr=unit_only:e2e=on:sos=on:ss=axioms:st=2.0:i=12207:si=on:rtra=on_0"); + quick.push("lrs+2_3:1_cnfonf=conj_eager:fe=axiom:ntd=on:sd=1:sgt=100:sp=occurrence:ss=axioms:i=13946:si=on:rtra=on_0"); + quick.push("lrs+1010_1:1_au=on:cbe=off:fe=off:nwc=10.0:sd=1:sos=on:ss=axioms:st=1.5:i=11320:si=on:rtra=on_0"); + quick.push("lrs+21_3:1_au=on:avsq=on:avsqr=1,2:fsr=off:hfsq=on:nm=0:ntd=on:sd=1:ss=axioms:i=12690:si=on:rtra=on_0"); + quick.push("dis+1010_1:1_au=on:cnfonf=lazy_pi_sigma_gen:ntd=on:nwc=10.0:slsq=on:slsqc=1:sp=unary_frequency:uhcvi=on:i=32057:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:sd=2:sgt=64:sos=all:ss=axioms:i=115768:si=on:rtra=on_0"); + // Improves by expected 7.948723589584731 probs costing 950493 Mi + // Sub-schedule for 960000Mi strat cap / 960000Mi overall limit + quick.push("ott+1002_1:8_au=on:bd=off:cbe=off:e2e=on:fd=off:inj=on:nicw=on:sd=2:sos=on:sp=reverse_arity:ss=axioms:st=2.0:i=20258:si=on:rtra=on_0"); + quick.push("ott+10_8:1_apa=on:au=on:av=off:cnfonf=off:nwc=10.0:sp=reverse_arity:ss=axioms:i=50131:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:e2e=on:er=filter:hud=10:kws=precedence:sos=on:sp=weighted_frequency:ss=axioms:st=3.0:uhcvi=on:i=89296:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:bd=off:cnfonf=lazy_not_gen_be_off:kws=inv_frequency:ntd=on:nwc=15.0:plsq=on:plsqc=1:plsqr=6736429,1048576:i=25655:si=on:rtra=on_0"); + quick.push("lrs+1666_4:1_au=on:i=69997:si=on:rtra=on_0"); + quick.push("ott+1010_1:1_au=on:cnfonf=lazy_gen:nwc=10.0:s2a=on:sp=unary_first:i=39214:si=on:rtra=on_0"); + quick.push("dis+10_8:1_au=on:avsq=on:avsqr=1,16:fe=off:fsr=off:plsq=on:plsqc=1:plsqr=32,1:rawr=on:i=68450:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:av=off:cnfonf=off:cs=on:fd=off:fde=unused:nm=4:ntd=on:prag=on:sos=all:sp=unary_first:i=11818:si=on:rtra=on_0"); + quick.push("dis+1010_2:3_abs=on:amm=off:atotf=0.4:au=on:avsq=on:fe=axiom:hfsq=on:hfsqc=1:kws=frequency:ntd=on:nwc=3.0:prag=on:s2a=on:i=26731:si=on:rtra=on_0"); + quick.push("ott+10_1:1_au=on:avsq=on:avsqr=1,16:c=on:cnfonf=off:sd=1:sos=all:ss=axioms:st=5.0:i=41921:si=on:rtra=on_0"); + quick.push("ott+1010_2:3_aac=none:afr=on:cnfonf=lazy_gen:fe=axiom:hud=1:nwc=10.0:piset=all_but_not_eq:prag=on:s2a=on:s2at=3.0:i=38728:si=on:rtra=on_0"); + quick.push("lrs+1010_5:1_au=on:cbe=off:s2a=on:s2agt=32:sac=on:i=153471:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=off:e2e=on:sos=all:i=28740:si=on:rtra=on_0"); + quick.push("lrs+10_4:1_hud=1:inj=on:prag=on:s2a=on:sos=all:i=16774:si=on:rtra=on_0"); + quick.push("ott+21_4:1_e2e=on:flr=on:nwc=10.0:s2a=on:s2at=3.0:i=32613:si=on:rtra=on_0"); + quick.push("lrs+10_1:16_hud=10:inj=on:nm=10:ntd=on:nwc=10.0:plsq=on:plsqr=1,32:s2a=on:s2at=3.0:sp=const_frequency:i=40581:si=on:rtra=on_0"); + quick.push("lrs+10_1:1_au=on:cnfonf=lazy_gen:kws=inv_frequency:plsq=on:plsqc=1:plsqr=20,1:i=54328:si=on:rtra=on_0"); + quick.push("ott+1002_1:1_au=on:cnfonf=off:fs=off:fsr=off:sd=10:sos=on:ss=axioms:st=5.0:i=114378:si=on:rtra=on_0"); + // Improves by expected 4.215704352839791 probs costing 923066 Mi + // Overall score 874.3687486355826 probs on average / budget 3792674 Mi } else { // Sub-schedule for 10000Mi strat cap / 10000Mi overall limit quick.push("lrs+1002_1:1_au=on:av=off:fd=off:fde=unused:ntd=on:sos=on:sp=frequency:ss=axioms:i=782:si=on:rtra=on_0"); From 532d92e13aeb81fe7550d2e16e05ac8f138c7ba4 Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Wed, 4 Oct 2023 16:24:11 +0200 Subject: [PATCH 208/210] samplerEx named officially samplerHOL --- samplerEx.txt => samplerHOL.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename samplerEx.txt => samplerHOL.txt (100%) diff --git a/samplerEx.txt b/samplerHOL.txt similarity index 100% rename from samplerEx.txt rename to samplerHOL.txt From 11aac991bf66cd338707d38aa89f96ecf2e0688a Mon Sep 17 00:00:00 2001 From: Martin Suda Date: Wed, 4 Oct 2023 16:26:07 +0200 Subject: [PATCH 209/210] two more options officially sampled --- samplerHOL.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/samplerHOL.txt b/samplerHOL.txt index fdbc7cf2fd..2fe448bfee 100644 --- a/samplerHOL.txt +++ b/samplerHOL.txt @@ -392,7 +392,10 @@ au=off > tnu ~ui 0,9 > inj ~cat off:4,on:1 # higher order split queue -> hfsq ~cat off:3,on:1 -hfsq=on > hfsql ~cat off:4,on:1 +> hfsq ~cat off:10,on:1 +hfsq=on > hfsql ~cat off:1,on:4 hfsq=on > hfsqc ~cat 0:80,1:30,2:20,3:20,4:10,5:5 hfsq=on > hfsqr ~u2r -5;3;, + +hfsq=on > hflw ~cat 0:1,1:5,2:3,3:2,4:2,5:1 +hfsq=on > hfaw ~cat 0:1,1:5,2:3,3:2,4:2,5:1 From bd72e6ad970749ec20e429cae8eed8529165c2ea Mon Sep 17 00:00:00 2001 From: Ahmed Bhayat Date: Thu, 2 Jan 2025 19:59:22 +0000 Subject: [PATCH 210/210] adding check to esnure we don't run UWA with HOL problems --- Parse/TPTP.cpp | 3 +++ Saturation/SaturationAlgorithm.cpp | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Parse/TPTP.cpp b/Parse/TPTP.cpp index f03d1ef496..92fab67d2a 100644 --- a/Parse/TPTP.cpp +++ b/Parse/TPTP.cpp @@ -143,6 +143,9 @@ void TPTP::parse() case THF: #if VHOL _isThf = true; + if(env.options->unificationWithAbstraction() != Options::UnificationWithAbstraction::OFF){ + USER_ERROR("Higher-order and unification with abstraction are currently not compatible"); + } #else PARSE_ERROR("To parse higher-order problems please build Vampire with higher-order support", _gpos); #endif diff --git a/Saturation/SaturationAlgorithm.cpp b/Saturation/SaturationAlgorithm.cpp index 1cbdb3aade..73ffc444c9 100644 --- a/Saturation/SaturationAlgorithm.cpp +++ b/Saturation/SaturationAlgorithm.cpp @@ -265,7 +265,12 @@ SaturationAlgorithm::SaturationAlgorithm(Problem& prb, const Options& opt) } else { - _passive = makeLevel4(true, prb.higherOrder(), opt, ""); +#if VHOL + bool higher_order = prb.higherOrder(); +#else + bool higher_order = false; +#endif + _passive = makeLevel4(true, higher_order, opt, ""); } _active = new ActiveClauseContainer(opt);