1. 29 Mar, 2018 4 commits
  2. 28 Mar, 2018 1 commit
  3. 27 Mar, 2018 1 commit
  4. 26 Mar, 2018 1 commit
  5. 23 Mar, 2018 1 commit
  6. 21 Mar, 2018 1 commit
    • Guillaume Melquiond's avatar
      Homogenize constructor names. · 6ef0273e
      Guillaume Melquiond authored
      The pattern-matching construct in the logic is now systematically named
      "Tcase" in constructors (Ptree.Tmatch -> Tcase). The one in the
      programs (supporting exceptions) is now systematically named "Ematch"
      (Expr.Ecase -> Ematch, Dexpr.DEcase -> DEmatch). They are now homogeneous
      with the other constructors: Term.Tcase, Dterm.DTcase, Ptree.Ematch,
      Mltree.Ematch. Smart constructor Expr.e_case was renamed accordingly.
      6ef0273e
  7. 20 Mar, 2018 4 commits
  8. 19 Mar, 2018 2 commits
  9. 16 Mar, 2018 1 commit
  10. 15 Mar, 2018 2 commits
  11. 08 Mar, 2018 1 commit
  12. 05 Mar, 2018 1 commit
    • Andrei Paskevich's avatar
      Ity: in a private type, modification of ghost fields is visible · e387ab1d
      Andrei Paskevich authored
      This is important for the "loose" fields: mutable components of
      a private type which can be modified without a direct write into
      the containing object. These subcomponents can be modified by
      abstract functions, and these modifications are actually visible,
      since a refinement of a private type can make ghost fields non-ghost.
      e387ab1d
  13. 14 Feb, 2018 1 commit
  14. 22 Jan, 2018 2 commits
  15. 17 Jan, 2018 1 commit
  16. 11 Jan, 2018 1 commit
  17. 02 Jan, 2018 1 commit
    • Mário Pereira's avatar
      fixes issue #46 · 773c7372
      Mário Pereira authored
      both constructor and projection names are now added to the mod_known from
      Mltree.pmodule, pointing to the type declarations in which they are introduced.
      773c7372
  18. 19 Dec, 2017 1 commit
  19. 16 Dec, 2017 1 commit
    • Mário Pereira's avatar
      Extraction of range types: · 2f5afda0
      Mário Pereira authored
      - even for range types fitting 31-bit signed integers the user must provide a
      driver in order to get them extracted to OCaml's type 'int'
      2f5afda0
  20. 15 Dec, 2017 1 commit
  21. 14 Dec, 2017 3 commits
  22. 13 Dec, 2017 2 commits
  23. 12 Dec, 2017 1 commit
  24. 06 Dec, 2017 1 commit
  25. 01 Dec, 2017 2 commits
  26. 28 Nov, 2017 1 commit
    • Andrei Paskevich's avatar
      Ity: "spoil" effect on type variables · 330bd7e5
      Andrei Paskevich authored
      Type variables that appear in the result types of "pure"
      or logical functions are "spoiled" and cannot be instantiated
      with mutable types. Abstract program functions ("val") are assumed
      to not spoil type variables, and no explicit effect annotation is
      provided for this effect. Constructors, projections, and function
      application do not spoil type variables.
      
      This effect prevent unsoundness that results from instantiating
      [constant magic : 'a] with a mutable type in a program. It is,
      however, less precise than tracking of magic values using
      pure type variables. For example, the following program
      does typecheck with pure type variables but not with the
      spoil effects.
      
        use seq.Seq
      
        type ref_hist 'a = {
                mutable contents : 'a;
          ghost mutable history  : Seq.seq {'a}
        }
      
        let (:=) (r : ref_hist 'a) (v : 'a) =
          r.history <- Seq.cons (pure { r.contents }) r.history;
          r.contents <- v
      
        let test (r : ref_hist (ref_hist unit)) =
          r := r.contents
      
      Indeed, (:=) spoils 'a, and precludes it from being instantiated
      with a mutable type in "test".
      330bd7e5
  27. 24 Nov, 2017 1 commit