% Quality testing for termination analysers
% All predicates terminate exception inf/0 and urepeat/0
% This is ISO compliant

myfalse :-
	myfalse(0).

myfalse(s(0)).

inf :-
	 inf.

urepeat.
urepeat :-
	urepeat.

inf_fail :-
	fail,
	inf_fail.

inf_myfalse :-
	myfalse,
	inf_myfalse.

inf_unif :-
	0=s(0),
	inf_unif.


repeat_fail.
repeat_fail :-
	fail,
	repeat_fail.

repeat_myfalse.
repeat_myfalse :-
	myfalse,
	repeat_myfalse.

repeat_unif.
repeat_unif :-
	0=s(0),
	repeat_unif.

xf_fail :-
	fail,
	inf.

xf_myfalse :-
	myfalse,
	inf.

xf_unif :-
	0 = s(0),
	inf.


