aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-01-04STM: set loc for aux file when interpreting vernacEnrico Tassi
2014-01-04STM: record in aux file proof build and check timeEnrico Tassi
2014-01-04Aux_file: cache information at compile time for later (re)useEnrico Tassi
For a file dir/a.v the corresponding aux file dir/.a.aux can store arbitrary data. It maps a "Loc.t * string" (key) to a "string" (value). Pretty much anything can fit in this schema, but ATM I see only the following possible uses: 1) record inferred data, like the set of section variable used, so that one can later use this info to process proofs asynchronously (i.e. compute their discharged type without knowing the proof term). 2) record timings (how long it takes to build a proof term or check it), so that one can take smarter scheduling decisions 3) record a bloated proof trace for automatic tactics, so that one can replay it faster (a sort of cache). For that to be useful an Ltac API is required. The .aux file contains the path of the .v and its md5 hash. When loaded it defaults to the empty map is the file is not there or if the .v file changed. Not finding some data in the .aux file cannot be a failure, but finding it may help in many ways. The current file format is very simple but human readable. It is generated/parsed using printf/scanf and in particular the %S formatter for the value string. The file format is private to the Aux_file module: only an abstract interface is provided. The current file format is not robust in face of local changes. Any change invalidates the md5 hash (and the Loc.t is very likely to change too).
2014-01-04Remove obsolete comment about Let being processed synchronouslyEnrico Tassi
Let proof terms are stocked in the named_context that is used directly everywhere, hence there is no way to stock a Future proof term there.
2014-01-04Code cleaning in Rewrite, may also result faster.Pierre-Marie Pédrot
2014-01-01Reference the 'external' tactic.Guillaume Melquiond
2013-12-30When resetting an evarmap with the unsafe function Evd.evars_reset_evd withPierre-Marie Pédrot
the flag with_conv_pbs, only reset the metas, not the last_mod field. It seemed strange to mix two unrelated things. This did not break anything visible...
2013-12-30Useless Evd.create_evar_defs.Pierre-Marie Pédrot
2013-12-30Support for evars and metas in native compiler.Maxime Dénès
Experimental. Turned out to be much harder to implement than I thought. The main issue is that the reification in the native compiler and the VM is not quite untyped. Indeed, type annotations for lambdas have to be reconstructed. Hence, when reifying an application u = t a1 ... an, the type of t has to be known or reconstructed. It is always possible to do so in plain CIC, when u is in normal form and its type is known. However, with partial terms this may no longer be the case, as in: ?1 a1 ... an. So we also compile and evaluate the type of evars and metas. This still has to be tested more extensively, but the correction of the kernel native conversion (on terms without evars or metas) should not be impacted. Much of this could be reused for the VM.
2013-12-29Avoid generating .ml files in native compiler.Maxime Dénès
2013-12-29Got rid of unused lazy flag in the native compiler.Maxime Dénès
2013-12-28Revert "Partial revert of r16711"Maxime Dénès
The sharing introduced by this commit is now correct, since a reference used by the native compiler has been removed from constant_body. This reverts commit 413f5fcd4bf581ff3ea4694c193d637589c7d54f.
2013-12-28Removing native_name reference from constant_body.Maxime Dénès
For now, this reference (renamed to link_info) has been moved to the environment (for constants and inductive types). But this is only a first step towards making the native compiler more functional.
2013-12-24STM: capture type checking error (Closes: 3195)Enrico Tassi
Also, the future chain that reaches the kernel is greedy. If the user executes step by step, then the error is raised immediately.
2013-12-24Qed: feedback when type checking is doneEnrico Tassi
To make this possible the state id has to reach the kernel. Hence definition_entry has an extra field, and many files had to be fixed.
2013-12-24CoqIDE: new feedback "incomplete" to signal partial QedEnrico Tassi
2013-12-24Future: optional greedy chainingEnrico Tassi
If a Future.computation is already a value v or an exception and is chained in a greedy way with a function f, then f v is executed immediately (or the exception is raised).
2013-12-24cleanup warningEnrico Tassi
2013-12-24Simplifying the use of hypinfos in Rewrite.Pierre-Marie Pédrot
2013-12-23Rewrite.ml: removing direction flag from hypinfo.Pierre-Marie Pédrot
2013-12-22Do not pass unification flags around in Rewrite.Pierre-Marie Pédrot
2013-12-22Slight code cleaning ensuring more static invariants in Rewrite.Pierre-Marie Pédrot
2013-12-22Adding -bt to coqc.Pierre-Marie Pédrot
2013-12-22Adding a finer-grained -bt flag to coqtop only triggering backtraces.Pierre-Marie Pédrot
2013-12-22Notation variables are now taken into account as possible ltac bound variablesPierre-Marie Pédrot
when internalizing a term.
2013-12-22Notations now accept the $(...)$ tactic-in-term syntax. They are resolved atPierre-Marie Pédrot
internalization time.
2013-12-22Notations can now accept dummy arguments. If ever a bound variable is notPierre-Marie Pédrot
used, they are automatically flagged as only parsing. CAVEAT: unused arguments are not typechecked, because they are dropped before the interpretation phase.
2013-12-21Test case for the buggy commutative cut subterm rule.Maxime Dénès
2013-12-20configure.ml: our configure script is now written in ML :-)Pierre Letouzey
configure is now just a minimal wrapper around the new configure.ml. This configure.ml is runned with the same ocaml used during compilation, and starts with a #load "unix.cma". For now, this new configure script is meant to be 99% compatible with the old one. Known incompatibilities : the --foo option format (with two --) isn't supported anymore, use -foo options instead. Let me know if you encounter any other changes. Internals: - We use our own "run" command (based on Unix.create_process) to avoid relying on some specific shell (/bin/sh or cmd.exe). - We should have far less issues with filename quoting under windows since we almost never rely on (cygwin) shell anymore. This remains to be fully tested, though. - dev/ocamldebug-coq is slightly different now, to ease its generation
2013-12-20Makefile.build: avoid a -ppPierre Letouzey
2013-12-20coqc: execvp is now available even on win32Pierre Letouzey
2013-12-20coqmktop without Unix (simpler all_subdirs)Pierre Letouzey
2013-12-20Remove unused Makefile lines about .elc compilationPierre Letouzey
2013-12-20Warning removalPierre Boutillier
2013-12-20List: Bug 3039 weaker requirement for fold symmetricPierre Boutillier
2013-12-20Coqdep always uses / as dir_sepPierre Boutillier
2013-12-20micromega: removal of spurious Export; addition of Lia.v encapsulating lia ↵Frédéric Besson
and nia.
2013-12-19Removing the useless pattern ident genarg.Pierre-Marie Pédrot
2013-12-19Using interp_genarg in tactic notations where possible, instead of an ad-hocPierre-Marie Pédrot
interpreter.
2013-12-19test-suite/output/Notations : evar number changePierre Boutillier
2013-12-19Bad use of Obj.magic in interpretation of TacAlias arguments.Pierre Boutillier
It triggered nonsensical behaviour of list-using tactic notation. Hopefully or not, nobody uses such notations out of the test-suite...
2013-12-19Printing function for Stdargs in debuggerPierre Boutillier
2013-12-19Missing Fail in r16792Pierre Boutillier
2013-12-17test guard condition against feature incompatible with prop-extBruno Barras
2013-12-17Fix make install after 3e972b3ff8e532be233f70567c87512324c99b4ePierre Boutillier
Attempt to adapt .el files too. doc/refman/RefMan-uti.tex has still to be fixed.
2013-12-17Merge branch 'trunk' of github.com:coq/coq into trunkMatthieu Sozeau
2013-12-17Tentative fix of the guardedness checker by Christine and me. All stdlib and ↵Matthieu Sozeau
test-suite pass.
2013-12-17Removing the need of evarmaps in constr internalization.Pierre-Marie Pédrot
Actually, this was wrong, as evars should not appear until interpretation. Evarmaps were only passed around uselessly, and often fed with dummy or irrelevant values.
2013-12-16Get rid of messages "emitting ..." when compiling .v filesPierre Letouzey
If these messages are still relevent to somebody, feel free to restore them in -debug or any non-default mode of your choice.
2013-12-16A few fixes to the build system (mostly for ocamlbuild)Pierre Letouzey
* vars.mli was mentionning Term instead of Constr, leading to a dep cycle * Having a file named toplevel/toplevel.ml isn't a good idea when we also have a toplevel/toplevel.mllib that ought to produce a toplevel.cma. We rename toplevel.ml into Coqloop.ml * Extra cleanup of toplevel.mllib : - Ppextra isn't anywhere around (?!) - Ppvernac was mentionned twice, and rather belongs to printing.mllib anyway - Vernacexpr is a .mli and shouldn't appear in an .mllib * During the link, printing.cma now comes after parsing.cma (Ppvernac uses Egramml) * A few extra -threads in ocamlbuild files (btw, it's a bit sad to need -thread for coqchk).