I kludged a quick sort-of inference engine which I will use with my blips lisp general user interface. Omitting the engine itself, the facts of a nondeterministic graph search are as follows: ``` (defclass fact () ()) (defmethod combine ((a fact) (b fact)) (Values)) (defclass box (fact) ()) (defclass edge (fact) ((from-here :type 'box :initarg :from-here :reader from-here) (to-here :type 'box :initarg :to-here :reader to-here))) (defclass connexion (edge) ()) (defmethod combine ((box box) (edge edge)) (and (eq (from-here edge) box) (not typep edge 'connexion) (make-instance 'connexion :from-here box :to-here (to-here edge)))) (defmethod combine ((c1 connexion) (c2 connexion)) (when (eq (to-here c1) (from-here c2)) (make-instance 'connexion :from-here (from-here c1) :to-here (to-here c2)))) ``` Now in using blips, I often want to make a qt (quad + text class) clickable (also a class.). ``` (defvar *qt* (make-instance 'blips:qt)) ;;... (defclass cqt (blips:clickable blips:qt) ()) (change-class *qt* 'cqt) ``` In the same spirit I can ``` (defclass bcqt (box blips:cqt) ()) (change-class *qt* 'bcqt) ;;and maybe (defclass eline (edge blips:line) ()) ``` to be used in a nondeterministic search. I find this to be a reasonable computational calculus for my wants. Perhaps it is less important for languages and tasks that either are not compiled, or are often recompiled and restarted, which is not how I prefer to work. Last time I was using *prolog*, I stopped. I had thought to use prolog to express an obviously logically coherent graph search static optimization. After reflecting on the beauty of the definition of append/3, I found I could express what I wanted more coherently and conveniently through a purpose built common lisp macro DSL, while I could sketch my proofs with ACL2's deftheorem. I can see prolog being used like I had intended in the 80s. Its neglect does not make it bad, but then, I neglected it as well. ; Aside: Flurry of activity around ACL2? But did they get rid of ; that hideous javascript "documentation" app yet?