(* Binary search A classical example. Searches a sorted array for a given value v. Consult . *) module BinarySearch use import int.Int use import int.ComputerDivision use import ref.Ref use import array.Array let binary_search (a : array int) (v : int) requires { forall i1 i2 : int. 0 <= i1 < i2 < length a -> a[i1] <= a[i2] } ensures { 0 <= result <= length a } ensures { forall i: int. 0 <= i < result -> a[i] < v } ensures { result < length a -> a[result] >= v } = (* IMPORTANT: DON'T MODIFY THE ABOVE LINES *) 0 (* TODO *) end