Clause retrival and information

These predicates enable the contents of the database to be inspected during execution.

The examples provided for these predicates assume the database has been created from the following Prolog theory.

1. clause/2

clause(Head, Body) is true iff:

clause(Head, Body) is re-executable.

Note that the process of converting a clause to a term produces a renamed copy of the term H :- B corresponding to the clause.

Templates and modes for the predicate are as follows:

clause(+head, ?callable_term)

1.1 Example tests

Let's then ask the engine to solve a query against the database, and check variable bindings.

GoalTheorysuccess(String goal,String theory)
clause(cat, true).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).true
clause(dog, true).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).true
clause(legs(I, 6), Body).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).true

GoalTheorysuccess(String goal,String theory)
clause(x, Body).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).false
clause(legs(A, 6), insect(f(A))).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).false
Goal Theory Variable Solution success(String goal,String theory,String variable,Strng solution)
clause(legs(I, 6), Body).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).Bodyinsect(I)true
clause(legs(C, 7), Body).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).Body','(C,call(C))true
clause(insect(I), T).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).Ianttrue
clause(insect(I), T).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).Ttruetrue
clause(insect(I), T).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).Ibeetrue
clause(insect(I), T).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).Ttruetrue
GoalTheorysuccess(String goal)Type Of Error
clause(_, B).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).true
clause(4, X).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).true
clause(elk(N), Body).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).true
clause(atom(_), Body).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).true

2. current_predicate/1

current_predicate(PI) is true iff PI is a predicate indicator for one of the user-defined procedures in the database.

current_predicate(PI) is re-executable.

Note that all user-defined procedures are found, whether static or dynamic. A user-defined procedure is also found even when it has no clauses. A user-defined procedure is not found if it has been abolished.

Templates and modes for the predicate are as follows:

current_predicate(?predicate_indicator)

2.1 Example tests

GoalTheorysuccess(String goal,String theory)
current_predicate(dog/0).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).true

GoalTheorysuccess(String goal,String theory)
current_predicate(current_predicate/1).nullfalse
current_predicate(foo/A).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).false
Goal Theory Variable Solution success(String goal,String theory,String variable,Strng solution)
current_predicate(elk/Arity).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).Arity1true
current_predicate(Name/1).:- dynamic(cat/0). cat. :- dynamic(dog/0). dog :- true. elk(X) :- moose(X). :- dynamic(legs/2). legs(A, 6) :- insect(A). legs(A, 7) :- A, call(A). :- dynamic(insect/1). insect(ant). insect(bee).Nameelktrue