What would amb do with this kind of program:

let f_out = open_out "file1.tmp";;
output_string f_out "good\n";;
close_out;;

if (abm [(fun _ -> false); (fun _ -> true)]) then
     let f_in = open_in "file1.tmp" in
     if input_line f_in = "good" then exit 0 (* SUCCESS *)
     else raise Amb
else
      let f_out2 = open_out_get [Open_trunc] 0o777 "file1.tmp " in
      output_string f_out2 "bad\n"


?

- Tom