X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fgrafite_engine%2FgrafiteSync.ml;h=5a746f41c8ee727e9346bc7daec2eaaee61f63e0;hb=ffdd3ddd6ce10a5fa0729ab407647bd46c44b9d8;hp=d318d11a73cb504b788dd98aa45cf18d66f635ba;hpb=5c1b44dfefa085fbb56e23047652d3650be9d855;p=helm.git diff --git a/helm/software/components/grafite_engine/grafiteSync.ml b/helm/software/components/grafite_engine/grafiteSync.ml index d318d11a7..5a746f41c 100644 --- a/helm/software/components/grafite_engine/grafiteSync.ml +++ b/helm/software/components/grafite_engine/grafiteSync.ml @@ -53,33 +53,19 @@ let uris_for_inductive_type uri obj = ([],1) types in uris | _ -> [uri] +;; -let add_obj refinement_toolkit uri obj status = - let lemmas = LibrarySync.add_obj refinement_toolkit uri obj in +let add_obj ~pack_coercion_obj uri obj status = + let lemmas = LibrarySync.add_obj ~pack_coercion_obj uri obj in let add_to_universe (universe,status) uri = let term = CicUtil.term_of_uri uri in - let ty,_ = CicTypeChecker.type_of_aux' [] [] term CicUniv.empty_ugraph in -(* prop filtering - let sort,_ = CicTypeChecker.type_of_aux' [] [] ty CicUniv.empty_ugraph in - prerr_endline (CicPp.ppterm term); - prerr_endline (CicPp.ppterm sort); - let tkeys = - if sort = Cic.Sort(Cic.Prop) then Universe.keys [] ty - else [] - in -*) + let ty,_ = CicTypeChecker.type_of_aux' [] [] term CicUniv.oblivion_ugraph in let tkeys = Universe.keys [] ty in let index_cmd = List.map (fun key -> GrafiteAst.Index(HExtlib.dummy_floc,(Some key),uri)) tkeys in -(* prop filtering - let universe = - if sort = Cic.Sort(Cic.Prop) then - Universe.index_term_and_unfolded_term universe [] term ty - else universe -*) let universe = Universe.index_term_and_unfolded_term universe [] term ty in let status = GrafiteTypes.add_moo_content index_cmd status in @@ -87,7 +73,7 @@ let add_obj refinement_toolkit uri obj status = in let uris_to_index = if is_a_variant obj then [] - else (uris_for_inductive_type uri obj)@lemmas + else (uris_for_inductive_type uri obj) @ lemmas in let universe,status = List.fold_left add_to_universe @@ -95,27 +81,25 @@ let add_obj refinement_toolkit uri obj status = uris_to_index in {status with - GrafiteTypes.objects = uri::status.GrafiteTypes.objects; + GrafiteTypes.objects = uri :: lemmas @ status.GrafiteTypes.objects; GrafiteTypes.universe = universe}, lemmas -let add_coercion refinement_toolkit ~add_composites status uri arity +let add_coercion ~pack_coercion_obj ~add_composites status uri arity saturations baseuri = - let compounds = - LibrarySync.add_coercion ~add_composites refinement_toolkit uri arity - saturations baseuri in - {status with GrafiteTypes.coercions = uri :: status.GrafiteTypes.coercions}, - compounds - -module OrderedUri = -struct - type t = UriManager.uri * string - let compare (u1, _) (u2, _) = UriManager.compare u1 u2 -end - -module UriSet = Set.Make (OrderedUri) + let lemmas = + LibrarySync.add_coercion ~add_composites ~pack_coercion_obj + uri arity saturations baseuri in + { status with GrafiteTypes.coercions = CoercDb.dump () ; + objects = lemmas @ status.GrafiteTypes.objects + }, + lemmas +let prefer_coercion s u = + CoercDb.prefer u; + { s with GrafiteTypes.coercions = CoercDb.dump () } + (** @return l2 \ l1 *) let uri_list_diff l2 l1 = let module S = UriManager.UriSet in @@ -127,25 +111,23 @@ let uri_list_diff l2 l1 = let time_travel ~present ~past = let objs_to_remove = uri_list_diff present.GrafiteTypes.objects past.GrafiteTypes.objects in - let coercions_to_remove = - uri_list_diff present.GrafiteTypes.coercions past.GrafiteTypes.coercions - in - List.iter (fun uri -> LibrarySync.remove_coercion uri) coercions_to_remove; - List.iter LibrarySync.remove_obj objs_to_remove + List.iter LibrarySync.remove_obj objs_to_remove; + CoercDb.restore past.GrafiteTypes.coercions; +;; -let initial_status baseuri = { +let initial_status lexicon_status baseuri = { GrafiteTypes.moo_content_rev = []; proof_status = GrafiteTypes.No_proof; -(* options = GrafiteTypes.no_options; *) objects = []; - coercions = []; + coercions = CoercDb.empty_coerc_db; universe = Universe.empty; baseuri = baseuri; + ng_status = GrafiteTypes.CommandMode lexicon_status; } let init baseuri = - LibrarySync.remove_all_coercions (); + CoercDb.restore CoercDb.empty_coerc_db; LibraryObjects.reset_defaults (); initial_status baseuri ;;