-requires="helm-lexicon helm-grafite ulex08 helm-ng_disambiguation"
+requires="helm-lexicon helm-grafite ulex08 helm-ng_disambiguation helm-ng_library"
version="0.0.1"
archive(byte)="grafite_parser.cma"
archive(native)="grafite_parser.cmxa"
cic_disambiguation \
lexicon \
ng_disambiguation \
- grafite_parser \
ng_paramodulation \
- ng_tactics \
- grafite_engine \
tptp_grafite \
ng_kernel \
ng_refiner \
- ng_library \
+ ng_library \
+ grafite_parser \
+ ng_tactics \
+ grafite_engine \
$(NULL)
METAS = $(MODULES:%=METAS/META.helm-%)
+content.cmi:
acic2content.cmi: content.cmi
content2cic.cmi: content.cmi
cicNotationUtil.cmi: cicNotationPt.cmo
cicNotationPp.cmi: cicNotationPt.cmo cicNotationEnv.cmi
acic2astMatcher.cmi: cicNotationPt.cmo
termAcicContent.cmi: cicNotationPt.cmo
+cicNotationPt.cmo:
+cicNotationPt.cmx:
content.cmo: content.cmi
content.cmx: content.cmi
acic2content.cmo: content.cmi acic2content.cmi
+content.cmi:
acic2content.cmi: content.cmi
content2cic.cmi: content.cmi
cicNotationUtil.cmi: cicNotationPt.cmx
cicNotationPp.cmi: cicNotationPt.cmx cicNotationEnv.cmi
acic2astMatcher.cmi: cicNotationPt.cmx
termAcicContent.cmi: cicNotationPt.cmx
+cicNotationPt.cmo:
+cicNotationPt.cmx:
content.cmo: content.cmi
content.cmx: content.cmi
acic2content.cmo: content.cmi acic2content.cmi
+proceduralHelpers.cmi:
+proceduralClassify.cmi:
+proceduralOptimizer.cmi:
+proceduralTypes.cmi:
+proceduralMode.cmi:
+proceduralConversion.cmi:
procedural1.cmi: proceduralTypes.cmi
procedural2.cmi: proceduralTypes.cmi
proceduralTeX.cmi: proceduralTypes.cmi
+acic2Procedural.cmi:
proceduralHelpers.cmo: proceduralHelpers.cmi
proceduralHelpers.cmx: proceduralHelpers.cmi
proceduralClassify.cmo: proceduralHelpers.cmi proceduralClassify.cmi
+proceduralHelpers.cmi:
+proceduralClassify.cmi:
+proceduralOptimizer.cmi:
+proceduralTypes.cmi:
+proceduralMode.cmi:
+proceduralConversion.cmi:
procedural1.cmi: proceduralTypes.cmi
procedural2.cmi: proceduralTypes.cmi
proceduralTeX.cmi: proceduralTypes.cmi
+acic2Procedural.cmi:
proceduralHelpers.cmo: proceduralHelpers.cmi
proceduralHelpers.cmx: proceduralHelpers.cmi
proceduralClassify.cmo: proceduralHelpers.cmi proceduralClassify.cmi
+extractor.cmo:
+extractor.cmx:
+extractor_manager.cmo:
+extractor_manager.cmx:
+extractor.cmo:
+extractor.cmx:
+extractor_manager.cmo:
+extractor_manager.cmx:
+table_creator.cmo:
+table_creator.cmx:
+table_creator.cmo:
+table_creator.cmx:
gallina8Parser.cmi: types.cmo
grafiteParser.cmi: types.cmo
grafite.cmi: types.cmo
+engine.cmi:
+types.cmo:
+types.cmx:
+options.cmo:
+options.cmx:
gallina8Parser.cmo: types.cmo options.cmo gallina8Parser.cmi
gallina8Parser.cmx: types.cmx options.cmx gallina8Parser.cmi
gallina8Lexer.cmo: options.cmo gallina8Parser.cmi
gallina8Parser.cmi: types.cmx
grafiteParser.cmi: types.cmx
grafite.cmi: types.cmx
+engine.cmi:
+types.cmo:
+types.cmx:
+options.cmo:
+options.cmx:
gallina8Parser.cmo: types.cmx options.cmx gallina8Parser.cmi
gallina8Parser.cmx: types.cmx options.cmx gallina8Parser.cmi
gallina8Lexer.cmo: options.cmx gallina8Parser.cmi
+cicUniv.cmi:
unshare.cmi: cic.cmo
deannotate.cmi: cic.cmo
cicParser.cmi: cic.cmo
cicUtil.cmi: cic.cmo
helmLibraryObjects.cmi: cic.cmo
+libraryObjects.cmi:
cic_indexable.cmi: cic.cmo
path_indexing.cmi: cic.cmo
cicInspect.cmi: cic.cmo
+cicUniv.cmi:
unshare.cmi: cic.cmx
deannotate.cmi: cic.cmx
cicParser.cmi: cic.cmx
cicUtil.cmi: cic.cmx
helmLibraryObjects.cmi: cic.cmx
+libraryObjects.cmi:
cic_indexable.cmi: cic.cmx
path_indexing.cmi: cic.cmx
cicInspect.cmi: cic.cmx
+eta_fixing.cmi:
+doubleTypeInference.cmi:
+cic2acic.cmi:
cic2Xml.cmi: cic2acic.cmi
eta_fixing.cmo: eta_fixing.cmi
eta_fixing.cmx: eta_fixing.cmi
+eta_fixing.cmi:
+doubleTypeInference.cmi:
+cic2acic.cmi:
cic2Xml.cmi: cic2acic.cmi
eta_fixing.cmo: eta_fixing.cmi
eta_fixing.cmx: eta_fixing.cmi
+cicDisambiguate.cmi:
+disambiguateChoices.cmi:
cicDisambiguate.cmo: cicDisambiguate.cmi
cicDisambiguate.cmx: cicDisambiguate.cmi
disambiguateChoices.cmo: disambiguateChoices.cmi
+cicDisambiguate.cmi:
+disambiguateChoices.cmi:
cicDisambiguate.cmo: cicDisambiguate.cmi
cicDisambiguate.cmx: cicDisambiguate.cmi
disambiguateChoices.cmo: disambiguateChoices.cmi
+cicExportation.cmi:
cicExportation.cmo: cicExportation.cmi
cicExportation.cmx: cicExportation.cmi
+cicExportation.cmi:
cicExportation.cmo: cicExportation.cmi
cicExportation.cmx: cicExportation.cmi
+cicLogger.cmi:
+cicEnvironment.cmi:
+cicPp.cmi:
+cicUnivUtils.cmi:
+cicSubstitution.cmi:
+cicMiniReduction.cmi:
+cicReduction.cmi:
+cicTypeChecker.cmi:
+freshNamesGenerator.cmi:
+cicDischarge.cmi:
cicLogger.cmo: cicLogger.cmi
cicLogger.cmx: cicLogger.cmi
cicEnvironment.cmo: cicEnvironment.cmi
+cicLogger.cmi:
+cicEnvironment.cmi:
+cicPp.cmi:
+cicUnivUtils.cmi:
+cicSubstitution.cmi:
+cicMiniReduction.cmi:
+cicReduction.cmi:
+cicTypeChecker.cmi:
+freshNamesGenerator.cmi:
+cicDischarge.cmi:
cicLogger.cmo: cicLogger.cmi
cicLogger.cmx: cicLogger.cmi
cicEnvironment.cmo: cicEnvironment.cmi
+cicMetaSubst.cmi:
+cicMkImplicit.cmi:
+termUtil.cmi:
+coercGraph.cmi:
+cicUnification.cmi:
+cicReplace.cmi:
+cicRefine.cmi:
cicMetaSubst.cmo: cicMetaSubst.cmi
cicMetaSubst.cmx: cicMetaSubst.cmi
cicMkImplicit.cmo: cicMkImplicit.cmi
+cicMetaSubst.cmi:
+cicMkImplicit.cmi:
+termUtil.cmi:
+coercGraph.cmi:
+cicUnification.cmi:
+cicReplace.cmi:
+cicRefine.cmi:
cicMetaSubst.cmo: cicMetaSubst.cmi
cicMetaSubst.cmx: cicMetaSubst.cmi
cicMkImplicit.cmo: cicMkImplicit.cmi
+renderingAttrs.cmi:
+cicNotationLexer.cmi:
+cicNotationParser.cmi:
+mpresentation.cmi:
+box.cmi:
+content2presMatcher.cmi:
termContentPres.cmi: cicNotationParser.cmi
boxPp.cmi: mpresentation.cmi cicNotationPres.cmi box.cmi
cicNotationPres.cmi: mpresentation.cmi box.cmi
+renderingAttrs.cmi:
+cicNotationLexer.cmi:
+cicNotationParser.cmi:
+mpresentation.cmi:
+box.cmi:
+content2presMatcher.cmi:
termContentPres.cmi: cicNotationParser.cmi
boxPp.cmi: mpresentation.cmi cicNotationPres.cmi box.cmi
cicNotationPres.cmi: mpresentation.cmi box.cmi
+disambiguateTypes.cmi:
disambiguate.cmi: disambiguateTypes.cmi
multiPassDisambiguator.cmi: disambiguateTypes.cmi disambiguate.cmi
disambiguateTypes.cmo: disambiguateTypes.cmi
+disambiguateTypes.cmi:
disambiguate.cmi: disambiguateTypes.cmi
multiPassDisambiguator.cmi: disambiguateTypes.cmi disambiguate.cmi
disambiguateTypes.cmo: disambiguateTypes.cmi
+componentsConf.cmi:
+hExtlib.cmi:
+hMarshal.cmi:
+patternMatcher.cmi:
+hLog.cmi:
+trie.cmi:
+discrimination_tree.cmi:
+hTopoSort.cmi:
+refCounter.cmi:
+graphvizPp.cmi:
componentsConf.cmo: componentsConf.cmi
componentsConf.cmx: componentsConf.cmi
hExtlib.cmo: hExtlib.cmi
+componentsConf.cmi:
+hExtlib.cmi:
+hMarshal.cmi:
+patternMatcher.cmi:
+hLog.cmi:
+trie.cmi:
+discrimination_tree.cmi:
+hTopoSort.cmi:
+refCounter.cmi:
+graphvizPp.cmi:
componentsConf.cmo: componentsConf.cmi
componentsConf.cmx: componentsConf.cmi
hExtlib.cmo: hExtlib.cmi
+http_getter_wget.cmi:
+http_getter_logger.cmi:
+http_getter_misc.cmi:
+http_getter_const.cmi:
http_getter_env.cmi: http_getter_types.cmo
+http_getter_storage.cmi:
http_getter_common.cmi: http_getter_types.cmo
http_getter.cmi: http_getter_types.cmo
+http_getter_types.cmo:
+http_getter_types.cmx:
http_getter_wget.cmo: http_getter_types.cmo http_getter_wget.cmi
http_getter_wget.cmx: http_getter_types.cmx http_getter_wget.cmi
http_getter_logger.cmo: http_getter_logger.cmi
+http_getter_wget.cmi:
+http_getter_logger.cmi:
+http_getter_misc.cmi:
+http_getter_const.cmi:
http_getter_env.cmi: http_getter_types.cmx
+http_getter_storage.cmi:
http_getter_common.cmi: http_getter_types.cmx
http_getter.cmi: http_getter_types.cmx
+http_getter_types.cmo:
+http_getter_types.cmx:
http_getter_wget.cmo: http_getter_types.cmx http_getter_wget.cmi
http_getter_wget.cmx: http_getter_types.cmx http_getter_wget.cmi
http_getter_logger.cmo: http_getter_logger.cmi
grafiteAstPp.cmi: grafiteAst.cmo
grafiteMarshal.cmi: grafiteAst.cmo
+grafiteAst.cmo:
+grafiteAst.cmx:
grafiteAstPp.cmo: grafiteAst.cmo grafiteAstPp.cmi
grafiteAstPp.cmx: grafiteAst.cmx grafiteAstPp.cmi
grafiteMarshal.cmo: grafiteAstPp.cmi grafiteAst.cmo grafiteMarshal.cmi
grafiteAstPp.cmi: grafiteAst.cmx
grafiteMarshal.cmi: grafiteAst.cmx
+grafiteAst.cmo:
+grafiteAst.cmx:
grafiteAstPp.cmo: grafiteAst.cmx grafiteAstPp.cmi
grafiteAstPp.cmx: grafiteAst.cmx grafiteAstPp.cmi
grafiteMarshal.cmo: grafiteAstPp.cmi grafiteAst.cmx grafiteMarshal.cmi
+grafiteTypes.cmi:
grafiteSync.cmi: grafiteTypes.cmi
nCicCoercDeclaration.cmi: grafiteTypes.cmi
grafiteEngine.cmi: grafiteTypes.cmi
+grafiteTypes.cmi:
grafiteSync.cmi: grafiteTypes.cmi
nCicCoercDeclaration.cmi: grafiteTypes.cmi
grafiteEngine.cmi: grafiteTypes.cmi
=
let t = refresh_uri_in_term t in basic_eval_unification_hint (t,n)
in
- NCicLibrary.Serializer.register
- "unification_hints" basic_eval_unification_hint
+ NCicLibrary.Serializer.register#run "unification_hints"
+ object(_ : 'a NCicLibrary.register_type)
+ method run = basic_eval_unification_hint
+ end
;;
let eval_unification_hint status t n =
status,`New []
;;
+let basic_index_obj l status =
+ status#set_auto_cache
+ (List.fold_left
+ (fun t (k,v) ->
+ NDiscriminationTree.DiscriminationTree.index t k v)
+ status#auto_cache l)
+;;
+
+let record_index_obj =
+ let aux l
+ ~refresh_uri_in_universe
+ ~refresh_uri_in_term
+ =
+ basic_index_obj
+ (List.map
+ (fun k,v -> refresh_uri_in_term k, refresh_uri_in_term v)
+ l)
+ in
+ NCicLibrary.Serializer.register#run "index_obj"
+ object(_ : 'a NCicLibrary.register_type)
+ method run = aux
+ end
+;;
+
+let index_obj_for_auto status (uri, height, _, _, kind) =
+ let data =
+ match kind with
+ | NCic.Fixpoint _ -> []
+ | NCic.Inductive _ -> []
+ | NCic.Constant (_,_,_, ty, _) ->
+ [ ty, NCic.Const(NReference.reference_of_spec
+ uri (NReference.Def height)) ]
+ in
+ let status = basic_index_obj data status in
+ let dump = record_index_obj data :: status#dump in
+ status#set_dump dump
+;;
+
+
let basic_eval_add_constraint (u1,u2) status =
NCicLibrary.add_constraint status u1 u2
;;
let u2 = refresh_uri_in_universe u2 in
basic_eval_add_constraint (u1,u2)
in
- NCicLibrary.Serializer.register "constraints" basic_eval_add_constraint
+ NCicLibrary.Serializer.register#run "constraints"
+ object(_:'a NCicLibrary.register_type)
+ method run = basic_eval_add_constraint
+ end
;;
let eval_add_constraint status u1 u2 =
status#set_obj(u,h,NCicUntrusted.apply_subst_metasenv subst metasenv,subst,o)
;;
+
let rec eval_ncommand opts status (text,prefix_len,cmd) =
match cmd with
| GrafiteAst.UnificationHint (loc, t, n) -> eval_unification_hint status t n
let obj = uri,height,[],[],obj_kind in
let old_status = status in
let status = NCicLibrary.add_obj status obj in
+ let status = index_obj_for_auto status obj in
(* prerr_endline (NCicPp.ppobj obj); *)
HLog.message ("New object: " ^ NUri.string_of_uri uri);
(try
let aux_l l ~refresh_uri_in_universe ~refresh_uri_in_term =
List.fold_right (aux ~refresh_uri_in_universe ~refresh_uri_in_term) l
in
- NCicLibrary.Serializer.register "ncoercion" aux_l
+ NCicLibrary.Serializer.register#run "ncoercion"
+ object(self : 'a NCicLibrary.register_type)
+ method run = aux_l
+ end
;;
let basic_eval_and_record_ncoercion infos status =
+dependenciesParser.cmi:
+grafiteParser.cmi:
+cicNotation2.cmi:
+nEstatus.cmi:
grafiteDisambiguate.cmi: nEstatus.cmi
+print_grammar.cmi:
dependenciesParser.cmo: dependenciesParser.cmi
dependenciesParser.cmx: dependenciesParser.cmi
grafiteParser.cmo: grafiteParser.cmi
+dependenciesParser.cmi:
+grafiteParser.cmi:
+cicNotation2.cmi:
+nEstatus.cmi:
grafiteDisambiguate.cmi: nEstatus.cmi
+print_grammar.cmi:
dependenciesParser.cmo: dependenciesParser.cmi
dependenciesParser.cmx: dependenciesParser.cmi
grafiteParser.cmo: grafiteParser.cmi
+domMisc.cmi:
+xml2Gdome.cmi:
domMisc.cmo: domMisc.cmi
domMisc.cmx: domMisc.cmi
xml2Gdome.cmo: xml2Gdome.cmi
+domMisc.cmi:
+xml2Gdome.cmi:
domMisc.cmo: domMisc.cmi
domMisc.cmx: domMisc.cmi
xml2Gdome.cmo: xml2Gdome.cmi
+hSql.cmi:
+hSqlite3.cmo:
+hSqlite3.cmx:
+hMysql.cmo:
+hMysql.cmx:
hSql.cmo: hSqlite3.cmo hMysql.cmo hSql.cmi
hSql.cmx: hSqlite3.cmx hMysql.cmx hSql.cmi
+hSql.cmi:
+hSqlite3.cmo:
+hSqlite3.cmx:
+hMysql.cmo:
+hMysql.cmx:
hSql.cmo: hSqlite3.cmx hMysql.cmx hSql.cmi
hSql.cmx: hSqlite3.cmx hMysql.cmx hSql.cmi
cicNotation.cmi: lexiconAst.cmo
lexiconEngine.cmi: lexiconMarshal.cmi lexiconAst.cmo cicNotation.cmi
lexiconSync.cmi: lexiconEngine.cmi lexiconAst.cmo
+lexiconAst.cmo:
+lexiconAst.cmx:
lexiconAstPp.cmo: lexiconAst.cmo lexiconAstPp.cmi
lexiconAstPp.cmx: lexiconAst.cmx lexiconAstPp.cmi
lexiconMarshal.cmo: lexiconAstPp.cmi lexiconAst.cmo lexiconMarshal.cmi
cicNotation.cmi: lexiconAst.cmx
lexiconEngine.cmi: lexiconMarshal.cmi lexiconAst.cmx cicNotation.cmi
lexiconSync.cmi: lexiconEngine.cmi lexiconAst.cmx
+lexiconAst.cmo:
+lexiconAst.cmx:
lexiconAstPp.cmo: lexiconAst.cmx lexiconAstPp.cmi
lexiconAstPp.cmx: lexiconAst.cmx lexiconAstPp.cmi
lexiconMarshal.cmo: lexiconAstPp.cmi lexiconAst.cmx lexiconMarshal.cmi
+librarian.cmi:
+libraryMisc.cmi:
+libraryDb.cmi:
+coercDb.cmi:
cicCoercion.cmi: coercDb.cmi
+librarySync.cmi:
+cicElim.cmi:
+cicRecord.cmi:
+cicFix.cmi:
+libraryClean.cmi:
librarian.cmo: librarian.cmi
librarian.cmx: librarian.cmi
libraryMisc.cmo: libraryMisc.cmi
+librarian.cmi:
+libraryMisc.cmi:
+libraryDb.cmi:
+coercDb.cmi:
cicCoercion.cmi: coercDb.cmi
+librarySync.cmi:
+cicElim.cmi:
+cicRecord.cmi:
+cicFix.cmi:
+libraryClean.cmi:
librarian.cmo: librarian.cmi
librarian.cmx: librarian.cmi
libraryMisc.cmo: libraryMisc.cmi
+helmLogger.cmi:
helmLogger.cmo: helmLogger.cmi
helmLogger.cmx: helmLogger.cmi
+helmLogger.cmi:
helmLogger.cmo: helmLogger.cmi
helmLogger.cmx: helmLogger.cmi
+sqlStatements.cmi:
+metadataTypes.cmi:
metadataExtractor.cmi: metadataTypes.cmi
metadataPp.cmi: metadataTypes.cmi
metadataConstraints.cmi: metadataTypes.cmi
+sqlStatements.cmi:
+metadataTypes.cmi:
metadataExtractor.cmi: metadataTypes.cmi
metadataPp.cmi: metadataTypes.cmi
metadataConstraints.cmi: metadataTypes.cmi
+ncic2astMatcher.cmi:
+nTermCicContent.cmi:
ncic2astMatcher.cmo: ncic2astMatcher.cmi
ncic2astMatcher.cmx: ncic2astMatcher.cmi
nTermCicContent.cmo: ncic2astMatcher.cmi nTermCicContent.cmi
+ncic2astMatcher.cmi:
+nTermCicContent.cmi:
ncic2astMatcher.cmo: ncic2astMatcher.cmi
ncic2astMatcher.cmx: ncic2astMatcher.cmi
nTermCicContent.cmo: ncic2astMatcher.cmi nTermCicContent.cmi
+nCicDisambiguate.cmi:
nCicDisambiguate.cmo: nCicDisambiguate.cmi
nCicDisambiguate.cmx: nCicDisambiguate.cmi
+nCicDisambiguate.cmi:
nCicDisambiguate.cmo: nCicDisambiguate.cmi
nCicDisambiguate.cmx: nCicDisambiguate.cmi
+nUri.cmi:
nReference.cmi: nUri.cmi
nCicUtils.cmi: nCic.cmo
nCicSubstitution.cmi: nCic.cmo
+nUri.cmi:
nReference.cmi: nUri.cmi
nCicUtils.cmi: nCic.cmx
nCicSubstitution.cmi: nCic.cmx
+nCicLibrary.cmi:
nCicLibrary.cmo: nCicLibrary.cmi
nCicLibrary.cmx: nCicLibrary.cmi
+nCicLibrary.cmi:
nCicLibrary.cmo: nCicLibrary.cmi
nCicLibrary.cmx: nCicLibrary.cmi
let init = load_db;;
+type automation_cache = NDiscriminationTree.DiscriminationTree.t
+
+class type g_auto_status =
+ object
+ method auto_cache : automation_cache
+ end
+
+class auto_status =
+ object(self)
+ val auto_cache = NDiscriminationTree.DiscriminationTree.empty
+ method auto_cache = auto_cache
+ method set_auto_cache v = {< auto_cache = v >}
+ method set_auto_status
+ : 'status. #g_auto_status as 'status -> 'self
+ = fun o -> self#set_auto_cache o#auto_cache
+ end
+
class type g_status =
object
inherit NRstatus.g_status
end
class status =
- object
+ object(self)
inherit NRstatus.status
val timestamp = (time0 : timestamp)
method timestamp = timestamp
method set_timestamp v = {< timestamp = v >}
method set_library_status
: 'status. #g_status as 'status -> 'self
- = fun o -> {< timestamp = o#timestamp >}
- end
-
-
-module type SerializerT =
- sig
- type status
- type obj
- val register:
- string ->
- ('a -> refresh_uri_in_universe:(NCic.universe -> NCic.universe) -> refresh_uri_in_term:(NCic.term -> NCic.term) -> status -> status) ->
- ('a -> obj)
- val serialize: baseuri:NUri.uri -> obj list -> unit
- val require: baseuri:NUri.uri -> status -> status
+ = fun o -> self#set_timestamp o#timestamp
end
let time_travel status =
List.iter (fun u -> add_deps u [baseuri]) !includes;
time_travel (new status)
;;
+
+type obj = string * Obj.t
-module SerializerF(S: sig type status end) =
- struct
- type status = S.status
- type obj = string * Obj.t
-
- let require1 = ref (fun _ -> assert false (* unknown data*))
- let already_registered = ref []
-
- let register tag require =
- assert (not (List.mem tag !already_registered));
- already_registered := tag :: !already_registered;
- let old_require1 = !require1 in
- require1 :=
- (fun (tag',data) as x ->
- if tag=tag' then
- require (Obj.magic data) ~refresh_uri_in_universe ~refresh_uri_in_term
- else
- old_require1 x);
- (fun x -> tag,Obj.repr x)
-
- let serialize = serialize
-
- let require ~baseuri status =
- includes := baseuri::!includes;
- let dump = require0 ~baseuri in
- List.fold_right !require1 dump status
-end
-
-type sstatus = status
-
-module Serializer =
- struct
- include SerializerF(struct type status = sstatus end)
-
- let require ~baseuri status =
- let rstatus = require ~baseuri (status : #status :> status) in
- let status = status#set_coerc_db (rstatus#coerc_db) in
- let status = status#set_uhint_db (rstatus#uhint_db) in
- let status = status#set_timestamp (rstatus#timestamp) in
- status
- end
class type g_dumpable_status =
object
inherit g_status
- method dump: Serializer.obj list
+ inherit g_auto_status
+ method dump: obj list
end
class dumpable_status =
object(self)
inherit status
- val dump = ([] : Serializer.obj list)
+ inherit auto_status
+ val dump = ([] : obj list)
method dump = dump
method set_dump v = {< dump = v >}
method set_dumpable_status : 'status. #g_dumpable_status as 'status -> 'self
- = fun o -> (self#set_dump o#dump)#set_coercion_status o
+ = fun o -> ((self#set_dump o#dump)#set_coercion_status o)#set_auto_status o
end
+type 'a register_type =
+ < run: 'status.
+ 'a -> refresh_uri_in_universe:(NCic.universe ->
+ NCic.universe) -> refresh_uri_in_term:(NCic.term -> NCic.term) ->
+ (#dumpable_status as 'status) -> 'status >
+
+module Serializer =
+ struct
+ let require1 = ref (object method run : 'status. obj -> (#dumpable_status as 'status) -> 'status = fun _ -> assert false end (* unknown data*))
+ let already_registered = ref []
+
+ let register =
+ object
+ method run : 'a. string -> 'a register_type -> ('a -> obj)
+ = fun tag require ->
+ assert (not (List.mem tag !already_registered));
+ already_registered := tag :: !already_registered;
+ let old_require1 = !require1 in
+ require1 :=
+ object
+ method run : 'status. obj -> (#dumpable_status as 'status) -> 'status =
+ fun ((tag',data) as x) ->
+ if tag=tag' then
+ require#run (Obj.magic data) ~refresh_uri_in_universe ~refresh_uri_in_term
+ else
+ old_require1#run x
+ end;
+ (fun x -> tag,Obj.repr x)
+ end
+
+ let serialize = serialize
+
+ let require ~baseuri status =
+ includes := baseuri::!includes;
+ let dump = require0 ~baseuri in
+ List.fold_right !require1#run dump status
+end
+
let decompile ~baseuri =
let baseuris = get_deps baseuri in
exception LibraryOutOfSync of string Lazy.t
+type automation_cache = NDiscriminationTree.DiscriminationTree.t
+
+class type g_auto_status =
+ object
+ method auto_cache : automation_cache
+ end
+
+class auto_status :
+ object('self)
+ inherit g_auto_status
+ method set_auto_cache: automation_cache -> 'self
+ method set_auto_status: #g_auto_status -> 'self
+ end
+
type timestamp
class type g_status =
val time_travel: #status -> unit
val decompile: baseuri:NUri.uri -> unit
-module type SerializerT =
- sig
- type status
- type obj
- val register:
- string ->
- ('a -> refresh_uri_in_universe:(NCic.universe -> NCic.universe) -> refresh_uri_in_term:(NCic.term -> NCic.term) -> status -> status) ->
- ('a -> obj)
- val serialize: baseuri:NUri.uri -> obj list -> unit
- val require: baseuri:NUri.uri -> status -> status
- end
-
val init: unit -> unit
-module Serializer:
- sig
- include SerializerT with type status = status
- val require: baseuri:NUri.uri -> (#status as 'status) -> 'status
- end
+type obj
class type g_dumpable_status =
object
inherit g_status
- method dump: Serializer.obj list
+ inherit g_auto_status
+ method dump: obj list
end
-
+
class dumpable_status :
object ('self)
inherit status
+ inherit auto_status
inherit g_dumpable_status
- method set_dump: Serializer.obj list -> 'self
+ method set_dump: obj list -> 'self
method set_dumpable_status: #g_dumpable_status -> 'self
end
+type 'a register_type =
+ < run: 'status.
+ 'a -> refresh_uri_in_universe:(NCic.universe ->
+ NCic.universe) -> refresh_uri_in_term:(NCic.term -> NCic.term) ->
+ (#dumpable_status as 'status) -> 'status >
+
+module Serializer:
+ sig
+ val register: < run: 'a. string -> 'a register_type -> ('a -> obj) >
+ val serialize: baseuri:NUri.uri -> obj list -> unit
+ val require: baseuri:NUri.uri -> (#dumpable_status as 'status) -> 'status
+ end
+
(* CSC: only required during old-to-NG phase, to be deleted *)
val refresh_uri: NUri.uri -> NUri.uri
+terms.cmi:
pp.cmi: terms.cmi
foSubst.cmi: terms.cmi
orderings.cmi: terms.cmi
nCicBlob.cmi: terms.cmi
cicBlob.cmi: terms.cmi
nCicProof.cmi: terms.cmi
+nCicParamod.cmi:
terms.cmo: terms.cmi
terms.cmx: terms.cmi
pp.cmo: terms.cmi pp.cmi
+terms.cmi:
pp.cmi: terms.cmi
foSubst.cmi: terms.cmi
orderings.cmi: terms.cmi
nCicBlob.cmi: terms.cmi
cicBlob.cmi: terms.cmi
nCicProof.cmi: terms.cmi
+nCicParamod.cmi:
terms.cmo: terms.cmi
terms.cmx: terms.cmi
pp.cmo: terms.cmi pp.cmi
+nDiscriminationTree.cmi:
+nCicMetaSubst.cmi:
+nCicUnifHint.cmi:
nCicCoercion.cmi: nCicUnifHint.cmi
nRstatus.cmi: nCicCoercion.cmi
nCicUnification.cmi: nRstatus.cmi
+nDiscriminationTree.cmi:
+nCicMetaSubst.cmi:
+nCicUnifHint.cmi:
nCicCoercion.cmi: nCicUnifHint.cmi
nRstatus.cmi: nCicCoercion.cmi
nCicUnification.cmi: nRstatus.cmi
+nCicTacReduction.cmi:
+nTacStatus.cmi:
+nCicElim.cmi:
nTactics.cmi: nTacStatus.cmi
nInversion.cmi: nTacStatus.cmi
nCicTacReduction.cmo: nCicTacReduction.cmi
+nCicTacReduction.cmi:
+nTacStatus.cmi:
+nCicElim.cmi:
nTactics.cmi: nTacStatus.cmi
nInversion.cmi: nTacStatus.cmi
nCicTacReduction.cmo: nCicTacReduction.cmi
+helm_registry.cmi:
helm_registry.cmo: helm_registry.cmi
helm_registry.cmx: helm_registry.cmi
+helm_registry.cmi:
helm_registry.cmo: helm_registry.cmi
helm_registry.cmx: helm_registry.cmi
+utf8Macro.cmi:
+utf8MacroTable.cmo:
+utf8MacroTable.cmx:
utf8Macro.cmo: utf8MacroTable.cmo utf8Macro.cmi
utf8Macro.cmx: utf8MacroTable.cmx utf8Macro.cmi
+utf8Macro.cmi:
+utf8MacroTable.cmo:
+utf8MacroTable.cmx:
utf8Macro.cmo: utf8MacroTable.cmx utf8Macro.cmi
utf8Macro.cmx: utf8MacroTable.cmx utf8Macro.cmi
+proofEngineTypes.cmi:
proofEngineHelpers.cmi: proofEngineTypes.cmi
+proofEngineReduction.cmi:
continuationals.cmi: proofEngineTypes.cmi
tacticals.cmi: proofEngineTypes.cmi
reductionTactics.cmi: proofEngineTypes.cmi
proofEngineStructuralRules.cmi: proofEngineTypes.cmi
primitiveTactics.cmi: proofEngineTypes.cmi
+hashtbl_equiv.cmi:
metadataQuery.cmi: proofEngineTypes.cmi
+universe.cmi:
autoTypes.cmi: proofEngineTypes.cmi
+autoCache.cmi:
+paramodulation/utils.cmi:
+closeCoercionGraph.cmi:
+paramodulation/subst.cmi:
paramodulation/equality.cmi: paramodulation/utils.cmi \
paramodulation/subst.cmi
paramodulation/founif.cmi: paramodulation/subst.cmi
auto.cmi: proofEngineTypes.cmi automationCache.cmi
destructTactic.cmi: proofEngineTypes.cmi
inversion.cmi: proofEngineTypes.cmi
+inversion_principle.cmi:
ring.cmi: proofEngineTypes.cmi
setoids.cmi: proofEngineTypes.cmi
+fourier.cmi:
fourierR.cmi: proofEngineTypes.cmi
fwdSimplTactic.cmi: proofEngineTypes.cmi
+history.cmi:
statefulProofEngine.cmi: proofEngineTypes.cmi
tactics.cmi: tacticals.cmi proofEngineTypes.cmi automationCache.cmi auto.cmi
declarative.cmi: proofEngineTypes.cmi automationCache.cmi auto.cmi
+proofEngineTypes.cmi:
proofEngineHelpers.cmi: proofEngineTypes.cmi
+proofEngineReduction.cmi:
continuationals.cmi: proofEngineTypes.cmi
tacticals.cmi: proofEngineTypes.cmi
reductionTactics.cmi: proofEngineTypes.cmi
proofEngineStructuralRules.cmi: proofEngineTypes.cmi
primitiveTactics.cmi: proofEngineTypes.cmi
+hashtbl_equiv.cmi:
metadataQuery.cmi: proofEngineTypes.cmi
+universe.cmi:
autoTypes.cmi: proofEngineTypes.cmi
+autoCache.cmi:
+paramodulation/utils.cmi:
+closeCoercionGraph.cmi:
+paramodulation/subst.cmi:
paramodulation/equality.cmi: paramodulation/utils.cmi \
paramodulation/subst.cmi
paramodulation/founif.cmi: paramodulation/subst.cmi
auto.cmi: proofEngineTypes.cmi automationCache.cmi
destructTactic.cmi: proofEngineTypes.cmi
inversion.cmi: proofEngineTypes.cmi
+inversion_principle.cmi:
ring.cmi: proofEngineTypes.cmi
setoids.cmi: proofEngineTypes.cmi
+fourier.cmi:
fourierR.cmi: proofEngineTypes.cmi
fwdSimplTactic.cmi: proofEngineTypes.cmi
+history.cmi:
statefulProofEngine.cmi: proofEngineTypes.cmi
tactics.cmi: tacticals.cmi proofEngineTypes.cmi automationCache.cmi auto.cmi
declarative.cmi: proofEngineTypes.cmi automationCache.cmi auto.cmi
+threadSafe.cmi:
+extThread.cmi:
threadSafe.cmo: threadSafe.cmi
threadSafe.cmx: threadSafe.cmi
extThread.cmo: extThread.cmi
+threadSafe.cmi:
+extThread.cmi:
threadSafe.cmo: threadSafe.cmi
threadSafe.cmx: threadSafe.cmi
extThread.cmo: extThread.cmi
parser.cmi: ast.cmo
+tptp2grafite.cmi:
+ast.cmo:
+ast.cmx:
lexer.cmo: parser.cmi
lexer.cmx: parser.cmx
parser.cmo: ast.cmo parser.cmi
parser.cmi: ast.cmx
+tptp2grafite.cmi:
+ast.cmo:
+ast.cmx:
lexer.cmo: parser.cmi
lexer.cmx: parser.cmx
parser.cmo: ast.cmx parser.cmi
+uriManager.cmi:
uriManager.cmo: uriManager.cmi
uriManager.cmx: uriManager.cmi
+uriManager.cmi:
uriManager.cmo: uriManager.cmi
uriManager.cmx: uriManager.cmi
+whelp.cmi:
+fwdQueries.cmi:
whelp.cmo: whelp.cmi
whelp.cmx: whelp.cmi
fwdQueries.cmo: fwdQueries.cmi
+whelp.cmi:
+fwdQueries.cmi:
whelp.cmo: whelp.cmi
whelp.cmx: whelp.cmi
fwdQueries.cmo: fwdQueries.cmi
+xml.cmi:
+xmlPushParser.cmi:
xml.cmo: xml.cmi
xml.cmx: xml.cmi
xmlPushParser.cmo: xmlPushParser.cmi
+xml.cmi:
+xmlPushParser.cmi:
xml.cmo: xml.cmi
xml.cmx: xml.cmi
xmlPushParser.cmo: xmlPushParser.cmi
+xmlDiff.cmi:
xmlDiff.cmo: xmlDiff.cmi
xmlDiff.cmx: xmlDiff.cmi
+xmlDiff.cmi:
xmlDiff.cmo: xmlDiff.cmi
xmlDiff.cmx: xmlDiff.cmi