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,_,_,_) ->
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 =
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
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 ()
+;;
+