The Data-abstraction Framework : abstracting unbounded data-structures in Horn clauses, the case of arrays
La Méthode Data-abstraction : une technique d’abstraction de structures de données non-bornées dans des clauses de Horn, le cas des tableaux
Résumé
Proving properties of programs using data-structures such as arrays often requires universally quantified invariants, e.g., ``all elements below index i are nonzero''. Instead of directly manipulating programs, we use Horn formulas which have recently become a popular format to express safety properties of programs. In this manuscript, we propose a general abstraction scheme operating on Horn formulas for unbounded data-structures. The main idea is to use abstraction to simplify the unbounded data-structures into simpler types such as integers. As such a simplification loses information, not all safety properties can be proven after abstraction. It is thus key to choose the right abstraction for the given problem. Our contribution is a general framework for which the data-structures and the abstraction to apply are parameterized. The specificity of that framework is the attention spent to ensure that our algorithm exactly implements the simplification induced by the abstraction by using a property called relative completeness. This contrasts with previous work that mainly uses benchmarks to prove the validity of the technique instead of analyzing whether the technique verifies a similar property. Although the proposed framework is general and may theoretically handle data-structures such as trees or graphs, our focus has been on a specific abstraction of arrays that has already been studied in the literature called cell abstraction. This abstraction is of particular interest as it can handle most container algorithms. There are three main contributions in this manuscript. First, a demonstration that our framework in combination with cell-abstraction can express many existing techniques, and thus our framework handles those as well. Secondly, a proof that an existing restricted technique actually satisfies relative completeness and an extension of the technique to handle a broader class of programs. Thirdly, the framework gives definitions, algorithms and theorems parameterized by the desired abstraction and, even though we have only used this framework for arrays, it gives the foundation for future abstraction of other data-structures.
Prouver des propriétés sur des programmes utilisant des structures de données telles que des tableaux nécessite souvent des invariants universellement quantifiés, par exemple, "tous les éléments avec indice plus petit que i sont non nuls". Au lieu de manipuler directement les programmes, nous utilisons des clauses de Horn, un format de plus en plus courant pour exprimer les propriétés de sécurité des programmes. Dans ce manuscrit, nous proposons un schéma d'abstraction général opérant sur des formules de Horn pour des structures de données non bornées. L'idée principale est d'utiliser l'abstraction pour simplifier les structures de données en types plus simples tels que les entiers. Comme une telle simplification perd de l’information, toutes les propriétés ne peuvent pas être prouvées après abstraction. Il est donc essentiel de choisir la bonne abstraction pour le problème donné. Notre contribution est d'avoir créé une méthode générale où les structures de données et l'abstraction à appliquer sont paramétrées. La spécificité de cette méthode est l'attention portée à une propriété que nous nommons complétude relative et qui spécifie que l’algorithme implémente exactement la simplification induite par l'abstraction. Cette approche contraste avec les travaux antérieurs qui utilisent principalement des benchmarks pour prouver la validité de la technique au lieu d'analyser si la technique vérifie une propriété similaire. Bien que le cadre proposé soit général et puisse théoriquement gérer des structures de données telles que des arbres et graphes, nous nous sommes concentrés sur une abstraction spécifique de tableaux, déjà étudiée dans la littérature et appelée abstraction de cellule. Cette abstraction est particulièrement intéressante car elle peut gérer la plupart des algorithmes de conteneur. La contribution de ce manuscrit peut être résumée en trois points. Tout d'abord, nous démontrons que notre méthode, en combinaison avec l'abstraction de cellule, permet d'exprimer, et donc de gérer, de nombreuses techniques existantes. Deuxièmement, nous prouvons qu'une de ces techniques existantes satisfait le propriété de complétude relative et une extension de celle-ci pour gérer une classe plus large de programmes. Troisièmement, même si nous nous sommes focalisés sur les tableaux, les définitions, algorithmes et théorèmes que nous fournissons sont paramétrés avec l'abstraction souhaitée et donne les bases pour de futures abstractions d'autres structures de données.
Origine | Version validée par le jury (STAR) |
---|