1. 24 Apr, 2019 1 commit
  2. 23 Apr, 2019 1 commit
    • Sylvain Dailler's avatar
      Add name to requires and asserts · 5214043f
      Sylvain Dailler authored
      This is implemented using an attribute that is detected when a
      transformation introduces the hypothesis.
      Added for assertion_kind and requires.
      5214043f
  3. 18 Feb, 2019 1 commit
    • Guillaume Melquiond's avatar
      Rework numerical constants. · d3d7c7ac
      Guillaume Melquiond authored
      Main changes are:
      - Real constants now offer a normalized representation usable for internal
        computations.
      - Constants are no longer stored in textual form.
      d3d7c7ac
  4. 11 Feb, 2019 1 commit
  5. 01 Feb, 2019 1 commit
  6. 28 Nov, 2018 1 commit
    • Sylvain Dailler's avatar
      Removes model_trace added at parsing · 786526f4
      Sylvain Dailler authored
      Removes debug flag: debug_auto_model.
      Some changes in counterexamples triggered by:
      - (non counterexamples) transformations which have a specific case for
         model_trace but not for the new detection: this is intended as
         simplifications that would be done are often simplifications we want
         for counterexamples,
      - Some locations are missing in variables introduced by SP/WP which should
        explain the rest.
      
      This also disables projections for record in intro_projection_counterexmp.
      
      Correct subst_filter to be consistent with new counterexample modification
      786526f4
  7. 24 Oct, 2018 1 commit
  8. 23 Oct, 2018 2 commits
  9. 22 Oct, 2018 1 commit
  10. 21 Oct, 2018 1 commit
    • Andrei Paskevich's avatar
      WhyML: reference variables · 79f564bd
      Andrei Paskevich authored
      caveat: pass-as-reference does not work in chain relations.
              That is, 0 < r += 12 will not typecheck even
              if x is autodereferencing and (+=) has the
              first parameter with the reference marker.
      
      todo: forbid reference markers in logic, in type definitions,
            over logical symbols, etc.
      
      todo: update extraction drivers.
            why3.Ref.Ref defines
              - type "ref",
              - constructor "mk ref" (never used in Typing)
              - projection "contents" (both val and function)
              - program function "ref" (alias for "mk ref")
            ref.Ref defines
              - let-function (!)
              - program function (:=)
      
            It is important to attribute the symbols to their
            respective modules, since a program with reference
            variables may never use ref.Ref and why3.Ref.Ref
            is imported automatically.
      79f564bd
  11. 16 Oct, 2018 1 commit
  12. 15 Oct, 2018 1 commit
  13. 14 Oct, 2018 1 commit
  14. 08 Oct, 2018 1 commit
  15. 04 Oct, 2018 1 commit
  16. 28 Sep, 2018 1 commit
    • Raphael Rieu-Helft's avatar
      Add support for partial functions · 17ed1270
      Raphael Rieu-Helft authored
      Program functions can be declared as partial with "let/val partial".
      Similarly to "diverges", partial code cannot be ghost, however it does not need to be
      explicitly specified as partial.
      
      Fixes #184.
      17ed1270
  17. 11 Sep, 2018 1 commit
    • Guillaume Melquiond's avatar
      Remove handcrafted error messages (fix issues #150 and #172). · ce21b6c1
      Guillaume Melquiond authored
      Short story: it was a source of bugs, there was only one handcrafted
      message over 650, and, to quote François Pottier, "you seem to have
      misunderstood what the various commands do".
      
      Long story: the proper steps to update the error messages after modifying
      the parser are
      
      1. update the old states with --update-errors
      2. generate the new states with --list-errors
      3. compare the old and new states with --compare-errors
      4. manually reconcile the differences between the old and new states
      5. write error messages for the new states
      6. add %on_error_reduce and go back to step 1, if step 5 is too hard
      7. check that the error messages for the old states are still meaningful
      8. check that the set of states is both correct (--compile-errors) and
         complete (--compare-errors)
      
      We were doing only step 1 and half of step 8. Doing the other half of
      step 8 would have prevented issue #172 from occurring. But that would have
      meant doing step 4 after each parser modification, which was never done.
      Note that step 2 is so expensive that it is impossible to perform step 8
      during continuous integration.
      
      Given the work needed to update the error messages after a syntax change,
      I don't think we can reliably use them until WhyML no longer evolves.
      ce21b6c1
  18. 29 Aug, 2018 1 commit
  19. 21 Aug, 2018 1 commit
  20. 06 Aug, 2018 1 commit
  21. 25 Jul, 2018 1 commit
  22. 17 Jul, 2018 1 commit
    • Andrei Paskevich's avatar
      Ident: disambiguated symbolic notation · 295cacf4
      Andrei Paskevich authored
      It is possible to append an arbitary number of quote symbols
      at the end of an prefix/infix/mixfix operator:
      
                  applied form      standalone form
      
                    -' 42               (-'_)
                    x +' y              (+')
                    a[0]' <- 1          ([]'<-)
      
      Pretty-printing will use the quote symbols for disambiguation.
      
      The derived symbols can be produced by Why3 by appending
      a suffix of the form "_toto" or "'toto". These symbols can
      be parsed/printed as "(+)_toto" or "(+)'toto", respectively.
      295cacf4
  23. 11 Jul, 2018 3 commits
  24. 07 Jul, 2018 1 commit
    • Andrei Paskevich's avatar
      confine all notation handling inside Ident · 0fea401c
      Andrei Paskevich authored
      This commit removes all hard-coded "infix ..", "prefix ..",
      and "mixfix .." from the rest of the code, and handles the
      symbolic notation entirely inside Ident. It does not change
      the notation itself.
      0fea401c
  25. 27 Jun, 2018 1 commit
  26. 21 Jun, 2018 2 commits
  27. 18 Jun, 2018 1 commit
  28. 15 Jun, 2018 2 commits
  29. 14 Jun, 2018 1 commit
  30. 07 Jun, 2018 2 commits
  31. 05 Jun, 2018 1 commit
  32. 04 Jun, 2018 1 commit
  33. 01 Jun, 2018 1 commit
  34. 31 May, 2018 1 commit