Skip to content
Snippets Groups Projects
  1. Apr 15, 2015
  2. Mar 18, 2015
  3. Mar 06, 2015
  4. Feb 17, 2015
    • Regis Blanc's avatar
      Int becomes bitvector · 2bb7a742
      Regis Blanc authored
      Leon now matches Scala semantics of Int as 32 bits bit-vectors.
      This commits modifies the semantics of IntLiteral to be treated
      as 32 bits integer everywhere (solver, evaluator, ...).
      
      Introduces a new literal type, InfiniteIntegerLiteral, representing
      a natural integer. The front-end maps the use of BigInt to these
      new trees, and the solver properly handles them as mathematical
      integers.
      
      The behaviour of many regression tests changes due to this new
      semantics. In particular many of them now timeout because they
      are no longer proving properties over mathematical integers. This
      commit updates the tests to reflect this new semantics.
      2bb7a742
  5. Feb 12, 2015
  6. Oct 27, 2014
  7. Sep 03, 2014
  8. Aug 07, 2014
  9. May 21, 2014
  10. May 05, 2014
    • Etienne Kneuss's avatar
      New Ensuring/Require/Assert trees · 8403fa94
      Etienne Kneuss authored
      - Ensurings/Require are now proper purescala trees
      - Introduce Assert as a tree
      - Simplify tactics to support arbitrary asserts/errors/inner ensurings
      - New phase to inject assertions for unsafe calls (array/map access)
      - Refactor Default and Induction tactic
      8403fa94
  11. Apr 11, 2014
    • Etienne Kneuss's avatar
      All-seeing synthesis with Oracles, library reorganisation · 8f2438cc
      Etienne Kneuss authored
      - NormalizationRule becomes priorities, so that we can have multiple
        distinct layers
      
      - Use the @library annotation, move synthesis stuff to synthesis,
        Oracles.
      
      - Make sure tests use PreprocessingPhase and import synthesis when
        adequate
      
      - Extract proper package objects fix patternRecons and simplifiers
      
      - Reorganize library:
        - leon.{choose,???} -> leon.lang.synthesis
        - leon.{waypoint,epsilon} -> leon.lang.xlang
      8f2438cc
  12. Mar 20, 2014
  13. Mar 14, 2014
  14. Feb 10, 2014
  15. Sep 12, 2013
  16. Jun 03, 2013
  17. Apr 12, 2013
  18. Feb 13, 2013
    • 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
  19. 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
  20. Jan 14, 2013
  21. Jan 11, 2013
    • Etienne Kneuss's avatar
      Propagate expected types to onSuccess · e4a278b4
      Etienne Kneuss authored
      This allows CostModels to estimate correctly the minimal cost of a
      applying a rule.
      
      With type information on the expected types of a solution
      reconstruction, the cost model can provide dummy values of the correct
      type, avoiding assertion errors when composing solutions.
      e4a278b4
  22. Jan 08, 2013
    • Etienne Kneuss's avatar
      Allow onSuccess to fail. This is necessary to prevent soundness issues. · 965264c3
      Etienne Kneuss authored
      The synthesizer used to generate wrong programs by generating inductive
      programs with an impossible base-case. onSuccess on inductive rules now
      prevents this by checking that sufficiently many cases have precondition
      == true. Otherwise, onSuccess fails. This last-moment failure is now
      handled correctly.
      
      Strenghten precondition
      965264c3
Loading