1. 31 Jan, 2018 2 commits
  2. 28 Jan, 2018 1 commit
  3. 15 Jan, 2018 1 commit
    • Dan Frumin's avatar
      Strengthen `related_bind` · bf3aca9a
      Dan Frumin authored
      We define a stronger rule `related_bind_up`, in which there is a baked
      in semantic type `R`. The idea here is that we don't actually require
      the expressions that we bind to have the same syntactic type.
      
      ```
        {E;R::Δ;⤉Γ} ⊨ e1 ≤log≤ e2 : τ
      ∗ (∀ vv, ⟦ τ ⟧ (R::Δ) vv -∗ {E;Δ;Γ} ⊨ K[v1] ≤log≤ K'[v2] : τ')
      ____________________________________________________________
        {E;Δ;Γ} ⊨ K[e1] ≤log≤ K'[e2] : τ'
      ```
      
      We can then use `bin_log_related_weaken_2` to prove the original
      binding rule.
      
      The advantages of the new rule is that it allows us to prove the
      following compatibility rule for seq:
      
      ```
      {E;(R::Δ);⤉Γ} ⊨ e1 ≤log≤ e1' : τ1 -∗
      {E;Δ;Γ} ⊨ e2 ≤log≤ e2' : τ2 -∗
      {E;Δ;Γ} ⊨ (e1;; e2) ≤log≤ (e1';; e2') : τ2.
      ```
      
      The idea here is that we can also pick any *semantic* type to related
      e1 and e1'. For instance, if both e1 and e1' are expressions of type
      Nat then it is not necessarily the case that we can relate them at
      that type -- they might reduce to two different numerals -- but
      it *should* be the case that we can relate their effects, if it makes
      sense. E.g.
      
      ((#l <- #1;; #0) ;; e) ≤ ((#l <- #1;; #1) ;; e)
      bf3aca9a
  4. 07 Dec, 2017 1 commit
  5. 04 Dec, 2017 1 commit
  6. 01 Dec, 2017 2 commits
  7. 27 Nov, 2017 1 commit
  8. 07 Nov, 2017 1 commit
  9. 23 Oct, 2017 1 commit
  10. 05 Oct, 2017 1 commit
  11. 28 Sep, 2017 2 commits
  12. 20 Sep, 2017 1 commit
  13. 16 Sep, 2017 1 commit
  14. 09 Sep, 2017 1 commit
  15. 06 Sep, 2017 2 commits
  16. 05 Sep, 2017 1 commit
  17. 31 Aug, 2017 1 commit
  18. 29 Aug, 2017 1 commit
  19. 28 Aug, 2017 1 commit
    • Dan Frumin's avatar
      Monadic operations for the relational intrepretation · f638d4f9
      Dan Frumin authored
      - Define several versios of bind and return for the relational
        interpretation
      - Use those operations to prove some compatibility lemmas
        without unfolding the definitions
      - Get rid of the definition unfolding in a part of the stack
        refinement proof
      f638d4f9
  20. 22 Aug, 2017 1 commit
  21. 21 Aug, 2017 1 commit
  22. 17 Aug, 2017 1 commit
    • Dan Frumin's avatar
      Twiggle the notation · 11948e6e
      Dan Frumin authored
      - Use the type of literals in `val`
      - Notation for `match`
      - "Better" coercions
      11948e6e
  23. 16 Aug, 2017 1 commit
  24. 15 Aug, 2017 2 commits
  25. 14 Aug, 2017 2 commits
  26. 07 Aug, 2017 1 commit
  27. 19 Jul, 2017 1 commit
  28. 04 Jul, 2017 2 commits
  29. 03 Jul, 2017 1 commit
  30. 06 May, 2017 1 commit
  31. 03 May, 2017 1 commit
  32. 18 Apr, 2017 1 commit
  33. 11 Apr, 2017 1 commit