Verifies that one frame is a parent of another, or returns all parents of a frame. A parent is a direct or indirect superclass.


The child frame.
Either a frame to be tested or a variable to be bound.
If the :INCLUSIVE keyword is present and the parent argument is a variable, the child will be included as one of the bindings of the variable.


  (:PARENT Rover Physical_Objects)  ;; succeeds because Rover (a dog) is a physical object
  (:PARENT Frog ?parent)            ;; retrieves all parents of Frogs
  (:PARENT Frog ?parent :INCLUSIVE) ;; retrieves Frog and all of its parents

Success criteria

The argument child must be a class or instance. If the clause is ground, succeeds if the relationship is true. If the clause is not ground, succeeds if it retrieves at least one parent.

Failure criteria

Fails if the child is not a class or instance, if the parent-child relationship is not true, or if the child has no parents.


This can generate a lot of bindings. You may want to use :DIRECT-SUPERCLASS, :DIRECT-CLASS, :SUPERCLASS or :CLASS instead.

Related commands

Back to...

Algernon commands
Algernon Documentation Central
Algernon home page