package aima.test.core.unit.logic.propositional.inference; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import aima.core.logic.propositional.inference.PLFCEntails; import aima.core.logic.propositional.kb.KnowledgeBase; import aima.core.logic.propositional.parsing.PLParser; import aima.core.logic.propositional.parsing.ast.PropositionSymbol; /** * @author Ravi Mohan * @author Ciaran O'Reilly * */ public class PLFCEntailsTest { private PLParser parser; private PLFCEntails plfce; @Before public void setUp() { parser = new PLParser(); plfce = new PLFCEntails(); } @Test public void testAIMAExample() { KnowledgeBase kb = new KnowledgeBase(); kb.tell("P => Q"); kb.tell("L & M => P"); kb.tell("B & L => M"); kb.tell("A & P => L"); kb.tell("A & B => L"); kb.tell("A"); kb.tell("B"); PropositionSymbol q = (PropositionSymbol) parser.parse("Q"); Assert.assertEquals(true, plfce.plfcEntails(kb, q)); } @Test(expected=IllegalArgumentException.class) public void testKBWithNonDefiniteClauses() { KnowledgeBase kb = new KnowledgeBase(); kb.tell("P => Q"); kb.tell("L & M => P"); kb.tell("B & L => M"); kb.tell("~A & P => L"); // Not a definite clause kb.tell("A & B => L"); kb.tell("A"); kb.tell("B"); PropositionSymbol q = (PropositionSymbol) parser.parse("Q"); Assert.assertEquals(true, plfce.plfcEntails(kb, q)); } }