 05 Mar, 2019 1 commit


Ralf Jung authored

 03 Mar, 2019 2 commits


Paolo G. Giarrusso authored
For half of #231.

Ralf Jung authored

 20 Feb, 2019 1 commit


Robbert Krebbers authored

 05 Feb, 2019 1 commit


PierreMarie Pédrot authored
This is a change enabling backward compatibility.

 25 Jan, 2019 1 commit


Ralf Jung authored

 24 Jan, 2019 3 commits
 22 Jan, 2019 1 commit


Hugo Herbelin authored
See Coq PR#9214.

 19 Jan, 2019 4 commits
 13 Jan, 2019 1 commit


Robbert Krebbers authored

 11 Jan, 2019 1 commit


Robbert Krebbers authored
It now supports the specialization pattern `(H spat1 .. spatn)`, which first recursively specializes the hypothesis `H` using the specialization patterns `spat1 .. spatn`.

 25 Dec, 2018 1 commit


Robbert Krebbers authored
Split it up into more logical parts.

 13 Dec, 2018 2 commits


Robbert Krebbers authored

Robbert Krebbers authored

 06 Dec, 2018 1 commit


Robbert Krebbers authored
Thanks to @Blaisorblade for reporting.

 27 Nov, 2018 2 commits


Robbert Krebbers authored

Robbert Krebbers authored
This closes issue #220.

 31 Oct, 2018 1 commit


JacquesHenri Jourdan authored

 29 Oct, 2018 2 commits


JacquesHenri Jourdan authored

JacquesHenri Jourdan authored
We add a specific constructor to the type of expressions for injecting values in expressions. The advantage are :  Values can be assumed to be always closed when performing substitutions (even though they could contain free variables, but it turns out it does not cause any problem in the proofs in practice). This means that we no longer need the `Closed` typeclass and everything that comes with it (all the reflectionbased machinery contained in tactics.v is no longer necessary). I have not measured anything, but I guess this would have a significant performance impact.  There is only one constructor for values. As a result, the AsVal and IntoVal typeclasses are no longer necessary: an expression which is a value will always unify with `Val _`, and therefore lemmas can be stated using this constructor. Of course, this means that there are two ways of writing such a thing as "The pair of integers 1 and 2": Either by using the value constructor applied to the pair represented as a value, or by using the expression pair constructor. So we add reduction rules that transform reduced pair, injection and closure expressions into values. At first, this seems weird, because of the redundancy. But in fact, this has some meaning, since the machine migth actually be doing something to e.g., allocate the pair or the closure. These additional steps of computation show up in the proofs, and some additional wp_* tactics need to be called.

 22 Oct, 2018 2 commits


Robbert Krebbers authored

Robbert Krebbers authored

 04 Oct, 2018 3 commits


JacquesHenri Jourdan authored

Ralf Jung authored

Ralf Jung authored

 03 Oct, 2018 1 commit


Robbert Krebbers authored

 31 Jul, 2018 1 commit


Robbert Krebbers authored

 13 Jul, 2018 1 commit


Ralf Jung authored
Use telescopes for atomic accessors, updates and triples; improve mask handling; add notation for all of them

 05 Jul, 2018 1 commit


Ralf Jung authored

 04 Jul, 2018 5 commits


Ralf Jung authored

Ralf Jung authored

Ralf Jung authored
pm_reduce just reduces away proof mode terms using cbv; pm_prettify just prettifies uservisible connectors using cbn. Most uses of pm_default are converted to default to keep the desired reduction behavior.

Ralf Jung authored
List literals reduce with a spurious `emp` at the end, which is not pretty.

Ralf Jung authored

 03 Jul, 2018 1 commit


Ralf Jung authored
With a pretty proof by Robbert
