For some reason Blogger isn't letting me respond to other people's comments. Sorry about that. So I'm doing it here.
Roy had three comments.
1. On the Lisp code for noughts and crosses:
"Not sure that the written explanation of the final test board makes sense. If X plays next then X plays 1 and wins. If O plays next then O plays 2 and wins. So why are we told about e.g. "If O plays 3"...?"
My response: It is X to go next. The options I document reflect the structure of the game tree from this board position onwards.
2. To the comment on the Imperial College lecture series:
"The Logic presented in Lecture 7 is strongly Classical: ¬¬P = P and ¬P v P = True. One may need to reflect on how universally applicable this is in the full AI context (e.g. Databases with incomplete information, etc)."
My response: I think that's normal for a first, undergraduate course on computational logic. There's a large and diverse literature on how to cope with more open worlds.
3. The comment on My noughts and crosses program finally works!:
"So is it : "Minimax Depth 4 solves 3 X 3 noughts and crosses" but Depth 3 might not? The "Infant's Brain" Challenge, of course, is to determine how they can succeed without calculating a complete tree/solution. Although there are errors, in general settings the (advanced) Infant performance is superior... I am not sure that ANNs are really helping understand this, as you remarked after that earlier book review."
My response: Agree that no-one really knows how toddlers brains do noughts and crosses, or most other stuff. Limitations on search depth - the *depth* parameter - put the mx-player in the hands of the heuristic evaluation function. I really did not spend a lot of time with this, either designing or testing it. It just rewards lines where you have a chance to complete and penalises lines where your opponent can, and returns the difference. One could do a lot better.
The end point would presumably be an evaluation function equivalent to the competent toddler.