open Lambda4;; open Util;; (* Syntax for problem files in problem/ folder: - dollar ($) on newline begin new problem $! means that the problem is expected to be separable, $? means that it is expected to be unseparable - (#) on new line comment line - (D) (C) (N) stand respectively for divergent, convergent, numeric - lines starting with spaces inherit the type from the last line *) (* assert_depends solves the problem, and checks if the result was expected *) let assert_depends x = let c = String.sub (label_of_problem x) 0 1 in match solve x with | `Unseparable s when c = "!" -> failwith ("assert_depends: unseparable because: " ^ s ^ ".") | `Separable _ when c = "?" -> failwith ("assert_depends: separable.") | _ -> () ;; (* TODO *) (* div under a lambda in conv *) if Array.length Sys.argv = 1 then failwith "no command line args. Please use e.g. ./a.out problems/*" else Array.iteri (fun i filename -> if i > 0 then List.iter (assert_depends ++ problem_of) (Parser.from_file filename) ) Sys.argv ;;