aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-06-15Remove the syntax changes introduced by this branch.Pierre-Marie Pédrot
We decided to only export the API, so that an external plugin can provide this feature without having to merge it in current Coq trunk. This postpones the attribute implementation in vernacular commands after 8.6.
2016-06-15Allow `Pretyping.search_guard` to not check guardArnaud Spiwack
This is a minimal modification to the pretyping interface which allows for toplevel fixed points to be accepted by the pretyper. Toplevel co-fixed points are accepted without this. However (co-)fixed point _nested_ inside a `Definition` or a `Fixpoint` are always checked for guardedness by the pretyper.
2016-06-14Assume totality: dedicated type rather than boolArnaud Spiwack
The rational is that 1. further typing flags may be available in the future 2. it makes it easier to trace and document the argument
2016-04-05Revert "Prevent pretyping from checking well-guardedness unnecessarily."Arnaud Spiwack
This reverts commit 9f4e67a7c9f22ca853e76f4837a276a6111bf159.
2015-09-25Show assumptions of well-foundedness in `Print Assumptions`Arnaud Spiwack
2015-09-25Add a field in `constant_body` to track constant whose well-foundedness is ↵Arnaud Spiwack
assumed.
2015-09-25Declare assumptions of well-founded definitions as unsafe.Arnaud Spiwack
So that fixpoints and cofixpoints which are assumed to be total are highlighted in yellow in Coqide, for instance.
2015-09-25Prevent pretyping from checking well-guardedness unnecessarily.Arnaud Spiwack
The `search_guard` function is called to infer the recursive argument of fixpoints. For each potential argument, it tests whether it is called structurally, calling the kernel test. When a single argument is available either because `{struct x}` was specified, or because there is a single inductive argument, the kernel test is performed, despite the fact that the kernel will do it later, and the kernel error reraised. It is unnecessary.
2015-09-25Propagate `Guarded` flag from syntax to kernel.Arnaud Spiwack
The path is quite a bit of a maze, this commit is not as simple as it ought to be. Something more robust than a boolean should be used here.
2015-09-25Add (temporary) syntax for assuming guardedness in (co-)fixed points.Arnaud Spiwack
The syntax is `Fixpoint Assume[Guarded] …`. For some reason `Assume [Guarded] Fixpoint` broke the parser.
2015-09-25Add `Guarded` to the assumption tokens.Arnaud Spiwack
2015-09-25Add a flag in `VernacFixpoint` and `VernacCoFixpoint` to control assuming ↵Arnaud Spiwack
guardedness.
2015-06-26Add a flag to deactivate guard checking in the kernel.Arnaud Spiwack
2015-06-25Add coqide syntax highlighting for `Assume`.Arnaud Spiwack
2015-06-25Adjust checker after `Assume [Positive]`.Arnaud Spiwack
2015-06-24Make inductives that were assumed positive appear in `Print Assumptions`.Arnaud Spiwack
They appear as axioms of the form `Foo is positive`.
2015-06-24When assuming an inductive type positive, then it is declared "unsafe" to ↵Arnaud Spiwack
the interfaces.
2015-06-24Add syntax entry to assume strict positivity of an inductive type.Arnaud Spiwack
The syntax is `Assume [Positive]` Inductive/CoInductive/Record…`. The square brackets are used to delimit what is actually a list, so that other such flags can be passed in the future (universes, guard condition…).
2015-06-24Add corresponding field in `VernacInductive`.Arnaud Spiwack
Makes sure not to generate inductive schemes of assumed positive types.
2015-06-24Add a corresponding field in `mutual_inductive_entry` (part 2).Arnaud Spiwack
The request for positivity to be assumed is honored.
2015-06-24Add a corresponding field in `mutual_inductive_entry` (part 1).Arnaud Spiwack
The field in `mutual_inductive_entry` requires that a mutually inductive definition be checked or not, whereas the field in `mutual_inductive_body` asserts that it has or has not been.
2015-06-24Add a field in `mutual_inductive_body` to represent mutual inductive whose ↵Arnaud Spiwack
positivity is assumed.
2015-06-24Extend test-suite for the positivity checker.Arnaud Spiwack
I wasn't very creative: I just added a single test by failure case in the positivity checker (plus one success). There should probably be tests with mutually inductives and co-inductives as well.
2015-06-24Merge branch 'v8.5'Pierre-Marie Pédrot
2015-06-24Add a space in cast since cast binds loosely.Gregory Malecha
Fixes bug 3936 This closes #73
2015-06-24improve --help documentation: the -m|--memory option was missingGabriel Scherer
2015-06-24when OCAML_GC_STATS points to a filepath, write Gc stats into itGabriel Scherer
This interface is promoted by the operf-macro tool https://github.com/OCamlPro/operf-macro which allows to run benchmarks of time and memory usage of various OCaml programs. Coq already has two ways to get Gc infos: - the -m|--memory command-line flag prints the total heap words allocated - the "Print Debug Gc" command prints much more information, but in a Coq-implementation-defined format that is not suitable for across-programs comparison (also an environment variable allows to profile Coq runs on any .v, in an non-intrusive way) Note to the Github Robot: This closes #75
2015-06-24On-demand Require.Pierre-Marie Pédrot
Marshalled libraries are only loaded when needed and dropped thereafter. This might be costly for Require inside modules, but such a practice is discouraged anyway.
2015-06-24Splitting the library representation on disk in two.Pierre-Marie Pédrot
The first part only contains the summary of the library, while the second one contains the effective content of it.
2015-06-23obligations: wrap Ephemeron.get to make error more informativeEnrico Tassi
A worker should never have to access the still-to-be-proved obligations. If that happens, raise an informative anomaly.
2015-06-23Wrap the program_info type up in the ephemeron mechanismAlec Faithfull
This type contains a few unmarshallable fields, which can cause STM workers to break in unpleasant ways when running queries
2015-06-23Fixing incompatibility introduced with simpl in commit 364decf59c1 (orHugo Herbelin
maybe ca71714). Goal 2=2+2. match goal with |- (_ = ?c) => simpl c end. was working in 8.4 but was failing in 8.5beta2. Note: Changes in tacintern.ml are otherwise purely cosmetic.
2015-06-23Less closures makes the GC happy.Pierre-Marie Pédrot
2015-06-23Wrapped the declare_object function to pretty-print anomalies at loading time.Thomas Sibut-Pinote
2015-06-23Moved fatal_error from Coqtop to Errors and corrected dependencies accordingly.Thomas Sibut-Pinote
This allows fatal_error to be used for printing anomalies at loading time.
2015-06-23Add a Set Dump Bytecode command for debugging purposes.Maxime Dénès
Prints the VM bytecode produced by compilation of a constant or a call to vm_compute.
2015-06-23Fix `Pp` function used by the `Info` command.Arnaud Spiwack
I used a low-level function, now changed to `msg_notice`.
2015-06-23With the field record punning syntax.Theo Zimmermann
2015-06-23Put all arguments of strategy in record.Theo Zimmermann
2015-06-23Strategy is now a record type with a function field.Theo Zimmermann
2015-06-23Add comments.Theo Zimmermann
2015-06-23Warning are enabled by default in interactive mode.Pierre-Marie Pédrot
2015-06-23Document the positivity checker.Arnaud Spiwack
This is my attempt at understanding each case and subfunction of the positivity check and document each of them to the best of my capacity.
2015-06-22Merge branch 'v8.5' into trunkPierre Letouzey
2015-06-22Remove uses of polymorphic equality from prev. commitClément Pit--Claudel
Message to the github robot: This closes #63
2015-06-22Replace 'try ... with Failure "List.last"' with 'if l <> []'Clément Pit--Claudel
2015-06-22Guard the List.hd call in [Show Intros]Clément Pit--Claudel
Fix for [Anomaly: Uncaught exception Failure("hd")] after running [Show Intros] at the end of a proof: Goal True. trivial. Show Intros.
2015-06-22Add efficient extraction of [nat], [Z], and [string] to HaskellNickolai Zeldovich
This mirrors the existing extraction libraries for OCaml. One wart: the extraction for [string] requires that the Haskell code imports Data.Bits and Data.Char. Coq has no way to add extra import statements to the extracted code. So we have to rely on the user to somehow import these libraries (e.g., using the -pgmF ghc option). See also https://coq.inria.fr/bugs/show_bug.cgi?id=4189 Message to github robot: this commit closes #65
2015-06-22Merge remote-tracking branch 'forge/v8.5'Pierre Boutillier
2015-06-22Fixup last commitPierre Boutillier