Please sign in to comment.
Revised infrastructure for lazy loading of opaque proofs
Get rid of the LightenLibrary hack : no more last-minute collect of opaque terms and Obj.magic tricks. Instead, we make coqc accumulate the opaque terms as soon as constant_bodies are created outside sections. In these cases, the opaque terms are placed in a special table, and some (DirPath.t * int) are used as indexes in constant_body. In an interactive session, the local opaque terms stay directly stored in the constant_body. The structure of .vo file stays similar : magic number, regular library structure, digest of the first part, array of opaque terms. In addition, we now have a final checksum for checking the integrity of the whole .vo file. The other difference is that lazy_constr aren't changed into int indexes in .vo files, but are now coded as (substitution list * DirPath.t * int). In particular this approach allows to refer to opaque terms from another library. This (and accumulating substitutions in lazy_constr) seems to greatly help decreasing the size of opaque tables : -20% of vo size on the standard library :-). The compilation times are slightly better, but that can be statistic noise. The -force-load-proofs isn't active anymore : it behaves now just like -lazy-load-proofs. The -dont-load-proofs mode has slightly changed : opaque terms aren't seen as axioms anymore, but accessing their bodies will raise an error. Btw, API change : Declareops.body_of_constant now produces directly a constr option instead of a constr_substituted option git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16382 85f007b7-540e-0410-9357-904b9bb8a0f7
- Loading branch information...
Showing with 296 additions and 411 deletions.
- +30 −7 checker/check.ml
- +23 −13 checker/declarations.ml
- +3 −10 checker/declarations.mli
- +1 −1 checker/mod_checking.ml
- +8 −105 checker/safe_typing.ml
- +1 −17 checker/safe_typing.mli
- +4 −10 doc/refman/RefMan-com.tex
- +4 −10 kernel/declareops.ml
- +4 −4 kernel/declareops.mli
- +45 −12 kernel/lazyconstr.ml
- +27 −8 kernel/lazyconstr.mli
- +7 −142 kernel/safe_typing.ml
- +0 −11 kernel/safe_typing.mli
- +21 −16 kernel/term_typing.ml
- +1 −1 library/assumptions.ml
- +107 −26 library/library.ml
- +0 −2 library/states.ml
- +2 −4 plugins/funind/functional_principles_proofs.ml
- +1 −2 plugins/funind/functional_principles_types.ml
- +1 −2 plugins/funind/indfun.ml
- +1 −1 plugins/funind/indfun_common.ml
- +1 −1 plugins/funind/recdef.ml
- +1 −2 plugins/xml/xmlcommand.ml
- +1 −1 printing/prettyp.ml
- +1 −2 toplevel/coqtop.ml
- +1 −1 toplevel/lemmas.ml
Oops, something went wrong.