Participants : Christophe Alias, Laure Gonnord [ Former ATER in Compsys, now MCF Lille ] , Paul Feautrier, Alain Darte.
RanK is a tool proving the termination of a program (in some cases) by computing a ranking function , a mapping from the operations of the program to a well-founded set that decreases as the computation advances. In case of success, RanK provides an upper bound of the worst-case time complexity of the program as a symbolic expression involving the input variables of the program (parameters). In case of failure, RanK tries to prove the non-termination of the program and then to exhibit a counter-example input. This last feature is of great help for program understanding and debugging, and has already been experimented. RanK, implemented by Christophe Alias, represents more than 3000 lines of C++ code. RanK uses several high-level symbolic features developed in Bee. The input of RanK is an integer automaton, representing the control structure of the program to check, which is computed by c2fsm. RanK uses the Aspic tool, developed by Laure Gonnord during her PhD thesis, to compute automaton invariants. RanK has been used to discover successfully the worst-case time complexity for many benchmarks programs of the community. It uses the libraries Piplib and Polylib.