Skip to content
Snippets Groups Projects
  1. Feb 12, 2018
  2. Feb 07, 2018
    • 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 02, 2018
  4. Jan 27, 2018
  5. Jan 25, 2018
  6. Jan 24, 2018
  7. Jan 23, 2018
  8. Jan 21, 2018
  9. Jan 20, 2018
  10. Jan 18, 2018
  11. Jan 16, 2018
  12. Dec 30, 2017
  13. Dec 22, 2017
  14. Dec 20, 2017
  15. Dec 04, 2017
  16. Dec 03, 2017
  17. Nov 03, 2017
  18. Nov 01, 2017
  19. Oct 30, 2017
Loading