Skip to content
Snippets Groups Projects
  1. Feb 23, 2015
  2. Feb 17, 2015
    • Regis Blanc's avatar
      add support for bits operations · 4481325f
      Regis Blanc authored
      Adds a benchmark with many cool magic tricks with bits.
      However, proving some of them is very costly and we
      could potentially look at opportunities to make the proofs
      go through faster.
      4481325f
    • 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
  3. Feb 13, 2015
    • Regis Blanc's avatar
      Refactor FiniteArray to an implicit representation · 373c4aba
      Regis Blanc authored
      FiniteArray now takes an Expr for the length, a default
      Expr, and a Map of defined Expr for some of its elements.
      Adapt the rest of Leon to the new trees.
      
      The PrettyPrinter tries to be a little bit smart about
      how to print the array, only printing a few elements when the
      array gets too big. The regression test produces an
      huge array counter-example that used to lead to a crash of
      Leon with the previous implementation of Array (fully represented
      in memory).
      373c4aba
  4. Feb 12, 2015
  5. Nov 03, 2014
  6. Sep 18, 2014
  7. Sep 16, 2014
    • Etienne Kneuss's avatar
      Improve/Fix SMTLib solvers · 622d4d8b
      Etienne Kneuss authored
      - Implement smt and smt-z3/smt-cvc4 as options for --solvers
      
      - Uses a main solver sources for verification/CLP, taking into account
        --solvers
      
      - Implement Z3-SMT sets
      
      - Add tests for Z3-SMT
      622d4d8b
  8. Sep 12, 2014
  9. Sep 03, 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. Mar 04, 2014
  15. Mar 03, 2014
  16. Feb 17, 2014
    • Etienne Kneuss's avatar
      Introduce support for methods and multiple objects/fields · 9c7e02b5
      Etienne Kneuss authored
      Methods:
      --------
      
      Methods are now supported in ADT roots only (e.g. single case classes or
      abstract classes). The phase `MethodLifting` converts them to normal
      global functions which makes them transparent to the rest of Leon.
      
      Introducing Leon Library:
      -------------------------
      
      Common structures and functionalities can be shipped as part of the
      Library.scala file, which is a set of ADTs with methods.
      
      Imported via `import leon.Library._`
      
      New Annotations:
      ----------------
      
      - @verified means library function will not be considered for verification
        unless specifically given through --functions
      
      - @proxy allows non-pure bodies, which will be silently ignored.
        pre/post need to be in purescala.
      
      Functions without bodies (e.g. proxy methods) are now materialized with
      a choose construct automatically, replicating the post-condition. This
      allows compilation to bytecode and execution of VCs refering to proxy
      methods.
      
      Tree Modifications:
      -------------------
      - FunDef now have params, not args.
      
      - VarDecl is renamed ValDef.
      
      - Added methods in ClassDef, as well as This and MethodInvocation,
        both are converted to normal function calls by the MethodLifting
        phase.
      9c7e02b5
  17. Feb 10, 2014
  18. Feb 04, 2014
    • Etienne Kneuss's avatar
      Implement generics for functions and ADTs · 1708d239
      Etienne Kneuss authored
      - Calling functions are now typed, FunctionInvokation takes a
        TypedFunDef which is basically a FunDef with type parameters' values.
        Instantiation of types within the signature/body is done on demand
        through this wrapper class.
      
      - Operations on ADTs are now taking a *ClassType instead of *ClassDef.
        Similarly, Case/AbstractClassType takes values for type parameters.
      
      - Introduces a GenericValue tree for models targeting abstract types.
        e.g. foo[T](a: T, b: T) { a == b } ensuring (_) will find a model with
        { a -> T#1, b -> T#2 }
      
      - Only "simple" hierarchies allowed with type parameters. All members of
        the hierarchy must define the same number of type parameters and
        correctly pass them to parent classes.
      
      - Type parameters are invariant.
      1708d239
  19. Jan 31, 2014
    • Régis Blanc's avatar
      remove the need for innerXXX methods · a3cab185
      Régis Blanc authored
      Refactor the TimeoutSolver and TimeoutAssumptionSolver so
      that they no longer use innerCheck methods. We now only
      create solver as subclassing Solver or IncrementalSolver and
      implementing the interuptible trait, and we can turn them into
      TimeoutSolver at instantiation time with a mixin.
      a3cab185
  20. Dec 16, 2013
    • Etienne Kneuss's avatar
      Support Choose in evaluation, range positions, tracing. · e02cd510
      Etienne Kneuss authored
      - Simplify code generation by replacing CompilationEnvironment with a
        simple scope state.
      
      - Support Choose construct in both evaluators.
      
      - Introduce RecursiveEvaluator (renamed from Naive) and TracingEvaluator
        which tracks intermediate values as well.
      
      - Introduce offset as well as ranged positions, extract all positions
        from trees. Try to propagate them as much as possible. Introduced
        .copiedFrom
      
      - Remove dead-code, and improve TreeOps a bit.
      
      - Introduce Pretty-printer arguments
      e02cd510
Loading