These primitive forms are included only to make it easy to create self-contained demonstration examples. The correct way to interact with the user is to write a user interface in Lisp and call it using :test, :bind, or :branch.
Print the contents of the frame referred to by fterm. Any slots on the list *dont-print-slots* are not printed by :show or the interface command visit-frame.
Asks user for a value for atomic-formula. If atomic-formula is ground then Algernon simply asks the user if atomic-formula is true. If the user answers yes then the atomic-formula is asserted and the :ask succeeds. If the user answers no then Algernon concludes the negation of the atomic-formula and the :ask fails.
If the atomic-formula is not ground then Algernon asks for a value for the variable in the atomic-formula. If the slot of the atomic-formula is typed to hold values from a set, and the members of the set are known, then Algernon requires the user to enter a value in the set.