1. 21 Mar, 2017 2 commits
    • Robbert Krebbers's avatar
      Merge FromSep and FromAnd classes. · 1e180a24
      Robbert Krebbers authored
      1e180a24
    • Robbert Krebbers's avatar
      No longer allow ownership of persistent elements to be split. · 383fee40
      Robbert Krebbers authored
      This could lead to awkward loops, for example, when having:
      
      - As goal `own γ c` with `c` persistent, one could keep on
        `iSplit`ting the goal. Especially in (semi-)automated proof
        scripts this is annoying as it easily leads to loops.
      - When having a hypothesis `own γ c` with `c` persistent, one
        could keep on `iDestruct`ing it.
      
      To that end, this commit removes the `IntoOp` and `FromOp` instances
      for persistent CMRA elements. Instead, we changed the instances for
      pairs, so that one, for example, can still split `(a ⋅ b, c)` with
      `c` persistent.
      383fee40
  2. 20 Mar, 2017 1 commit
  3. 16 Mar, 2017 1 commit
  4. 15 Mar, 2017 4 commits
  5. 11 Mar, 2017 1 commit
  6. 09 Mar, 2017 1 commit
  7. 22 Feb, 2017 1 commit
    • Robbert Krebbers's avatar
      Change Hint Mode for FromAssumption. · 2cbcc992
      Robbert Krebbers authored
      There is no need to restrict the type class using Hint Mode, we have
      a default instance that will always be used first. In case of evars,
      the default instance should apply.
      
      The reason for this change is that `iAssumption` should be able to
      prove `H : ?e |- P` and `H : P |- ?e`. The former Hint Mode prevented
      it from doing that.
      2cbcc992
  8. 15 Feb, 2017 5 commits
  9. 13 Feb, 2017 1 commit
  10. 11 Feb, 2017 1 commit
    • Robbert Krebbers's avatar
      Improve `iSpecialize ("H" $! x1 .. xn)`. · 9ea6fa45
      Robbert Krebbers authored
      Instead of doing all the instantiations by invoking a single type
      class search, it now performs the instantiations by invoking
      individual type class searches. This a.) gives better error messages
      and b.) works when `xj` depends on `xi`.
      9ea6fa45
  11. 06 Feb, 2017 1 commit
  12. 26 Jan, 2017 1 commit
    • Robbert Krebbers's avatar
      Fix issue #68. · 2550dff5
      Robbert Krebbers authored
      TODO: document the setup of the IntoWand and WandWeaken type classes
      and the tricks using Hint Mode.
      2550dff5
  13. 24 Jan, 2017 1 commit
  14. 23 Jan, 2017 1 commit
  15. 22 Jan, 2017 1 commit
  16. 05 Jan, 2017 1 commit
  17. 03 Jan, 2017 1 commit
  18. 28 Dec, 2016 1 commit
  19. 14 Dec, 2016 1 commit
  20. 09 Dec, 2016 1 commit
  21. 29 Nov, 2016 1 commit
  22. 27 Nov, 2016 1 commit
  23. 25 Nov, 2016 3 commits
  24. 22 Nov, 2016 2 commits
  25. 03 Nov, 2016 1 commit
    • Robbert Krebbers's avatar
      Use symbol ∗ for separating conjunction. · cc31476d
      Robbert Krebbers authored
      The old choice for ★ was a arbitrary: the precedence of the ASCII asterisk *
      was fixed at a wrong level in Coq, so we had to pick another symbol. The ★ was
      a random choice from a unicode chart.
      
      The new symbol ∗ (as proposed by David Swasey) corresponds better to
      conventional practise and matches the symbol we use on paper.
      cc31476d
  26. 28 Oct, 2016 1 commit
  27. 25 Oct, 2016 3 commits
    • Robbert Krebbers's avatar
      Rename uPred_eq into uPred_internal_eq. · e224e891
      Robbert Krebbers authored
      e224e891
    • Robbert Krebbers's avatar
      260b7508
    • Robbert Krebbers's avatar
      Generalize update tactics into iMod and iModIntro for modalities. · fc30ca08
      Robbert Krebbers authored
      There are now two proof mode tactics for dealing with modalities:
      
      - `iModIntro` : introduction of a modality
      - `iMod pm_trm as (x1 ... xn) "ipat"` : eliminate a modality
      
      The behavior of these tactics can be controlled by instances of the `IntroModal`
      and `ElimModal` type class. We have declared instances for later, except 0,
      basic updates and fancy updates. The tactic `iMod` is flexible enough that it
      can also eliminate an updates around a weakest pre, and so forth.
      
      The corresponding introduction patterns of these tactics are `!>` and `>`.
      
      These tactics replace the tactics `iUpdIntro`, `iUpd` and `iTimeless`.
      
      Source of backwards incompatability: the introduction pattern `!>` is used for
      introduction of arbitrary modalities. It used to introduce laters by stripping
      of a later of each hypotheses.
      fc30ca08