/// <summary> ///<code> /// procedure OTTER(sos, usable) /// inputs: sos, a set of support-clauses defining the problem (a global variable) /// usable, background knowledge potentially relevant to the problem ///</code> /// </summary> /// <param name="ansHandler"></param> /// <param name="idxdClauses"></param> /// <param name="sos"></param> /// <param name="usable"></param> /// <returns></returns> private IInferenceResult Otter(OTTERAnswerHandler ansHandler, IndexedClauses idxdClauses, ISet<Clause> sos, ISet<Clause> usable) { LightestClauseHeuristic.InitialSOS(sos); // * repeat do { // * clause <- the lightest member of sos Clause clause = LightestClauseHeuristic.GetLightestClause(); if (null != clause) { // * move clause from sos to usable sos.Remove(clause); LightestClauseHeuristic.RemovedClauseFromSOS(clause); usable.Add(clause); // * PROCESS(INFER(clause, usable), sos) this.Process(ansHandler, idxdClauses, this.Infer(clause, usable), sos, usable); } // * until sos = [] or a refutation has been found } while (sos.Count != 0 && !ansHandler.IsComplete()); return ansHandler; }
public IndexedClauses(LightestClauseHeuristic lightestClauseHeuristic, List <Clause> sos, List <Clause> usable) { this.lightestClauseHeuristic = lightestClauseHeuristic; foreach (Clause c in sos) { indexClause(c); } foreach (Clause c in usable) { indexClause(c); } }
public void setLightestClauseHeuristic( LightestClauseHeuristic lightestClauseHeuristic) { this.lightestClauseHeuristic = lightestClauseHeuristic; }
public IndexedClauses(LightestClauseHeuristic lightestClauseHeuristic, List<Clause> sos, List<Clause> usable) { this.lightestClauseHeuristic = lightestClauseHeuristic; foreach (Clause c in sos) { indexClause(c); } foreach (Clause c in usable) { indexClause(c); } }