| Commit message (Collapse) | Author | Age |
... | |
| |
|
|
|
|
| |
unification (not necessarily preserved due to the fo approximation rule).
|
|
|
|
| |
only one disjoint component of the typeclasses instances to resolve.
|
| |
|
| |
|
|
|
|
| |
their type annotation.
|
|
|
|
|
|
|
| |
We just handle unnamed implicits using a dummy name. Note that the implicit
argument logic should still output warnings whenever the user writes implicit
arguments that won't be taken into account, but I'll leave that for another
time.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For instance,
Inductive a (x:=1) := C : a -> True.
was wrongly reporting
Error: The type of constructor C
is not valid; its conclusion must be
"a" applied to its parameter.
Also "simplifying" explain_ind_err.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For pose/set/clearbody, I think it is clear that we want to preserve
the name and this commit do it.
For revert, I first did not preserve the name, then considered in
2ba2ca96be88 that it was better to preserve it.
For intro, like for revert actually, I did not preserve the name,
based on the idea that the type was changing (*). For instance if we have
?f:nat->nat, do we really want to keep the name f in ?f:nat after an
intro.
For revert, I changed my mind based on the idea that if we had a
better control of the name if we keep the name that if the system
invents a new one based on the type. I think this is more reasonable
than (*), so this commit preserves the name for intro.
For generalize, it is still not done because of generalize being in
the old proof engine.
|
| |
|
| |
|
|
|
|
|
|
|
| |
Like coqc: detect if the current directory was set by options, if not: add
it with empty logical path.
TODO: check if coq_makefile is still correct wrt to this modification, I
think yes, actually it should end being more correct.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
for reporting it.
A "cut" was not appropriately chained on the second goal but on both
goals, with the chaining on the first goal introducing noise.
|
| |
|
|
|
|
|
|
| |
Syntactic analysis of dependencies when atomizing arguments in destruct
was not dealing properly with primitive projections hiding their
parameters.
|
| |
|
|
|
|
| |
proofs.
|
|
|
|
| |
whd_evar in refresh_universes.
|
| |
|
|
|
|
| |
inconsistent).
|
|
|
|
|
| |
When refreshing a type variable, always use a rigid universe to force the most
general universe constraint, as in 8.4.
|
|
|
|
| |
is buggy in general.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now doing
```coq
Tactic Notation "left" "~" := left.
Tactic Notation "left" "*" := left.
```
will no longer break the `left` tactic in Coq 8.4.
List obtained via
```
grep -o '^ \[[^]]*\]' tactics/coretactics.ml4 | sed s'/^ \[ \(.*\) \]/Tactic Notation \1 := \1./g' | sed s'/\(:=.*\)"/\1/g' | sed s'/\(:=.*\)"/\1/g' | sed s'/\(:=.*\)"/\1/g' | sed s'/\(:=.*\)"/\1/g' | sed s'/\(:=.*\) \(constr\|bindings\|constr_with_bindings\|quantified_hypothesis\|ne_hyp_list\)(\([^)]*\))/\1 \3/g'
```
|
| |
|
| |
|
|
|
|
| |
make them rigid to disallow minimization.
|
| |
|
| |
|
|
|
|
| |
its main interest!
|
|
|
|
| |
The "master" label used to be reset to the wrong id
|
| |
|
|
|
|
|
|
|
|
|
| |
When a future is fully forced (joined), the fix_exn is dropped,
since joined futures are values (hence they cannot raise exceptions).
When a future for a transparent definition enters the environment
it is joined. If one needs to pick its fix_exn, he should do it
before that.
|
|
|
|
| |
(Fix bug #3654)
|
|
|
|
| |
involving Futures.
|
| |
|
|
|
|
| |
universes are declared correctly in the enclosing proofs evar_map's.
|
| |
|
|
|
|
|
| |
Without this expansion, camlp4 fails to properly factor a user notation
starting with either "trivial" or "auto".
|
|
|
|
|
| |
It is too bad that OCaml does not warn when catching an exception over a
closure rather than inside it.
|
|
|
|
|
|
| |
presence of hints modifying the context and of a "using" clause.
Incidentally opening Hints by default in debugger.
|