aboutsummaryrefslogtreecommitdiffhomepage
Commit message (Collapse)AuthorAge
* Bug Fixes : 4851 4858 4880 for nsatzGravatar thery2016-07-06
| | | | | | | | | | | | | | | | | | the function in_ideal of ideal.ml supposes the list of polynomials does not contain zero and is duplicate free. I force this invariant in the call of in_ideal in nsatz.ml4 the function clean_pol returns the reduced list plus a list of booleans that indicates which polynomials have been deleted the function expand_pol translates back the certificate of the reduced to list to the complete list thanks to the list of booleans. The fix is quadratic with respect to the input list which should be ok for reasonable usage of nsatz. If there is some performance issue we could improve the in_pol function.
* Prevent unsafe overwriting of Required modules by toplevel library.Gravatar Maxime Dénès2016-07-05
| | | | | | | | | | | | | | | | In coqtop, one could do for instance: Require Import Top. (* Where Top contains a Definition b := true *) Lemma bE : b = true. Proof. reflexivity. Qed. Definition b := false. Lemma bad : False. Proof. generalize bE; compute; discriminate. Qed. That proof could however not be saved because of the circular dependency check. Safe_typing now checks that we are not requiring (Safe_typing.import) a library with the same logical name as the current one.
* congruence fix: test-suite code and update CHANGESGravatar Matthieu Sozeau2016-07-05
| | | | This fixes bugs #4069 (not 4609 as mentionned in the git log) and #4718.
* Pass .v files to coqc in Makefile produced by coq_makefile (bug #4896).Gravatar Guillaume Melquiond2016-07-05
| | | | | Coqc now expects physical names for input files, so fix coq_makefile accordingly.
* Add mailmap entry.Gravatar Guillaume Melquiond2016-07-05
|
* Bug fix : variable capture in ltac code of NsatzGravatar thery2016-07-05
| | | | | | | | changing set (x := val) into let x := fresh "x" in set (x := val)
* Merge branch 'congruencefix' into v8.5Gravatar Matthieu Sozeau2016-07-04
|\
| * congruence: Restrict refreshing to SetGravatar Matthieu Sozeau2016-07-04
| | | | | | | | | | | | Because refreshing Prop is not semantics-preserving, the new universe is >= Set, so cannot be minimized to Prop afterwards.
| * congruence: remove casts of indexed termsGravatar Matthieu Sozeau2016-07-04
| | | | | | | | | | This fixes the end of bug #4069, provoked by a use of unshelve refine which introduces a cast.
| * congruence/univs: properly refresh (fix #4609)Gravatar Matthieu Sozeau2016-07-04
| | | | | | | | | | | | | | In congruence, refresh universes including the Set/Prop ones so that congruence works with cumulativity, not restricting itself to the inferred types of terms that are manipulated but allowing them to be used at more general types. This fixes bug #4609.
* | Mention more fixes in CHANGES before we release pl2.Gravatar Maxime Dénès2016-07-04
| |
* | Revert "Improve the interpretation scope of arguments of an ltac match."Gravatar Maxime Dénès2016-07-04
|/ | | | | | We apply this patch to trunk for integration in 8.6 instead. This reverts commit 715f547816addf3e2e9dc288327fcbcee8c6d47f.
* test-suite: test checking of libraries checksum.Gravatar Maxime Dénès2016-07-04
|
* Merge remote-tracking branch 'github/pr/228' into v8.5Gravatar Maxime Dénès2016-07-04
|\ | | | | | | | | | | Was PR#228: fix coqide double module linking (error on OCaml 4.03) Fixes #4747: Problem building Coq 8.5pl1 with OCaml 4.03.0: Fatal warnings triggered by CoqIDE
* | Fixing use of "Declare Implicit Tactic" in refine.Gravatar Hugo Herbelin2016-07-01
| |
* | Fixing #4881 (synchronizing "Declare Implicit Tactic" with backtrack).Gravatar Hugo Herbelin2016-07-01
| |
* | Fixing #4882 (anomaly with Declare Implicit Tactic on hole of type with evars).Gravatar Hugo Herbelin2016-07-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | But there are still bugs with Declare Implicit Tactic, which should probably rather be reimplemented with ltac:(tac). Indeed, it does support evars in the type of the term, and solve_by_implicit_tactic should transfer universe constraints to the main goal. E.g., the following still fails, at Qed time. Definition Foo {T}{a : T} : T := a. Declare Implicit Tactic eassumption. Goal forall A (x : A), A. intros. apply Foo. Qed.
| * fix coqide double module linking (error on OCaml 4.03)Gravatar Gabriel Scherer2016-06-28
|/ | | | | | | | | | | | | | | | | | | | | | | | Linking the same module twice in OCaml can have problematic unintended consequences and lead to hard-to-understand bugs, see http://caml.inria.fr/mantis/view.php?id=4231 http://caml.inria.fr/mantis/view.php?id=5461 OCaml has long warned when double-linking happens Warning 31: files FOO and BAR both define a module named Baz In 4.03 this error was turned into a warning by default. Coqide does double-linking by passing both xml_{lexer,parser,printer}.cmo and lib/clib.cma that already contains these compilation units to bin/coqide.byte. To fix compilation of Coqide under 4.03, the present patch removes the .cmo from the command-line arguments. P.S.: I checked that this patch applies cleanly to the current trunk (b161ad97fdc01ac8816341a089365657cebc6d2b). It should also be possible to add it as a patch on top of the 8.5 archives (for example those distributed through OPAM) to make them compile under 4.03.
* Merge branch 'forhott' into v8.5Gravatar Matthieu Sozeau2016-06-28
|\
| * Univs/CHANGES: #4097 and annotations on notationsGravatar Matthieu Sozeau2016-06-27
| |
| * Refine fix for bug #4097, avoid proj expansionGravatar Matthieu Sozeau2016-06-27
| |
| * Univs: allowing notations to take univ instancesGravatar Matthieu Sozeau2016-06-27
| | | | | | | | They can apply to the head reference under a notation.
| * Forbidding silently dropped universes instances inGravatar Matthieu Sozeau2016-06-27
|/ | | | | | internalization. Patch by PMP, test-suite fix by MS.
* More on f9695eb4b, 827663982 on resolving #4782, #4813 (typing "with" clause).Gravatar Hugo Herbelin2016-06-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When typing a "with clause fails, type classes are used to possibly help to insert coercions. If this heuristic fails, do not consider it anymore to be the best failure since it has made type classes choices which may be inconsistent with other constraints and on which no backtracking is possible anymore (see new example in test suite file 4782.v). This does not mean that using type classes at this point is good. It may find an instance which help to find a coercion, but which might still be a choice of instance and coercion which is incompatible with other constraints. I tend to think that a convenient way to go to deal with the absence of backtracking in inserting coercions would be to have special For the record, here is a some comments of what happens regarding f9695eb4b and 827663982. In the presence of an instance (x:=t) given in a "with" clause, with t:T, and x expected of type T', the situation is the following: Before f9695eb4b: - If T and T' are closed and T <= T' is not satisfiable (no coercion or not convertible), the test for possible insertion of a coercion is postponed to w_merge, even though there is no way to get more information since T ant T' are closed. As a result, t may be ill-typed and the unification may try to unify ill-formed terms, leading to #4872. - If T and T' are not closed and contains evars of type a type class, inference of type classes is tried. If it fails, e.g. because a wrong type class instance is found, it was postponed to w_merge as above, and the test for coercion is retried now interleaved with type classes. After f9695eb4b and 827663982e: - If T and T' are closed and T <= T' is not satisfiable (no coercion or not convertible), the test for possible insertion of a coercion is an immediate failure. This fixes #4872. - However, If T and T' are not closed and contains evars of type a type class, inference of type classes is tried. If it gives closed terms and fails, this is immediate failure without backtracking on type classes, resulting in the problem added here to file 4872.v. The current fix does not consider the result of the use of type classes while trying to insert a coercion to be the last word on it. So, it fails with an error which is not the error for conversion of closed terms (ConversionFailed), therefore in a way expected by f9695eb4b and 827663982e, and the "with" typing problem is then postponed again.
* Fix bug #4698: CoqIDE error dialogs piling up when coqtop dies.Gravatar Pierre-Marie Pédrot2016-06-27
| | | | | | Instead of relaunching the coqtop process and then open the warning window, we rather fire the warning and wait for the user to press the OK button before doing anything.
* Fix typo.Gravatar Guillaume Melquiond2016-06-23
|
* Remove extraction-specific code from the checker.Gravatar Guillaume Melquiond2016-06-23
| | | | | | It seems like this code was copy-pasted from kernel/inductive.ml. It was already dubious enough in the kernel. It feels completely wrong in the checker.
* Reference Manual / Extraction: the original example command no longer works ↵Gravatar Matej Kosik2016-06-20
| | | | with recent Coq
* A hack to fix another regression with Ltac trace report in 8.5. E.g.Gravatar Hugo Herbelin2016-06-18
| | | | | | | | | | | | Goal 0=0 -> true=true. intro H; rewrite H1. was highlighting H1 but Goal 0=0 -> true=true. intro H; rewrite H. was only highlighting the whole "intro H; rewrite H".
* remote counter: avoid thread race on sockets (fix #4823)Gravatar Enrico Tassi2016-06-17
| | | | | | | | | | | | | | | | | | | | | | With par: the scenario is this one: coqide --- master ---- proof worker 1 (has no par: steps) ---- proof worker 2 (has a par: step) ---- tac worker 2.1 ---- tac worker 2.2 ---- tac worker 2.3 Actor 2 installs a remote counter for universe levels, that are requested to master. Multiple threads dealing with actors 2.x may need to get values from that counter at the same time. Long story short, in this complex scenario a mutex was missing and the control threads for 2.x were accessing the counter (hence reading/writing to the single socket connecting 2 with master at the same time, "corrupting" the data flow). A better solution would be to have a way to generate unique fresh universe levels locally to a worker.
* Merge branch 'bug4450' into v8.5Gravatar Matthieu Sozeau2016-06-14
|\
* \ Merge branch 'bug4725' into v8.5Gravatar Matthieu Sozeau2016-06-14
|\ \
* | | Admitted: fix #4818 return initial stmt and univsGravatar Matthieu Sozeau2016-06-14
| | |
* | | Fix test-suite file, only part 2 is fixed in 8.5Gravatar Matthieu Sozeau2016-06-13
| | |
* | | Univs: fix for part #2 of bug #4816.Gravatar Matthieu Sozeau2016-06-13
| | | | | | | | | | | | | | | Check that the polymorphic status of everything that is parameterized in nested sections is coherent.
* | | evar_conv: Refine occur_rigidlyGravatar Matthieu Sozeau2016-06-13
| | | | | | | | | | | | | | | | | | | | | This avoids postponing constraints which will surely produce an occur-check and allow to backtrack on first-order unifications producing those constraints directly (e.g. to apply eta). (fixes HoTT/HoTT with 8.5).
* | | Tentatively fixing misguiding error message with "binder" type inGravatar Hugo Herbelin2016-06-13
| | | | | | | | | | | | non-recursive notations (#4815).
* | | Minor simplification in evarconv.Gravatar Hugo Herbelin2016-06-12
| | | | | | | | | | | | | | | | | | Function default_fail was always part of an ise_try. Its associated error message was anyway thrown away. It is then irrelevant and could be made simpler.
* | | Another fix to #4782 (a typing error not captured when dealing with bindings).Gravatar Hugo Herbelin2016-06-12
| | | | | | | | | | | | | | | | | | The tentative fix in f9695eb4b (which I was afraid it might be too strong, since it was implying failing more often) indeed broke other things (see #4813).
* | | Reserve exception "ConversionFailed" in unification for failure ofGravatar Hugo Herbelin2016-06-12
| | | | | | | | | | | | | | | | | | | | | conversion on closed terms. This will be useful to discriminate problems involving the "with" clause and which fails by lack of information or for deeper reasons.
* | | Protecting eta-expansion in evarconv.ml against ill-typed problems.Gravatar Hugo Herbelin2016-06-12
| | | | | | | | | | | | | | | | | | This can happen with the "with" clause (see e.g. #4782), but also with recursive calls in first-order unification (e.g. "?n a a b = f a" when a matching between "b" and "a" is tried before expanding f).
* | | Fixing bug in printing CannotSolveConstraint (collision of context names).Gravatar Hugo Herbelin2016-06-12
| | |
* | | Fixing #4782 (a typing error not captured when dealing with bindings).Gravatar Hugo Herbelin2016-06-11
| | | | | | | | | | | | | | | | | | Trying to now catch all unification errors, but without a clear view at whether some errors could be tolerated at the point of checking the type of the binding.
* | | Fixing a try with in apply that has become too weak in 8.5.Gravatar Hugo Herbelin2016-06-11
| | | | | | | | | | | | | | | | | | Don't know however what should be the right guard to this try. Now using catchable_exception, but even in 8.4, Failure was caught, which is strange.
* | | Reporting about a few bug fixes (to be continued).Gravatar Hugo Herbelin2016-06-09
| | |
* | | Fixing #4644 (regression of unification on evar-evar problems with a match).Gravatar Hugo Herbelin2016-06-09
| | | | | | | | | | | | | | | Typically, a problem of the form "?x args = match ?y with ... end" was a failure even if miller-unification was applicable.
* | | Minor simplification in evarconv.ml.Gravatar Hugo Herbelin2016-06-09
| | |
* | | New update on how to find camlp5 binary and library at configure time.Gravatar Hugo Herbelin2016-06-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Renouncing to bypass the library path given by "camlp5o -where" what we assume to be the default library location, considering that -usecamlp5dir is here to deal with the non-standard installation layout. Renouncing to find camlp5 libraries in a subdirectory of the ocaml library directory since we now know that camlp5o is found and that we have a priori to trust option -where of camlp5o. Additionally falling back on looking for camlp4 if a camlp5 library is found but no camlp5 binary. Also using camlp5o as a reference since after all this is camlp5o that we need. In particular, this fixes situations where -usecamlp5dir is given but "camlp5o -where" contradicts it. If something has to be checked on windows, please tell.
* | | Improve the interpretation scope of arguments of an ltac match.Gravatar Hugo Herbelin2016-06-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now, type_scope is consistently used whether it is an hypothesis or the conclusion, and consistently not used when in "context". The question of a compatibility support, e.g., as suggested by Jason, using a scope is still open though. See reports #3050 and #4398.
* | | Reverting dbdff037 which does not seem to prevent to have #3638 fixedGravatar Hugo Herbelin2016-06-09
| | | | | | | | | | | | | | | on the contrary of message given in 23041481f, while it introduces a square time complexity of the size of the goal in subterm finding.