1. 05 Oct, 2017 1 commit
  2. 28 Sep, 2017 1 commit
  3. 27 Sep, 2017 3 commits
  4. 26 Sep, 2017 1 commit
    • Robbert Krebbers's avatar
      Fix issue #98. · e17ac4ad
      Robbert Krebbers authored
      We used to normalize the goal, and then checked whether it was of
      a certain shape. Since `uPred_valid P` normalized to `True ⊢ P`,
      there was no way of making a distinction between the two, hence
      `True ⊢ P` was treated as `uPred_valid P`.
      
      In this commit, I use type classes to check whether the goal is of
      a certain shape. Since we declared `uPred_valid` as `Typeclasses
      Opaque`, we can now make a distinction between `True ⊢ P` and
      `uPred_valid P`.
      e17ac4ad
  5. 25 Sep, 2017 3 commits
    • Robbert Krebbers's avatar
      Let stateful tactics try all decompositions. · 284ccdd5
      Robbert Krebbers authored
      This problem has been reported by Léon Gondelman.
      
      Before, when using, for example wp_alloc, in an expression like:
      
        ref (ref v)
      
      It would apply `tac_wp_alloc` to the outermost ref, after which it
      fails to establish that the argument `ref v` is a value. In this
      commit, other evaluation positions will be tried whenever it turn
      out that the argument of the construct is not a value. The same
      applies to store/cas/...
      
      I have implemented this by making use of the new `IntoVal` class.
      284ccdd5
    • Dan Frumin's avatar
      Add a `repeat (wp_pure _)` example. · 8e4f1524
      Dan Frumin authored
      8e4f1524
    • Dan Frumin's avatar
      The `PureExec` typeclass for performing pure symbolic executions. · bbcd2c84
      Dan Frumin authored
      Instead of writing a separate tactic lemma for each pure reduction,
      there is a single tactic lemma for performing all of them.
      
      The instances of PureExec can be shared between WP tactics and, e.g.
      symbolic execution in the ghost  threadpool
      bbcd2c84
  6. 21 Sep, 2017 1 commit
  7. 17 Sep, 2017 1 commit
  8. 09 Sep, 2017 1 commit
  9. 28 Aug, 2017 2 commits
  10. 24 Aug, 2017 1 commit
  11. 20 Aug, 2017 1 commit
  12. 12 Jul, 2017 1 commit
  13. 17 May, 2017 1 commit
  14. 13 Apr, 2017 2 commits
  15. 11 Apr, 2017 1 commit
  16. 21 Mar, 2017 1 commit
  17. 20 Mar, 2017 1 commit
  18. 15 Mar, 2017 1 commit
  19. 14 Mar, 2017 2 commits
  20. 12 Mar, 2017 1 commit
  21. 11 Mar, 2017 1 commit
  22. 10 Mar, 2017 1 commit
  23. 21 Feb, 2017 1 commit
  24. 15 Feb, 2017 1 commit
  25. 13 Feb, 2017 3 commits
  26. 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.
      f1b30a2e
  27. 09 Feb, 2017 1 commit
  28. 25 Jan, 2017 1 commit
  29. 23 Jan, 2017 1 commit
  30. 22 Jan, 2017 1 commit
  31. 17 Jan, 2017 1 commit