| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch splits pretty printing representation from IO operations.
- `Pp` is kept in charge of the abstract pretty printing representation.
- The `Feedback` module provides interface for doing printing IO.
The patch continues work initiated for 8.5 and has the following effects:
- The following functions in `Pp`: `pp`, `ppnl`, `pperr`, `pperrnl`,
`pperr_flush`, `pp_flush`, `flush_all`, `msg`, `msgnl`, `msgerr`,
`msgerrnl`, `message` are removed. `Feedback.msg_*` functions must be
used instead.
- Feedback provides different backends to handle output, currently,
`stdout`, `emacs` and CoqIDE backends are provided.
- Clients cannot specify flush policy anymore, thus `pp_flush` et al are
gone.
- `Feedback.feedback` takes an `edit_or_state_id` instead of the old
mix.
Lightly tested: Test-suite passes, Proof General and CoqIDE seem to work.
|
|\ |
|
| | |
|
| |
| |
| |
| |
| | |
Instead of rebuilding a whole set of evars just to make a typeclass filter,
we use the source evarmap.
|
| | |
|
| | |
|
|\| |
|
| |
| |
| |
| | |
Disclaimer: I have no idea what I am doing.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When encountering a "simpl nomatch" constant, the reduction machinery tries
to unfold it. If the subsequent partial reduction does not produce any
match construct, it keeps going from the reduced term. Unfortunately, the
reduced term has been refolded in the meantime, which means that some of
the previous reduction steps have been canceled, thus causing an infinite
loop. This patch delays the refolding till the very end, so that reduction
always progresses.
Disclaimer: I have no idea what I am doing here. The patch compiles the
standard library and the test suite properly, so hopefully they contain
enough tests to exercise the reduction machinery.
|
|\| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As noticed by Cyprien Mangin, projected terms cannot directly be used as
head values. Indeed, they might be applications (e.g. constructors as in
the bug report) whose arguments would thus be missing from the evaluation
stack when doing any iota-reduction step.
The only case where it would make sense is when the evaluation stack is
empty, as an optimization. Indeed, in that case, the arguments are put on
the stack, and then immediately put back inside the term.
|
| |
| |
| |
| | |
This reverts commit 7e613daf7c71a4180725bddb40151c2b5a6348f4.
|
| |
| |
| |
| | |
This reverts commit 975e2a05050c704161aca3fbac96376eeda6fb4a.
|
| |
| |
| |
| |
| |
| | |
pattern-matching"
This reverts commit be80899499094fc8a15362931e3cec650f2fb14e.
|
| |
| |
| |
| |
| |
| | |
structure."
This reverts commit eaca8dadf7dd8152a86f4fc75631754344268dbf.
|
| |
| |
| |
| | |
This reverts commit 94e9e28ebaa33e11164ca07f225d998ca7f8e52c.
|
| |
| |
| |
| |
| |
| | |
pattern-matching produced by an implicit "in" clause"
This reverts commit ba9f53314ff6132d0013e53879395e0dc9d8038c.
|
| |
| |
| |
| | |
This reverts commit d9f0daefb437955df8102de2b3c4c31749b6946e.
|
| | |
|
| |
| |
| |
| | |
produced by an implicit "in" clause
|
| | |
|
| | |
|
| |
| |
| |
| | |
algorithm.
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
need at matching time rather than eagerly at the beginning of the call
to "match".
To be done for other constructs too, e.g. "match term with ... endp".
|
| |
| |
| |
| | |
clause of a "match" over an irrefutable pattern.
|
| |
| |
| |
| |
| | |
build a default case if the pattern is irrefutable. It did not matter
in practice because we did not check for unused clauses in this case.
|
| | |
|
|\| |
|
| |
| |
| |
| |
| | |
while eta-expanding a notation) + a more serious variant of it
(alpha-conversion incorrect wrt eta-expansion).
|
|\ \
| | |
| | |
| | | |
into JasonGross-trunk-function_scope
|
|\ \ \
| | |/
| |/| |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
It was not accounting for the universe constraints generated by
applications of the coercion.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
Some parts of Evarutils were related to the management of evars under constraints.
We put them in the Evardefine file.
|
| | | |
|
| | | |
|
|\| | |
|
|\ \ \ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The regression was introduced by efa1c32a4d178, which replaced
unification by conversion when looking for more occurrences of a
subterm. The conversion function called was not the right one, as it
was not inferring constraints.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Due to a change in pretyping, using cast annotations as typing
constraints, the canonical structure problems given to the unification
could contain non-evar-normalized terms, hence we force
evar normalization where necessary to ensure the same CS solutions
can be found. Here the dependency test is fooled by an erasable
dependency, and the following resolution needs a independent codomain
for pop b to be well-scoped.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
E.g., Inductive foo := mkFoo { bla : foo } allowed to define recursive
records with eta for which conversion is incomplete.
- Eta-conversion only applies to BiFinite inductives
- Finiteness information is now checked by the kernel (the constructor types
must be strictly non recursive for BiFinite declarations).
|
|\| | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Try first to find a keyed subterm without conversion/betaiota on open
terms (that is the usual strategy of rewrite), if this fails, try with full
conversion, incuding betaiota. This makes the test-suite pass again,
retaining efficiency in the most common cases.
|
|\| | |
|
| | | |
|