member(H,[H|L]).
member(X,[H|L]) :- member(X,L).
turing(t(X,Y,Z),S,P,t(X,Y,Z)) :- member(p(S,Y,halt,W,D),P).
turing(t(X,Y,[R|L]),S,P,T) :- member(p(S,Y,S1,W,r),P),
                              turing(t([W|X],R,L),S1,P,T).
turing(t(X,Y,[]),S,P,T) :- member(p(S,Y,S1,W,r),P),
                           turing(t([W|X],' ',[]),S1,P,T).
turing(t([X|L],Y,R),S,P,T) :- member(p(S,Y,S1,W,l),P),
                              turing(t(L,X,[W|R]),S1,P,T).
turing(t([],Y,R),S,P,T) :- member(p(S,Y,S1,W,l),P),
                           turing(t([],' ',[W|R]),S1,P,T).
