 27 Jul, 2016 2 commits


Robbert Krebbers authored
This reverts commit 20b4ae55bdf00edb751ccdab3eb876cb9b13c99f, which does not seem to work with Coq 8.5pl2 (I accidentally tested with 8.5pl1).

Robbert Krebbers authored
This makes type checking more directed, and somewhat more predictable. On the downside, it makes it impossible to declare the singleton on lists as an instance of SingletonM and the insert and alter operations on functions as instances of Alter and Insert. However, these were not used often anyway.

 14 Jun, 2016 1 commit


Robbert Krebbers authored

 27 May, 2016 4 commits


Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

Robbert Krebbers authored

 21 Mar, 2016 1 commit


Robbert Krebbers authored

 03 Mar, 2016 1 commit


Robbert Krebbers authored

 20 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.

 11 Feb, 2016 1 commit


Robbert Krebbers authored
Also do some minor clean up.

 04 Feb, 2016 1 commit


Robbert Krebbers authored

 22 Jan, 2016 1 commit


Robbert Krebbers authored

 16 Jan, 2016 1 commit


Robbert Krebbers authored

 12 Jan, 2016 1 commit


Robbert Krebbers authored

 15 Dec, 2015 1 commit


Robbert Krebbers authored

 18 Nov, 2015 1 commit


Robbert Krebbers authored

 16 Nov, 2015 1 commit


Robbert Krebbers authored

 03 Feb, 2017 1 commit


Robbert Krebbers authored

 22 Apr, 2015 1 commit


Robbert Krebbers authored

 08 Feb, 2015 2 commits


Robbert Krebbers authored
First it would destruct on the decider, which sometimes would result in unfolded hypotheses.

Robbert Krebbers authored

 27 Jan, 2015 1 commit


Robbert Krebbers authored
* This behavior is "implementation defined" and can be turned on and off using the Boolean field "alloc_can_fail" of the class "Env". * The expression "EAlloc" is now an rvalue of pointer type instead of an lvalue. * The executable semantics for expressions is now nondeterministic. Hence, some proofs had to be revised.

 17 Dec, 2014 1 commit


Robbert Krebbers authored

 23 Nov, 2014 1 commit


Robbert Krebbers authored

 06 Nov, 2014 1 commit


Robbert Krebbers authored

 30 Sep, 2014 1 commit


Robbert Krebbers authored
Now it only performs injection on hypotheses of the shape f .. = f ..

 03 Sep, 2014 1 commit


Robbert Krebbers authored

 06 Aug, 2014 1 commit


Robbert Krebbers authored
This allows for constant expressions in array sizes and makes way for future extensions.

 04 Aug, 2014 1 commit


Robbert Krebbers authored

 25 Jun, 2014 1 commit


Robbert Krebbers authored
* Equality comparison of NULL and non NULL pointers should be defined * Pointer comparisons, casts, and truth should only be defined for pointers that are alive * Treat dead pointers as indeterminate values in refinements. The proofs that all operations preserve refinement indicate that dead pointers can be indeed by replaced by anything without affecting the program's behavior.

 23 Jun, 2014 1 commit


Robbert Krebbers authored

 16 Jun, 2014 1 commit


Robbert Krebbers authored
Major changes: * Make void a base type, and include a proper void base value. This is necessary because expressions (free, functions without return value) can yield a void. We now also allow void casts conforming to the C standard. * Various missing lemmas about typing, weakening, decidability, ... * The operations "free" and "alloc" now operate on lvalues instead of rvalues. This removes some duplication. * Improve notations of expressions and statements. Change the presence of the operators conforming to the C standard. Small changes: * Use the classes "Typed" and "TypeCheck" for validity of indexes in memory. This gives more uniform notations. * New tactic "typed_inversion" performs inversion on an inductive predicate of type "Typed" and folds the premises. * Remove a horrible hack in the definitions of the classes "FMap", "MBind", "OMap", "Alter" that was used to let "simpl" behave better. Instead, we have defined a tactic "csimpl" that folds the results after performing an ordinary "simpl". * Fast operation to remove duplicates from lists using hashsets. * Make various type constructors (mainly finite map implementations) universe polymorphic by packing them into an inductive. This way, the whole C syntax can live in type, avoiding the need for (slow) universe checks.

 22 May, 2014 1 commit


Robbert Krebbers authored
* Parametrize refinements with memories. This way, refinements imply typing, for example [w1 ⊑{Γ,f@m1↦m2} w2 : τ → (Γ,m1) ⊢ w1 : τ]. This relieves us from various hacks. * Use addresses instead of index/references pairs for lookup and alter operations on memories. * Prove various disjointness properties.

 02 May, 2014 2 commits


Robbert Krebbers authored

Robbert Krebbers authored

 24 Jun, 2013 1 commit


Robbert Krebbers authored
