Navigation  without Java Scripts

Virtual Predicates

Class member predicates (facts) can be declares either in class declarations or in class implementations.

All predicates (facts) declared in class declarations are virtual predicates (facts). Opposite, all predicates (facts) declared in class implementations become non-virtual.

Virtual predicates (facts) allow providing different versions of base class predicates (facts) in derived classes. You can declare a virtual predicate (fact) in a base class and then redefine its clauses in any derived class.

Note that if you define a predicate in a derived class with the same name as in the parent class but with the different domains or number of arguments, then Prolog will treat this predicate as a different predicate.

See also