built-in predicate

specializes_class/2-3

Description

specializes_class(Class, Superclass)
specializes_class(Class, Superclass, Scope)

Enumerates, by backtracking, all pairs of objects such that the first one specializes the second. The relation scope is represented by the atoms public, protected, and private.

Modes and number of proofs

specializes_class(?object_identifier, ?object_identifier) - zero_or_more
specializes_class(?object_identifier, ?object_identifier, ?scope) - zero_or_more

Errors

Class is neither a variable nor a valid object identifier:
type_error(object_identifier, Class)
Superclass is neither a variable nor a valid object identifier:
type_error(object_identifier, Superclass)
Scope is neither a variable nor an atom:
type_error(atom, Scope)
Scope is an atom but an invalid entity scope:
domain_error(scope, Scope)

Examples

% enumerate the state_space subclasses:
| ?- specializes_class(Subclass, state_space).

% enumerate the state_space subclasses where the
% specialization relation is public:
| ?- specializes_class(Subclass, state_space, public).