 16 Jun, 2016 7 commits


Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored
This is to avoid confusion with ghost_ownership.own.

Robbert Krebbers authored
This introduces n hypotheses and destructs the nth one.

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

 15 Jun, 2016 8 commits


Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

JacquesHenri Jourdan authored

Robbert Krebbers authored
This is inspired by ssr, and makes unification faster if it goes righttoleft. See https://sympa.inria.fr/sympa/arc/ssreflect/201311/msg00010.html

Robbert Krebbers authored

 14 Jun, 2016 6 commits


Robbert Krebbers authored
This way, we can use eapply instead of class_apply, which is used when the instances are defined using the Instance command. It seems that eapply is stronger as class_apply, and as such solves some issues when canonical structures have type class parameters, for example: Goal Op (option (dec_agree nat)). apply _. This failed, but is fixed by this commit.

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

 08 Jun, 2016 1 commit


Robbert Krebbers authored

 07 Jun, 2016 2 commits
 06 Jun, 2016 1 commit


Robbert Krebbers authored

 01 Jun, 2016 15 commits


Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

JacquesHenri Jourdan authored

JacquesHenri Jourdan authored

JacquesHenri Jourdan authored

Robbert Krebbers authored

JacquesHenri Jourdan authored

JacquesHenri Jourdan authored

Robbert Krebbers authored
We used => before, which is strange, because it has another meaning in ssreflect.

Robbert Krebbers authored
And use slice_name, which is defined as gname but Opaque, instead of gname in boxes.

Robbert Krebbers authored
They mess up the proof mode notations due to overlaps.

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored
Generating a fresh name consists of two stages: + Use [cbv] to compute a list representing the domain of the environment. This is a very simply computation that just erases the hypotheses. + Use [vm_compute] to compute a fresh name based on the list representing the domain. The domain itself should never contain evars, so [vm_compute] will do the job.
