Skip to content
Snippets Groups Projects
  1. Mar 25, 2013
  2. Mar 20, 2013
  3. Mar 11, 2013
  4. Mar 09, 2013
  5. Mar 08, 2013
  6. 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
    • Etienne Kneuss's avatar
      Introduce a "PowerMode" for the web interface. · 928536c9
      Etienne Kneuss authored
      Add ?powermode=1 to the URL to access PowerMode. For now, all you can do
      is set the flags manually. This allows you to run the synthesis or
      termination phases from the web, for instance. Remember, with great
      power comes great responsibility!
      928536c9
  7. Jan 25, 2013
  8. 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
  9. Jan 18, 2013
  10. Jan 15, 2013
  11. Jan 14, 2013
  12. Jan 12, 2013
    • Philippe Suter's avatar
      Termination checker. · 47f8001c
      Philippe Suter authored
      This commit introduces a termination checker. Needless to say, it is
      rather primitive. The goal is rather to set up the interfaces, and to
      have something that can immediately prove the most obvious cases. The
      current `SimpleTerminationChecker` implementation computes
      strongly-connected components, and proves that a function `f` terminates
      for all inputs if and only if:
      
        1. `f` has a body
        2. `f` has no precondition
        3. `f` calls only functions that terminate for all inputs or itself
            and, whenever `f` calls itself, it decreases one of its algebraic
            data type arguments.
      
      The astute reader will note that in particular,
      `SimpleTerminationChecker` cannot prove anything about:
      
        1. functions with a precondition
        2. mutually recursive functions
        3. recursive functions that operate on integers only
      
      I am confident that this simple termination checker will pave the way
      for future implementations, though, and that we will end up re-inventing
      the wheel so many times that we'll be able to equip many trains.
      47f8001c
  13. Jan 11, 2013
    • Viktor Kuncak's avatar
    • Viktor Kuncak's avatar
      Synthesis (and verification) benchmarks: · 31df5929
      Viktor Kuncak authored
        Address book
        Converting trees to lists
        Mikael's new year
      31df5929
    • Philippe Suter's avatar
      Fixed ClassLoader issue and type errors in evaluation. · 198a5489
      Philippe Suter authored
      This fixes the classloader issue that we had, where, in codegen, a
      library class would be loaded twice and be incompatible with itself.
      
      It also fixes an oversight in evaluating expressions, where the returned
      ground term was sometimes untyped (typically: empty sets and the like).
      We now copy the type of the (unevaluated) expression in such situations.
      198a5489
    • Philippe Suter's avatar
      --evalground makes FairZ3 evaluate ground applications · 1a0b9f93
      Philippe Suter authored
      Without the flag, functions applied to ground arguments are treated the
      same way as every other one: by unrolling their body. This is
      suboptimal, as we can instead pass to Z3 the equality f(a0, a1) = v,
      instead of letting it "discover" it by itself.
      
      Note that this hasn't been shown to bring any major performance
      improvement; ground applications hardly show up in verification, for
      instance. But think about it, you'll agree using evaluation there is
      "The right thing to do.™".
      
      Note that testing --evalground currently highlights some bugs.
      1a0b9f93
    • 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
  14. Jan 10, 2013
Loading