1. 15 Nov, 2014 1 commit
    • Robbert Krebbers's avatar
      More accurate formalization of integer ranks. · da7a14bb
      Robbert Krebbers authored
      Integers with the same size, are no longer supposed to have the same rank. As a
      result, the C integer types (char, short, int, long, long long) are different
      (and thus cannot alias) even if they have the same size. We now have to use a
      more involved definition of integer promotions and usual arithmetic conversions.
      However, this new definition follows the C standard literally.
  2. 06 Nov, 2014 1 commit
  3. 10 Oct, 2014 1 commit
  4. 08 Oct, 2014 1 commit
    • Robbert Krebbers's avatar
      Allow memory refinements to behave like simple renaming. · c5c0d373
      Robbert Krebbers authored
      Memory refinements now carry a boolean parameter that has the following
      [false] : Behave like a simple renaming of memories that merely allows to
                permute object identifiers. It does not allow to refine memories
                into a more defined version.
      [true]  : Behave like before. Objects can be injected, and memory contents can
                be refined into a more defined variant.
      We make refinements parametric in these two variant to avoid code duplication,
      and because the [false] variant is a special case of the [true] variant.
      For completeness of the executable semantics, we now use the [false] variant.
  5. 07 Oct, 2014 1 commit
  6. 03 Oct, 2014 1 commit
  7. 30 Sep, 2014 2 commits
  8. 24 Sep, 2014 1 commit
  9. 16 Sep, 2014 1 commit
  10. 13 Sep, 2014 1 commit
  11. 12 Sep, 2014 2 commits
  12. 06 Sep, 2014 4 commits
  13. 03 Sep, 2014 5 commits
  14. 25 Aug, 2014 1 commit
  15. 22 Aug, 2014 2 commits
    • Robbert Krebbers's avatar
      Modify typing judgments to depend on a description of the types of objects in · 7f9c5994
      Robbert Krebbers authored
      memory instead of the whole memory itself.
      This has the following advantages:
      * Avoid parametrization in {addresses,pointers,pointer_bits,bits}.v
      * Make {base_values,values}.v independent of the memory, this makes better
        parallelized compilation possible.
      * Allow small memories (e.g. singletons as used in separation logic) with
        addresses to objects in another part to be typed.
      * Some proofs become easier, because the memory environments are preserved
        under many operations (insert, force, lock, unlock).
      It also as the following disadvantages:
      * At all kinds of places we now have explicit casts from memories to memory
        environments. This is kind of ugly. Note, we cannot declare memenv_of as a
        Coercion because it is non-uniform.
      * It is a bit inefficient with respect to the interpreter, because memory
        environments are finite functions instead of proper functions, so calling
        memenv_of often (which we do) is not too good.
    • Robbert Krebbers's avatar
      Make simplify_error_equality a bit faster. · 7040c040
      Robbert Krebbers authored
      It is still rather slow, though.
  16. 09 Aug, 2014 1 commit
  17. 07 Aug, 2014 1 commit
  18. 06 Aug, 2014 2 commits
  19. 04 Aug, 2014 1 commit
  20. 10 Jul, 2014 1 commit
  21. 04 Jul, 2014 1 commit
  22. 25 Jun, 2014 2 commits
  23. 23 Jun, 2014 2 commits
  24. 17 Jun, 2014 1 commit
  25. 16 Jun, 2014 1 commit
    • Robbert Krebbers's avatar
      Changes in preparation of the C type system and C front-end language · 3503a91f
      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.
  26. 06 Jun, 2014 2 commits
    • Robbert Krebbers's avatar
      Small stream library. · af633db2
      Robbert Krebbers authored
    • Robbert Krebbers's avatar
      Miscellaneous changes to the memory · ab930b45
      Robbert Krebbers authored
      * Remove generic path_typed instance for lists. For the zippers in the
        operational semantics, it goes the other way around.
      * Remove constructor lemmas for values/memory_trees and use a generic tactic
        instead. This tactic uses the standard constructor tactic, but folds the
        type classes afterward.