aboutsummaryrefslogtreecommitdiffhomepage
path: root/test-suite
Commit message (Collapse)AuthorAge
...
* | | | | | | | | Merge PR #978: In printing, experimenting factorizing "match" clauses with ↵Gravatar Maxime Dénès2017-12-14
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | same right-hand side.
| | | | | | | * | | Circle CI: cat failed test suite logsGravatar Gaëtan Gilbert2017-12-14
| | | | | | | | | |
* | | | | | | | | | Merge PR #6341: Fix anomaly in [Type foo] command, + print uctx like Check.Gravatar Maxime Dénès2017-12-13
|\ \ \ \ \ \ \ \ \ \ | |_|_|_|_|_|_|/ / / |/| | | | | | | | |
| | | | | * | | | | Fix #5081 by more fine-grained LtacProf recordingGravatar Jason Gross2017-12-12
| |_|_|_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | To fix #5081, that LtacProf associates time spent in tactic-evaluation with the wrong tactic, I added two additional calls to the profiler during tactic evaluation phase. These two calls do not update the call count of the relevant tactics, but simply add time to them. Although this fixes #5081, it introduces a new bug, involving tactics which are aliases of other tactics, which I am not sure how to fix. Here is the explanation of the issue, as I currently understand it (also recorded in a comment in `profile_ltac.mli`): Ltac semantics are a bit insane. There isn't really a good notion of how many times a tactic has been "called", because tactics can be partially evaluated, and it's unclear whether the number of "calls" should be the number of times the body is fetched and unfolded, or the number of times the code is executed to a value, etc. The logic in `Tacinterp.eval_tactic` gives a decent approximation, which I believe roughly corresponds to the number of times that the engine runs the tactic value which results from evaluating the tactic expression bound to the name we're considering. However, this is a poor approximation of the time spent in the tactic; we want to consider time spent evaluating a tactic expression to a tactic value to be time spent in the expression, not just time spent in the caller of the expression. So we need to wrap some nodes in additional profiling calls which don't count towards to total call count. Whether or not a call "counts" is indicated by the `count_call` boolean argument. Unfortunately, at present, we can get very strange call graphs when a named tactic expression never runs as a tactic value: if we have `Ltac t0 := t.` and `Ltac t1 := t0.`, then `t1` is considered to run 0(!) times. It evaluates to `t` during tactic expression evaluation, and although the call trace records the fact that it was called by `t0` which was called by `t1`, the tactic running phase never sees this. Thus we get one call tree (from expression evaluation) that has `t1` calls `t0` calls `t`, and another call tree which says that the caller of `t1` calls `t` directly; the expression evaluation time goes in the first tree, and the call count and tactic running time goes in the second tree. Alas, I suspect that fixing this requires a redesign of how the profiler hooks into the tactic engine.
| | * | | | | | | In printing, factorizing "match" clauses with same right-hand side.Gravatar Hugo Herbelin2017-12-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Moreover, when there are at least two clauses and the last most factorizable one is a disjunction with no variables, turn it into a catch-all clause. Adding options Unset Printing Allow Default Clause. to deactivate the second behavior, and Unset Printing Factorizable Match Patterns. to deactivate the first behavior (deactivating the first one deactivates also the second one). E.g. printing match x with Eq => 1 | _ => 0 end gives match x with | Eq => 1 | _ => 0 end or (with default clause deactivates): match x with | Eq => 1 | Lt | Gt => 0 end More to be done, e.g. reconstructing multiple patterns in Nat.eqb...
| | | * | | | | | Allow LtacProf tactics to be calledGravatar Jason Gross2017-12-11
| |_|/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes #6378. Previously the ML module was never declared anywhere. Thanks to @cmangin for the pointer.
| | | * | | | | Catch errors while coercing 'and' intro patternsGravatar Tej Chajed2017-12-11
| |_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | Fixes GH#6384 and GH#6385.
| * | | | | | Fix anomaly in [Type foo] command, + print uctx like Check.Gravatar Gaëtan Gilbert2017-12-11
| | | | | | |
* | | | | | | Merge PR #6324: Fix #6323: stronger restrict universe context vs abstract.Gravatar Maxime Dénès2017-12-11
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | |
* | | | | | | Merge PR #6158: Allows a level in the raw and glob printersGravatar Maxime Dénès2017-12-08
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | |
* | | | | | | Merge PR #873: New strategy based on open scopes for deciding which notation ↵Gravatar Maxime Dénès2017-12-07
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | to use among several of them
| | | * | | | | Fix #6323: stronger restrict universe context vs abstract.Gravatar Gaëtan Gilbert2017-12-06
| |_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the test we do [let X : Type@{i} := Set in ...] with Set abstracted. The constraint [Set < i] was lost in the abstract. Universes of a monomorphic reference [c] are considered to appear in the term [c].
| | | | * | | use \ocaml macro in Extraction chapter; accept OCaml in Extraction LanguageGravatar Paul Steckler2017-12-05
| |_|_|/ / / |/| | | | |
* | | | | | Merge PR #890: Global universe declarationsGravatar Maxime Dénès2017-12-05
|\ \ \ \ \ \
* \ \ \ \ \ \ Merge PR #6306: Adding a test for #6304 (a bug with "fix" in notations).Gravatar Maxime Dénès2017-12-05
|\ \ \ \ \ \ \
* \ \ \ \ \ \ \ Merge PR #6220: Use OCaml criteria for infix ops in extraction, #6212Gravatar Maxime Dénès2017-12-05
|\ \ \ \ \ \ \ \
* \ \ \ \ \ \ \ \ Merge PR #6210: More complete not-fully-applied error messages, #6145Gravatar Maxime Dénès2017-12-05
|\ \ \ \ \ \ \ \ \
| | | * | | | | | | Adding a test for #6304 (bug with fix in notations).Gravatar Hugo Herbelin2017-12-03
| |_|/ / / / / / / |/| | | | | | | |
| | | | | | | | * Fix #6297: handle constraints like (u+1 <= Set/Prop)Gravatar Gaëtan Gilbert2017-12-01
| |_|_|_|_|_|_|/ |/| | | | | | |
| | | * | | | | Cleanup API for registering universe binders.Gravatar Matthieu Sozeau2017-12-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Regularly declared for for polymorphic constants - Declared globally for monomorphic constants. E.g mono@{i} := Type@{i} is printed as mono@{mono.i} := Type@{mono.i}. There can be a name clash if there's a module and a constant of the same name. It is detected and is an error if the constant is first but is not detected and the name for the constant not registered (??) if the constant comes second. Accept VarRef when registering universe binders Fix two problems found by Gaëtan where binders were not registered properly Simplify API substantially by not passing around a substructure of an already carrier-around structure in interpretation/declaration code of constants and proofs Fix an issue of the stronger restrict universe context + no evd leak This is uncovered by not having an evd leak in interp_definition, and the stronger restrict_universe_context. This patch could be backported to 8.7, it could also be triggered by the previous restrict_context I think.
| | | * | | | | Tests for global universe declarationsGravatar Matthieu Sozeau2017-12-01
| | | | | | | |
| | | * | | | | Proper nametab handling of global universe namesGravatar Matthieu Sozeau2017-12-01
| |_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | They are now bound at the library + module level and can be qualified and shadowed according to the usual rules of qualified names. Parsing and printing of universes "u+n" done as well. In sections, global universes are discharged as well, checking that they can be defined globally when they are introduced
* | | | | | | Merge PR #6274: Attempt to fix inversion disregarding singleton types (fixes ↵Gravatar Maxime Dénès2017-11-30
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | #3125)
* \ \ \ \ \ \ \ Merge PR #6193: Fix (partial) #4878: option to stop autodeclaring axiom as ↵Gravatar Maxime Dénès2017-11-30
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | instance.
* \ \ \ \ \ \ \ \ Merge PR #6253: Fixing inconsistent associativity of level 10 in the table ↵Gravatar Maxime Dénès2017-11-29
|\ \ \ \ \ \ \ \ \ | |_|_|_|_|_|_|/ / |/| | | | | | | | | | | | | | | | | of levels
| | | * | | | | | In injection/inversion, consider all template-polymorphic types as injectable.Gravatar Hugo Herbelin2017-11-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In particular singleton inductive types are considered injectable, even in the absence of the option "Set Keep Proof Equalities". This fixes #3125 (and #4560, #6273).
| | | | * | | | | more complete not-fully-applied error messages, #6145Gravatar Paul Steckler2017-11-28
| | | | | | | | |
| | * | | | | | | Fix (partial) #4878: option to stop autodeclaring axiom as instance.Gravatar Gaëtan Gilbert2017-11-28
| |/ / / / / / / |/| | | | | | |
| | | | | | | * Make the micromega extraction check a regular output test.Gravatar Gaëtan Gilbert2017-11-28
| |_|_|_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to enforce that it works without breaking the build when it doesn't.
* | | | | | | Merge PR #1033: Universe binder improvementsGravatar Maxime Dénès2017-11-28
|\ \ \ \ \ \ \
* \ \ \ \ \ \ \ Merge PR #6235: Fixing failing mkdir in test-suite for coq-makefile.Gravatar Maxime Dénès2017-11-28
|\ \ \ \ \ \ \ \ | |_|_|/ / / / / |/| | | | | | |
| | | | | | * | Selecting which notation to print based on current stack of scope.Gravatar Hugo Herbelin2017-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See discussion on coq-club starting on 23 August 2016. An open question: what priority to give to "abbreviations"?
| | | | | | * | Pre-isolating a notation test to avoid interferences.Gravatar Hugo Herbelin2017-11-27
| |_|_|_|_|/ / |/| | | | | |
* | | | | | | Merge PR #6237: coq_makefile tests: build in easily removed temporary ↵Gravatar Maxime Dénès2017-11-27
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | subdirectory.
* \ \ \ \ \ \ \ Merge PR #6149: Update TimeFileMaker.py to correctly sort timing diffsGravatar Maxime Dénès2017-11-27
|\ \ \ \ \ \ \ \
| | | | | * | | | Fixing associativity registered for level 10.Gravatar Hugo Herbelin2017-11-27
| |_|_|_|/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Apparently a long-standing bug, coupled with a pattern/constr associativity inconsistency introduced while fixing another pattern/constr level inconsistency (bug #4272, 0917ce7c).
| | | | * | | | Restrict universe context when declaring constants in obligations.Gravatar Gaëtan Gilbert2017-11-25
| | | | | | | |
| | | | * | | | Fix #5347: unify declaration of axioms with and without bound univs.Gravatar Gaëtan Gilbert2017-11-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Note that this makes the following syntax valid: Axiom foo@{i} bar : Type@{i}. (ie putting a universe declaration on the first axiom in the list, the declaration then holds for the whole list).
| | | | * | | | Fix interpretation of global universes in univdecl constraints.Gravatar Gaëtan Gilbert2017-11-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also nicer error when the constraints are impossible.
| | | | * | | | Forbid repeated names in universe binders.Gravatar Gaëtan Gilbert2017-11-25
| | | | | | | |
| | | | * | | | Universe binders survive sections, modules and compilation.Gravatar Gaëtan Gilbert2017-11-25
| | | | | | | |
| | | | * | | | Allow local universe renaming in Print.Gravatar Gaëtan Gilbert2017-11-25
| | | | | | | |
| | | | * | | | Make restrict_universe_context stronger.Gravatar Gaëtan Gilbert2017-11-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes BZ#5717. Also add a test and fix a changed test.
| | | | * | | | In close_proof only check univ decls with the restricted context.Gravatar Gaëtan Gilbert2017-11-24
| | | | | | | |
| | | | * | | | When declaring constants/inductives use ContextSet if monomorphic.Gravatar Gaëtan Gilbert2017-11-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also use constant_universes_entry instead of a bool flag to indicate polymorphism in ParameterEntry. There are a few places where we convert back to ContextSet because check_univ_decl returns a UContext, this could be improved.
| | | | * | | | restrict_universe_context: do not prune named universes.Gravatar Gaëtan Gilbert2017-11-24
| | | | | | | |
| | | | * | | | Fix defining non primitive projections with abstracted universes.Gravatar Gaëtan Gilbert2017-11-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I think this only affects printing (in the new test you would get [Var (0)] when printing runwrap) but is still ugly.
| | | | * | | | Stop exposing UState.universe_context and its Evd wrapper.Gravatar Gaëtan Gilbert2017-11-24
| |_|_|/ / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can enforce properties through check_univ_decl, or get an arbitrary ordered context with UState.context / Evd.to_universe_context (the later being a new wrapper of the former).
| | | | | | * Printing again "intros **" as "intros" by default.Gravatar Hugo Herbelin2017-11-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The rationale it that it is more common to do so and thus more "natural" (principle of writing less whenever possible).
| | | | | | * Fixes #5787 (printing of "constr:" lost in the move of constr to Generic).Gravatar Hugo Herbelin2017-11-24
| |_|_|_|_|/ |/| | | | | | | | | | | | | | | | | Was broken since 8.6.