Clause creation and destruction

These predicates enable the database to be altered during execution.

1. asserta/1

asserta(Clause) is true.

Templates and modes for the predicate are as follows:

asserta(@clause)

1.1 Example tests

The examples defined in this subsection assume the database has been created from the following Prolog text.

GoalTheorysuccess(String goal,String theory)
asserta(legs(octopus, 8)).:- dynamic(legs/2). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee).true
asserta((legs(A, 4) :- animal(A))).:- dynamic(legs/2). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee).true
asserta((foo(X) :- X, call(X))).:- dynamic(legs/2). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee).true

Tests With Exception

GoalTheorysuccess(String goal)Type Of Error
asserta(_).:- dynamic(legs/2). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee).true
asserta(4).:- dynamic(legs/2). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee).true
asserta((foo :- 4)).:- dynamic(legs/2). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee).true
asserta((atom(_) :- true)).:- dynamic(legs/2). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee).true

2. assertz/1

assertz(Clause) is true.

Templates and modes for the predicate are as follows:

assertz(@clause)

2.1 Example tests

The examples defined in this subsection assume the database has been created from the following Prolog text.

GoalTheorysuccess(String goal,String theory)
assertz(legs(spider, 8)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X).true
assertz((legs(B, 2) :- bird(B))).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X).true
assertz((foo(X) :- X -> call(X))).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X).true

Tests With Exception

GoalTheorysuccess(String goal)Type Of Error
assertz(_).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X).true
assertz(4).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X).true
assertz((foo :- 4)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X).true
assertz((atom(_) :- true)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X).true

3. retract/1

retract(Clause) is true iff the database contains at least one dynamic procedure with a clause Clause which unifies with Head :- Body.

retract(Clause) is re-executable.

Templates and modes for the predicate are as follows:

retract(+clause)

3.1 Example tests

The examples defined in this subsection assume the database has been created from the following Prolog text.

GoalTheorysuccess(String goal,String theory)
retract(legs(octopus, 8)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).true
retract((foo(C) :- A -> B)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).true

GoalTheorysuccess(String goal,String theory)
retract(legs(spider, 6)).nullfalse
retract(insect(I)), write(I), retract(insect(bee)), fail. :- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).false
retract((foo(A) :- A, call(A))).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).false

Tests With Exception

GoalTheorysuccess(String goal)Type Of Error
retract(insect(I)), write(I), retract(insect(bee)), fail. nulltrue
retract((X :- in_eec(Y))). nulltrue
retract((4 :- X)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).true
retract((atom(X) :- X == '[]')).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).true
Goal Theory Variable Solution success(String goal,String theory,String variable,Strng solution)
retract((legs(X, 2) :- T)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).Tbird(X)true
retract((legs(X, Y) :- Z)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).Y2true
retract((legs(X, Y) :- Z)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).Zanimal(X)true
retract((legs(X, Y) :- Z)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).Y6true
retract((legs(X, Y) :- Z)).:- dynamic(legs/2). legs(A, 4) :- animal(A). legs(octopus, 8). legs(A, 6) :- insect(A). legs(spider, 8). legs(B, 2) :- bird(B). :- dynamic(insect/1). insect(ant). insect(bee). :- dynamic(foo/1). foo(X) :- call(X), call(X). foo(X) :- call(X) -> call(X).Zinsect(X)true

4. abolish/1

abolish(Pred) is true.

Templates and modes for the predicate are as follows:

abolish(@predicate_indicator)

4.1 Example tests

Let's start with some simple tests verifying success of failure of single goals.

GoalTheorysuccess(String goal,String theory)
abolish(foo/2).nulltrue
GoalTheorysuccess(String goal)Type Of Error
abolish(foo/_).nulltrue
abolish(foo).nulltrue
abolish(foo(_)).nulltrue
abolish(abolish/1).nulltrue