/*
	Successor function on binary strings.
*/

succ(0,1) :- ! .
succ(N,M) :-
	name(N,LN),
	rev(LN,RN),
	rsucc(RN,RM),
	rev(LM,RM),
	name(M,LM).
rsucc([48|R],[49|R]) :- ! .
rsucc([49],[49,49]) :- ! .
rsucc([49|RN],[48|RM]) :-
	rsucc(RN,RM).

rev(X,Y) :- deal(X,[],Y), !.
deal(X,X,[]) .
deal(X,Y,[I|Z]) :- deal(X,[I|Y],Z).

