private InferenceResult otter(OTTERAnswerHandler ansHandler,
IndexedClauses idxdClauses, List<Clause> sos, List<Clause> usable)
{
getLightestClauseHeuristic().initialSOS(sos);
// * repeat
do
{
// * clause <- the lightest member of sos
Clause clause = getLightestClauseHeuristic().getLightestClause();
if (null != clause)
{
// * move clause from sos to usable
sos.Remove(clause);
getLightestClauseHeuristic().removedClauseFromSOS(clause);
usable.Add(clause);
// * PROCESS(INFER(clause, usable), sos)
process(ansHandler, idxdClauses, infer(clause, usable), sos,
usable);
}
// * until sos = [] or a refutation has been found
} while (sos.Count != 0 && !ansHandler.isComplete());
return ansHandler;
}