Skip to content
Snippets Groups Projects
  1. Feb 12, 2018
  2. Feb 07, 2018
    • Robbert Krebbers's avatar
      12326eeb
    • Robbert Krebbers's avatar
    • Robbert Krebbers's avatar
      Generic `iAlways` tactic. · 6dc83bcb
      Robbert Krebbers authored
      This commit implements a generic `iAlways` tactic that is not tied to
      `persistently`, `affinely` and `plainly` but can be instantiated with a
      variety of always-style modalities.
      
      In order to plug in an always-style modality, one has to decide for both
      the persistent and spatial what action should be performed upon introducing
      the modality:
      
      - Introduction is only allowed when the context is empty.
      - Introduction is only allowed when all hypotheses satisfy some predicate
        `C : PROP → Prop` (where `C` should be a type class).
      - Introduction will only keep the hypotheses that satisfy some predicate
        `C : PROP → Prop` (where `C` should be a type class).
      - Introduction will clear the context.
      - Introduction will keep the context as-if.
      
      Formally, these actions correspond to the following inductive type:
      
      ```coq
      Inductive always_intro_spec (PROP : bi) :=
        | AIEnvIsEmpty
        | AIEnvForall (C : PROP → Prop)
        | AIEnvFilter (C : PROP → Prop)
        | AIEnvClear
        | AIEnvId.
      ```
      
      An always-style modality is then a record `always_modality` packing together the
      modality with the laws it should satisfy to justify the given actions for both
      contexts.
      6dc83bcb
  3. Feb 06, 2018
  4. Feb 02, 2018
  5. Jan 27, 2018
  6. Jan 25, 2018
  7. Jan 24, 2018
  8. Jan 23, 2018
  9. Jan 22, 2018
  10. Jan 21, 2018
  11. Jan 20, 2018
  12. Jan 19, 2018
  13. Jan 18, 2018
  14. Jan 16, 2018
  15. Jan 13, 2018
  16. Jan 12, 2018
  17. Jan 11, 2018
  18. Jan 10, 2018
  19. Jan 07, 2018
  20. Dec 31, 2017
  21. Dec 30, 2017
  22. Dec 23, 2017
Loading