private List<Clause> infer(Clause clause, List<Clause> usable)
{
List<Clause> resultingClauses = new List<Clause>();
// * resolve clause with each member of usable
foreach (Clause c in usable)
{
List<Clause> resolvents = clause.binaryResolvents(c);
foreach (Clause rc in resolvents)
{
resultingClauses.Add(rc);
}
// if using paramodulation to handle equality
if (isUseParamodulation())
{
List<Clause> paras = paramodulation.apply(clause, c, true);
foreach (Clause p in paras)
{
resultingClauses.Add(p);
}
}
}
// * return the resulting clauses after applying filter
return getClauseFilter().filter(resultingClauses);
}