;;; -*- Mode: Lisp; Syntax: Common-Lisp; -*- File: logic/fol.lisp ;;;; First Order Logic (defun tell (kb sentence) "Generic TELL function adds a sentence to a knowledge base." (etypecase kb (prop-kb (prop-tell kb sentence)) (horn-kb (horn-tell kb sentence)) (fol-kb (fol-tell kb sentence)))) (defun ask (kb sentence) "Generic ASK function adds a sentence to a knowledge base." (etypecase kb (prop-kb (prop-ask kb sentence)) (horn-kb (horn-ask kb sentence)) (fol-kb (fol-ask kb sentence)))) (defun ask-pattern (kb pattern sentence) "Ask if sentence is true; if it is, substitute bindings into variables." (subst-bindings (ask kb sentence) (logic pattern))) (defun retract (kb sentence) "Generic RETRACT function adds a sentence to a knowledge base." (etypecase kb (prop-kb (prop-retract kb sentence)) (horn-kb (horn-retract kb sentence)) (fol-kb (fol-retract kb sentence)))) ;;;;