use new MaSh command-line arguments
authorblanchet
Wed, 21 Aug 2013 09:25:40 +0200
changeset 542542381bdf47ba5
parent 54253 b1907f6b3c86
child 54255 3f290031bd9e
use new MaSh command-line arguments
src/HOL/Tools/Sledgehammer/sledgehammer_mash.ML
     1.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_mash.ML	Wed Aug 21 09:25:40 2013 +0200
     1.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_mash.ML	Wed Aug 21 09:25:40 2013 +0200
     1.3 @@ -138,6 +138,9 @@
     1.4  
     1.5  (*** Low-level communication with MaSh ***)
     1.6  
     1.7 +val save_models_arg = "--saveModels"
     1.8 +val shutdown_server_arg = "--shutdownServer"
     1.9 +
    1.10  fun wipe_out_file file = (try (File.rm o Path.explode) file; ())
    1.11  
    1.12  fun write_file banner (xs, f) path =
    1.13 @@ -145,7 +148,7 @@
    1.14     xs |> chunk_list 500 |> List.app (File.append path o implode o map f))
    1.15    handle IO.Io _ => ()
    1.16  
    1.17 -fun run_mash_tool ctxt overlord write_cmds read_suggs =
    1.18 +fun run_mash_tool ctxt overlord extra_args write_cmds read_suggs =
    1.19    let
    1.20      val (temp_dir, serial) =
    1.21        if overlord then (getenv "ISABELLE_HOME_USER", "")
    1.22 @@ -165,6 +168,7 @@
    1.23        " --modelFile=" ^ model_dir ^ "/model.pickle" ^
    1.24        " --dictsFile=" ^ model_dir ^ "/dict.pickle" ^
    1.25        " --log " ^ log_file ^ " " ^ core ^
    1.26 +      (if extra_args = [] then "" else " " ^ space_implode " " extra_args) ^
    1.27        " >& " ^ err_file
    1.28      fun run_on () =
    1.29        (Isabelle_System.bash command
    1.30 @@ -216,8 +220,6 @@
    1.31  
    1.32  val encode_features = map encode_feature #> space_implode " "
    1.33  
    1.34 -val str_of_saveless_shutdown = "S\n"
    1.35 -
    1.36  fun str_of_learn (name, parents, feats, deps) =
    1.37    "! " ^ encode_str name ^ ": " ^ encode_strs parents ^ "; " ^
    1.38    encode_features feats ^ "; " ^ encode_strs deps ^ "\n"
    1.39 @@ -251,7 +253,7 @@
    1.40  fun unlearn ctxt =
    1.41    let val path = mash_model_dir () in
    1.42      trace_msg ctxt (K "MaSh unlearn");
    1.43 -    run_mash_tool ctxt false ([()], K str_of_saveless_shutdown);
    1.44 +    run_mash_tool ctxt false [shutdown_server_arg] ([], K "");
    1.45      try (File.fold_dir (fn file => fn _ =>
    1.46                             try File.rm (Path.append path (Path.basic file)))
    1.47                         path) NONE;
    1.48 @@ -262,17 +264,19 @@
    1.49    | learn ctxt overlord learns =
    1.50      (trace_msg ctxt (fn () => "MaSh learn " ^
    1.51           elide_string 1000 (space_implode " " (map #1 learns)));
    1.52 -     run_mash_tool ctxt overlord (learns, str_of_learn) (K ()))
    1.53 +     run_mash_tool ctxt overlord [save_models_arg] (learns, str_of_learn)
    1.54 +                   (K ()))
    1.55  
    1.56  fun relearn _ _ [] = ()
    1.57    | relearn ctxt overlord relearns =
    1.58      (trace_msg ctxt (fn () => "MaSh relearn " ^
    1.59           elide_string 1000 (space_implode " " (map #1 relearns)));
    1.60 -     run_mash_tool ctxt overlord (relearns, str_of_relearn) (K ()))
    1.61 +     run_mash_tool ctxt overlord [save_models_arg] (relearns, str_of_relearn)
    1.62 +                   (K ()))
    1.63  
    1.64 -fun query ctxt overlord max_suggs (query as (learns, hints, _, feats)) =
    1.65 +fun query ctxt overlord max_suggs (query as (_, _, _, feats)) =
    1.66    (trace_msg ctxt (fn () => "MaSh query " ^ encode_features feats);
    1.67 -   run_mash_tool ctxt overlord ([query], str_of_query max_suggs)
    1.68 +   run_mash_tool ctxt overlord [] ([query], str_of_query max_suggs)
    1.69         (fn suggs =>
    1.70             case suggs () of
    1.71               [] => []