1. 14 Feb, 2017 1 commit
  2. 13 Feb, 2017 5 commits
  3. 12 Feb, 2017 1 commit
    • Robbert Krebbers's avatar
      Make iSpecialize work with coercions. · f1b30a2e
      Robbert Krebbers authored
      For example, when having `"H" : ∀ x : Z, P x`, using
      `iSpecialize ("H" $! (0:nat))` now works. We do this by first
      resolving the `IntoForall` type class, and then instantiating
      the quantifier.
  4. 11 Feb, 2017 7 commits
  5. 10 Feb, 2017 6 commits
  6. 09 Feb, 2017 6 commits
  7. 07 Feb, 2017 4 commits
  8. 06 Feb, 2017 1 commit
  9. 03 Feb, 2017 1 commit
  10. 02 Feb, 2017 2 commits
  11. 01 Feb, 2017 3 commits
    • Robbert Krebbers's avatar
      Make f_equiv stronger. · fd81b328
      Robbert Krebbers authored
      It no longer requires the functions on both sides of the relation
      to be syntactically the same.
    • Robbert Krebbers's avatar
      Arguments for gsetC and gset_disjC. · bf069d12
      Robbert Krebbers authored
    • Jacques-Henri Jourdan's avatar
      Cancelable and IdFree typeclasses. · 71c10187
      Jacques-Henri Jourdan authored
      Cancelable elements are a new way of proving local updates, by
      removing some cancellable element of the global state, provided that
      we own it and we are willing to lose this ownership.
      Identity-free elements are an auxiliary that is necessary to prove that
      [Some x] is cancelable.
      For technical reasons, these two notions are not defined exactly like
      what one might expect, but also take into account validity. Otherwise,
      an exclusive element would not be cancelable or idfree, which is
      rather confusing.
  12. 30 Jan, 2017 3 commits
    • Robbert Krebbers's avatar
      A bunch of missing Params instances. · e4f1b5c2
      Robbert Krebbers authored
    • Robbert Krebbers's avatar
      Support introduction patterns /=, {H}, {$H} in iDestruct. · 686f5740
      Robbert Krebbers authored
      This fixes issue #57.
      I considered supporting these introduction patterns also in a nested fashion --
      for example allowing `iDestruct foo as [H1 [{H1} H1 /= H2|H2]` -- but that
      turned out to be quite difficult.
      Where should we allow `/=`, `{H}` and `{$H}` exactly. Clearly something like
      `>/=` makes no sense, unless we adopt to some kind of 'stack like' semantics
      for introduction patterns as in ssreflect. Alternatively, we could only allow
      these patterns in the branches of the destructing introduction pattern
      `[... | ... | ...]` but that brings other complications, e.g.:
      - What to do with `(H1 & /= & H3)`?
      - How to distinguish the introduction patterns `[H _]` and `[_ H]` for
        destructing a spatial conjunction? We cannot simply match on the shape of the
        introduction pattern anymore, because one could also write `[_ H /=]`.
    • Robbert Krebbers's avatar