Вы предоставили код, но не шаги, которые вы предприняли для его запуска, поэтому мне придется угадывать причину вашей проблемы.Простейшим объяснением было бы то, что вы не ввели команду reset для подтверждения фактов в ваших current-lib недостатках.
Я внес несколько изменений в ваш код,В ваших current-lib ошибках имена авторов должны быть строками, так как вы используете readline в вашем add-book правиле для получения имен.В условиях вашего правила add-book также есть ненужный код.
CLIPS (6.31 2/3/18)
CLIPS>
(deftemplate book
(slot name)
(slot author) (slot code))
CLIPS>
(deffacts current-lib
(book (name "Alice in Wonderland") (author "Lewis Carroll") (code CAR))
(book (name "The Bourne Supremacy") (author "Robert Ludlum") (code LUD)))
CLIPS>
(defrule readnew
=>
(printout t "Enter the name of the book:" crlf)
(bind ?b_name (readline))
(assert (potential ?b_name)))
CLIPS>
(defrule add-book
?out <- (potential ?newname)
(not (book (name ?newname)))
=>
(printout t "Book is new, please enter the author's name:" crlf)
(bind ?auth (readline))
(printout t "Please enter a three letter code for the book:" crlf)
(bind ?coode (read))
(assert (book (name ?newname) (author ?auth) (code ?coode)))
(retract ?out))
CLIPS>
Теперь, если вы добавите несуществующую книгу, вас попросят ввести дополнительнуюинформация.
CLIPS> (reset)
CLIPS> (run)
Enter the name of the book:
Ringworld
Book is new, please enter the author's name:
Larry Niven
Please enter a three letter code for the book:
RNG
CLIPS>
Если вы попытаетесь добавить несуществующую книгу, правило add-book не будет выполнено.
CLIPS> (reset)
CLIPS> (run)
Enter the name of the book:
Alice in Wonderland
CLIPS>