8 research outputs found

    Automated Random Testing of Numerical Constrained Types

    Get PDF
    International audienceWe propose an automated testing framework based on constraint programming techniques. Our framework allows the developer to attach a numerical constraint to a type that restricts its set of possible values. We use this constraint as a partial specification of the program, our goal being to derive property-based tests on such annotated programs. To achieve this, we rely on the user-provided constraints on the types of a program: for each function f present in the program, that returns a constrained type, we generate a test. The tests consists of generating uniformly pseudo-random inputs and checking whether f 's output satisfies the constraint. We are able to automate this process by providing a set of generators for primitive types and generator combinators for composite types. To derive generators for constrained types, we present in this paper a technique that characterizes their inhabitants as the solution set of a numerical CSP. This is done by combining abstract interpretation and constraint solving techniques that allow us to efficiently and uniformly generate solutions of numerical CSP. We validated our approach by implementing it as a syntax extension for the OCaml language

    Constraint-based Verification of Formation Control

    Get PDF
    Collision-free motion planning of formation of robots is an essential property to assess for safety purpose. We propose in this paper a new formal verification method based on abstract interpretation and constraint satisfaction problems to reach this goal. We consider state of the art control algorithms for formation maneuver to generate trajectories for a group of robots. Additionally, bounded uncertainties are considered to represent potential localization and measure errors. The collision-free property is formalized using the constraint satisfaction problem framework

    Une combinaison d'interprétation abstraite et de programmation par contraintes

    No full text
    Nous Ă©tudions dans cette thĂšse une collaboration Ă©troite entre les techniques de l’InterprĂ©tation Abstraite et de la Programmation Par Contraintes au sein d’une mĂ©thode unifiĂ©e de rĂ©solution de problĂšmes de satisfaction de contrainte. Ce travail aborde le problĂšme de la conception de maniĂšre gĂ©nĂ©rique et modulaire d’un solveur de contraintes basĂ© sur des domaines abstraits qui permettent l’infĂ©rence de propriĂ©tĂ©s spĂ©cifiques d’un programme ou d’un systĂšme de contraintes. Nous exploitons les atouts des deux domaines pour contourner les restrictions des solveurs de contraintes standards, telles que la spĂ©cialisation Ă  un certain type de contraintes ou de variables. Notre travail consiste aussi Ă  concevoir une mĂ©thode robuste tenant compte des problĂ©matiques liĂ©es Ă  l’utilisation de calculs en prĂ©cision flottante avec une gestion correcte des erreurs d’arrondi. De plus, nous nous intĂ©ressons Ă  diffĂ©rentes techniques permettant la construction d’une partition d’un espace de solution qui peut ĂȘtre facilement rĂ©utilisĂ©e, tant d’un point de vue quantitatif que qualitatif. Notre travail a Ă©tĂ© concrĂ©tisĂ© sous la forme d’une implĂ©mentation dans le solveur de contraintes AbSolute et appliquĂ© sur plusieurs exemples. Les expĂ©riences que nous avons menĂ©es au sein de ce solveur montrent que nos mĂ©thodes amĂ©liorent l’efficacitĂ© du solveur et la qualitĂ© de ses rĂ©sultats par rapport aux mĂ©triques que nous avons dĂ©fini.We investigate in this thesis a tight collaboration between techniques of Abstract Interpretation and Constraint Programming within a unified method of resolution of constraint satisfaction problems. This work addresses the problem of the design in a generic and modular way of a constraint solver based on abstract domains, which capture specific properties of program or constrained variables. We exploit the assets of both fields to bypass the restriction of standard constraint solvers, such as the dedication to a certain type of constraints or variables. Our effort also consists in the design of a robust method, providing soundness properties even in thecontext of floating-point errors. Moreover, we are interested in different techniques allowing the construction of a partition of a solution space that can be easily reused, both from a quantitative and a qualitative point of view. Our work has been concretized in the form of an implementation within the AbSolute constraint solver and applied on several examples. Our experiments show that our methods improve the solver’s efficiency or the quality of the results according to the metrics we have defined

    Une combinaison d'interprétation abstraite et de programmation par contraintes

    No full text
    We investigate in this thesis a tight collaboration between techniques of Abstract Interpretation and Constraint Programming within a unified method of resolution of constraint satisfaction problems. This work addresses the problem of the design in a generic and modular way of a constraint solver based on abstract domains, which capture specific properties of program or constrained variables. We exploit the assets of both fields to bypass the restriction of standard constraint solvers, such as the dedication to a certain type of constraints or variables. Our effort also consists in the design of a robust method, providing soundness properties even in thecontext of floating-point errors. Moreover, we are interested in different techniques allowing the construction of a partition of a solution space that can be easily reused, both from a quantitative and a qualitative point of view. Our work has been concretized in the form of an implementation within the AbSolute constraint solver and applied on several examples. Our experiments show that our methods improve the solver’s efficiency or the quality of the results according to the metrics we have defined.Nous Ă©tudions dans cette thĂšse une collaboration Ă©troite entre les techniques de l’InterprĂ©tation Abstraite et de la Programmation Par Contraintes au sein d’une mĂ©thode unifiĂ©e de rĂ©solution de problĂšmes de satisfaction de contrainte. Ce travail aborde le problĂšme de la conception de maniĂšre gĂ©nĂ©rique et modulaire d’un solveur de contraintes basĂ© sur des domaines abstraits qui permettent l’infĂ©rence de propriĂ©tĂ©s spĂ©cifiques d’un programme ou d’un systĂšme de contraintes. Nous exploitons les atouts des deux domaines pour contourner les restrictions des solveurs de contraintes standards, telles que la spĂ©cialisation Ă  un certain type de contraintes ou de variables. Notre travail consiste aussi Ă  concevoir une mĂ©thode robuste tenant compte des problĂ©matiques liĂ©es Ă  l’utilisation de calculs en prĂ©cision flottante avec une gestion correcte des erreurs d’arrondi. De plus, nous nous intĂ©ressons Ă  diffĂ©rentes techniques permettant la construction d’une partition d’un espace de solution qui peut ĂȘtre facilement rĂ©utilisĂ©e, tant d’un point de vue quantitatif que qualitatif. Notre travail a Ă©tĂ© concrĂ©tisĂ© sous la forme d’une implĂ©mentation dans le solveur de contraintes AbSolute et appliquĂ© sur plusieurs exemples. Les expĂ©riences que nous avons menĂ©es au sein de ce solveur montrent que nos mĂ©thodes amĂ©liorent l’efficacitĂ© du solveur et la qualitĂ© de ses rĂ©sultats par rapport aux mĂ©triques que nous avons dĂ©fini

    Finding solutions by finding inconsistencies

    No full text
    International audienceIn continuous constraint programming, the solving process alternates propagation steps, which reduce the search space according to the constraints, and branching steps. In practice, the solvers spend a lot of computation time in propagation to separate feasible and infeasi-ble parts of the search space. The constraint propagators cut the search space into two subspaces: the inconsistent one, which can be discarded, and the consistent one, which may contain solutions and where the search continues. The status of all this consistent subspace is thus indeterminate. In this article, we introduce a new step called elimination. It refines the analysis of the consistent subspace by dividing it into an indeterminate one, where the search must continue, and a satisfied one, where the constraints are always satisfied. The latter can be stored and removed from the search process. Elimination relies on the propagation of the negation of the constraints, and a new difference operator to efficiently compute the obtained set as an union of boxes, thus it uses the same representations and algorithms as those already existing in the solvers. Combined with propagation, elimination allows the solver to focus on the frontiers of the constraints, which is the core difficult part of the problem. We have implemented our method in the AbSolute solver, and present experimental results on classic benchmarks with good performances

    AmĂ©liorer la propagation : l'Importance d'ĂȘtre Inconsistant

    No full text
    International audienceAbstract Classical CSP solving methods often alternate two steps : propagation and exploration. Propagation reduces the domains of the variables according to the constraints. It can be seen as a discrimination of the search space in two sub-spaces : the inconsistent one that can be deleted from the solving process, and the undetermined one which may contain the solutions. The exploration step divides the undetermined sub-space into several sub-spaces in which the search continues. This step is usually implemented in solvers by split heuristics relying onto the domains of the variables and/or the constraints of the problem. This article introduces a new step into the solving process called elimination. It divides the search space into two sub-spaces : the undetermined one and the consistent one. It allows the solver to benefit more from the constraints, thus obtaining more significative frontiers for the exploration. It is based on a key observation : the consistent part of a problem is equivalent to the inconsistent part of the complementary problem. This new step is implemented in the AbSolute continuous solver. This solver combines methods from Abstract Interpretation and Constraint Programming. Our elimination technique can be easily added in it. Preliminary results show significative improvements of the solving process.Les mĂ©thodes classiques de rĂ©solution de problĂšmes de satisfaction de contraintes alternent gĂ©nĂ©ralement deux Ă©tapes : la propagation et l'exploration. La propagation rĂ©duit les domaines en fonction des contraintes. Elle peut ĂȘtre vue comme une Ă©tape de division de l'espace de recherche en deux parties : le sous-espace inconsistant, qui est Ă©liminĂ© du processus de rĂ©solution et le sous-espace indĂ©terminĂ© qui contient les solutions du problĂšme. L'Ă©tape d'exploration consiste alors Ă  diviser le sous-espace indĂ©terminĂ© en plusieurs sous-espaces oĂč continuer la rĂ©solution. Cette Ă©tape est implantĂ©e dans la plupart des solveurs de contraintes Ă  l'aide d'heuristiques de coupe qui reposent sur les domaines des variables et/ou les contraintes du problĂšme. Cet article introduit une nouvelle Ă©tape dans la rĂ©solution appelĂ©e Ă©limination. Elle divise l'espace de recherche en deux sous-espaces : l'espace indĂ©terminĂ© et l'espace consistant. Elle permet de mieux tirer profit des contraintes et ainsi d'obtenir des frontiĂšres plus pertinentes pour la rĂ©solution. Cette nouvelle Ă©tape est basĂ©e sur une observation clĂ© : la partie consistante d'un problĂšme est Ă©quivalente Ă  la partie inconsistante du problĂšme complĂ©mentaire. Nous avons implantĂ© cette mĂ©thode au sein du solveur continu AbSolute. Ce solveur mixe des mĂ©thodes d'Interpretation Abstraite et de Programmation Par Contraintes, et la technique d'Ă©limination s'y intĂšgre bien. Les premiers rĂ©sultats expĂ©rimentaux montrent des amĂ©liorations significatives des performances du processus de rĂ©solution
    corecore