Un solveur de contraintes basé sur les domaines abstraits Marie Pelleau Antoine Miné Charlotte Truchet Frédéric Benhamou TASC, University of Nantes INRIA, ENS JFPC 2013 12 juin 2013 12 juin 2013 1 / 23
Outline 1 Contexte Programmation par contraintes Interprétation abstraite Comparaison 2 Méthode de résolution abstraite 3 AbSolute 12 juin 2013 2 / 23
Contexte Programmation par contraintes Programmation par contraintes La programmation par contraintes (PPC) formalise et résout des problèmes combinatoires [Montanari, 1974] Programmation déclarative, précise le problème pas la méthode de résolution Utilisée pour résoudre nombreux problèmes industriels En biologie (e.g. structure d ARN secondaire [Perriquet and Barahona, 2009]) En logistique (e.g. problème d ordonancement [Grimes and Hebrard, 2011]) En vérification (e.g. vérification de programmes [Collavizza and Rueher, 2007], vérification de modèles [Lazaar et al., 2012]) En génération de tests (e.g. génération automatique de tests de configuration [Hervieu et al., 2011]) En crytographie (e.g. conception de s-boxes cryptographiques [Ramamoorthy et al., 2011]) En musique [Truchet and Assayag, 2011] 12 juin 2013 3 / 23
Contexte Programmation par contraintes Problème de satisfaction de contraintes (CSP) Definition (CSP) V : ensemble de variables D : ensemble de domaines C : ensemble de contraintes v 2 Example (Continu) V = (v 1, v 2 ) D 1 = [ 1, 14], D 2 = [ 5, 10] C 1 : (v 1 9) 2 + v2 2 25 C 2 : (v 1 + 1) 2 + (v 2 5) 2 100 v 1 12 juin 2013 4 / 23
Contexte Programmation par contraintes Problème de satisfaction de contraintes (CSP) Definition (Solution exacte) Une solution exacte est une instanciation des variables satisfaisant toutes les contraintes v 2 Remarque Calculer les solutions exactes peut être trop coûteux ou intraitable Definition (Solution approximée) L ensemble de solutions est approximé par un ensemble de boîtes contenant uniquement des solutions ou assez petite par rapport à un paramètre r v 1 12 juin 2013 4 / 23
Contexte Programmation par contraintes Méthode de résolution Comment résoudre? Propagation En utilisant les contraintes, supprime des domaines les valeurs ne pouvant pas faire partie d une solution Exploration Coupe une boîte en deux plus petites boîtes 12 juin 2013 5 / 23
Contexte Méthode de résolution continue Programmation par contraintes Paramètre : float r liste de boîtes sols queue de boîtes toexplore boîte e e D push e dans toexplore while toexplore do e pop(toexplore) e Hull-Consistency(e) if e then if maxdim(e) r or issol(e) then sols sols e else coupe e en deux boîtes e1 et e2 push e1 et e2 dans toexplore end end end v 2 v 1 12 juin 2013 6 / 23
Contexte Méthode de résolution continue Programmation par contraintes Paramètre : float r liste de boîtes sols queue de boîtes toexplore boîte e e D push e dans toexplore while toexplore do e pop(toexplore) e Hull-Consistency(e) if e then if maxdim(e) r or issol(e) then sols sols e else coupe e en deux boîtes e1 et e2 push e1 et e2 dans toexplore end end end v 2 v 1 12 juin 2013 6 / 23
Contexte Méthode de résolution continue Programmation par contraintes Paramètre : float r liste de boîtes sols queue de boîtes toexplore boîte e e D push e dans toexplore while toexplore do e pop(toexplore) e Hull-Consistency(e) if e then if maxdim(e) r or issol(e) then sols sols e else coupe e en deux boîtes e1 et e2 push e1 et e2 dans toexplore end end end v 2 v 1 12 juin 2013 6 / 23
Contexte Méthode de résolution continue Programmation par contraintes Paramètre : float r liste de boîtes sols queue de boîtes toexplore boîte e e D push e dans toexplore while toexplore do e pop(toexplore) e Hull-Consistency(e) if e then if maxdim(e) r or issol(e) then sols sols e else coupe e en deux boîtes e1 et e2 push e1 et e2 dans toexplore end end end v 2 v 1 12 juin 2013 6 / 23
Contexte Méthode de résolution continue Programmation par contraintes Paramètre : float r liste de boîtes sols queue de boîtes toexplore boîte e e D push e dans toexplore while toexplore do e pop(toexplore) e Hull-Consistency(e) if e then if maxdim(e) r or issol(e) then sols sols e else coupe e en deux boîtes e1 et e2 push e1 et e2 dans toexplore end end end v 2 v 1 12 juin 2013 6 / 23
Contexte Méthode de résolution continue Programmation par contraintes Paramètre : float r liste de boîtes sols queue de boîtes toexplore boîte e e D push e dans toexplore while toexplore do e pop(toexplore) e Hull-Consistency(e) if e then if maxdim(e) r or issol(e) then sols sols e else coupe e en deux boîtes e1 et e2 push e1 et e2 dans toexplore end end end v 2 v 1 12 juin 2013 6 / 23
Contexte Programmation par contraintes Synthèse Ce que fait la PPC Offre un cadre permettant de modéliser de nombreux problèmes combinatoires Résout des problèmes discrets ou continus A de nombreuses heuristiques pour améliorer la résolution = Résout efficacement de nombreux problèmes combinatoires Ce que ne fait pas la PPC Prend en compte la corrélation des variables restreint au produit cartésien Résout des problèmes mixtes discret-continu Remarque Calcule des sur-approximations d un ensemble de solutions 12 juin 2013 7 / 23
Contexte Interprétation abstraite Interprétation abstraite Remarque Au autre domaine calculant des sur-approximations L interprétation abstraite (IA) est une théorie d approximation de sémantiques [Cousot and Cousot, 1976] Utilisée pour l analyse statique et la vérifications de logiciels Application principale : prouver automatiquement qu un programme n a pas d erreurs d exécution 12 juin 2013 8 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 Zone interdite x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 Remarque Domaine concret D Calculer le domaine concret peut être indécidable ou trop coûteux x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 Domaine abstrait D x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 Fausse alarme x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 Fausse alarme x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x 12 juin 2013 9 / 23
Interprétation abstraite Contexte Interprétation abstraite Étudie les valeurs de variables y 1: int x, y 2: y 1 3: x random(1, 5) 4: while y<3 et x 8 do 5: x x+y 6: y 2*y 7: end 8: x x-1 9: y y+1 x Remarque Approximation avec différents domaines abstraits Compromis entre l expressivité et le coût d un domaine abstrait 12 juin 2013 9 / 23
Contexte Comparaison Comparaison La même structure sous-jacente (treillis et points fixes) Le même but : sur-approximer un ensemble Solutions en PPC Environnements en IA Différents points fixes Le plus grand point fixe en PPC Le plus petit point fixe en IA Différents schémas itératifs Uniquement des itérations décroissantes en PPC Itérations croissantes et décroissantes en IA Pas de fonction de précision en IA Plus de représentations pour les domaines en IA qu en CP IA traite naturellement les domaines discret-continus 12 juin 2013 10 / 23
Contexte Comparaison À la frontière de l IA et la PPC AI pour les programmes de contraintes [Codognet and Filé, 1992] Vérification de programmes [Collavizza and Rueher, 2007] Amélioration d un analyseur statique [Ponsini et al., 2011] Génération automatique de tests de configuration [Hervieu et al., 2011] Vérification de modèles [Lazaar et al., 2012] Travaux précédents [Pelleau et al., 2011] Définition des domaines abstraits en PPC Utilisation d un domaine abstrait dans une méthode de résolution Notre contribution Définir une méthode de résolution à l aide des outils de l IA 12 juin 2013 11 / 23
Méthode de résolution abstraite Ce qui existe en IA Intervalles Zones Octagones Polyèdres Domaines abstraits avec : fonctions de transfert ρ (instanciation, test,... ) intersection et union élargissement et rétrécissement 12 juin 2013 12 / 23
Méthode de résolution abstraite Ce qui existe en IA Intervalles Zones Octagones Polyèdres Domaines abstraits avec : fonctions de transfert ρ (instanciation, test,... ) intersection et union élargissement et rétrécissement On a besoin : une consistance 12 juin 2013 12 / 23
Méthode de résolution abstraite Ce qui existe en IA Intervalles Zones Octagones Polyèdres Domaines abstraits avec : fonctions de transfert ρ (instanciation, test,... ) intersection et union élargissement et rétrécissement On a besoin : une consistance un opérateur de coupe 12 juin 2013 12 / 23
Méthode de résolution abstraite Ce qui existe en IA Intervalles Zones Octagones Polyèdres Domaines abstraits avec : fonctions de transfert ρ (instanciation, test,... ) intersection et union élargissement et rétrécissement On a besoin : une consistance un opérateur de coupe une fonction de précision 12 juin 2013 12 / 23
Méthode de résolution abstraite Méthode de résolution abstraite Défini la résolution comme une sémantique concrète Propagation Consistance, en utilisant les fonctions de transfert de test Boucle de propagation, point fixe obtenu avec des itérations locales [Granger, 1992] Exploration Opérateur de coupe dans une disjonction Definition (Complétion disjonctive [Cousot and Cousot, 1992]) Étant donné un domaine abstrait D, une disjonction E = P finite (D ) est un sous-ensemble d éléments incomparables de D Fonction de précision 12 juin 2013 13 / 23
Méthode de résolution abstraite Domaine abstrait des octogones O Definition (Octogone [Miné, 2006]) Soient v 1,..., v n des variables, un octogone est l ensemble des points satisfaisant une conjonction de contraintes de la forme ±v i ± v j c, appelées contraintes octogonales v 2 v 2 v 1 2 v 1 1 v 2 5 v 1 v 2 3 v 2 1 v 1 v 2 2.5 v 1 5 v 1 12 juin 2013 14 / 23
Méthode de résolution abstraite Domaine abstrait des octogones O O = { αv i + βv j i, j 1, n, α, β { 1, 1} } F 12 juin 2013 14 / 23
Méthode de résolution abstraite Domaine abstrait des octogones O O = { αv i + βv j i, j 1, n, α, β { 1, 1} } F τ o (X ( ) = min( max X (v i + βv j ) + X ( v i βv j ) ), i,j,β ( max X (v i + v i ) + X ( v i v i ) ) /2 ) i 12 juin 2013 14 / 23
Méthode de résolution abstraite Domaine abstrait des octogones O O = { αv i + βv j i, j 1, n, α, β { 1, 1} } F τ o (X ( ) = min( max X (v i + βv j ) + X ( v i βv j ) ), i,j,β ( max X (v i + v i ) + X ( v i v i ) ) /2 ) i 12 juin 2013 14 / 23
Méthode de résolution abstraite Domaine abstrait des octogones O O = { αv i + βv j i, j 1, n, α, β { 1, 1} } F τ o (X ( ) = min( max X (v i + βv j ) + X ( v i βv j ) ), i,j,β ( max X (v i + v i ) + X ( v i v i ) ) /2 ) i 12 juin 2013 14 / 23
Méthode de résolution abstraite Domaine abstrait des octogones O O = { αv i + βv j i, j 1, n, α, β { 1, 1} } F τ o (X ( ) = min( max X (v i + βv j ) + X ( v i βv j ) ), i,j,β ( max X (v i + v i ) + X ( v i v i ) ) /2 ) i 12 juin 2013 14 / 23
Méthode de résolution abstraite Domaine abstrait des octogones O O = { αv i + βv j i, j 1, n, α, β { 1, 1} } F τ o (X ( ) = min( max X (v i + βv j ) + X ( v i βv j ) ), i,j,β ( max X (v i + v i ) + X ( v i v i ) ) /2 ) i o (X ) = {X [( ) ] αv i + βv j h, X [( ) ] } αv i βv j h 12 juin 2013 14 / 23
Méthode de résolution abstraite Domaine abstrait des octogones O O = { αv i + βv j i, j 1, n, α, β { 1, 1} } F τ o (X ( ) = min( max X (v i + βv j ) + X ( v i βv j ) ), i,j,β ( max X (v i + v i ) + X ( v i v i ) ) /2 ) i o (X ) = {X [( ) ] αv i + βv j h, X [( ) ] } αv i βv j h 12 juin 2013 14 / 23
Méthode de résolution abstraite Domaine abstrait des octogones O O = { αv i + βv j i, j 1, n, α, β { 1, 1} } F τ o (X ( ) = min( max X (v i + βv j ) + X ( v i βv j ) ), i,j,β ( max X (v i + v i ) + X ( v i v i ) ) /2 ) i o (X ) = {X [( ) ] αv i + βv j h, X [( ) ] } αv i βv j h 12 juin 2013 14 / 23
Méthode de résolution abstraite Domaine abstrait des octogones O O = { αv i + βv j i, j 1, n, α, β { 1, 1} } F τ o (X ( ) = min( max X (v i + βv j ) + X ( v i βv j ) ), i,j,β ( max X (v i + v i ) + X ( v i v i ) ) /2 ) i o (X ) = {X [( ) ] αv i + βv j h, X [( ) ] } αv i βv j h 12 juin 2013 14 / 23
Méthode de résolution abstraite Méthode de résolution continue Paramètre : float r liste de boîtes sols queue de boîtes toexplore boîte e D push e dans toexplore while toexplore do e pop(toexplore) e Hull-Consistency(e) if e then if maxdim(e) r or issol(e) then sols sols e else coupe e en deux boîtes e1 et e2 push e1 et e2 dans toexplore end end end 12 juin 2013 15 / 23
Méthode de résolution abstraite Méthode de résolution abstraite Paramètre : float r liste de boîtes disjunction sols queue de boîtes disjunction toexplore boîte domaine abstrait e D push e dans toexplore while toexplore do e pop(toexplore) e Hull-Consistency(e) ρ (e) if e then if maxdim(e) τ(e) r or issol(e) then sols sols e else coupe e en deux boîtes e1 et e2 push e1 et e2 (e) dans toexplore end end end Sous certaines conditions, cette méthode de résolution abstraite termine, est correcte et complète. 12 juin 2013 15 / 23
AbSolute Implantation Prototype avec Apron [Jeannet and Miné, 2009], une bibliothèque OCaml de domaines abstraits numériques pour l analyse statique Consistance : en utilisant les fonctions de transfert de test Boucle de propagation : à chaque itération, propage toutes les contraintes Exécute toutes les fonctions de transfert de test Coupe : uniquement cartésienne Travaux en cours Pour le moment, ne contient pas toutes les techniques de PPC. Reste à améliorer : Boucle de propagation Opérateur de coupe abstrait Heuristique de choix 12 juin 2013 16 / 23
AbSolute Résultats Expérimentation Problèmes du benchmark COCONUT Même configuration Temps limite 1 heure 12 juin 2013 17 / 23
Resultats AbSolute Résultats nom # vars ctrs Ibex AbSolute Ibex AbSolute b 4 = 0.02 0.10 0.26 0.14 nbody5.1 6 = 95.99 1538.25 27.08 - ipp 8 = 38.83 39.24 279.36 817.86 brent-10 10 = 21.58 263.86 330.73 - KinematicPair 2 59.04 23.14 60.78 31.11 biggsc4 4 800.91 414.94 1772.52 688.56 o32 5 27.36 22.66 40.74 33.17 Itv Oct Temps CPU en secondes pour trouver toutes les solutions 12 juin 2013 18 / 23
AbSolute Résultats Expérimentation Reformulation de problèmes du benchmark MinLPLib Fonction objectif min f (V ) transformée en deux contraintes f (V ) bestval + ɛ et f (V ) bestval ɛ Même configuration Temps limite 1 heure 12 juin 2013 19 / 23
Results AbSolute Résultats name int # vars real ctrs Itv Oct Poly gear4 4 2 = 0.017 0.048 0.415 st_miqp5 2 5 2.636 3.636 - ex1263 72 20 = 473.933 - - antennes_4_3 6 2 520.766 1562.335 - Temps CPU en secondes pour trouver toutes les solutions = AbSolute traite naturellement les problèmes discret-continus 12 juin 2013 20 / 23
Conclusion et Perspectives Conclusion Conclusion La méthode de résolution peut être définie avec les outils et techniques de l IA La méthode de résolution abstraite est modulaire Un solveur hybride PPC IA traite naturellement les problèmes mixtes Besoin d implanter les heuristiques de PPC dans AbSolute 12 juin 2013 21 / 23
Perspectives Conclusion et Perspectives Perspectives Améliorer AbSolute en utilisant les heuristiques et techniques de PPC opérateurs de coupe pour les domaines abstraits propagateurs dédiés boucle de propagation Développer des domaines abstraits pour des contraintes spécifiques Utiliser les méthodes de PPC dans un analyseur statique d IA méthode d itérations décroissantes (alternative au rétrécissement) l opérateur de coupe dans la complétion disjonctive Utiliser l élargissement dans un solveur PPC 12 juin 2013 22 / 23
Questions Merci pour votre attention! Avez-vous des questions? 12 juin 2013 23 / 23
Bibliography Apt, K. R. and Wallace, M. (2007). Constraint logic programming using Eclipse. Cambridge University Press. Berger, N. and Granvilliers, L. (2009). Some interval approximation techniques for minlp. In Proceedings of the The 8th Symposium on Abstraction, Reformulation and Approximation (SARA 09). Chabert, G., Jaulin, L., and Lorca, X. (2009). A constraint on the number of distinct vectors with application to localization. In Proceedings of the 15th International Conference on Principles and Practice of Constraint Programming (CP 09), pages 196 210, Berlin, Heidelberg. Springer-Verlag. Codognet, P. and Filé, G. (1992). Computations, abstractions and constraints in logic programs. 12 juin 2013 23 / 23
Bibliography In Proceedings of the 1992 International Conference on Computer Languages (ICCL 92), pages 155 164. IEEE. Collavizza, H. and Rueher, M. (2007). Exploring different constraint-based modelings for program verification. In Proceedings of the 13th International Conference on Principles and Practice of Constraint Programming (CP 07), volume 4741 of Lecture Notes in Computer Science, pages 49 63. Springer. Cousot, P. and Cousot, R. (1976). Static determination of dynamic properties of programs. In Proceedings of the 2nd International Symposium on Programming, pages 106 130. Cousot, P. and Cousot, R. (1992). Abstract interpretation frameworks. Journal of Logic and Computation, 2(4):511 547. Granger, P. (1992). 12 juin 2013 23 / 23
Bibliography Improving the results of static analyses of programs by local decreasing iterations. In Proceedings of the 12th Conference on Foundations of Software Technology and Theoretical Computer Science. Granvilliers, L. and Benhamou, F. (2006). Realpaver: An interval solver using constraint satisfaction techniques. ACM Transactions on Mathematical Software, 32(1):138 156. Grimes, D. and Hebrard, E. (2011). Models and strategies for variants of the job shop scheduling problem. In Proceedings of the 17th International Conference on Principles and Practice of Constraint Programming (CP 11), volume 6876 of Lecture Notes in Computer Science, pages 356 372. Springer-Verlag. Hervieu, A., Baudry, B., and Gotlieb, A. (2011). 12 juin 2013 23 / 23
Bibliography Pacogen: Automatic generation of pairwise test configurations from feature models. In Proceedings of the 22nd International Symposium on Software Reliability Engineering, pages 120 129. Jeannet, B. and Miné, A. (2009). Apron: A library of numerical abstract domains for static analysis. In Proceedings of the 21th International Conference Computer Aided Verification (CAV 2009), volume 5643 of Lecture Notes in Computer Science, pages 661 667. Springer. Lazaar, N., Gotlieb, A., and Lebbah, Y. (2012). A cp framework for testing cp. Constraints, 17(2):123 147. Miné, A. (2006). The octagon abstract domain. Higher-Order and Symbolic Computation, 19(1):31 100. Montanari, U. (1974). 12 juin 2013 23 / 23
Bibliography Networks of constraints: Fundamental properties and applications to picture processing. Information Science, 7(2):95 132. Pelleau, M., Truchet, C., and Benhamou, F. (2011). Octagonal domains for continuous constraints. In Proceedings of the 17th International Conference on Principles and Practice of Constraint Programming (CP 11), volume 6876 of Lecture Notes in Computer Science, pages 706 720. Springer-Verlag. Perriquet, O. and Barahona, P. (2009). Constraint-based strategy for pairwise rna secondary structure prediction. In Proceedings of the 14th Portuguese Conference on Artificial Intelligence: Progress in Artificial Intelligence (EPIA 09), volume 5816 of Lecture Notes in Computer Science, pages 86 97. Springer-Verlag. Ponsini, O., Michel, C., and Rueher, M. (2011). 12 juin 2013 23 / 23
Bibliography Refining abstract interpretation-based approximations with constraint solvers. In Proceedings of the 4th International Workshop on Numerical Software Verification. Ramamoorthy, V., Silaghi, M. C., Matsui, T., Hirayama, K., and Yokoo, M. (2011). The design of cryptographic s-boxes using csps. In Proceedings of the 17th International Conference on Principles and Practice of Constraint Programming (CP 11), volume 6876 of Lecture Notes in Computer Science, pages 54 68. Springer-Verlag. Team, C. (2010). Choco: an open source java constraint programming library. Research report 10-02-INFO, Ecole des Mines de Nantes. Truchet, C. and Assayag, G., editors (2011). Constraint Programming in Music. ISTE. 12 juin 2013 23 / 23