AIMA.Core.Logic.Propositional.Algorithms.PLResolution.createResolventClause C# (CSharp) Method

createResolventClause() private method

private createResolventClause ( ClauseSymbols cs, Symbol toRemove ) : Sentence
cs ClauseSymbols
toRemove AIMA.Core.Logic.Propositional.Parsing.Ast.Symbol
return AIMA.Core.Logic.Propositional.Parsing.Ast.Sentence
        private Sentence createResolventClause(ClauseSymbols cs, Symbol toRemove)
        {
            List<Symbol> positiveSymbols = SetOps
                    .union(cs.clause1PositiveSymbols, cs.clause2PositiveSymbols);
            List<Symbol> negativeSymbols = SetOps
                    .union(cs.clause1NegativeSymbols, cs.clause2NegativeSymbols);
            if (positiveSymbols.Contains(toRemove))
            {
                positiveSymbols.Remove(toRemove);
            }
            if (negativeSymbols.Contains(toRemove))
            {
                negativeSymbols.Remove(toRemove);
            }

            positiveSymbols.Sort(new SymbolComparator());
           negativeSymbols.Sort( new SymbolComparator());

            List<Sentence> sentences = new List<Sentence>();
            for (int i = 0; i < positiveSymbols.Count; i++)
            {
                sentences.Add(positiveSymbols[i]);
            }
            for (int i = 0; i < negativeSymbols.Count; i++)
            {
                sentences.Add(new UnarySentence(negativeSymbols[i]));
            }
            if (sentences.Count == 0)
            {
                return new Symbol("EMPTY_CLAUSE"); // == empty clause
            }
            else
            {
                return LogicUtils.chainWith("OR", sentences);
            }

        }