Skip to content
Snippets Groups Projects
  1. Sep 16, 2014
  2. Aug 20, 2014
  3. Mar 14, 2014
  4. 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
  5. Feb 10, 2014
  6. 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
  7. Jan 31, 2014
  8. Oct 01, 2013
    • Etienne Kneuss's avatar
      Re-introduce type hierarchy for solvers, simplify factories · b86116f0
      Etienne Kneuss authored
      Solvers wrap solvers or factories, depending on the needs.
      Factories no longer wrap factories, except for the special case of
      timeoutsolverfactories (it does it in a typesafe way though).
      
      Fix TupleRewrite with new posts, fix ScopeSimplified, Fix pretty printer
      b86116f0
Loading