static int prolog_tryToDeriveLastLine_maxSteps = 1000; static bool prolog_tryToDeriveLastLine(S data) { // make Prolog interpreter new Prolog p; p.upperCaseVariables = true; //p.showStuff = true; p.addTheory(dropLastLine(rtrim(data)), programID()); Lisp pivot = nlParse(lastLine(rtrim(data))); // try to derive last statement from the rest new LinkedHashSet set; Collector c = limitedSearchCollector(set, prolog_tryToDeriveLastLine_maxSteps, pivot); p.rewriteInto(c); print("Found " + nl(set, "statement") + ":"); //printIndent(snlAllToText(l)); printIndent(nlUnparseLines(asList(set))); print(); print("Pivot statement: " + nlUnparse(pivot)); bool found = set.contains(pivot); print("Pivot statement found? " + yn(found)); ret found; }