Annotated using CiaoPP: :- mode(app/3, [+,+,-]). :- mode(in_order/2, [+,-]). :- measure(app/3, [length,length,length]). :- measure(in_order/2, [size,length]). %complexity: in_order(i,o). %% in_order(Tree, List) :- List is a list obtained by the in_order traversal %% of the tree Tree. %TWTYPES :- type in_order(tree,list). in_order(void, []). in_order(tree(X, Left, Right), Xs) :- in_order(Left, Ls), in_order(Right, Rs), app(Ls, [X | Rs], Xs). %TWTYPES :- type app(list,list,list). app([],X,X). app([X|Xs],Ys,[X|Zs]) :- app(Xs,Ys,Zs). /*TWDESC in_order(Tree, List) :- List is a list obtained by the in_order traversal of the tree Tree. */ /*TWTYPES tree(void). tree(tree(V,L,R)) :- poly(V), tree(L), tree(R). list([]). list([X|Xs]) :- poly(X), list(Xs). poly(dummy). */ /*TWDEMO selected_norms([list,tree,poly]). query(in_order(f,b,f,f,f,f)). query(in_order(f,f,b,f,f,f)). query(app(b,f,f,f,f,f,f,f,f)). query(app(f,b,f,f,f,f,f,f,f)). query(app(f,f,f,f,f,f,b,f,f)). query(app(f,f,f,f,f,f,f,b,f)). */ 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 in_order/2 : [[1],[2]] * Size functions for predicate in_order/2 : [$(1),$(1)] * Relation functions for predicate in_order/2 : [inf] * Solution functions for predicate in_order/2 : [1] * Time functions for predicate in_order/2 : [0.5*exp($(1),2)+2.5* $(1)] {Exexution Time: 8.001 msec} {End of Caslog execution.}