AIMA.Core.Logic.FOL.Inference.FOLOTTERLikeTheoremProver.IndexedClauses.addClause C# (CSharp) Метод

addClause() публичный Метод

public addClause ( Clause c, List sos, List usable ) : void
c Clause
sos List
usable List
Результат void
            public void addClause(Clause c, List<Clause> sos, List<Clause> usable)
            {
                // Perform forward subsumption elimination
                bool addToSOS = true;
                for (int i = minNoLiterals; i < c.getNumberLiterals(); i++)
                {
                    List<Clause> fs = clausesGroupedBySize[i];
                    if (null != fs)
                    {
                        foreach (Clause s in fs)
                        {
                            if (s.subsumes(c))
                            {
                                addToSOS = false;
                                break;
                            }
                        }
                    }
                    if (!addToSOS)
                    {
                        break;
                    }
                }

                if (addToSOS)
                {
                    sos.Add(c);
                    lightestClauseHeuristic.addedClauseToSOS(c);
                    indexClause(c);
                    // Have added clause, therefore
                    // perform backward subsumption elimination
                    List<Clause> subsumed = new List<Clause>();
                    for (int i = c.getNumberLiterals() + 1; i <= maxNoLiterals; i++)
                    {
                        subsumed.Clear();
                        List<Clause> bs = clausesGroupedBySize[i];
                        if (null != bs)
                        {
                            foreach (Clause s in bs)
                            {
                                if (c.subsumes(s))
                                {
                                    subsumed.Add(s);
                                    if (sos.Contains(s))
                                    {
                                        sos.Remove(s);
                                        lightestClauseHeuristic
                                                .removedClauseFromSOS(s);
                                    }
                                    usable.Remove(s);
                                }
                            }
                            foreach(Clause c2 in subsumed)
                            {
                                bs.Remove(c2);
                            }
                        }
                    }
                }
            }
FOLOTTERLikeTheoremProver.IndexedClauses