X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fgrafite_engine%2FgrafiteSync.ml;h=b6b9f7e5a27a8219091e9a1a361cf4a88f68b9f5;hb=f919cce8d299eab1dda92af4c5b53a8a7ac348af;hp=9581dc9d6a708bc5522b8d145db045977ae40cf3;hpb=d2c444ddd7e612809205894974fcd7fdddee6acf;p=helm.git diff --git a/helm/software/components/grafite_engine/grafiteSync.ml b/helm/software/components/grafite_engine/grafiteSync.ml index 9581dc9d6..b6b9f7e5a 100644 --- a/helm/software/components/grafite_engine/grafiteSync.ml +++ b/helm/software/components/grafite_engine/grafiteSync.ml @@ -27,6 +27,12 @@ open Printf +let is_a_variant obj = + match obj with + | Cic.Constant(_,_,_,_,attrs) -> + List.exists (fun x -> x = `Flavour `Variant) attrs + | _ -> false + let uris_for_inductive_type uri obj = match obj with | Cic.InductiveDefinition(types,_,_,_) -> @@ -52,9 +58,9 @@ let add_obj refinement_toolkit uri obj status = let lemmas = LibrarySync.add_obj refinement_toolkit 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 + let ty,_ = CicTypeChecker.type_of_aux' [] [] term CicUniv.oblivion_ugraph in (* prop filtering - let sort,_ = CicTypeChecker.type_of_aux' [] [] ty CicUniv.empty_ugraph in + let sort,_ = CicTypeChecker.type_of_aux' [] [] ty CicUniv.oblivion_ugraph in prerr_endline (CicPp.ppterm term); prerr_endline (CicPp.ppterm sort); let tkeys = @@ -79,18 +85,26 @@ let add_obj refinement_toolkit uri obj status = let status = GrafiteTypes.add_moo_content index_cmd status in (universe,status) in + let uris_to_index = + if is_a_variant obj then [] + else (uris_for_inductive_type uri obj)@lemmas + in let universe,status = List.fold_left add_to_universe (status.GrafiteTypes.universe,status) - ((uris_for_inductive_type uri obj)@lemmas) in + uris_to_index + in {status with GrafiteTypes.objects = uri::status.GrafiteTypes.objects; GrafiteTypes.universe = universe}, lemmas -let add_coercion refinement_toolkit ~add_composites status uri arity = +let add_coercion refinement_toolkit ~add_composites status uri arity + saturations baseuri += let compounds = - LibrarySync.add_coercion ~add_composites refinement_toolkit uri arity in + LibrarySync.add_coercion ~add_composites refinement_toolkit uri arity + saturations baseuri in {status with GrafiteTypes.coercions = uri :: status.GrafiteTypes.coercions}, compounds @@ -119,14 +133,29 @@ let time_travel ~present ~past = List.iter (fun uri -> LibrarySync.remove_coercion uri) coercions_to_remove; List.iter LibrarySync.remove_obj objs_to_remove -let init () = - LibrarySync.remove_all_coercions (); - LibraryObjects.reset_defaults (); - { +let initial_status baseuri = { GrafiteTypes.moo_content_rev = []; proof_status = GrafiteTypes.No_proof; - options = GrafiteTypes.no_options; +(* options = GrafiteTypes.no_options; *) objects = []; coercions = []; universe = Universe.empty; + baseuri = baseuri; } + + +let init baseuri = + LibrarySync.remove_all_coercions (); + LibraryObjects.reset_defaults (); + initial_status baseuri + ;; +let pop () = + LibrarySync.pop (); + LibraryObjects.pop () +;; + +let push () = + LibrarySync.push (); + LibraryObjects.push () +;; +