Esempio n. 1
0
        /// <summary>
        /// <code> function INFER(clause, usable) returns clauses </code>
        /// </summary>
        /// <param name="clause"></param>
        /// <param name="usable"></param>
        /// <returns></returns>
        private ISet<Clause> Infer(Clause clause, ISet<Clause> usable) 
        {
            ISet<Clause> resultingClauses = new HashedSet<Clause>();

            // * resolve clause with each member of usable
            foreach (var c in usable) 
            {
                ISet<Clause> resolvents = clause.BinaryResolvents(c);
                foreach (Clause rc in resolvents) 
                {
                    resultingClauses.Add(rc);
                }

                // if using paramodulation to handle equality
                if (this.UseParamodulation) 
                {
                    var paras = paramodulation.Apply(clause, c, true);
                    foreach (var p in paras) 
                    {
                        resultingClauses.Add(p);
                    }
                }
            }

            // * return the resulting clauses after applying filter
            return ClauseFilter.Filter(resultingClauses);
        }
 public void setClauseFilter(ClauseFilter clauseFilter)
 {
     this.clauseFilter = clauseFilter;
 }
 public void setClauseFilter(ClauseFilter clauseFilter)
 {
     this.clauseFilter = clauseFilter;
 }