a. p = F(G(v), H(u, v)); q = F(w, J(x, y))
    b. p = F(x, F(u, x)); q = F(F(y, A), F(z, F(B, z)))
    c. p = F(x
    1, G(x 2, x 3), x 2, B); q = F(G(H(A, x 5), x 2), x 1, H(A, x 4), x 4)

    a. Unify:

    p = F(G(v), H(u, v)) and q = F(w, J(x, y))

    Can’t be unified since the second arguments, H and J, are different constants.

    b. Unify:

    p = F(x, F(u, x))  and q = F(F(y, A), F(z, F(B, z)))

    s = { F(y, A) | x } -> p = F(F(y, A), F(u, F(y, A)))       q = F(F(y, A), F(z, F(B, z)))

    { B | y } -> p = F(F(B, A), F(u, F(B, A)))  q = F(F(B, A), F(z, F(B, z)))

    { A | z } -> p = F(F(B, A), F(u, F(B, A)))  q = F(F(B, A), F(A, F(B, A)))  

    { A | u } -> p = F(F(B, A), F(A, F(B, A)))   q = F(F(B, A), F(A, F(B, A)))

    s = { F(y, A)|x , B|y , A|z, A|u } -> { F(B, A)|x , B|y , A|z, A|u }

    c. Unify:

    p = F(x 1, G(x 2, x 3), x 2, B) and q = F(G(H(A, x 5), x 2), x 1, H(A, x 4), x 4)

    s = { G(H(A, x 5), x 2) | x 1 } -> p = F(G(H(A, x 5), x 2), G(x 2, x 3), x 2, B) , q = F(G(H(A, x 5), x 2), G(H(A, x 5), x 2), H(A, x 4), x 4)

    { H(A, x 5) | x 2 } -> p = F(G(H(A, x 5), H(A, x 5)), G(H(A, x 5), x 3), H(A, x 5), B) ,   q = F(G(H(A, x 5), H(A, x 5)), G(H(A, x 5), H(A, x 5)), H(A, x 4), x 4)

    { H(A, x 5) | x 3 } -> p = F(G(H(A, x 5), H(A, x 5)), G(H(A, x 5), H(A, x 5)), H(A, x 5), B) , q = F(G(H(A, x 5), H(A, x 5)), G(H(A, x 5), H(A, x 5)), H(A, x 4), x 4)

    { x 5 | x 4 } -> p = F(G(H(A, x 5), H(A, x 5)), G(H(A, x 5), H(A, x 5)), H(A, x 5), B) , q = F(G(H(A, x 5), H(A, x 5)), G(H(A, x 5), H(A, x 5)), H(A, x 5), x 5)

    { B | x 5 } -> p = F(G(H(A, B), H(A, B)), G(H(A, B), H(A, B)), H(A, B), B) , q = F(G(H(A, B), H(A, B)), G(H(A, B), H(A, B)), H(A, B), B)

    s = { G(H(A, x 5), x 2)|x 1 , H(A, x 5)|x 2 , H(A, x 5)|x 3 , x 5|x 4 , B|x 5 }  ->{ G(H(A, B), H(A, B))|x 1 , H(A, B)|x 2 , H(A, B)|x 3 , B|x 4 , B|x 5 }

    [Back to top]

    7. (20 pts.) Put the following FOPL formulas into clause form (CNF).

      a. "x "y ( (P(x) ^ Q(y)) Þ $z R(x, y, z) )

      b. $x "y $z (P(x) => (Q(y) => R(z)) )

    Strategy Steps:

    0. Original sentence
    1. Remove implication: P => Q º ~P V Q
    2. Push ~ to atomic level using de Morgan’s Laws:
        Ø(P ^ Q) º ~P V ~Q
        ~(P V Q) º ~P ^ ~Q
        Ø" x f(x) º $ x ~f(x)
        Ø$ x f(x) º " x ~f(x)
    3. Remove double negation:~ ~P º P
    4. Standardize quantified variables so unique names: "x f(x) º "y f(y)
    5. Since now unique variable names, can move quantifiers to start of expression.
    6. Eliminate $ quantifiers using Skolemization. Note that Skolem function is over variables corresponding to " quantifiers that are to the left of the $ quantifier.
    7. Drop the " quantifiers, keeping in mind that all variables are now universally quantified.
    8. Distribute V over ^ P V (Q ^ R) º (P V Q) ^ (P V R)
    9. Write each conjunct as a separate clause, renaming variables.
    10. Convert to imperative normal form (INF)
       a. Group negated terms to left (disjunction is commutative and associative).
       b. Convert disjunction of negated terms to a negation of a group of conjuncts.
       c. Add implication.

    a. "x "y ( (P(x) ^ Q(y)) => $z R(x, y, z) ) (Step 0)
    º "x "y ( ~(P(x) ^ Q(y)) V $z R(x, y, z) ) (Step 1)
    º "x "y ( (~P(x) V ~Q(y)) V $z R(x, y, z) ) (Step 2)
    º "x "y $z ( (~P(x) V ~Q(y)) V R(x, y, z) ) (Step 5)
    º "x "y ( (~P(x) V ~Q(y)) V R(x, y, Skf(x,y)) ) (Step 6–$z is in scope of "x and "y)
    º (~P(x) V ~Q(y)) V R(x, y, Skf(x,y)) (Step 7)
    º ~(P(x) ^ Q(y)) V R(x, y, Skf(x,y)) (Step 10b)
    º (P(x) ^ Q(y)) => R(x, y, Skf(x,y)) (Step 10c)  

    b. $x "y $z (P(x) Þ (Q(y) => R(z)) ) (Step 0)
    º $x "y $z (~P(x) V (Q(y) => R(z)) ) (Step 1)
    º $x "y $z (~P(x) V (~Q(y) V R(z)) ) (Step 1)
    º "y $z (~P(A) V (~Q(y) V R(z)) ) (Step 6–$x is not in scope of any ")
    º "y (~P(A) V (~Q(y) V R(Skf(y))) ) (Step 6–$z is in scope of "y)
    º ~P(A) V (~Q(y) V R(Skf(y))) (Step 7)
    º (~P(A) V ~Q(y)) V R(Skf(y)) (Step 10a)
    º ~(P(A) ^ Q(y)) V R(Skf(y)) (Step 10b)
    º (P(A) ^ Q(y)) => R(Skf(y)) (Step 10c)

    [Back to top]

    8 .(20 pts.) Consider the following information:

    a. Translate each of the above sentences into FOPL.
    b. Translate the resulting set of FOPL sentences into clause form (CNF).
    c. Use resolution theorem proving using the set of support strategy and Green’s trick for answer extraction to find two animals that lions can outrun.

    Constants:

    Predicates: (returns true or false)

    (a) FOPL statements

    0. (from the constant and predicate definitions)