aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-06-27More on f9695eb4b, 827663982 on resolving #4782, #4813 (typing "with" clause).Hugo Herbelin
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.
2016-06-27Fix bug #4698: CoqIDE error dialogs piling up when coqtop dies.Pierre-Marie Pédrot
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.
2016-06-23Fix typo.Guillaume Melquiond
2016-06-23Remove extraction-specific code from the checker.Guillaume Melquiond
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.
2016-06-20Reference Manual / Extraction: the original example command no longer works ↵Matej Kosik
with recent Coq
2016-06-18A hack to fix another regression with Ltac trace report in 8.5. E.g.Hugo Herbelin
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".
2016-06-17remote counter: avoid thread race on sockets (fix #4823)Enrico Tassi
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.
2016-06-14Merge branch 'bug4450' into v8.5Matthieu Sozeau
2016-06-14Merge branch 'bug4725' into v8.5Matthieu Sozeau
2016-06-14Admitted: fix #4818 return initial stmt and univsMatthieu Sozeau
2016-06-13Fix test-suite file, only part 2 is fixed in 8.5Matthieu Sozeau
2016-06-13Univs: fix for part #2 of bug #4816.Matthieu Sozeau
Check that the polymorphic status of everything that is parameterized in nested sections is coherent.
2016-06-13evar_conv: Refine occur_rigidlyMatthieu Sozeau
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).
2016-06-13Tentatively fixing misguiding error message with "binder" type inHugo Herbelin
non-recursive notations (#4815).
2016-06-12Minor simplification in evarconv.Hugo Herbelin
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.
2016-06-12Another fix to #4782 (a typing error not captured when dealing with bindings).Hugo Herbelin
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).
2016-06-12Reserve exception "ConversionFailed" in unification for failure ofHugo Herbelin
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.
2016-06-12Protecting eta-expansion in evarconv.ml against ill-typed problems.Hugo Herbelin
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).
2016-06-12Fixing bug in printing CannotSolveConstraint (collision of context names).Hugo Herbelin
2016-06-11Fixing #4782 (a typing error not captured when dealing with bindings).Hugo Herbelin
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.
2016-06-11Fixing a try with in apply that has become too weak in 8.5.Hugo Herbelin
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.
2016-06-09Reporting about a few bug fixes (to be continued).Hugo Herbelin
2016-06-09Fixing #4644 (regression of unification on evar-evar problems with a match).Hugo Herbelin
Typically, a problem of the form "?x args = match ?y with ... end" was a failure even if miller-unification was applicable.
2016-06-09Minor simplification in evarconv.ml.Hugo Herbelin
2016-06-09New update on how to find camlp5 binary and library at configure time.Hugo Herbelin
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.
2016-06-09Improve the interpretation scope of arguments of an ltac match.Hugo Herbelin
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.
2016-06-09Reverting dbdff037 which does not seem to prevent to have #3638 fixedHugo Herbelin
on the contrary of message given in 23041481f, while it introduces a square time complexity of the size of the goal in subterm finding.
2016-06-09Univs/(e)auto: fix bug #4450 polymorphic exact hintsMatthieu Sozeau
The exact and e_exact tactics were not registering the universes and constraints of the hint correctly. Now using the same connect_hint_clenv as unify_resolve, they do. Also correct the implementation of prepare_hint to normalize the universes of the hint before abstracting its undefined universes. They are going to be refreshed at each application. This means that eauto using term can use multiple different instantiations of the universes of term if term introduces new universes. If we want just one instantiation then the term should be abbreviated in the goal first.
2016-06-09Remove failure on non-.v files (bug #4752).Guillaume Melquiond
The error message was not only causing coqtop to exit, but also coqide to crash, which led to a rather poor user experience. Since the code does not actually care about the file extension, this commit just removes the test.
2016-06-07Fix bug #4777: Printing time is impacted by large terms that don't print.Pierre-Marie Pédrot
We delay the externalization of application arguments in Constrextern, so that they only get computed when they are actually explicitly displayed.
2016-06-07Do not use COQLIBS for the validate rule produced by coq_makefile (bug #4693).Guillaume Melquiond
The COQLIBS variable contains some -Q and -I options, which are not supported by the checker. So this commit introduces a COQCHKLIBS variable that contains the proper options for coqchk. For the sake of homogeneity, the COQDOCLIBS variable is also preprocessed in the same way. This means that both variables have the same value, but they are kept separate in case the user would like to override one and not the other. This commit also removes some deprecated options from "coqchk --help". They are not removed from coqchk itself to preserve backward compatibility in the branch. An open question is whether coqchk should support dummy options such as -Q (interpreted as -R) or -I (ignored).
2016-06-06Fixing problems introduced in 8.5 with Ltac trace report. E.g.Hugo Herbelin
Tactic Notation "f" constr(x) := apply x. Ltac g x := f x. Goal False. g I. (* Was printing Top.Top#<>#1 *) idtac; f I. (* Was not properly locating error *) This is a "a minima" fix. This a different fix than in trunk, so the merge will have to take the trunk version.
2016-06-05Fix incorrect checking of library checksums.Maxime Dénès
Since d09def34, only the summary of libraries was included in the checksum, not the actual content of the library. This quick fix performs the checking of the checksum immediately, even if the loading is delayed.
2016-06-03Add license text to the windows installationEnrico Tassi
2016-06-03Fix proof terminators not being detected in presence of curly brackets (bug ↵Guillaume Melquiond
#4770). This also fixes comments not being properly skipped when looking for eol.
2016-06-03Make "coqdoc -g --parse-comments" behave properly (bug #4773).Guillaume Melquiond
As a side effect, there should be a small speedup when ignoring comments. This commit also fixes two bugs related to handling "$$" and "#" in comments.
2016-06-02Fix build (use the same mllib file as in trunk).Guillaume Melquiond
2016-06-02Avoid refreshing the segment widget each time a sentence is added.Lionel Rieg
This brings a 10x speedup for going at the end of large .v files.
2016-05-31Fix potential race condition in vm_compute.Guillaume Melquiond
If the second allocation causes a collection of the minor heap, the first allocation will be freed, thus causing a memory corruption. Note: it only happens when computing the native projection of an opaque value while the minor heap is almost full.
2016-05-31Revert "Rename Lexer -> CLexer."Pierre-Marie Pédrot
This reverts commit a66b57ba4bba866bb626bde2b6fe3b762347eb3e.
2016-05-30Extraction : add a location in the error message about polypropPierre Letouzey
2016-05-29Fix bug #4746: Anomaly: Evar ?X10 was not declared.Pierre-Marie Pédrot
Some dubious evarmap manipulation is going on in destruct because of the use of clenv primitives. Here, building a clenv was introducing new evars that were not taken into account in the remainder of the tactic. We plug them back using a local workaround. Eventually, this code should be replaced by an evar-based one, but meanwhile, we rely on what is probably a hack.
2016-05-27STM: fix argument filtering for slavesEnrico Tassi
Command line options to be dropped got outdated after vi -> vio renaming. This made the par: goal selector do not work in conjunction with -quick.
2016-05-26Pfedit.get_current_context refinement (fix #4523)Matthieu Sozeau
Return the most appropriate evar_map for commands that can run on non-focused proofs (like Check, Show and debug printers) so that universes and existentials are printed correctly (they are global to the proof). The API is backwards compatible.
2016-05-26rewrite/Univs: Fix bug # 4498.Matthieu Sozeau
2016-05-26Univs/Program/Function: Fix bug #4725Matthieu Sozeau
- In Program, a check_evars_are_solved was introduced too early. Program does it's checking of evars by itself. - In Function, the universe environments were not threaded correctly.
2016-05-26Program: remove debug tracingMatthieu Sozeau
2016-05-23Extraction/Projections: Fix bug #4710Matthieu Sozeau
Use the compatibility match construction to extract the compatibility constant associated to a primitive projection.
2016-05-23Hints/Univs: fix bug #4628 anomaliesMatthieu Sozeau
Fix handling of non-polymorphic hints built from polymorphic values, or simply producing new universes. We have to record the side effects of global hints built from constrs which are not polymorphic when they declare global universes, which might need to be discharged at the end of sections too. Also issue a warning when a Hint is declared for a polymorphic reference but the Hint isn't polymorphic itself (this used to produce an anomaly). For [using] hints, treat all lemmas as polymorphic, refreshing their universes at each use, as is done for their existentials (also used to produce an anomaly).
2016-05-20Disable memoization rather than failing when files cannot be opened.Guillaume Melquiond
Anomaly: Uncaught exception Unix.Unix_error(Unix.EACCES, "open", "lia.cache"). Please report.