Détection des fonctions de rang linéaires à terme
Abstract
Program termination is a hot research topic in program analysis. The last a few years have witnessed the development of termination analyzers for programming languages such as C and Java with remarkable precision and performance. These systems are largely based on techniques and tools coming from the field of constraint programming. In this paper, we first recall an algorithm based on Farkas' Lemma for discovering linear ranking functions proving termination of a certain class of loops. Then we propose an extension of this method for showing the existence of eventual linear ranking functions, i.e., linear functions that become ranking functions after a finite unrolling of the loop. We show correctness and completeness of this polynomial algorithm.
La terminaison des programmes est un sujet actif de recherche en informatique. Ces dernières années ont vu l'apparition d'analyseurs de terminaison performants pour des langages comme C ou Java où l'emploi des techniques et outils de la programmation par contraintes est omniprésent. Dans cet article, nous rappelons un algorithme particulier basé sur l'emploi du lemme de Far-kas pour le calcul de fonctions de rang linéaires garantissant la terminaison d'une certaine classe de boucles. Puis nous présentons une extension de cette méthode pour la découverte de fonctions linéaires qui deviennent des fonctions de rang linéaire à terme, c'est-à-dire après un certain nombre de passages dans la boucle. Nous montrons la correction et la complétude d'un algorithme polynomial pour ce problème.
Origin | Explicit agreement for this submission |
---|
Loading...