Late Policy:
Symbolic reasoning is one of the underlying pillars of Artificial Intelligence. The "purest" form of this is reasoning based on logic, and particularly theorem proving.
Your task is simple --in the book, Chapter 16, problem 16.4 (page 266) is an example of a little logic problem. You will write a program that can solve this problem, and can solve another problem (of our devising) which will be provided to you at a later point (near the submission date).
You will not need to write a program that takes the Natural langauge directly, rather, it will start from an encoding of the problem. To make things easier, you will not need to handle the logic symbols, instead we will use some special terms:
Therefore, a statement like "Every member of the Alpine Club is either a skier or a mountainclimber or both" could be written as:
*Prefix* *Forall* (x) *Matrix* MemberAlpineClub(x) *Implies* [ Skier(x) *Or* MountainClimber(x) ] *End*The Last statement in the input file will be what needs to be proven, and it will start with the tag *Therefore*. The set of statements needed to do problem 16.4 can be found in this text file .
NOTES
You must be able to take as input a file like the one shown above and solve, by resolution, the statement in the *Therefore* returning a variable binding (extra credit, ALL variable bindings). You will need to produce an output that shows what your system does as follows:
You will need to submit your homework with a trace of it solving a problem that will be released a couple of days before the assignment is due.
A "real" theorem prover would need to work on more complex statements -- ones with more complex prefixes and matrices. For example, problem 16.10 uses a statement where one needs more than one of each. Extend your program to handle these sorts of problems, and demonstrate on 16.10 and/or other problem of complexity beyond