let fix_point state =
let rec fix_point ~count =
step state
>>= fun progressed ->
let count = count + 1 in
begin match progressed with
| true -> fix_point ~count
| false -> return count
end
in
fix_point ~count:0
>>= fun (count) ->
return (`Steps count)