public class TT_Entails { // No podemos llamar a la clase igual que a uno de sus métodos... /** * La función TT-ENTAILS?(KB, α) devuelve cierto o falso. * * @param kb * KB, la base de conocimiento, una sentencia en lógica proposicional * @param alpha * α, la consulta, una sentencia en lógica proposicional * * @return cierto si α es consecuencia lógica de KB, falso en otro caso. */ public bool TTEntails(KnowledgeBase kb, Sentence alpha) { // symbols <- una lista de símbolos de proposición de KB y &alpha IList <PropositionSymbol> symbols = new List <PropositionSymbol>(SymbolCollector.GetSymbolsFrom(kb.AsSentence(), alpha)); // return TT-CHECK-ALL(KB, α symbols, {}) return(TTCheckAll(kb, alpha, symbols, new Model())); }
/** * Añade la sentencia específica a la BC. * * @param aSentence * hecho para ser añadido a la BC. */ public void Tell(Sentence aSentence) { if (!(sentences.Contains(aSentence))) { sentences.Add(aSentence); _asCNF = _asCNF.Extend(ConvertToConjunctionOfClauses.Convert(aSentence).GetClauses()); symbols.UnionWith(SymbolCollector.GetSymbolsFrom(aSentence)); // UnionWith de ISet en vez del método addAll de Set } }