Algèbres de Kleene, réécriture modulo AC et circuits en coq Thomas Braibant To cite this version: Thomas Braibant. Algèbres de Kleene, réécriture modulo AC et circuits en coq. Autre [cs.OH]. Université de Grenoble, 2012. Français. NNT: 2012GRENM005. tel-00683661 HAL Id: tel-00683661 https://theses.hal.science/tel-00683661 Submitted on 29 Mar 2012 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. THE`SE Pour obtenir le grade de DOCTEUR DE L’UNIVERSITE´ DE GRENOBLE Spe´cialite´ : Informatique Arreˆte´ ministe´rial:7aouˆt2006 Pre´sente´epar Thomas BRAIBANT The`se dirige´e par Jean-Bernard STEFANI pre´pare´e au sein du Laboratoire d’Informatique de Grenoble et de L’E´cole Doctorale Mathe´matiques, Sciences et Technologies de l’Information, Informatique Kleene Algebras, Rewriting Mod- ulo AC, and Circuits in Coq The`se soutenue publiquement le 17 fe´vrier 2012, devant le jury compose´ de : Ge´rard BERRY Directeurderecherchea` Inria,Rapporteur Dan R. GHICA SeniorLecturer,BirminghamUniversity,Examinateur Christine PAULIN-MOHRING Professeura` l’Universite´ ParisSud,Rapporteur Lawrence C. PAULSON Professor,CambridgeUniversity,Pre´sident Damien POUS Charge´ derechercheauCNRS,Encadrantdethe`se Jean-Bernard STEFANI Directeurderecherchea` Inria,Directeurdethe`se Laurent THE´RY Charge´ derecherchea` Inria,Examinateur ii Remerciements Merci `a Christine Paulin-Mohring et G´erard Berry de m’avoir fait l’honneur de relire cette th`ese. Leurs remarques m’ont permis d’am´eliorer sensiblement ce manuscrit, et leurs rapports m’ont apport´e un regain de confiance en moi, `a une p´eriode ou` j’en avais besoin. En particulier, ils m’ont fait comprendre qu’une th`ese, ce n’´etait pas la fin du monde, et qu’il serait toujours temps de continuer apr`es. Merci `a Larry Paulson, qui a bien voulu pr´esider, `a Dan Ghica et `a Laurent Th´ery. J’ai grandement appr´eci´e les discussions que nous avons eues, et j’esp`ere les poursuivre lorsque nous serons moins contraints par le temps. Merci `a Damien d’avoir encadr´e cette th`ese. Nos ´echanges m’ont permis de me poser les bonnes questions et de corriger, je l’esp`ere, mes erreurs. Merci `a Jean-Bernard pour son soutien moral, scientifique et administratif. Chacun `a sa mani`ere m’a fait muˆrir sur le plan humain et scientifique. Ils m’ont aussi laiss´e une grande libert´e quand j’ai voulu orienter mon travail de recherche hors du cadre qui avait ´et´e d´efini. Qu’ils en soient remerci´es. Merci `a ces sept personnes qui ont form´e mon jury de th`ese: j’esp`ere ˆetre `a la hauteur de l’effort qui m’a ´et´e consacr´e. Merci `a l’´equipe Sardes, dans son ensemble. Merci `a Alan et Sergue¨ı pour les s´eminaires apr`es le d´ejeuner, qui ont donn´es lieu `a de nombreux ´echanges constructifs et amicaux entre Z´elotes de la Th´eorie et de la Pratique. Merci `a Jean, Quentin et aux autres “non-permanents” pour les r´eunions techniques du jeudi soir. Merci `a Diane. Merci `a Pascal, Micha¨el et Sylvain, coll`egues grenoblois de l’autre cot´e de la rivi`ere, qui m’ont encadr´e durant mon monitorat. Ils ont fait de moi un meilleur enseignant. Merci`al’´equipePOPARTpoursess´eminaires, etplusparticuli`erementauxdiscussionsavec Alain, Gwena¨el et Pascal, coll`egues grenoblois du bon cot´e de la rivi`ere, mais dont je n’ai pas su assez profiter. Merci aux coll`egues parisiens, en vrac, Xavier, Luc, Jade, Hugo, Pierre Bout’, Matthieu et St´ephane. J’esp`ere vous retrouver tr`es bientˆot pour mon plus grand plaisir. Merci `a Daniel, une inspiration. Merci`atousceux, tropnombreuxpourˆetrenomm´esici, avecquij’aipass´edebonsmoments lors de conf´erences, et plus particuli`erement `a Munich, en Ecosse, en Oregon ou `a Taiwan. Cetteth`esedoitbeaucoupausoutienquej’airec¸udemesprochesdurantcestroisans. Merci `a Sylvain, C´ecile et Aline, grenoblois ou presque. Merci `a Bertrand, Martin, Jpla, Cl´ement, Thibaud, Anne-Sandrine, Claire et les autres pour les parties de pˆeche sur les bords du lac de Bitche, les points ours en montagne et les visites d’abbayes en Belgique. Merci `a tous les membres de ma famille qui m’ont soutenu et accompagn´es dans ma vocation `a devenir la troisi`eme g´en´eration de docteurs, mˆeme si je ne pourrais toujours r´eparer ni ordinateurs, ni rotules. Merci `a Pauline, mˆeme si c’est peu au regard de ce que cette th`ese te doit. Il me reste `a remercier tous les gens que je n’ai pas remerci´e plus haut, mais que j’ai cotoy´e ces derni`eres ann´ees, avant de mettre un point final `a ce manuscrit. iii iv Contents 1 Tools for Kleene algebras 13 1.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.1.1 Regular expressions and automata . . . . . . . . . . . . . . . . . . . . . . 14 1.1.2 From regular expressions to automata . . . . . . . . . . . . . . . . . . . . 17 1.1.3 Building regular expressions from automata . . . . . . . . . . . . . . . . . 18 1.1.4 Checking equivalence of regular expressions. . . . . . . . . . . . . . . . . . 20 1.1.5 Toward the axiomatisation of the equality of regular languages . . . . . . 21 1.2 Kleene algebras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.2.1 Examples of Kleene algebras . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.2.2 Elementary consequences . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.2.3 Deciding equations of Kleene algebras . . . . . . . . . . . . . . . . . . . . 23 1.2.4 The main idea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.3 Initiality theorem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.3.1 Typed Kleene algebras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 1.3.2 Matrices over a Kleene algebra . . . . . . . . . . . . . . . . . . . . . . . . 27 1.3.3 Finite automata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.3.4 Proving the correctness and completeness . . . . . . . . . . . . . . . . . . 31 1.3.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 1.4 Underlying design choices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 1.4.1 Using type-classes to structure the development . . . . . . . . . . . . . . . 40 1.4.2 Separation between operations and laws . . . . . . . . . . . . . . . . . . . 40 1.4.3 Classes for algebraic operations. . . . . . . . . . . . . . . . . . . . . . . . 41 1.4.4 Classes for algebraic laws. . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 1.4.5 Concrete structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 1.4.6 Reification: handling typed models. . . . . . . . . . . . . . . . . . . . . . 43 1.5 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 1.5.1 Coq representation for matrices . . . . . . . . . . . . . . . . . . . . . . . . 45 1.5.2 Lifting the algebraic hierarchy . . . . . . . . . . . . . . . . . . . . . . . . 47 1.5.3 Computing the star of a matrix . . . . . . . . . . . . . . . . . . . . . . . . 47 1.6 The algorithm and its proof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 1.6.1 Representation of automata in Coq . . . . . . . . . . . . . . . . . . . . . . 48 1.6.2 Road-map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 1.6.3 Normalisation to strict star form . . . . . . . . . . . . . . . . . . . . . . . 50 1.6.4 Automata constructions algorithms . . . . . . . . . . . . . . . . . . . . . . 51 1.6.5 Digression: Comparison with Ilie and Yu’s construction . . . . . . . . . . 54 1.6.6 Epsilon-transitions removal . . . . . . . . . . . . . . . . . . . . . . . . . . 56 1.6.7 Determinisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 1.6.8 Equivalence checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 1.6.9 Completeness: counter-examples . . . . . . . . . . . . . . . . . . . . . . . 60 v 1.6.10 Efficiency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 1.7 Additional constructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 1.7.1 Using Thompson’s construction, and matrix computations . . . . . . . . . 62 1.7.2 Minimisation algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 1.8 Some complete examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 1.8.1 Mechanised Church-Rosser theorems . . . . . . . . . . . . . . . . . . . . . 64 1.8.2 McNugget Numbers and the Coin Problem . . . . . . . . . . . . . . . . . 65 1.9 Related works and discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 1.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 2 Tactics for rewriting modulo AC 71 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 2.2 User interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 2.3 Some complete examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 2.3.1 Homogeneous binary relations . . . . . . . . . . . . . . . . . . . . . . . . . 74 2.3.2 Arithmetic in Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.3.3 Operations on bit-vectors . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 2.4 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 2.5 Deciding equality modulo AC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 2.5.1 Representation of reified terms . . . . . . . . . . . . . . . . . . . . . . . . 80 2.5.2 The algorithm and its proof . . . . . . . . . . . . . . . . . . . . . . . . . . 82 2.5.3 Reification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 2.6 Matching modulo AC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 2.7 Bridging the gaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 2.7.1 Neutral elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 2.7.2 Subterms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 2.7.3 Ruling out dummy cases. . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 2.8 Digression: Alternative problems and solutions . . . . . . . . . . . . . . . . . . . 91 2.8.1 Completion modulo AC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 2.8.2 Congruence closure modulo AC . . . . . . . . . . . . . . . . . . . . . . . . 92 2.8.3 CoqMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 2.8.4 Extension to the multi-sorted case . . . . . . . . . . . . . . . . . . . . . . 92 2.9 Related Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 2.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3 Verifying hardware circuits in Coq 97 3.1 Overview of our system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 3.2 Formal development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 3.2.1 Circuit interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 3.2.2 Type isomorphisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 3.2.3 Plugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 3.2.4 Abstract syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 3.2.5 Structural semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 3.2.6 Modular proofs of circuits . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 3.2.7 Digression: a Curry-Howard isomorphism at work . . . . . . . . . . . . . 106 3.3 Proving some combinational circuits . . . . . . . . . . . . . . . . . . . . . . . . . 107 3.3.1 Proving a half-adder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 3.3.2 n-bits integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 3.3.3 Two specifications of a 1-bit adder . . . . . . . . . . . . . . . . . . . . . . 108 3.3.4 Ripple-carry adder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 vi 3.3.5 Divide and conquer adder . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 3.4 Sequential circuits: time and loops . . . . . . . . . . . . . . . . . . . . . . . . . . 111 3.5 Comparing shallow-embeddings and deep-embeddings . . . . . . . . . . . . . . . 114 3.6 Comparisons with related work . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 3.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 References 121 vii viii List of Figures 1 A map function on length-indexed lists (vectors) . . . . . . . . . . . . . . . . . . 7 2 Group theory using type-classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3 Definitions from the standard library . . . . . . . . . . . . . . . . . . . . . . . . . 9 4 Proper morphisms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5 Reification primer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 6 Simplification of reified terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 7 Reification with environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.1 Diagrammatic, concrete, and abstract presentations of the same state in a proof. 13 1.2 Showing the equivalence of four different notations for regular languages . . . . . 17 1.3 Thompson’s construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.4 A state s about to be eliminated (transition diagram and transition matrix) . . . 19 1.5 Result of eliminating s from Fig. 1.4 (transition diagram and transition matrix) . 19 1.6 The rules of Kleene algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.7 From Kleene algebras to typed Kleene algebras. . . . . . . . . . . . . . . . . . . . 26 1.8 The big picture of the soundness proof . . . . . . . . . . . . . . . . . . . . . . . . 32 1.9 Thompson’s construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1.10 Regular expressions, axiomatic equality . . . . . . . . . . . . . . . . . . . . . . . 39 1.11 Classes for the typed algebraic operations. . . . . . . . . . . . . . . . . . . . . . . 41 1.12 Classes for the typed algebraic structures. . . . . . . . . . . . . . . . . . . . . . . 42 1.13 Instances for heterogeneous binary relations and languages. . . . . . . . . . . . . 43 1.14 Typed syntax for reification and evaluation function. . . . . . . . . . . . . . . . . 44 1.15 Definition of matricial product and identity matrix. . . . . . . . . . . . . . . . . . 45 1.16 Definition of the star operation on matrices. . . . . . . . . . . . . . . . . . . . . . 48 1.17 Coq types and evaluation functions of the four automata representations. . . . . 49 1.18 Overall picture for the algorithm and its correctness. . . . . . . . . . . . . . . . . 50 1.19 Converting expressions to strict star form . . . . . . . . . . . . . . . . . . . . . . 51 1.20 Construction algorithm—a variant of Ilie and Yu’s construction. . . . . . . . . . 52 1.21 Two intermediate representations for automata . . . . . . . . . . . . . . . . . . . 53 1.22 Running the construction algorithm on an expression and its strict star form. . . 55 1.23 Depth-first determinisation: main step . . . . . . . . . . . . . . . . . . . . . . . . 57 1.24 Checking equivalence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 1.25 Variant of the equivalence check. . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 1.26 Coq code for minimisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 1.27 Some Church-Rosser theorems . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 2.1 Classes for declaring properties of operations. . . . . . . . . . . . . . . . . . . . . 73 2.2 Example instances. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 2.3 Homogeneous binary relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 2.4 Arithmetic in Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 ix
Description: