1. 15 Nov, 2015 1 commit
    • Andrei Paskevich's avatar
      Mlw: admit fields with mutable types in private records · f522e56e
      Andrei Paskevich authored
      this should not be problematic as long as these fields do not occur
      in the invariants (actual or refined). In other words, a value of
      a private type exists no matter what is stored in the field.
      
      Also, admit non-private mutable types without actual mutable fields.
      It is actually impossible to create a write effect for such types,
      and the only consequence of being mutable is that they are assigned
      a region, and so every value of such type can be tracked individually.
      One use case for this is a non-private record with an invariant,
      which either has fields with mutable types or has type parameters
      that we wish to instantiate with mutable types. If we modify these
      mutable components, this may break the record's invariant. Now, if
      the record itself is immutable (and thus has no associated region),
      then we must reestablish the invariant immediately, otherwise we
      lose track of the value. Even if this extra flexibility does not
      prove useful in the end, it seems to be harmless.
      
      Also, admit type definitions of the form
        type t 'a = (private|abstract)? mutable? {} invariant*
      which define private empty records (even if not declared private).
      
      Also, "type t 'a" is now equivalent to "type t 'a = private {}".
      f522e56e
  2. 13 Nov, 2015 1 commit
  3. 10 Nov, 2015 1 commit
  4. 08 Nov, 2015 1 commit
  5. 22 Aug, 2015 1 commit
  6. 20 Aug, 2015 1 commit
    • Andrei Paskevich's avatar
      HighOrd is new Map · 402fa65b
      Andrei Paskevich authored
      0. define Map.map 'a 'b as an alias 'a -> 'b
      1. define Set.set as an alias for 'a -> bool
      2. rename HighOrd.func to (->)
      3. remove HighOrd.pred
      4. update drivers
      402fa65b
  7. 01 Aug, 2015 1 commit
    • Andrei Paskevich's avatar
      Ity: another revision of eff_assign · d1453b19
      Andrei Paskevich authored
      in this version, we reconstruct and scan the mutable fields of all
      regions that occur in an assignment, independently on whether the
      region is modified. This avoids a bug in the previous version where
      the "left" and "right" subregion lists could have different length.
      This also avoids a bug in the version before that, where an upper
      region could have a shorter subregion list than one of its subregions.
      It is possible to fix those issues in a more efficient manner, but this
      seems to make code quite more complex for a non-existent practical gain.
      d1453b19
  8. 31 Jul, 2015 2 commits
  9. 30 Jul, 2015 1 commit
    • Léon Gondelman's avatar
      Ity: resets are protected by a common set of covers · faf9a2be
      Léon Gondelman authored
      The effects now must satisfy the following invariants:
      
      1. Every region in eff_writes, eff_taints, and eff_covers
         must occur in the type of some variable in eff_reads.
      
      2. Both eff_taints and eff_covers are subsets of eff_writes.
      
      3. eff_covers and eff_resets are disjoint.
      
      4. Every region in eff_writes is either in eff_covers or
         is stale (according to Ity.reg_r_stale) and forbidden
         for the later use.
      
      Also, this commit rewrites Ity.eff_assign and Ity.eff_strong
      (renamed now to eff_reset_overwritten) to handle correctly
      parallel assignments.
      faf9a2be
  10. 17 Jul, 2015 1 commit
  11. 02 Jul, 2015 1 commit
  12. 27 Jun, 2015 1 commit
  13. 25 Jun, 2015 1 commit
  14. 09 Jun, 2015 1 commit
  15. 06 Jun, 2015 1 commit
  16. 28 May, 2015 1 commit
  17. 21 May, 2015 1 commit
  18. 29 Apr, 2015 1 commit
  19. 20 Mar, 2015 1 commit
  20. 19 Mar, 2015 1 commit
  21. 22 Jan, 2015 1 commit
  22. 21 Jan, 2015 1 commit
  23. 18 Jan, 2015 1 commit
  24. 16 Jan, 2015 1 commit
  25. 12 Jan, 2015 2 commits
  26. 05 Jan, 2015 1 commit
  27. 10 Dec, 2014 1 commit
  28. 08 Dec, 2014 1 commit
  29. 23 Nov, 2014 1 commit
  30. 20 Nov, 2014 1 commit
  31. 17 Nov, 2014 1 commit
  32. 11 Nov, 2014 1 commit
  33. 07 Nov, 2014 1 commit
  34. 06 Nov, 2014 2 commits
  35. 03 Nov, 2014 1 commit
  36. 24 Sep, 2014 1 commit
  37. 22 Sep, 2014 1 commit
    • Andrei Paskevich's avatar
      Ity: back to the separate type of regions · f7f8465e
      Andrei Paskevich authored
      "Never be clever for the sake of being clever." Glenn Gould
      
      The type-checking benefits of separation of the ity and region types
      are more important than the weight of extra functions to manipulate
      a second type.
      f7f8465e