- Jul 27, 2016
-
-
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.
-
- Jun 14, 2016
-
-
Robbert Krebbers authored
-
- May 27, 2016
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Mar 21, 2016
-
-
Robbert Krebbers authored
-
- Mar 03, 2016
-
-
Robbert Krebbers authored
-
- Feb 20, 2016
-
-
Ralf Jung authored
-
- Feb 17, 2016
-
-
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
-
- Feb 13, 2016
-
-
Robbert Krebbers authored
Also, make our redefinition of done more robust under different orders of Importing modules.
-
- Feb 11, 2016
-
-
Robbert Krebbers authored
Also do some minor clean up.
-
- Feb 04, 2016
-
-
Robbert Krebbers authored
-
- Jan 22, 2016
-
-
Robbert Krebbers authored
-
- Jan 16, 2016
-
-
Robbert Krebbers authored
-
- Jan 12, 2016
-
-
Robbert Krebbers authored
-
- Dec 15, 2015
-
-
Robbert Krebbers authored
-
- Nov 18, 2015
-
-
Robbert Krebbers authored
-
- Nov 16, 2015
-
-
Robbert Krebbers authored
-
- Feb 03, 2017
-
-
Robbert Krebbers authored
-
- Apr 22, 2015
-
-
Robbert Krebbers authored
-
- Feb 08, 2015
-
-
Robbert Krebbers authored
First it would destruct on the decider, which sometimes would result in unfolded hypotheses.
-
Robbert Krebbers authored
-
- Jan 27, 2015
-
-
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 r-value of pointer type instead of an l-value. * The executable semantics for expressions is now non-deterministic. Hence, some proofs had to be revised.
-
- Dec 17, 2014
-
-
Robbert Krebbers authored
-
- Nov 23, 2014
-
-
Robbert Krebbers authored
-
- Nov 06, 2014
-
-
Robbert Krebbers authored
-
- Sep 30, 2014
-
-
Robbert Krebbers authored
Now it only performs injection on hypotheses of the shape f .. = f ..
-
- Sep 03, 2014
-
-
Robbert Krebbers authored
-
- Aug 06, 2014
-
-
Robbert Krebbers authored
This allows for constant expressions in array sizes and makes way for future extensions.
-
- Aug 04, 2014
-
-
Robbert Krebbers authored
-
- Jun 25, 2014
-
-
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.
-
- Jun 23, 2014
-
-
Robbert Krebbers authored
-
- Jun 16, 2014
-
-
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 l-values instead of r-values. 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.
-
- May 22, 2014
-
-
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.
-
- May 02, 2014
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Jun 24, 2013
-
-
Robbert Krebbers authored
-