Determinate tests are tests that must succeed exactly once, leaving no choicepoints behind. The test-body supplies proper values for the input arguments and verifies the output arguments. Verification can use test-options or be explicit in the test-body. The tests in the example below are equivalent.
test(add1) :- A is 1 + 2, A =:= 3. test(add2, [true(A =:= 3)]) :- A is 1 + 2.
The test engine verifies that the test-body does not leave a choicepoint. We illustrate this using the test below:
test(member1) :- member(b, [a,b,c]).
Although this test succeeds,
member/2 leaves a choicepoint
behind, which is reported by the test harness. To make the test
silent, use one of the alternatives below.
test(member2) :- memberchk(b, [a,b,c]). test(member3) :- member(b, [a,b,c]), !. test(member4, [nondet]) :- member(b, [a,b,c]).