Reader contributions are solicited to expand this section.
Algernon is not Prolog. Despite the superficial
similarities, there are several important differences in the inference
algorithms used. See section 2.3 for a brief description
of the inference algorithms used in Algernon.
Avoid using the non-monotonic special forms. They are
essential in some cases, but we currently do not have a good theory
of non-monotonic reasoning so it is difficult to predict their
behavior without knowledge of the Algernon inference algorithms.
It is a good idea to create a taxonomy and link your frames
and slots into it. Setting up a large taxonomy in Algernon can be a
slow process so it is often a good idea to set up the taxonomy and
then take a ``snapshot'' of the knowledge-base (see
In general, rules should be associated with frames (instead of
slots). There are two important exceptions to this rule. First, some
rules are associated with slots because they allow Algernon to
conclude isa relations (and thus access rules). For example, it
would do little good to associate the rule:
with the set people. The second exception are rules associated
with sets of slots (e.g., rules for partial orders).
Don't try to use :taxonomy to assert that a slot belongs
to a set of slots. You can define sets of slots using
:taxonomy, but all slots should be created and defined using
:slot, and then linked to the taxonomy by asserting explicit
There is a simple theory of coreference
(reasoning about whether two frames describe the same object) that is
no longer loaded by default into the knowledge-base. Old examples
that use the coreference link may fail.