Skip to content
Snippets Groups Projects
  1. Jun 03, 2013
    • Etienne Kneuss's avatar
      Apply BSD 2 clauses license · 3cb6d843
      Etienne Kneuss authored
      3cb6d843
    • Régis Blanc's avatar
      Introduces a phase to protect exact type of vars · f697e53d
      Régis Blanc authored
      This new phase is invoked after the extraction phase. It will rewrite
      precondition (and postcondition) of functions to add instanceOf when the
      parameter (and return type) is a case class concrete type (instead of abstract
      class).
      
      If not done, then during the mapping to Z3 we lose the precise subtype
      information, and Z3 will be able to find non valid counter-examples,
      of a different case class for example.
      
      Since tests are very important, we introduce two testcases that make
      sure the issue is fixed. We also needed to update the Testcase runners
      to make use of the new pipeline.
      f697e53d
  2. May 30, 2013
  3. May 21, 2013
  4. Apr 23, 2013
  5. Apr 12, 2013
  6. Mar 26, 2013
    • Etienne Kneuss's avatar
      Support for LetTuple in Fairz3 · f8ef4879
      Etienne Kneuss authored
      f8ef4879
    • Philippe Suter's avatar
      Introducing term enumeration. · 8dee703b
      Philippe Suter authored
      This commit introduces `leon.purescala.DataGen`, an object that contains
      two static methods; `generate` and `findModels`. `generate` is a term
      generator based on composition of streams. It can generate hundreds of
      instances of recursive types in less than a tenth of a second.
      `findModels` leverages `generate` to perform (small-)model finding. Pass
      it an expression and an evaluator (preferably `CodeGenEvaluator`) and
      watch it find models to your formula.
      
      The commit also includes a small regression test suite.
      
      (Note that although we have currently no use for this, the `generate`
      function can in principle be used to generate arbitrary terms. E.g. you
      could pass variables as fixed generators for certain types.)
      8dee703b
  7. Mar 25, 2013
    • Etienne Kneuss's avatar
      Correct handling of choose in verification. · 63477d6c
      Etienne Kneuss authored
      - Choose expressions becomes uninterpreted functions under the same
        constraints.
      
      - Fix bug with variablesOf considering choose binders as free.
      
      - Silence evaluator errors when occuring with tentative lucky models.
        Note that choose expressions cannot be evaluated nor compiled.
      63477d6c
  8. Mar 20, 2013
  9. Mar 11, 2013
  10. Mar 09, 2013
  11. Mar 08, 2013
  12. Feb 13, 2013
    • Etienne Kneuss's avatar
      Strengthen type invariants in trees · 18f41bdc
      Etienne Kneuss authored
      18f41bdc
    • Etienne Kneuss's avatar
    • Etienne Kneuss's avatar
      Various improvements necessary for the web-interface · f48ff213
      Etienne Kneuss authored
      - Describe individual rule applications to allow a user to select one
        in particular
      
      - Scala-Printing LetDefs correctly, allow initial indenting
      
      - Fix Choose with single out variable not generating Tuple1
      
      - Give synthesis a specific path to follow, used by web
      
      - Allow val (x: Int, y: Int) = ... along with locally{}
      
      - Expose information on the synthesis search tree
      
      - Correctly substitute varaibles in ADTInduction's pre/post
      
      - Generic transformers with PC tracking, collect chooses with PC
      
      - Detect line indentation of choose() to indent solution correctly
      
      - Implement simplifier which renames ids based on the context
      
      - Rescale timeouts, use uninterpreted solver for filtering simple cases
      
      - Assume that choose() can reference the entire scope
      
        This is necessary to ensure that Lets do not get thrown away. For
        instance:
      
        Let(x = ..., choose(out => .. y ..))
      
        while the choose may not directly reference x in its preducate, it's
        part of its path condition and should be usable by synthesis.
        SimplifyLet should not simplify/replace it.
      
      - Modify PC for Let(x, Fcall()), this probably needs to be generalized!
      
      - Expose counter-example found during verification, include them in
        VCReport
      
      - Decouple genVCs/checkVCs from Phase.run so that it can be used separately
      f48ff213
  13. Jan 25, 2013
  14. Jan 20, 2013
    • Etienne Kneuss's avatar
      Implement the concept of Normalizing rules · f5fb158f
      Etienne Kneuss authored
      Normalizing rules are rules that:
      1) always help synthesis
      2) are commutative
      3) should be applied as early as possible
      
      Here we apply normalizing rules explicitly before all other rules, and
      in a deterministic order. This should dramatically reduce the search
      space in cases where such rules apply.
      
      Note that rules that are said to be normalizing should never fail once
      instantiated.
      f5fb158f
  15. Jan 18, 2013
  16. Jan 15, 2013
  17. Jan 14, 2013
    • Etienne Kneuss's avatar
      TimeoutSolver Improvements · c2680c66
      Etienne Kneuss authored
      Timeouts are now specified in milliseconds instead of seconds.
      
      TimeoutSolvers that hit a timeout no longer makes the wrapped solver
      useless for all subsequent invocations.
      c2680c66
Loading