X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2FmatitaTypes.ml;h=13543dbb64d081f4afd1a1a7d2f599a956a11179;hb=112afe13b5aef27425d1a0bc9c71a70b491069bf;hp=5df68ea86dca84d94d0ff52b4c86c082a9081935;hpb=8ecc9fb74f80c2f5b3e3c70f0a625e63a48292fb;p=helm.git diff --git a/helm/matita/matitaTypes.ml b/helm/matita/matitaTypes.ml index 5df68ea86..13543dbb6 100644 --- a/helm/matita/matitaTypes.ml +++ b/helm/matita/matitaTypes.ml @@ -23,160 +23,14 @@ * http://helm.cs.unibo.it/ *) +(* $Id$ *) + open Printf +open GrafiteTypes (** user hit the cancel button *) exception Cancel - (** statement invoked in the wrong context (e.g. tactic with no ongoing proof) - *) -exception Statement_error of string -let statement_error msg = raise (Statement_error msg) - -exception Command_error of string -let command_error msg = raise (Command_error msg) - - (** parameters are: option name, error message *) -exception Option_error of string * string - -exception Unbound_identifier of string - -type proof_status = - | No_proof - | Incomplete_proof of ProofEngineTypes.status - | Proof of ProofEngineTypes.proof - | Intermediate of Cic.metasenv - (* Status in which the proof could be while it is being processed by the - * engine. No status entering/exiting the engine could be in it. *) - -module StringMap = Map.Make (String) - -type option_value = - | String of string - | Int of int -type options = option_value StringMap.t -let no_options = StringMap.empty - -type ast_command = (CicNotationPt.term, GrafiteAst.obj) GrafiteAst.command - -type status = { - aliases: DisambiguateTypes.environment; - multi_aliases: DisambiguateTypes.multiple_environment; - moo_content_rev: ast_command list; - proof_status: proof_status; - options: options; - objects: (UriManager.uri * string) list; - notation_ids: CicNotation.notation_id list; -} - -let set_metasenv metasenv status = - let proof_status = - match status.proof_status with - | No_proof -> Intermediate metasenv - | Incomplete_proof ((uri, _, proof, ty), goal) -> - Incomplete_proof ((uri, metasenv, proof, ty), goal) - | Intermediate _ -> Intermediate metasenv - | Proof _ -> assert false - in - { status with proof_status = proof_status } - -let add_moo_content cmds status = - let content = status.moo_content_rev in - let content' = - List.fold_right - (fun cmd acc -> -(* prerr_endline ("adding to moo command: " ^ GrafiteAstPp.pp_command cmd); *) - match cmd with - | GrafiteAst.Interpretation _ - | GrafiteAst.Default _ -> - if List.mem cmd content then acc - else cmd :: acc - | GrafiteAst.Alias _ -> (* move Alias as the last inserted one *) - cmd :: (List.filter ((<>) cmd) acc) - | _ -> cmd :: acc) - cmds content - in -(* prerr_endline ("new moo content: " ^ String.concat " " (List.map - GrafiteAstPp.pp_command content')); *) - { status with moo_content_rev = content' } - -let dump_status status = - MatitaLog.message "status.aliases:\n"; - MatitaLog.message - (DisambiguatePp.pp_environment status.aliases ^ "\n"); - MatitaLog.message "status.proof_status:"; - MatitaLog.message - (match status.proof_status with - | No_proof -> "no proof\n" - | Incomplete_proof _ -> "incomplete proof\n" - | Proof _ -> "proof\n" - | Intermediate _ -> "Intermediate\n"); - MatitaLog.message "status.options\n"; - StringMap.iter (fun k v -> - let v = - match v with - | String s -> s - | Int i -> string_of_int i - in - MatitaLog.message (k ^ "::=" ^ v)) status.options; - MatitaLog.message "status.coercions\n"; - MatitaLog.message "status.objects:\n"; - List.iter - (fun (u,_) -> - MatitaLog.message (UriManager.string_of_uri u)) status.objects - - -let get_option status name = - try - StringMap.find name status.options - with Not_found -> raise (Option_error (name, "not found")) - -let get_string_option status name = - match get_option status name with - | String s -> s - | _ -> raise (Option_error (name, "not a string value")) - -let set_option status name value = - let mangle_dir s = - let s = Str.global_replace (Str.regexp "//+") "/" s in - let s = Str.global_replace (Str.regexp "/$") "" s in - s - in - let types = - [ "baseuri", (`String, mangle_dir); - "basedir", (`String, mangle_dir); - ] - in - let ty_and_mangler = - try - List.assoc name types - with Not_found -> command_error (sprintf "Unknown option \"%s\"" name) - in - let value = - match ty_and_mangler with - | `String, f -> String (f value) - | `Int, f -> - (try - Int (int_of_string (f value)) - with Failure _ -> - command_error (sprintf "Not an integer value \"%s\"" value)) - in - if StringMap.mem name status.options && name = "baseuri" then - command_error "Redefinition of 'baseuri' is forbidden." - else - { status with options = StringMap.add name value status.options } - - (* subset of MatitaConsole.console methods needed by MatitaInterpreter *) -class type console = - object - method clear : unit -> unit - method echo_error : string -> unit - method echo_message : string -> unit - method wrap_exn : 'a. (unit -> 'a) -> 'a option - method choose_uri : string list -> string - method show : ?msg:string -> unit -> unit - end - type abouts = [ `Blank | `Current_proof @@ -218,4 +72,3 @@ class type mathViewer = method show_uri_list: ?reuse:bool -> entry:mathViewer_entry -> UriManager.uri list -> unit end -