 05 Mar, 2016 4 commits


Robbert Krebbers authored

Ralf Jung authored

Ralf Jung authored

Ralf Jung authored

 04 Mar, 2016 2 commits


Ralf Jung authored

Robbert Krebbers authored

 03 Mar, 2016 2 commits


Robbert Krebbers authored

Robbert Krebbers authored

 02 Mar, 2016 5 commits


Robbert Krebbers authored
For consistency's sake.

Ralf Jung authored

Ralf Jung authored
get rid of substitution in Case (use lambdas); introduce Match as derived form that involves binders

Robbert Krebbers authored
We no longer abuse empty strings for anonymous binders. Instead, we now have a data type for binders: a binder is either named or anonymous.

Robbert Krebbers authored

 27 Feb, 2016 1 commit


Robbert Krebbers authored

 23 Feb, 2016 2 commits


Robbert Krebbers authored

Ralf Jung authored

 22 Feb, 2016 1 commit


Robbert Krebbers authored

 21 Feb, 2016 1 commit


Ralf Jung authored

 18 Feb, 2016 1 commit


Ralf Jung authored

 17 Feb, 2016 2 commits


Robbert Krebbers authored
simplify_equality => simplify_eq simplify_equality' => simplify_eq/= simplify_map_equality => simplify_map_eq simplify_map_equality' => simplify_map_eq/= simplify_option_equality => simplify_option_eq simplify_list_equality => simplify_list_eq f_equal' => f_equal/= The /= suffixes (meaning: do simpl) are inspired by ssreflect.

Robbert Krebbers authored

 13 Feb, 2016 1 commit


Robbert Krebbers authored
Also, make our redefinition of done more robust under different orders of Importing modules.

 12 Feb, 2016 1 commit


Ralf Jung authored

 11 Feb, 2016 3 commits


Robbert Krebbers authored
Also do some minor clean up.

Ralf Jung authored
tests.v is temporarily broken

Ralf Jung authored

 10 Feb, 2016 3 commits


Robbert Krebbers authored

Ralf Jung authored

Robbert Krebbers authored
Now notations are pretty printed in the same way as they are parsed. Before "let x := e1 in e2" was notation for "(fun x => e2) e1", resulting in overlapping notations for the same thing.

 09 Feb, 2016 4 commits


Robbert Krebbers authored

Robbert Krebbers authored
We can use a named representation because we only substitute closed values. This idea is borrowed from Pierce's Software Foundations. The named representation has the following advantages: * Programs are much better readable than those using De Bruijn indexes. * Substitutions on closed terms (where all variables are explicit strings) can be performed by a mere simpl instead of Autosubst's asimpl. The performance of simpl seems better than asimpl. * Syntactic sugar refolds better.

Robbert Krebbers authored

Ralf Jung authored
add basic notions of literals, unary operators and binary operators, and use them to define +, , <=, ...

 04 Feb, 2016 1 commit


Robbert Krebbers authored

 03 Feb, 2016 2 commits
 02 Feb, 2016 4 commits


Ralf Jung authored

Robbert Krebbers authored

Robbert Krebbers authored
These are no longer needed, since fill is no longer a type class.

Robbert Krebbers authored
