test(instantiated_call, [nondet]) :-
my_member(a, [a, b, c]).
test(partly_instantiated, [nondet]) :-
my_member(_, [a, b, c]).
test(partly_instantiated_not_conform, [nondet, throws(_)]) :-
% second argument is not a list
my_member(a, _).
test(partly_instantiated3, [nondet]) :-
my_member(c, [a, _, c]).
test(all_variables_not_conform, [nondet, throws(_)]) :-
my_member(_, _).
test(not_conform, [throws(_)]) :-
my_member([], a).
test(nonconform_call, [throws(_)]) :-
my_compound_foo(foo(_)).
test(not_conform, [throws(_)]) :-
my_compound_foo(bar(_)).
test(conform_var, [throws(_)]) :-
my_tuple_with_incorrect_spec([a, _]).
test(conform_var2, [throws(_)]) :-
my_tuple_with_incorrect_spec([_, a]).
test(nonconform_both_var, [throws(_)]) :-
my_tuple_with_incorrect_spec([_, _]).
test(conform, [nondet]) :-
atom_member(a, [a,b,c]).
test(not_conform, [throws(_)]) :-
atom_member(a, X), !,
X = [a,b,c].
test(not_conform2, [throws(_)]) :-
atom_member(a, [a,_|_]).
test(not_conform3, [throws(_)]) :-
atom_member(a, [1,_|_]).
test(not_conform1, [throws(_)]) :-
my_atomic(foo(_)).
test(not_conform2, [throws(_)]) :-
\+ my_atomic([_]).
test(not_conform3, [throws(_)]) :-
my_atomic([[2]]).
test(not_conform4, [throws(_)]) :-
\+ my_atomic([_]).
test(nonconform, [throws(_)]) :-
my_or_test(_).
test(nonconform, [throws(_)]) :-
my_and_test([1]).
test(nonconform2, [throws(_)]) :-
my_and_test(_).
test(nonconform, [throws(_)]) :-
invariant_violator(_).
test(conform, [nondet]) :-
partial_instantiator([_,_]).
test(conform2, [nondet]) :-
partial_instantiator([X, _]), X == 1.
test(conform3, [nondet]) :-
partial_instantiator([_, 2]).
test(conform4, [nondet]) :-
partial_instantiator([1, 2]).
test(nonconform, [throws(_)]) :-
partial_instantiator([a, 2]).
test(nonconform2, [throws(_)]) :-
findall(A, partial_instantiator(A), _).
test(postcondition_violated, [throws(_)]) :-
bind_to_zero(_).