Goal: gaining familiarity with
Goals for this homework
1. Learn how to use Prover9, a state-of-the-art
theorem prover for FOL
2. Brief introduction to a different style of
programming: logic programming
3. Practice converting a planning problem into
FOL using situation calculus conventions
Step 1: Install Prover9/Mace4
Download and install Prover9/Mace4 on some machine that you will be able to
use for a while. Lab machines will not have this, but if you don’t have access to
another machine, let me know, and I will try to get this installed for you on a lab
• Also, check out the documentation and examples.
I especially recommend the “Schubert Steamroller” example, which is fairly easy to
understand. Look for it under “Prover9 Miscellany”. Another one that is fairly easy to
understand is the “Trivial set theory problem”.
The Prover9/Mace4 GUI
Step 2: Run Prover9/Mace4 on an
1. Load the Assumptions and Goals from the Schubert Steamroller problem
into Prover9/Mace4, either using the GUI or command line. I’ll explain things using
the GUI, so if you want to use the command line, you’ll need to look it up in the
2. Check to make sure the assumptions and goals are entered correctly by clicking
“Well Formed?” in the GUI.
3. In the GUI, on the right panel, you should see two Start buttons, one for Prover9
and one for Mace4. Prover9 tries to prove that the goals must logically follow from
the assumptions. Mace4 tries to find a counter-example.
Press each of the Start buttons, and record what happens in a text file called
“steamroller-output.txt”. Note that at least one of these will not succeed, so it may
take up to the given time limit (60 seconds by default).
Step 3: Run Prover9/Mace4 on a
Real Problem from Industry
One common use of theorem provers in software engineering is to verify that some
critical piece of code works correctly, or to search for a piece of code that satisfies the
input/output properties being looked for.
Your next task is to test Prover9 on this kind of industry task. We will take the problem
from the TPTP (Thousands of Problems for Theorem Provers):
TPTP format isn’t directly compatible with Prover9, so we’ll use this converted version
of a TPTP problem:
Copy and paste these axioms into the assumptions of Prover9, and run Prover9. Verify
that it can prove this. (Note: the “goals” should be empty; they have already been
included as “negative” assumptions.)
Copy the output proof from Prover9 into a text file called “swc258-output.txt”.
Step 4: Formulate your own problem
For this assignment, I will ask you to prove that
there is a solution to two games/puzzles, or find
The main task is to formulate the puzzles in
We’ll start with a simple one (next slide), and
then work up to a harder one.
Monkey and Bananas
Note: the problem is trivial for
humans, but actually somewhat hard
for monkeys and other animals.
A monkey is in a room. Suspended
from the ceiling is a bunch
of bananas, beyond the monkey's
reach. However, in the room there
are also a crate and a stick. The
ceiling is just the right height so that a
monkey standing on a crate could
knock the bananas down with the
stick, if the crate is directly below the
bananas. The monkey knows how to
move left and right, climb up and
down, pick up things, pull things left
and right, and wave a stick in the air.
How can the monkey knock the
Monkey and Bananas
Extra credit (optional, 1 point):
Examine the output of Prover9
to determine the exact sequence
of steps that Prover9 comes up
with for the plan. Save this plan
to a file called “monkeybananas-plan.txt”.
Copy your axioms and goals into
Prover9, and have it prove that a
plan exists. (You may find that
you need to correct your axioms
to make this work.) Save the
output of Prover9 to “monkeybananas-output.txt”.
1. Formulate this domain in
Situation Calculus. Store your
set of axioms and goals in a file
Step 5: Peg Solitaire: Triangle Version
Peg Solitaire consists of a board with some
pegs in it, where one of the pegs is missing.
The only action is a Jump action, which
moves one peg over top an adjacent peg,
and lands the first peg in an empty slot.
Initial Board for Triangle Peg Solitaire
The peg that was jumped over is removed
from the game.
The goal of the game is to remove all pegs
except one, and to have the final peg land
in the same spot as the initial hole.
A jump, with resulting board
The goal state:
Your task for Step 5
Write a set of assumption and goal formulas that describe the Triangle Peg
Solitaire Game. Store them in a text file called “peg-solitaire.txt”.
Hint: To help with debugging your formulation of the problem, you may want to start with a
smaller board, and not require that the final peg land in the original open spot. If you can get that
to work, then work toward the full problem.
Load these into Prover9/Mace4, and determine whether Triangle Peg Solver can
be solved. Save the results (outputs of Prover9 and Mace4) in a text file called
Note: Peg Solitaire is, in fact, solvable. However, the shortest solution takes 14 steps, with a fairly
big branching factor. I don’t know for sure whether Prover9 can actually find a solution. It’s fine to
determine that Prover9 can’t solve this, so long as you’re sure that you have formulated the
problem correctly. Just record the output saying that Prover9 couldn’t find a solution.
Extra credit (optional, 1 point): inspect the output of Prover9 to determine the
exact sequence of steps that gets from the initial state to the goal state. Save the
steps you found in a file called “peg-solitaire-plan.txt”.
To turn in
You should turn in a single zip archive called <yourname>.zip. It should contain:
• monkey-bananas.txt and monkey-bananasoutput.txt
• peg-solitaire.txt and peg-solitaire-output.txt
• If you did the extra credit, monkey-bananasplan.txt and/or peg-solitaire-plan.txt
Email or otherwise transfer this zip file to your TA.