X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=components%2Fgrafite_engine%2FgrafiteEngine.ml;h=ab43c6cc18e67c0684562e4ed2a6dffeacb589bf;hb=7fcbe05896613b28b548db1785740b7cbad7ac1f;hp=b066b8ae09cafc5472a21c0bbc16b6a5625d7d21;hpb=aa576f13a6fd64586b389880dec3e47f703cd300;p=helm.git diff --git a/components/grafite_engine/grafiteEngine.ml b/components/grafite_engine/grafiteEngine.ml index b066b8ae0..ab43c6cc1 100644 --- a/components/grafite_engine/grafiteEngine.ml +++ b/components/grafite_engine/grafiteEngine.ml @@ -28,7 +28,8 @@ open Printf exception Drop -exception IncludedFileNotCompiled of string (* file name *) +(* mo file name, ma file name *) +exception IncludedFileNotCompiled of string * string exception Macro of GrafiteAst.loc * (Cic.context -> GrafiteTypes.status * Cic.term GrafiteAst.macro) @@ -153,6 +154,13 @@ let tactic_of_ast ast = | GrafiteAst.Split _ -> Tactics.split | GrafiteAst.Symmetry _ -> Tactics.symmetry | GrafiteAst.Transitivity (_, term) -> Tactics.transitivity term + (* Implementazioni Aggiunte *) + | GrafiteAst.Assume (_, id, t) -> Declarative.assume id t + | GrafiteAst.Suppose (_, t, id) -> Declarative.suppose t id + | GrafiteAst.By_term_we_proved (_, t, ty, id) -> + Declarative.by_term_we_proved t ty id + | GrafiteAst.We_need_to_prove (_, t, id) -> Declarative.we_need_to_prove t id + | GrafiteAst.Bydone (_, t) -> Declarative.bydone t (* maybe we only need special cases for apply and goal *) let classify_tactic tactic = @@ -422,8 +430,10 @@ let refinement_toolkit = { let eval_coercion status ~add_composites uri = let status,compounds = GrafiteSync.add_coercion ~add_composites refinement_toolkit status uri in - let moo_content = coercion_moo_statement_of uri in - let status = GrafiteTypes.add_moo_content [moo_content] status in + let moo_content = + List.map coercion_moo_statement_of (uri::compounds) + in + let status = GrafiteTypes.add_moo_content moo_content status in {status with GrafiteTypes.proof_status = GrafiteTypes.No_proof}, compounds @@ -516,7 +526,7 @@ let add_coercions_of_record_to_moo obj lemmas status = let obj,_ = CicEnvironment.get_cooked_obj CicUniv.empty_ugraph uri in let attrs = CicUtil.attributes_of_obj obj in - List.mem (`Class `Projection) attrs + List.mem (`Class `Coercion) attrs with Not_found -> assert false in (* looking at the fields we can know the 'wanted' coercions, but not the @@ -533,8 +543,7 @@ let add_coercions_of_record_to_moo obj lemmas status = | _ -> None) fields in - (* - prerr_endline "wanted coercions:"; + (*prerr_endline "wanted coercions:"; List.iter (fun u -> prerr_endline (UriManager.string_of_uri u)) wanted_coercions; *) @@ -543,17 +552,22 @@ let add_coercions_of_record_to_moo obj lemmas status = (HExtlib.filter_map (fun uri -> let is_a_wanted_coercion = - List.exists (UriManager.eq uri) wanted_coercions in - if is_a_coercion uri && is_a_wanted_coercion then + List.exists (UriManager.eq uri) wanted_coercions + in + if is_a_coercion uri || is_a_wanted_coercion then Some (uri, coercion_moo_statement_of uri) else None) lemmas) in - (* prerr_endline "actual coercions:"; + (*prerr_endline "actual coercions:"; + List.iter + (fun u -> prerr_endline (UriManager.string_of_uri u)) + coercions; + prerr_endline "lemmas was:"; List.iter (fun u -> prerr_endline (UriManager.string_of_uri u)) - coercions; *) + lemmas; *) let status = GrafiteTypes.add_moo_content moo_content status in {status with GrafiteTypes.coercions = coercions @ status.GrafiteTypes.coercions}, @@ -581,7 +595,7 @@ let rec eval_command = {ec_go = fun ~disambiguate_command opts status let moopath = if Sys.file_exists moopath_r then moopath_r else if Sys.file_exists moopath_rw then moopath_rw else - raise (IncludedFileNotCompiled moopath_rw) + raise (IncludedFileNotCompiled (moopath_rw,baseuri)) in let status = eval_from_moo.efm_go status moopath in status,[]