1. 24 Mar, 2021 1 commit
    • Tej Chajed's avatar
      Support destructing exists with intro patterns · 6d1a88a5
      Tej Chajed authored and Ralf Jung's avatar Ralf Jung committed
      The syntax re-uses the existing support for pure names, namely the % and
      %H patterns. Using "[% H]" is like `iDestruct ... as (?) "H"` and using
      "[%x H]" (with the string-ident plugin) is like `iDestruct ... as (x)
      "H"`.
      
      This changes how these patterns are parsed. Previously, both would have
      been handled as conjunctions (using IntoAnd or IntoSep, depending on
      whether the hypothesis is persistent or not). This means it was possible
      for the user to use "[% H]" to destruct a pure hypothesis ⌜φ ∧ ψ⌝ and
      put only the first conjunct in the Gallina context, leaving the other
      one in the IPM; such patterns will now break, since iExistDestruct
      does not handle this use case.
      6d1a88a5
  2. 07 Jan, 2021 1 commit
    • Robbert Krebbers's avatar
      Thread `Atomic` side-condition through `ElimModal`, `ElimAcc` and `ElimInv`. · 146d90b0
      Robbert Krebbers authored
      This makes sure that when trying to open an invariant or to eliminate a mask-changing
      update around a non-atomic WP that it doesn't fail with "cannot eliminate modality",
      but instead gives an side-condition `Atomic ...` informing the user what's going on.
      
      Unlike the class `ElimModal` and `ElimInv`, the class `ElimAcc` was not yet equipped
      with a Coq side-condition. This commit adds such a side-condition.
      146d90b0
  3. 03 Dec, 2020 1 commit
  4. 11 Nov, 2020 1 commit
  5. 03 Nov, 2020 1 commit
  6. 01 Oct, 2020 1 commit
  7. 10 Sep, 2020 1 commit
  8. 21 Jul, 2020 2 commits
    • Tej Chajed's avatar
      Use user-supplied names in iIntros · c1affb21
      Tej Chajed authored
      Preserve identifiers in binders where possible, analogous to the support
      for destructing existentials in !479.
      
      Fixes #336.
      c1affb21
    • Tej Chajed's avatar
      Use user names when destructing existentials · 7d0bb151
      Tej Chajed authored and Robbert Krebbers's avatar Robbert Krebbers committed
      When running `iDestruct "H" as (?) "H"`, use the name of the binder in
      "H". For example, if "H" has type `∃ y, Φ y`,  we now use `y` as the
      name of the variable after freshening. Previously the name was always
      the equivalent of running `fresh H`.
      
      The implementation achieves this by forwarding the desired identifier
      name through the `IntoExist` typeclass. Identifiers are serialized in
      Gallina by using them as the name of a function of type `ident_name :=
      unit -> unit`.
      7d0bb151
  9. 24 May, 2020 1 commit
  10. 03 Apr, 2020 2 commits
  11. 02 Apr, 2020 2 commits
  12. 18 Mar, 2020 1 commit
  13. 10 Feb, 2020 1 commit
  14. 13 Dec, 2019 1 commit
  15. 20 Nov, 2019 1 commit
  16. 06 May, 2019 1 commit
  17. 25 Apr, 2019 1 commit
  18. 21 Feb, 2019 1 commit
  19. 26 Jan, 2019 1 commit
  20. 24 Jan, 2019 1 commit
  21. 26 Oct, 2018 2 commits
  22. 04 Jul, 2018 1 commit
    • Ralf Jung's avatar
      Split prettification from proof mode reduction · a4f0f4b0
      Ralf Jung authored
      pm_reduce just reduces away proof mode terms using cbv; pm_prettify just prettifies user-visible connectors using cbn.
      Most uses of pm_default are converted to default to keep the desired reduction behavior.
      a4f0f4b0
  23. 03 Jul, 2018 1 commit
  24. 02 Jul, 2018 2 commits
  25. 15 Jun, 2018 4 commits
  26. 10 Jun, 2018 4 commits
  27. 09 Jun, 2018 1 commit
  28. 29 May, 2018 2 commits