bsearch(X,Lo,Hi,Y):-Hi=:=Lo+1, X is Lo.
bsearch(X,Lo,Hi,Y):-Hi < Lo+1, fail.
bsearch(X,Lo,Hi,Y):-Hi>= Lo+1, Mid is (Lo+Hi)//2, 
		f(Mid, Val),
		( Val=<Y, bsearch(X,Mid,Hi,Y)
		; Val>Y,  bsearch(X,Lo,Mid,Y)
		).

go:-bsearch(X,1,100,49), nl,nl,print(X),nl.