let execute_arg_list (arg_list : string list) : unit = try match arg_list with |_::tl -> ( match tl with |"help"::[] -> IO.print_to_stdout (manual ()) |"help"::tl -> raise (Invalid_argument (String.concat " " tl)) |option_list_path -> ( let default_options : Main.t_options = { verbose = false; discharge = false; undischarge = false; logic = Main.Classical; quiet = true; } in match List.rev option_list_path with |path::option_list -> ( let options : Main.t_options = options_of_string_list default_options option_list in Main.expand_and_validate_file ~options:options path ) |_ -> raise (Invalid_argument (String.concat " " option_list_path)) ) ) |_ -> raise (Invalid_argument (String.concat " " arg_list)) with |ITM_main.Parse_error e |PRF_main.Parse_error e |PRF_main.Error e |FML_main.Parse_error e -> IO.print_to_stderr_red e |Invalid_argument e -> IO.print_to_stderr (String.concat "" ["invalid argument(s): ";e;"\n";synopsis ()])