package aima.test.core.unit.logic.fol.inference;
import org.junit.Test;
import aima.core.logic.fol.inference.FOLModelElimination;
import aima.test.core.unit.logic.fol.CommonFOLInferenceProcedureTests;
/**
* @author Ciaran O'Reilly
*
*/
public class FOLModelEliminationTest extends CommonFOLInferenceProcedureTests {
@Test
public void testDefiniteClauseKBKingsQueryCriminalXFalse() {
testDefiniteClauseKBKingsQueryCriminalXFalse(new FOLModelElimination());
}
@Test
public void testDefiniteClauseKBKingsQueryRichardEvilFalse() {
testDefiniteClauseKBKingsQueryRichardEvilFalse(new FOLModelElimination());
}
@Test
public void testDefiniteClauseKBKingsQueryJohnEvilSucceeds() {
testDefiniteClauseKBKingsQueryJohnEvilSucceeds(new FOLModelElimination());
}
@Test
public void testDefiniteClauseKBKingsQueryEvilXReturnsJohnSucceeds() {
testDefiniteClauseKBKingsQueryEvilXReturnsJohnSucceeds(new FOLModelElimination());
}
@Test
public void testDefiniteClauseKBKingsQueryKingXReturnsJohnAndRichardSucceeds() {
testDefiniteClauseKBKingsQueryKingXReturnsJohnAndRichardSucceeds(new FOLModelElimination());
}
@Test
public void testDefiniteClauseKBWeaponsQueryCriminalXReturnsWestSucceeds() {
testDefiniteClauseKBWeaponsQueryCriminalXReturnsWestSucceeds(new FOLModelElimination());
}
@Test
public void testHornClauseKBRingOfThievesQuerySkisXReturnsNancyRedBertDrew() {
// This KB ends up being infinite when resolving, however 2
// seconds is more than enough to extract the 4 answers
// that are expected
testHornClauseKBRingOfThievesQuerySkisXReturnsNancyRedBertDrew(new FOLModelElimination(
2 * 1000));
}
@Test
public void testFullFOLKBLovesAnimalQueryKillsCuriosityTunaSucceeds() {
testFullFOLKBLovesAnimalQueryKillsCuriosityTunaSucceeds(
new FOLModelElimination(), false);
}
@Test
public void testFullFOLKBLovesAnimalQueryNotKillsJackTunaSucceeds() {
testFullFOLKBLovesAnimalQueryNotKillsJackTunaSucceeds(
new FOLModelElimination(), false);
}
@Test
public void testFullFOLKBLovesAnimalQueryKillsJackTunaFalse() {
// Note: While the KB expands infinitely, the answer
// search for this bottoms out indicating the
// KB does not entail the fact.
testFullFOLKBLovesAnimalQueryKillsJackTunaFalse(
new FOLModelElimination(), false);
}
@Test
public void testEqualityAxiomsKBabcAEqualsCSucceeds() {
testEqualityAxiomsKBabcAEqualsCSucceeds(new FOLModelElimination());
}
@Test
public void testEqualityAndSubstitutionAxiomsKBabcdFFASucceeds() {
testEqualityAndSubstitutionAxiomsKBabcdFFASucceeds(new FOLModelElimination());
}
@Test
public void testEqualityAndSubstitutionAxiomsKBabcdPDSucceeds() {
testEqualityAndSubstitutionAxiomsKBabcdPDSucceeds(new FOLModelElimination());
}
@Test
public void testEqualityAndSubstitutionAxiomsKBabcdPFFASucceeds() {
testEqualityAndSubstitutionAxiomsKBabcdPFFASucceeds(
new FOLModelElimination(), false);
}
@Test
public void testEqualityNoAxiomsKBabcAEqualsCSucceeds() {
testEqualityNoAxiomsKBabcAEqualsCSucceeds(new FOLModelElimination(),
true);
}
@Test
public void testEqualityAndSubstitutionNoAxiomsKBabcdFFASucceeds() {
testEqualityAndSubstitutionNoAxiomsKBabcdFFASucceeds(
new FOLModelElimination(), true);
}
@Test
public void testEqualityAndSubstitutionNoAxiomsKBabcdPDSucceeds() {
testEqualityAndSubstitutionNoAxiomsKBabcdPDSucceeds(
new FOLModelElimination(), true);
}
@Test
public void testEqualityAndSubstitutionNoAxiomsKBabcdPFFASucceeds() {
testEqualityAndSubstitutionNoAxiomsKBabcdPFFASucceeds(
new FOLModelElimination(), true);
}
}