- Jul 27, 2016
-
-
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 30, 2016
-
-
Jacques-Henri Jourdan authored
-
- May 27, 2016
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- May 22, 2016
-
-
Robbert Krebbers authored
Initial commit by Amin Timany.
-
Robbert Krebbers authored
-
- Mar 30, 2016
-
-
Robbert Krebbers authored
This seems to shorten type class search.
-
- Mar 21, 2016
-
-
Robbert Krebbers authored
Also, slightly reorganize.
-
- Mar 04, 2016
-
-
Robbert Krebbers authored
-
- Mar 03, 2016
-
-
Robbert Krebbers authored
-
- Feb 20, 2016
- 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.
-
Robbert Krebbers authored
Since Coq 8.4 did not backtrack on eauto premises, we used to ensure that hints like Hint Extern 0 (?x ≡{_}≡ ?y) => reflexivity. were not used for goals involving evars by writing ?x ≡{_}≡ ?y instead of _ ≡{_}≡ _. This seems to be a legacy issue that no longer applies to Coq 8.5, so I have removed these restrictions making these hints thus more powerful.
-
- Feb 11, 2016
-
-
Robbert Krebbers authored
Also do some minor clean up.
-
- Jan 20, 2016
-
-
Robbert Krebbers authored
And use more uniform variable names.
-
- Jan 12, 2016
-
-
Robbert Krebbers authored
-
- Dec 15, 2015
-
-
Robbert Krebbers authored
-
- Nov 18, 2015
-
-
Robbert Krebbers authored
-
- Nov 16, 2015
-
-
Robbert Krebbers authored
-
- Nov 11, 2015
-
-
Robbert Krebbers authored
-
- Feb 01, 2017
-
-
Robbert Krebbers authored
The port makes the following notable changes: * The carrier types of separation algebras and integer environments are no longer in Set. Now they have a type at a fixed type level above Set. This both works better in 8.5 and makes the formalization more general. I have tried putting them at polymorphic type levels, but that increased the compilation time by an order of magnitude. * I am using a custom f_equal tactic written in Ltac to circumvent bug #4069. That bug has been fixed, so this custom tactic can be removed when the next beta of 8.5 is out.
-
- Jun 04, 2015
-
-
Robbert Krebbers authored
-
- Feb 25, 2015
-
-
Robbert Krebbers authored
-
- Feb 16, 2015
-
-
Robbert Krebbers authored
-
- Feb 08, 2015
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
Important changes in the core semantics: * Types extended with function types. Since function types are a special kind of pointer types, types now have an additional mutual part called "ptr_type". * Pointers extended with function pointers. Theses are just names that refer to an actual function in the function environment. * Typing environments extended to assign argument and return types to function names. Before we used a separate environment for these, but since the argument and return types are already needed to type function pointers, this environment would appear in pretty much every typing judgment. As a side-effect, the frontend has been rewritten entirely. The important changes are: * Type checking of expressions is more involved: there is a special kind of expression type corresponding to a function designator. * To handle things like block scoped extern function, more state-fullness was needed. To prepare for future extensions, the entire frontend now uses a state monad.
-
- Jan 29, 2015
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
addresses. The operation "mem_force Γ m a" used to apply the identify function to pricisely the object "a", even in case "a" is an "unsigned char" address refering to an individual byte. This caused the ctree substructure of the entire subobject to disappear and had the undesired effect that: mem_force Γ a m ⊑{Γ,true@Γm} m failed to hold (i.e. unused reads cannot be removed).
-
- Jan 25, 2015
-
-
Robbert Krebbers authored
-
- Dec 16, 2014
-
-
Robbert Krebbers authored
The refinement relation on addresses allows union references to be refined: (β2 → β1) → RUnion i s β1 ⊆ RUnion i s β2 The result is that frozen values are below their unfrozen variant, which made it possible to prove that constant propagation (see constant_propagation.v) can be performed on the level of the memory model.
-
- Sep 30, 2014
-
-
Robbert Krebbers authored
Now it only performs injection on hypotheses of the shape f .. = f ..
-
- Sep 24, 2014
-
-
Robbert Krebbers authored
-
- Sep 06, 2014
-
-
Robbert Krebbers authored
-
- Sep 03, 2014
-
-
Robbert Krebbers authored
-
- Aug 06, 2014
-
-
Robbert Krebbers authored
-
- Jul 10, 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.
-