X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fgrafite_engine%2FgrafiteTypes.ml;h=96ae9acfd0aebe334432140ef9dae4e7925326ad;hb=779859f7a9e317e378d258897c289f447adea7ad;hp=6a57c4a003f4e134be9a636e5de75987dbc6733c;hpb=5c8de084e314e41f3dc2f605f6242283e930b803;p=helm.git diff --git a/helm/software/components/grafite_engine/grafiteTypes.ml b/helm/software/components/grafite_engine/grafiteTypes.ml index 6a57c4a00..96ae9acfd 100644 --- a/helm/software/components/grafite_engine/grafiteTypes.ml +++ b/helm/software/components/grafite_engine/grafiteTypes.ml @@ -44,112 +44,45 @@ type proof_status = (* 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. *) -type ng_status = - | ProofMode of NTacStatus.tac_status - | CommandMode of NEstatus.extra_status - -type status = { - moo_content_rev: GrafiteMarshal.moo; - proof_status: proof_status; - objects: UriManager.uri list; - coercions: CoercDb.coerc_db; - automation_cache:AutomationCache.cache; - baseuri: string; - ng_status: ng_status; -} - -let get_lexicon x = - match x.ng_status with - | ProofMode t -> t.NTacStatus.istatus.NTacStatus.estatus.NEstatus.lstatus - | CommandMode e -> e.NEstatus.lstatus -;; - -let set_lexicon new_lexicon_status new_grafite_status = - { new_grafite_status with ng_status = - match new_grafite_status.ng_status with - | CommandMode estatus -> - CommandMode - { estatus with NEstatus.lstatus = new_lexicon_status } - | ProofMode t -> - ProofMode - { t with NTacStatus.istatus = - { t.NTacStatus.istatus with NTacStatus.estatus = - { t.NTacStatus.istatus.NTacStatus.estatus with NEstatus.lstatus = - new_lexicon_status }}}} -;; - -let set_coercions db new_grafite_status = - { new_grafite_status with ng_status = - match new_grafite_status.ng_status with - | CommandMode estatus -> - CommandMode - { estatus with NEstatus.rstatus = - { estatus.NEstatus.rstatus with NRstatus.coerc_db = db }} - | ProofMode t -> - ProofMode - { t with NTacStatus.istatus = - { t.NTacStatus.istatus with NTacStatus.estatus = - { t.NTacStatus.istatus.NTacStatus.estatus with NEstatus.rstatus = - { t.NTacStatus.istatus.NTacStatus.estatus.NEstatus.rstatus with NRstatus.coerc_db = db - }}}}} -;; - -let get_estatus x = - match x.ng_status with - | ProofMode t -> t.NTacStatus.istatus.NTacStatus.estatus - | CommandMode e -> e -;; - -let set_estatus e x = - { x with ng_status = - match x.ng_status with - ProofMode t -> - ProofMode - {t with NTacStatus.istatus = - {t.NTacStatus.istatus with NTacStatus.estatus = e}} - | CommandMode _ -> CommandMode e} -;; - -let get_rstatus x = (get_estatus x).NEstatus.rstatus;; - -let get_hstatus x = (get_rstatus x).NRstatus.uhint_db;; - -let get_library_db x = (get_rstatus x).NRstatus.library_db;; - -let get_dump x = (get_rstatus x).NRstatus.dump;; - -let set_rstatus h x = - let estatus = get_estatus x in - set_estatus { estatus with NEstatus.rstatus = h } x -;; - -let set_hstatus h x = - let rstatus = get_rstatus x in - set_rstatus { rstatus with NRstatus.uhint_db = h} x -;; - -let set_library_db h x = - let rstatus = get_rstatus x in - set_rstatus { rstatus with NRstatus.library_db = h} x -;; - -let set_dump h x = - let estatus = get_estatus x in - set_estatus - { estatus with NEstatus.rstatus = - { estatus.NEstatus.rstatus with - NRstatus.dump = h}} - x -;; +class status = fun (b : string) -> + let fake_obj = + NUri.uri_of_string "cic:/matita/dummy.decl",0,[],[], + NCic.Constant([],"",None,NCic.Implicit `Closed,(`Provided,`Theorem,`Regular)) + in + object + val moo_content_rev = ([] : GrafiteMarshal.moo) + val proof_status = No_proof + val objects = ([] : UriManager.uri list) + val coercions = CoercDb.empty_coerc_db + val automation_cache = AutomationCache.empty () + val baseuri = b + val ng_mode = (`CommandMode : [`CommandMode | `ProofMode]) + method moo_content_rev = moo_content_rev + method set_moo_content_rev v = {< moo_content_rev = v >} + method proof_status = proof_status + method set_proof_status v = {< proof_status = v >} + method objects = objects + method set_objects v = {< objects = v >} + method coercions = coercions + method set_coercions v = {< coercions = v >} + method automation_cache = automation_cache + method set_automation_cache v = {< automation_cache = v >} + method baseuri = baseuri + method set_baseuri v = {< baseuri = v >} + method ng_mode = ng_mode; + method set_ng_mode v = {< ng_mode = v >} + (* Warning: #stack and #obj are meaningful iff #ng_mode is `ProofMode *) + inherit ([Continuationals.Stack.t] NTacStatus.status fake_obj (Continuationals.Stack.empty)) + end let get_current_proof status = - match status.proof_status with + match status#proof_status with | Incomplete_proof { proof = p } -> p | Proof p -> p | _ -> raise (Statement_error "no ongoing proof") let get_proof_metasenv status = - match status.proof_status with + match status#proof_status with | No_proof -> [] | Proof (_, metasenv, _, _, _, _) | Incomplete_proof { proof = (_, metasenv, _, _, _, _) } @@ -157,15 +90,15 @@ let get_proof_metasenv status = metasenv let get_stack status = - match status.proof_status with + match status#proof_status with | Incomplete_proof p -> p.stack | Proof _ -> Continuationals.Stack.empty | _ -> assert false let set_stack stack status = - match status.proof_status with + match status#proof_status with | Incomplete_proof p -> - { status with proof_status = Incomplete_proof { p with stack = stack } } + status#set_proof_status (Incomplete_proof { p with stack = stack }) | Proof _ -> assert (Continuationals.Stack.is_empty stack); status @@ -173,7 +106,7 @@ let set_stack stack status = let set_metasenv metasenv status = let proof_status = - match status.proof_status with + match status#proof_status with | No_proof -> Intermediate metasenv | Incomplete_proof ({ proof = (uri, _, subst, proof, ty, attrs) } as incomplete_proof) -> Incomplete_proof @@ -181,26 +114,26 @@ let set_metasenv metasenv status = | Intermediate _ -> Intermediate metasenv | Proof (_, metasenv', _, _, _, _) -> assert (metasenv = metasenv'); - status.proof_status + status#proof_status in - { status with proof_status = proof_status } + status#set_proof_status proof_status let get_proof_context status goal = - match status.proof_status with + match status#proof_status with | Incomplete_proof { proof = (_, metasenv, _, _, _, _) } -> let (_, context, _) = CicUtil.lookup_meta goal metasenv in context | _ -> [] let get_proof_conclusion status goal = - match status.proof_status with + match status#proof_status with | Incomplete_proof { proof = (_, metasenv, _, _, _, _) } -> let (_, _, conclusion) = CicUtil.lookup_meta goal metasenv in conclusion | _ -> raise (Statement_error "no ongoing proof") let add_moo_content cmds status = - let content = status.moo_content_rev in + let content = status#moo_content_rev in let content' = List.fold_right (fun cmd acc -> @@ -216,67 +149,19 @@ let add_moo_content cmds status = in (* prerr_endline ("new moo content: " ^ String.concat " " (List.map GrafiteAstPp.pp_command content')); *) - { status with moo_content_rev = content' } - -let get_baseuri status = status.baseuri;; - -(* -let get_option status name = - try - StringMap.find name status.options - with Not_found -> raise (Option_error (name, "not found")) - -let set_option status name value = - let types = [ (* no set options defined! *) ] in - let ty_and_mangler = - try List.assoc name types - with Not_found -> - command_error (Printf.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 (Printf.sprintf "Not an integer value \"%s\"" value)) - in - { status with options = StringMap.add name value status.options } - - -let get_string_option status name = - match get_option status name with - | String s -> s - | _ -> raise (Option_error (name, "not a string value")) -*) + status#set_moo_content_rev content' let dump_status status = HLog.message "status.aliases:\n"; HLog.message "status.proof_status:"; HLog.message - (match status.proof_status with + (match status#proof_status with | No_proof -> "no proof\n" | Incomplete_proof _ -> "incomplete proof\n" | Proof _ -> "proof\n" | Intermediate _ -> "Intermediate\n"); HLog.message "status.options\n"; -(* REMOVEME - StringMap.iter (fun k v -> - let v = - match v with - | String s -> s - | Int i -> string_of_int i - in - HLog.message (k ^ "::=" ^ v)) status.options; -*) HLog.message "status.coercions\n"; HLog.message "status.objects:\n"; List.iter - (fun u -> HLog.message (UriManager.string_of_uri u)) status.objects - -let get_coercions new_grafite_status = - let e = get_estatus new_grafite_status in - e.NEstatus.rstatus.NRstatus.coerc_db -;; - + (fun u -> HLog.message (UriManager.string_of_uri u)) status#objects