Functional Verification

Functional Verification

Tired of experiencing bugs that weren't covered by your test cases before? KeY lets you augment your Java program with a specification written in the Java Modeling Language JML and helps you proving that your program behaves as it should.

View details »

Symbolic Debugging

Symbolic Debugging

Debugging sucks! Well, not if you're using our Symbolic Execution Debugger. Profit from a graphical visualization of the program's execution flow, state inspection and various other features to quickly uncover undesired behavior!

View details »

Teaching and Research

Teaching and Research

KeY is already used extensively for teaching at different universities. Use the tool's possibilities for teaching your students important concepts like design by contract, applied logics and program verification. Or use KeY for realizing your research project.

View details »

Most Recent Posts

16th KeY Symposium 2017

The KeY Symposium brings together researchers interested in KeY and related aspects. We will exchange recent achievements, current ideas, discuss the next steps and milestones of the area, as well as future directions in general. Also the latest developments in the KeY tool are presented and discussed.

Continue reading “16th KeY Symposium 2017”

Proving JDK’s Dual Pivot Quicksort Correct

by Bernhard Beckert, Jonas Schiffl, Peter H. Schmitt and Mattias Ulbrich

Sorting is a fundamental functionality in libraries, for which efficiency is crucial. Correctness of the highly optimized implementations is often taken for granted. De Gouw et al. have shown that this certainty is deceptive by revealing a bug in the Java Development Kit (JDK) implementation of TimSort.

We have now formally analysed the other implementation of sorting in the JDK standard library: A highly efficient implementation of a dual pivot quicksort algorithm. We were able to deductively prove that the algorithm implementation is correct. However, a loop invariant which is annotated to the source code does not hold. Continue reading “Proving JDK’s Dual Pivot Quicksort Correct”

Functional Verification
We can do better than testing!

KeY lets you specify the desired behavior of your program in the well-known specification language JML, and helps you proving that your programs conforms to its specification. That way, you did not only show that your program behaves as expected for some set of test values - you proved that it works correctly for all possible values! Go beyond testing - start proving!

Functional Verification

Symbolic Debugging
The next-generation debugger.

Imagine that you start debugging without having to think of particular input values. Your debugger instantly tells you that part of your code is unreachable, shows you all feasible runs in a beautiful graph and gives you graphical hints on where the problem you're after could possibly hide. While performing all this magic, it gracefully integrates within the Eclipse IDE and offers tools (breakpoints etc.) that you know from the debuggers of yesterday. Meet the Symbolic Execution Debugger!

Symbolic Debugging

Teaching & Research
It was never easier to fall in love with formal methods.

Use our tool to demonstrate to your students that formal concepts, like first-order logic, Hoare logic and symbolic execution, are not just dry theoretical ideas, but are practically used and even integrated into the IDE they know. KeY is already extensively used in different universities, in several countries.
Currently, our team is spending a lot of effort on making KeY even more attractive to new research projects by increasing its extensibility. Use KeY for your own research project or in your courses!

Teaching & Research