:- expects_dialect(lps). fluents left(_Position), right(_Position), searching(_Content). initially left(0), right(9), searching(60). actions sample(_Position). events do_sample/0. %a(Position,Content) a(0,10). a(1,12). a(2,20). a(3,25). a(4,30). a(5,31). a(6,35). a(7,60). a(8,65). a(9,500). found(I) at T if left(I) at T, right(I) at T. do_sample if left(L), right(R), Mid is (R+L) div 2, sample(Mid). if not found(_) then do_sample. sample(Pos) initiates left(Mid1) if searching(X), a(Pos,AX), AX=X. sample(Pos) terminates right(_) if searching(X), a(Pos,AX), AX>=X.