Package aima.core.logic.fol.parsing

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


    domain.addConstant("ONE");
    domain.addPredicate("P");
    domain.addFunction("Plus");
    domain.addFunction("Power");

    FOLParser parser = new FOLParser(domain);

    List<TermEquality> rewrites = new ArrayList<TermEquality>();
    rewrites.add((TermEquality) parser.parse("Plus(x, ZERO) = x"));
    rewrites.add((TermEquality) parser.parse("Plus(ZERO, x) = x"));
    rewrites.add((TermEquality) parser.parse("Power(x, ONE) = x"));
    rewrites.add((TermEquality) parser.parse("Power(x, ZERO) = ONE"));
    DefaultClauseSimplifier simplifier = new DefaultClauseSimplifier(
        rewrites);

    Sentence s1 = parser
        .parse("((P(Plus(y,ZERO),Plus(ZERO,y)) OR P(Power(y, ONE),Power(y,ZERO))) OR P(Power(y,ZERO),Plus(y,ZERO)))");

    CNFConverter cnfConverter = new CNFConverter(parser);

    CNF cnf = cnfConverter.convertToCNF(s1);
View Full Code Here


    domain.addConstant("Thai");
    domain.addConstant("Burger");
    domain.addConstant("$");
    domain.addConstant("_30_60");
    domain.addConstant("X0");
    FOLParser parser = new FOLParser(domain);

    // The hypothesis
    String c1 = "patrons(v,Some)";
    String c2 = "patrons(v,Full) AND (hungry(v) AND type(v,French))";
    String c3 = "patrons(v,Full) AND (hungry(v) AND (type(v,Thai) AND fri_sat(v)))";
    String c4 = "patrons(v,Full) AND (hungry(v) AND type(v,Burger))";
    String sh = "FORALL v (will_wait(v) <=> (" + c1 + " OR (" + c2
        + " OR (" + c3 + " OR (" + c4 + ")))))";

    Sentence hypothesis = parser.parse(sh);
    Sentence desc = parser
        .parse("(((((((((alternate(X0) AND NOT(bar(X0))) AND NOT(fri_sat(X0))) AND hungry(X0)) AND patrons(X0,Full)) AND price(X0,$)) AND NOT(raining(X0))) AND NOT(reservation(X0))) AND type(X0,Thai)) AND wait_estimate(X0,_30_60))");
    Sentence classification = parser.parse("will_wait(X0)");

    FOLKnowledgeBase kb = new FOLKnowledgeBase(domain,
        new FOLOTTERLikeTheoremProver(false));

    kb.tell(hypothesis);
View Full Code Here

    domain.addPredicate("P");
    domain.addPredicate("Q");
    domain.addPredicate("R");
    domain.addFunction("F");

    FOLParser parser = new FOLParser(domain);

    List<Literal> lits = new ArrayList<Literal>();
    AtomicSentence a1 = (AtomicSentence) parser.parse("P(F(x,B),x)");
    AtomicSentence a2 = (AtomicSentence) parser.parse("Q(x)");
    lits.add(new Literal(a1));
    lits.add(new Literal(a2));

    Clause c1 = new Clause(lits);

    lits.clear();
    a1 = (AtomicSentence) parser.parse("F(A,y) = y");
    a2 = (AtomicSentence) parser.parse("R(y)");
    lits.add(new Literal(a1));
    lits.add(new Literal(a2));

    Clause c2 = new Clause(lits);
View Full Code Here

    domain.addPredicate("P");
    domain.addPredicate("Q");
    domain.addPredicate("R");
    domain.addFunction("F");

    FOLParser parser = new FOLParser(domain);

    List<Literal> lits = new ArrayList<Literal>();
    AtomicSentence a1 = (AtomicSentence) parser.parse("F(C,x) = D");
    AtomicSentence a2 = (AtomicSentence) parser.parse("A = D");
    AtomicSentence a3 = (AtomicSentence) parser.parse("P(F(x,B),x)");
    AtomicSentence a4 = (AtomicSentence) parser.parse("Q(x)");
    AtomicSentence a5 = (AtomicSentence) parser.parse("R(C)");
    lits.add(new Literal(a1));
    lits.add(new Literal(a2));
    lits.add(new Literal(a3));
    lits.add(new Literal(a4));
    lits.add(new Literal(a5));

    Clause c1 = new Clause(lits);

    lits.clear();
    a1 = (AtomicSentence) parser.parse("F(A,y) = y");
    a2 = (AtomicSentence) parser.parse("F(B,y) = C");
    a3 = (AtomicSentence) parser.parse("R(y)");
    a4 = (AtomicSentence) parser.parse("R(A)");
    lits.add(new Literal(a1));
    lits.add(new Literal(a2));
    lits.add(new Literal(a3));
    lits.add(new Literal(a4));
View Full Code Here

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

    FOLParser parser = new FOLParser(domain);

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

    Clause c1 = new Clause(lits);

    lits.clear();
    a1 = (AtomicSentence) parser.parse("x = x");
    lits.add(new Literal(a1));

    Clause c2 = new Clause(lits);

    Set<Clause> paras = paramodulation.apply(c1, c2);
View Full Code Here

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

    FOLParser parser = new FOLParser(domain);

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

    Clause c1 = new Clause(lits);

    lits.clear();
    a1 = (AtomicSentence) parser.parse("F(x,B) = x");
    lits.add(new Literal(a1, true));

    Clause c2 = new Clause(lits);

    Set<Clause> paras = paramodulation.apply(c1, c2);
View Full Code Here

    fOL_OTTERDemo();
    fOL_ModelEliminationDemo();
  }

  private static void unifierDemo() {
    FOLParser parser = new FOLParser(DomainFactory.knowsDomain());
    Unifier unifier = new Unifier();
    Map<Variable, Term> theta = new Hashtable<Variable, Term>();

    Sentence query = parser.parse("Knows(John,x)");
    Sentence johnKnowsJane = parser.parse("Knows(y,Mother(y))");

    System.out.println("------------");
    System.out.println("Unifier Demo");
    System.out.println("------------");
    Map<Variable, Term> subst = unifier.unify(query, johnKnowsJane, theta);
View Full Code Here

  private static void fOL_CNFConversion() {
    System.out.println("-------------------------------------------------");
    System.out.println("Conjuctive Normal Form for First Order Logic Demo");
    System.out.println("-------------------------------------------------");
    FOLDomain domain = DomainFactory.lovesAnimalDomain();
    FOLParser parser = new FOLParser(domain);

    Sentence origSentence = parser
        .parse("FORALL x (FORALL y (Animal(y) => Loves(x, y)) => EXISTS y Loves(y, x))");

    CNFConverter cnfConv = new CNFConverter(parser);

    CNF cnf = cnfConv.convertToCNF(origSentence);
View Full Code Here

    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");

    Demodulation demodulation = new Demodulation();
    Predicate altExpression = (Predicate) demodulation.apply(assertion,
        expression);
View Full Code Here

    domain.addPredicate("P");
    domain.addPredicate("Q");
    domain.addPredicate("R");
    domain.addFunction("F");

    FOLParser parser = new FOLParser(domain);

    List<Literal> lits = new ArrayList<Literal>();
    AtomicSentence a1 = (AtomicSentence) parser.parse("P(F(x,B),x)");
    AtomicSentence a2 = (AtomicSentence) parser.parse("Q(x)");
    lits.add(new Literal(a1));
    lits.add(new Literal(a2));

    Clause c1 = new Clause(lits);

    lits.clear();
    a1 = (AtomicSentence) parser.parse("F(A,y) = y");
    a2 = (AtomicSentence) parser.parse("R(y)");
    lits.add(new Literal(a1));
    lits.add(new Literal(a2));

    Clause c2 = new Clause(lits);
View Full Code Here

TOP

Related Classes of aima.core.logic.fol.parsing.FOLParser

Copyright © 2018 www.massapicom. 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.