Sep 29
The homework for Thursday is posted.
(Sorry I didn't have it up sooner -
hopefully you've been reading chapters 8 & 9
and are ready to go ...)
If this assignment is too much - and it may be,
given what I've seen of the previous ones -
maybe we should revert to a Tuesday due date
and go over the weekend. If so, the "optional"
part of this assignment ... not so much.
Look at the Colonel West example, and
what that looks like in the AIMA python library.
chap 9 - FOL inference
Your mission for this chapter is to get a "big picture" view.
We're not going to spend the time to master the implemention
of FOL deduction engines.
chap 9 ideas :
First we find ways to deal with exists() and forall() :
- exists(x) Foo(x) becomes Foo(X1) where X1 is a constant.
- Actually, X1 is a function that depends on qualifiers in previous scopes ... like "closure" in coding.
- Those are "skolemization" functions
- forall(y) G(y) becomes G(y1) , drop forall, make sure variable is unique
Then as before we either
1. use forward or backward chaining when the knowledge base is like (A & B => C)
2. or put statments into CNF and use resolution.
However, with the unbound variables floating around, matching (A | C) with (B | ~C)
means searching to find which values of the variables cause matches between clauses.
That means the search is more expensive, and branches.
The whole enterprise is a microcosm of computing itself.
Deciding in general whether a conclusion can be reached is
not possible for the same reasons that a program can solve
Turing's "halting problem".
There is in fact a programming language that uses first order
logic instead of imperative assignments :
Prolog .
next
To finish up this logic stuff, I'd like to
do some reading and discussion of what
these things look like in practice.
Possible topics :
- Prolog - Tim
- Semantic Web - Logan
- OpenCyc - Jim
- SNARK (theorem prover)
- expert systems , ontological engineer
- http://www.cryptol.net/ - prove that a crypto system is correct