AIMA.Core.Logic.Propositional.Algorithms.DPLL.findUnitClause C# (CSharp) Method

findUnitClause() private method

private findUnitClause ( List clauseList, Model model, List symbols ) : SymbolValuePair
clauseList List
model Model
symbols List
return SymbolValuePair
        private SymbolValuePair findUnitClause(List<Sentence> clauseList, Model model,
                List<Symbol> symbols)
        {
            for (int i = 0; i < clauseList.Count; i++)
            {
                Sentence clause = (Sentence)clauseList[i];
                if ((clause is Symbol)
                        && (!(model.getAssignedSymbols().Contains(clause))))
                {
                    // System.Console.WriteLine("found unit clause - assigning");
                    return new SymbolValuePair(new Symbol(((Symbol)clause)
                            .getValue()), true);
                }

                if (clause is UnarySentence)
                {
                    UnarySentence sentence = (UnarySentence)clause;
                    Sentence negated = sentence.getNegated();
                    if ((negated is Symbol)
                            && (!(model.getAssignedSymbols().Contains(negated))))
                    {
                        // System.Console.WriteLine("found unit clause type 2 -
                        // assigning");
                        return new SymbolValuePair(new Symbol(((Symbol)negated)
                                .getValue()), false);
                    }
                }

            }

            return new SymbolValuePair();// failed to find any unit clause;

        }