Annotated using CiaoPP:
:- mode(rev/2, [+,-]).
:- mode(app/3, [+,+,-]).
:- measure(rev/2, [length,length]).
:- measure(app/3, [length,length,length]).
%complexity: rev(i,o).
%% rev(Xs, Ys) :- Ys is the result of reversing the list Xs. 
%%

%TWTYPES     :- type rev(list,list).

rev([], []).
rev([X | Xs], Ys) :- rev(Xs, Zs), app(Zs, [X], Ys).

%TWTYPES     :- type app(list,list,list).

app([],X,X).
app([X|Xs],Ys,[X|Zs]) :-
	app(Xs,Ys,Zs).


/*TWDESC

 rev(Xs, Ys) :- Ys is the result of reversing the list Xs. 

*/


/*TWTYPES

list([]).
list([X|Xs]) :-
	poly(X),
	list(Xs).

poly(dummy).
*/


/*TWDEMO

selected_norms([list,poly]).

query(rev(b,f,f,f)).
query(rev(f,b,f,f)).
query(app(b,f,f,f,f,f)).
query(app(f,b,f,f,f,f)).
query(app(f,f,f,f,b,f)).
query(app(f,f,f,f,f,b)).


*/



Caslog 1.0, April 1992.

* Mutually exclusive classes of clauses for predicate app/3 :

[[1],[2]]

* Size functions for predicate app/3 :

[$(1),$(2),$(2)+ $(1)]

* Relation functions for predicate app/3 :

[inf]

* Solution functions for predicate app/3 :

[1]

* Time functions for predicate app/3 :

[$(1)+1]

* Mutually exclusive classes of clauses for predicate rev/2 :

[[1],[2]]

* Size functions for predicate rev/2 :

[$(1),$(1)]

* Relation functions for predicate rev/2 :

[inf]

* Solution functions for predicate rev/2 :

[1]

* Time functions for predicate rev/2 :

[0.5*exp($(1),2)+1.5* $(1)+1]

{Exexution Time: 4.0 msec}

{End of Caslog execution.}