test('testpgs/append.pl','append', monotype, 
     [Xs/list(integer),Ys/list(list(integer))], append(Xs,Ys,Zs) ).

test(	'test_progs/qsDList.pl','Quick Sort with D-List',
	monotype,
	[Xs/list(integer)],
	quicksort(Xs,Ys) ).

test(	'test_progs/connect.pl','Graph Connectivity',
	monotype,
	[X/point],
	connected(X,Y)).     

test(	'test_progs/merge.pl','merge',
	monotype,
	[Xs/list(integer),Ys/list(float)],
        merge(Xs,Ys,Zs) ).


test(	'test_progs/bugNrev.pl','Buggy Naive Reverse',
	monotype,
	[X/list(integer)],
	nrev(X,Y) ).
	 
test(	'test_progs/buggyqs.pl','Buggy Quick Sort', 
	monotype,
	[Li/list(nat)],
        qs(Li,Lo) ).

test(	'test_progs/iqs.pl','Improved Quick Sort',
	monotype,
	[Xs/list(integer)],
        iqsort(Xs,Ys) ).     

test(	'test_progs/treesort.pl','Tree Sort',
	monotype,
	[Xs/list(integer)],
        treesort(Xs,Ys) ).

test(	'test_progs/lstDiff.pl','List Difference',
	monotype,
	[Y/list(integer),Z/list(float)],
	diff(X,Y,Z) ).

test(	'test_progs/insert.pl','List Insertion',
	monotype,
	[X/nat,Y/list(nat)],	
	insert(X,Y,Z) ).

test(	'test_progs/icSort.pl','Interchange Sort',
	monotype,
	[Xs/list(integer)],
	sort(Xs,Ys) ).     

test(	'test_progs/permSort.pl','Permutation Sort',
	monotype,
	[Xs/list(integer)],
	sort(Xs,Ys) ).
		
test(	'test_progs/heapify.pl','Heapify Binary Trees',
	monotype,
	[T/tree(integer)],
	heapify(T,H) ).     

test(	'test_progs/exponent.pl','Exponentiation',
	monotype,
	[N/nat,X/nat],
	exp(N,X,Y) ).     

test(	'test_progs/fact.pl','Factorial',
	monotype,
	[N/nat],
	factorial(N,F) ).     


test('test_progs/read.pl', 'read', monotype, [], read(X,Y) ).
test('test_progs/queens.pl', 'queens', monotype,[], queens(X,Y) ).
test('test_progs/ronp.pl', 'ronp',  monotype, [], puzzle(X) ).
test('test_progs/nandc.pl', 'naughts-and-crosses', 
     monotype, [], play(R) ). % good example 
test('test_progs/semi.pl', 'semi',  monotype, [], go(N,T) ).

test('test_progs/lookup.pl','Dictionary Lookup', monotype, 
      [K/integer,D/dictionary(integer,string)],
      lookup(K,D,V) ).     
test('test_progs/zebra.pl', 'zebra', monotype, [], zebra(E,S,J,U,N,Z,W) ). 
test('test_progs/neural.pl', 'neural',  monotype, [], go ).



%test('test_progs/disj_r.pl', 'disj_r',  monotype, [], top(K) ).
%test('test_progs/tsp.pl', 'tsp', monotype,[], tsp(N,V,M,S,C) ).
%too big abstract substitutions, widening is needed
%test('test_progs/chat.pl', 'chat', monotype, [],  chat_parser ).


test('test_progs/dnf.pl', 'dnf', monotype, [], go ).
test('test_progs/treeorder.pl', 'tree order', 
     monotype, [X/list(atom),Y/list(string)], v2t(X,Y,Z) ). 
test('test_progs/serialize.pl', 'serialize', monotype, [], go(S) ). 
test('test_progs/cs_r.pl', 'cs_r',  monotype, [], pgenconfig(C) ).

% test('test_progs/kalah.pl', 'kalah',  monotype, [], play(G,R) ).

/*

%test('test_progs/press.pl', 'press', monotype, [], test_press(X,Y) ).
%constraint program

%test('test_progs/peep.pl', 'peep', monotype, [], comppeepopt(Pi,O,Pr) ).
% too many untyped function symbols 

%test('test_progs/gabriel.pl', 'gabriel',  monotype, [], main(V1,V2) ).
% untyped function symbols

%test('test_progs/tictactoe.pl', 'tictactoe',  monotype, [], play(G) ).
% containing assert/1

%test('test_progs/ann.pl', 'ann',  monotype, [], go(G) ).
%too many untyped function symbols and $VAR 

%test('test_progs/boyer.pl', 'boyer', monotype, [], tautology(Wff) ).
%too many untyped function symbols

%test('test_progs/mastermind.pl', 'mastermind', monotype, [], play ).
% assert/1 and retract/1

%test('test_progs/nand.pl', 'nand',  monotype, [], main(N) ).
%recorda/1, recorded/1

test('test_progs/asm.pl', 'asm',  asm_PIL(P,O) ).
test('test_progs/life.pl', 'life',  lift(MR,MC,LC,SFG) ).
test('test_progs/meta.pl', 'meta',  interpret(G) ).
test('test_progs/nbody.pl', 'nbody',  go(M,G) ).
test('test_progs/sdda.pl', 'sdda',  do_sdda(test,A,B,C) ).
test('test_progs/simple_analyzer.pl', 'simple_analyzer',  main(N) ).
test('test_progs/reducer.pl', 'reducer',  try(X,Y) ).
test('test_progs/browse.pl', 'browse',  q ).
test('test_progs/ga.pl', 'ga',  test_ga ).

*/











