:- g(f).
%TWTYPES :- type g(list_erk).

g(W) :-
        eq(X,[[a],[R]]),
        eq(Y,[[S,c],[]]),
        app_1(X,Y,Z),
        eq(Z,[U|V]),
        app_2(U,U,W).

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

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

%TWTYPES :- type app_2(list_erk,list_erk,list_erk).

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


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

eq(X,X).

/*TWDESC

  stuckey's list_erk

*/


/*TWTYPES

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

list_erk([]).
list_erk([X|Xs]) :-
	erk(X),
	list_erk(Xs).

erk(a).
erk(c).
erk(b(X)) :- erk(X).

*/


/*TWDEMO

selected_norms([list,list_erk,erk]).
query(g(f,f,f)).

*/
