fsm(Q,[],[],Q).
fsm(Q0,[X|S],[Y|T],Q) :-
	event(Q0,X,Y,Q1),
	fsm(Q1,S,T,Q).

event(even,0,0,even).
event(even,1,1,odd).
event(odd, 0,0,odd).
event(odd, 1,1,even).
