Annotated using CiaoPP: :- mode(max/3, [-,-,+]). :- mode(less/2, [-,+]). :- measure(max/3, [size,size,size]). :- measure(less/2, [size,size]). %complexity: max(o,o,i). %% max(X, Y, Z) :- Z is the maximum of the integers X and Y. %% %TWTYPES :- type max(nat,nat,nat). max(X, Y, X) :- less(Y,X). max(X, Y, Y) :- less(X,s(Y)). %TWTYPES :- type less(nat,nat). less(0, s(_)). less(s(X), s(Y)) :- less(X, Y). /*TWDESC max(X, Y, Z) :- Z is the maximum of the integers X and Y. */ /*TWTYPES nat(0). nat(s(X)) :- nat(X). */ /*TWDEMO selected_norms([nat]). query(max(b,f,f)). query(max(f,b,f)). query(max(f,f,b)). query(less(b,f)). query(less(f,b)). */ Caslog 1.0, April 1992. * Mutually exclusive classes of clauses for predicate less/2 : [[1,2]] * Size functions for predicate less/2 : [$(2)+1,$(2)] * Relation functions for predicate less/2 : [inf] * Solution functions for predicate less/2 : [$(2)] * Time functions for predicate less/2 : [2* $(2)] * Mutually exclusive classes of clauses for predicate max/3 : [[1,2]] * Size functions for predicate max/3 : [$(3)+2,$(3)+1,$(3)] * Relation functions for predicate max/3 : [inf] * Solution functions for predicate max/3 : [2* $(3)+1] * Time functions for predicate max/3 : [4* $(3)+4] {Exexution Time: 8.0 msec} {End of Caslog execution.}