public bool ttCheckAll(Sentence kbSentence, Sentence querySentence, List<Symbol> symbols, Model model) { if (symbols.Count==0) { if (model.isTrue(kbSentence)) { // System.Console.WriteLine("#"); return model.isTrue(querySentence); } else { // System.Console.WriteLine("0"); return true; } } else { Symbol symbol = (Symbol)Util.first(symbols); List<Symbol> rest = Util.rest(symbols); Model trueModel = model.extend(new Symbol(symbol.getValue()), true); Model falseModel = model.extend(new Symbol(symbol.getValue()), false); return (ttCheckAll(kbSentence, querySentence, rest, trueModel) && (ttCheckAll( kbSentence, querySentence, rest, falseModel))); } }
public bool ttCheckAll(Sentence kbSentence, Sentence querySentence, List <Symbol> symbols, Model model) { if (symbols.Count == 0) { if (model.isTrue(kbSentence)) { // System.Console.WriteLine("#"); return(model.isTrue(querySentence)); } else { // System.Console.WriteLine("0"); return(true); } } else { Symbol symbol = (Symbol)Util.first(symbols); List <Symbol> rest = Util.rest(symbols); Model trueModel = model.extend(new Symbol(symbol.getValue()), true); Model falseModel = model.extend(new Symbol(symbol.getValue()), false); return(ttCheckAll(kbSentence, querySentence, rest, trueModel) && (ttCheckAll( kbSentence, querySentence, rest, falseModel))); } }
public void testSentenceStatusWhenPFalseAndQFalse() { String p = "P"; String q = "Q"; m = m.extend(new Symbol(p), false); m = m.extend(new Symbol(q), false); Assert.AreEqual(true, m.isFalse(andSentence)); Assert.AreEqual(true, m.isFalse(orSentence)); Assert.AreEqual(true, m.isTrue(impliedSentence)); Assert.AreEqual(true, m.isTrue(biConditionalSentence)); }
private int getNumberOfClausesSatisfiedIn(List <Sentence> clauses, Model model) { int retVal = 0; foreach (Sentence s in clauses) { if (model.isTrue(s)) { retVal += 1; } } return(retVal); }
private bool isClauseTrueInModel(Sentence clause, Model model) { List <Symbol> positiveSymbols = new SymbolClassifier().getPositiveSymbolsIn(clause); List <Symbol> negativeSymbols = new SymbolClassifier().getNegativeSymbolsIn(clause); foreach (Symbol symbol in positiveSymbols) { if ((model.isTrue(symbol))) { return(true); } } foreach (Symbol symbol in negativeSymbols) { if ((model.isFalse(symbol))) { return(true); } } return(false); }
public void testModelEvaluation() { kb.tell("(NOT P11)"); kb.tell("(B11 <=> (P12 OR P21))"); kb.tell("(B21 <=> ((P11 OR P22) OR P31))"); kb.tell("(NOT B11)"); kb.tell("(B21)"); Model model = new Model(); model = model.extend(new Symbol("B11"), false); model = model.extend(new Symbol("B21"), true); model = model.extend(new Symbol("P11"), false); model = model.extend(new Symbol("P12"), false); model = model.extend(new Symbol("P21"), false); model = model.extend(new Symbol("P22"), false); model = model.extend(new Symbol("P31"), true); Sentence kbs = kb.asSentence(); Assert.AreEqual(true, model.isTrue(kbs)); }
private bool isClauseTrueInModel(Sentence clause, Model model) { List<Symbol> positiveSymbols = new SymbolClassifier().getPositiveSymbolsIn(clause); List<Symbol> negativeSymbols = new SymbolClassifier().getNegativeSymbolsIn(clause); foreach (Symbol symbol in positiveSymbols) { if ((model.isTrue(symbol))) { return true; } } foreach (Symbol symbol in negativeSymbols) { if ((model.isFalse(symbol))) { return true; } } return false; }
public void testComplexSentence() { String p = "P"; String q = "Q"; m = m.extend(new Symbol(p), true); m = m.extend(new Symbol(q), false); Sentence sent = (Sentence)parser.parse("((P OR Q) AND (P => Q))"); Assert.IsFalse(m.isTrue(sent)); Assert.IsTrue(m.isFalse(sent)); Sentence sent2 = (Sentence)parser.parse("((P OR Q) AND (Q))"); Assert.IsFalse(m.isTrue(sent2)); Assert.IsTrue(m.isFalse(sent2)); }
private int getNumberOfClausesSatisfiedIn(List<Sentence> clauses, Model model) { int retVal = 0; foreach(Sentence s in clauses) { if (model.isTrue(s)) { retVal += 1; } } return retVal; }