| Commit message (Collapse) | Author | Age |
|
|
|
| |
multi-goal semantics of tactics.
|
|
|
|
| |
See bug #1041
|
|
|
|
|
| |
- Distinguish between primitive and non-primitive records in the kernel
declaration, so as to try eta-conversion on primitive records only.
|
| |
|
| |
|
|
|
| |
They occasionally show up while testing. I think it cleaner to ignore them.
|
| |
|
| |
|
|
|
| |
Fixes bug #3457
|
|
|
|
| |
Thanks to E. Tassi for the initial patch.
|
| |
|
| |
|
|
|
| |
They used to be the same (and had a single entry in the AST). But now that t2 can be a multi-goal tactic, t1;[t2..] has the semantics of executing t2 in each goal independently.
|
| |
|
|
|
|
| |
definitions.
|
| |
|
|
|
|
|
|
|
|
|
| |
The new implementation is made of two layers: a iolist, which is essentially
a stream without memoization, and above this a state monad. The previous
design of the extracted monad kept three distinct but similar monad
transformers: a stateT, a writerT and a readerT. We take advantage of this
similarity to pack those three transformers into only one state monad.
This makes the code cleaner and hopefully more efficient.
|
|
|
|
| |
This reverts commit 062d07eb5446c1032fda232b9a09e20e5410dd92.
|
| |
|
|
|
|
| |
including bigger icons
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Instead of forcing the specifying property to be of the form (r spec def), allow any lemma depending on def.
|
|
|
|
| |
When starting proofs with [start_dependent_proof], we may have initial goals with existential variables in their conclusion. They will be solved by the proof, but this information was not propagated in close proof, and the kernel failed on uninstanciated evars.
|
| |
|
|
|
|
|
| |
telescope.
Allows for a more refined notion of dependently generated initial goals.
|
|
|
|
|
| |
universe context to start proofs.
It was kind of awkward to work with for non-traditionnal kinds of proofs: if you have an evar_universe_context, you got it from a sigma anyway.
|
| |
|
| |
|
|
|
|
| |
This reverts commit ec1bb8a981fef14b58ab65483244fc42b05aef13.
|
|
|
|
|
|
| |
This reverts commit 6a3bcd3ae320e65347cbd6ef4bac458f073d02ea.
Apply again if this kind of dependently typed programming idioms are needed.
|
|
|
|
|
|
|
| |
commutative cut rule.
The error messages of the guard checker are now sometimes not
informative enough.
|
|
|
|
|
|
|
|
|
|
| |
A pattern matching is can now be a subterm if:
- Every branch is a subterm
- The return predicate is a pattern matching whose return predicate is an arity.
- That pattern matching (in the return predicate) returns the same inductive
family in the conclusion of each branch.
The commutative cut rule hasn't been updated accordingly yet.
|
| |
|
|
|
|
|
|
|
| |
Following Bruno's suggestion, we check if the tree expected for the recursive
argument is included in the one which is inferred. This check is probably
not necessary in the current state of affairs, but might become so after
further extensions of the guard condition.
|
|
|
|
| |
extensions.
|
| |
|
| |
|
| |
|
|
|
|
| |
Standard library now compiles fully.
|
|
|
|
| |
Thanks to Arthur Azevedo de Amorim!
|
|
|
|
| |
corresponding proof in ssreflect.
|
| |
|
|
|
|
|
|
| |
instantiated in the return predicate are now taken into account. The resulting
recargs tree is the intersection between the one of the branches and the
appearing in the return predicate. Both the domain and co-domain are filtered.
|
|
|
|
|
| |
Some fixpoints are now rejected in the standard library, but that's probably
because we compare trees for equality instead of intersecting them.
|
|
|
|
|
|
|
|
|
|
|
|
| |
pattern matching.
This patch should be improved in two ways:
(1) Implement the same checks for the commutative cut subterm rule.
(2) When checking safe recursive subterms for each of the branches in a match,
instanciated parameters in the return predicate should be taken into account.
Step (1) should be enough to restore a correct guard condition, but (2) will
be required if we don't want to rule out some legitimate and practical examples.
|
| |
|
| |
|