Examples of FOLParser


Examples of aima.core.logic.fol.parsing.FOLParser

    domain.addFunction("F");
    domain.addFunction("G");
    domain.addFunction("H");
    domain.addFunction("J");

    FOLParser parser = new FOLParser(domain);

    Predicate expression = (Predicate) parser
        .parse("P(A,F(B,G(A,H(B)),C),D)");
    TermEquality assertion = (TermEquality) parser.parse("B = E");

    Predicate altExpression = (Predicate) demodulation.apply(assertion,
        expression);

    Assert.assertFalse(expression.equals(altExpression));
    Assert.assertEquals("P(A,F(E,G(A,H(B)),C),D)", altExpression.toString());

    altExpression = (Predicate) demodulation
        .apply(assertion, altExpression);

    Assert.assertEquals("P(A,F(E,G(A,H(E)),C),D)", altExpression.toString());

    assertion = (TermEquality) parser.parse("G(x,y) = J(x)");

    altExpression = (Predicate) demodulation.apply(assertion, expression);

    Assert.assertEquals("P(A,F(B,J(A),C),D)", altExpression.toString());
  }
View Full Code Here

Examples of aima.core.logic.fol.parsing.FOLParser

    domain.addFunction("F");
    domain.addFunction("G");
    domain.addFunction("H");
    domain.addFunction("J");

    FOLParser parser = new FOLParser(domain);

    Predicate expression = (Predicate) parser.parse("P(A,G(x,B),C)");
    TermEquality assertion = (TermEquality) parser.parse("G(A,y) = J(y)");

    Predicate altExpression = (Predicate) demodulation.apply(assertion,
        expression);

    Assert.assertNull(altExpression);
View Full Code Here

Examples of aima.core.logic.fol.parsing.FOLParser

    domain.addFunction("F");
    domain.addFunction("G");
    domain.addFunction("H");
    domain.addFunction("J");

    FOLParser parser = new FOLParser(domain);

    List<Literal> lits = new ArrayList<Literal>();
    Predicate p1 = (Predicate) parser.parse("Q(z, G(D,B))");
    Predicate p2 = (Predicate) parser.parse("P(x, G(A,C))");
    Predicate p3 = (Predicate) parser.parse("W(z,x,u,w,y)");
    lits.add(new Literal(p1));
    lits.add(new Literal(p2));
    lits.add(new Literal(p3));

    Clause clExpression = new Clause(lits);

    TermEquality assertion = (TermEquality) parser.parse("G(x,y) = x");

    Clause altClExpression = demodulation.apply(assertion, clExpression);

    Assert.assertEquals("[P(x,G(A,C)), Q(z,D), W(z,x,u,w,y)]",
        altClExpression.toString());
View Full Code Here

Examples of aima.core.logic.fol.parsing.FOLParser

    domain.addConstant("B");
    domain.addConstant("C");
    domain.addPredicate("P");
    domain.addFunction("F");

    FOLParser parser = new FOLParser(domain);

    List<Literal> lits = new ArrayList<Literal>();
    Predicate p1 = (Predicate) parser.parse("P(y, F(A,y))");
    lits.add(new Literal(p1));

    Clause clExpression = new Clause(lits);

    TermEquality assertion = (TermEquality) parser.parse("F(x,B) = C");

    Clause altClExpression = demodulation.apply(assertion, clExpression);

    Assert.assertNull(altClExpression);
  }
View Full Code Here

Examples of aima.core.logic.fol.parsing.FOLParser

    domain.addConstant("B");
    domain.addConstant("C");
    domain.addPredicate("P");
    domain.addFunction("F");

    FOLParser parser = new FOLParser(domain);

    List<Literal> lits = new ArrayList<Literal>();
    Predicate p1 = (Predicate) parser.parse("P(y, F(A,y))");
    lits.add(new Literal(p1));

    Clause clExpression = new Clause(lits);

    TermEquality assertion = (TermEquality) parser.parse("x = x");

    Clause altClExpression = demodulation.apply(assertion, clExpression);

    Assert.assertNull(altClExpression);
  }
View Full Code Here

Examples of aima.core.logic.fol.parsing.FOLParser

  private Unifier unifier;
  private Map<Variable, Term> theta;

  @Before
  public void setUp() {
    parser = new FOLParser(DomainFactory.knowsDomain());
    unifier = new Unifier();
    theta = new Hashtable<Variable, Term>();
  }
View Full Code Here

Examples of aima.core.logic.fol.parsing.FOLParser

    FOLDomain domain = new FOLDomain();
    domain.addPredicate("P");
    domain.addFunction("F");
    domain.addFunction("SF0");
    domain.addFunction("SF1");
    FOLParser parser = new FOLParser(domain);

    Sentence s1 = parser.parse("P(SF1(v2),v2)");
    Sentence s2 = parser.parse("P(v3,SF0(v3))");
    Map<Variable, Term> result = unifier.unify(s1, s2);

    Assert.assertNull(result);

    s1 = parser.parse("P(v1,SF0(v1),SF0(v1),SF0(v1),SF0(v1))");
    s2 = parser.parse("P(v2,SF0(v2),v2,     v3,     v2)");
    result = unifier.unify(s1, s2);

    Assert.assertNull(result);

    s1 = parser
        .parse("P(v1,   F(v2),F(v2),F(v2),v1,      F(F(v1)),F(F(F(v1))),v2)");
    s2 = parser
        .parse("P(F(v3),v4,   v5,   v6,   F(F(v5)),v4,      F(v3),      F(F(v5)))");
    result = unifier.unify(s1, s2);

    Assert.assertNull(result);
  }
View Full Code Here

Examples of aima.core.logic.fol.parsing.FOLParser

  @Test
  public void testBadCascadeSubstitution_LCL418_1() {
    FOLDomain domain = new FOLDomain();
    domain.addPredicate("ISATHEOREM");
    domain.addFunction("EQUIVALENT");
    FOLParser parser = new FOLParser(domain);

    Sentence s1 = parser
        .parse("ISATHEOREM(EQUIVALENT(EQUIVALENT(c1744,c1743),EQUIVALENT(c1742,c1743)))");
    Sentence s2 = parser
        .parse("ISATHEOREM(EQUIVALENT(EQUIVALENT(c1752,c1751),c1752))");
    Map<Variable, Term> result = unifier.unify(s1, s2);

    Assert.assertEquals(
        "{c1744=EQUIVALENT(c1742,c1751), c1743=c1751, c1752=EQUIVALENT(c1742,c1751)}",
View Full Code Here

Examples of aima.core.logic.fol.parsing.FOLParser

    domain.addFunction("F");
    domain.addFunction("G");
    domain.addFunction("H");
    domain.addPredicate("P");

    FOLParser parser = new FOLParser(domain);

    // Test Cascade Substitutions handled correctly
    Sentence s1 = parser.parse("P(z, x)");
    Sentence s2 = parser.parse("P(x, a)");
    Map<Variable, Term> result = unifier.unify(s1, s2);

    Assert.assertEquals("{z=a, x=a}", result.toString());

    s1 = parser.parse("P(x, z)");
    s2 = parser.parse("P(a, x)");
    result = unifier.unify(s1, s2);

    Assert.assertEquals("{x=a, z=a}", result.toString());

    s1 = parser.parse("P(w, w, w)");
    s2 = parser.parse("P(x, y, z)");
    result = unifier.unify(s1, s2);

    Assert.assertEquals("{w=z, x=z, y=z}", result.toString());

    s1 = parser.parse("P(x, y, z)");
    s2 = parser.parse("P(w, w, w)");
    result = unifier.unify(s1, s2);

    Assert.assertEquals("{x=w, y=w, z=w}", result.toString());

    s1 = parser.parse("P(x, B, F(y))");
    s2 = parser.parse("P(A, y, F(z))");
    result = unifier.unify(s1, s2);

    Assert.assertEquals("{x=A, y=B, z=B}", result.toString());

    s1 = parser.parse("P(F(x,B), G(y),         F(z,A))");
    s2 = parser.parse("P(y,      G(F(G(w),w)), F(w,z))");
    result = unifier.unify(s1, s2);

    Assert.assertNull(result);

    s1 = parser.parse("P(F(G(A)), x,    F(H(z,z)), H(y,    G(w)))");
    s2 = parser.parse("P(y,       G(z), F(v     ), H(F(w), x   ))");
    result = unifier.unify(s1, s2);

    Assert.assertEquals(
        "{y=F(G(A)), x=G(G(A)), v=H(G(A),G(A)), w=G(A), z=G(A)}",
        result.toString());
View Full Code Here

Examples of aima.core.logic.fol.parsing.FOLParser

    FOLDomain domain = new FOLDomain();
    domain.addConstant("A");
    domain.addConstant("B");
    domain.addFunction("Plus");

    FOLParser parser = new FOLParser(domain);

    TermEquality te1 = (TermEquality) parser.parse("x = x");
    TermEquality te2 = (TermEquality) parser.parse("x = x");

    // Both term equalities the same,
    // should unify but no substitutions.
    Map<Variable, Term> result = unifier.unify(te1, te2);

    Assert.assertNotNull(result);
    Assert.assertEquals(0, result.size());

    // Different variable names but should unify.
    te1 = (TermEquality) parser.parse("x1 = x1");
    te2 = (TermEquality) parser.parse("x2 = x2");

    result = unifier.unify(te1, te2);

    Assert.assertNotNull(result);
    Assert.assertEquals(1, result.size());
    Assert.assertEquals("{x1=x2}", result.toString());

    // Test simple unification with reflexivity axiom
    te1 = (TermEquality) parser.parse("x1 = x1");
    te2 = (TermEquality) parser.parse("Plus(A,B) = Plus(A,B)");

    result = unifier.unify(te1, te2);

    Assert.assertNotNull(result);

    Assert.assertEquals(1, result.size());
    Assert.assertEquals("{x1=Plus(A,B)}", result.toString());

    // Test more complex unification with reflexivity axiom
    te1 = (TermEquality) parser.parse("x1 = x1");
    te2 = (TermEquality) parser.parse("Plus(A,B) = Plus(A,z1)");

    result = unifier.unify(te1, te2);

    Assert.assertNotNull(result);

    Assert.assertEquals(2, result.size());
    Assert.assertEquals("{x1=Plus(A,B), z1=B}", result.toString());

    // Test reverse of previous unification with reflexivity axiom
    // Should still be the same.
    te1 = (TermEquality) parser.parse("x1 = x1");
    te2 = (TermEquality) parser.parse("Plus(A,z1) = Plus(A,B)");

    result = unifier.unify(te1, te2);

    Assert.assertNotNull(result);

    Assert.assertEquals(2, result.size());
    Assert.assertEquals("{x1=Plus(A,B), z1=B}", result.toString());

    // Test with nested terms
    te1 = (TermEquality) parser
        .parse("Plus(Plus(Plus(A,B),B, A)) = Plus(Plus(Plus(A,B),B, A))");
    te2 = (TermEquality) parser
        .parse("Plus(Plus(Plus(A,B),B, A)) = Plus(Plus(Plus(A,B),B, A))");

    result = unifier.unify(te1, te2);

    Assert.assertNotNull(result);

    Assert.assertEquals(0, result.size());

    // Simple term equality unification fails
    te1 = (TermEquality) parser.parse("Plus(A,B) = Plus(B,A)");
    te2 = (TermEquality) parser.parse("Plus(A,B) = Plus(A,B)");

    result = unifier.unify(te1, te2);

    Assert.assertNull(result);
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.