count_in_body(when(_,_),I,O) :- !, O is I+1.
count_in_body((A,B),I,O) :- !, count_in_body(A,I,X), count_in_body(B,X,O).
count_in_body((A;B),I,O) :- !, count_in_body(A,I,X), count_in_body(B,X,O).
count_in_body((A->B),I,O) :- !, count_in_body(A,I,X), count_in_body(B,X,O).
count_in_body(_,X,X).