. Dans, McMillan propose une règle de vérification pour le raffinement de designs matériels Le raffinement consiste simplement à proposer les composants Si qui peuvent décomposer un composant S donné. On peut définir des « refinement maps » (voir [AL91]), c'est-à-dire un ensemble de règles qui permette de construire les spécifications des Si à partir de la spécification de S. Le travail présenté dans

. Dans, McMillan propose une méthodologie pour la vérification des systèmes matériels

. Ce-raisonnement-permet-ainsi-de-prouver-d, un côté que S1 satisfait P 1 et que S2 satisfait P 2 et d'en déduire que la composition de P 1 avec P 2 satisfait bien la conjonction de P 1 avec P 2. [McM99] étend ces techniques (tout d'abord développées pour les systèmes matériels) aux systèmes d'états infinis. Dans [RM01] , il propose l'application de sa méthodologie à la vérification de microarchitectures

K. Larsen, LL95] ont intégré des règles de preuve compositionnelle à l'outil Uppaal dédié à la vérification des systèmes temps-réels Zulkernine et al. proposent la spécification de contrôleurs par couples assume/guarantee. Le contrôle d'un système complexe est réalisé à l'aide de contrôleurs décrits pour chaque composant du système. Des règles assume/guarantee ont été proposé pour des réseaux flots de données dans les travaux de Ketil Stølen Ces travaux considèrent des composants similaires aux noeuds Lustre et proposent des contrats formées de deux propriétés : un assume portant sur l'histoire des valeurs d'entrées et un guarantee portant sur l'histoire des valeurs d'entrées et de sortie. Les Interface Automata que nous avons présenté plus permettent aussi l'application du raisonnement assume-guarantee. Dans [dAH01a], la définition formelle des Interface Automata donnée par DeAlfaro et Henzinger permet notamment de définir des vérifications de compositions et d'implémentation (dans le cadre du raffinement) similaires à celle que nous proposons plus loin, Autres travaux De nombreuses personnes se sont attachées à appliquer la vérification compositionnelle à différents types de systèmes Leszek Holenderski a proposé une méthodologie de vérification compositionnelle pour les réseaux synchrones. Holenderski propose des stratégies de preuve tout à fait similaires à notre approche : la composition de composants synchrones est décrite par une conjonction et les règles de preuve de validité d'une composition (essentiellement basées sur des manipulations purement logiques des formules assume/guarantee) sont similaires à celles que nous proposons au paragraphe 9

. Enfin, On y indique par exemple que la dernière opération demandée a bien été effectuée. La barre principale de l'interface contient simplement un menu qui permet de quitter le logiciel (pour l'instant, il n'est pas possible de fermer le programme courant et d'en ouvrir un autre) On peut aussi noter un menu déroulant qui suit l'inscription « show code for node : ». Ce menu permet de sélectionner un des noeuds du programme pour le voir affiché dans la fenêtre. Deux menus contextuels permettent de commander l'outil. Le premier peut être activé sur l'arbre de preuve, le second directement sur l'affichage du programme. Le menu de l'arbre de preuve permet en fait simplement de générer les fichiers Lustre correspondant aux programmes générés par les différents algorithmes implémentés, On peut choisir de générer du code compatible avec le compilateur Lustre-V6 ou avec LuDiC. On peut aussi lancer directement LuDiC sur le programme associé à l'arbre de preuve sélectionné. Le menu contextuel de la partie Program est plus intéressant. C'est à partir de là qu'on va pouvoir commander toutes les transformations sur le programme. Son contenu dépend de l'endroit où l'on clique dans le programme

}. A. Fig, 2 ? Fonction principale du générateur de code A.2.3 Génération de l'entête de la fonction principale L'entête de la fonction générée correspond simplement à son nom et à ses paramètres. Nous utilisons pour cela une fonction Générer_déclarations qui génère le code C correspondant à une liste de déclaration qu'on lui fournit. Le code produit pour les sorties est légèrement différent de celui produit pour les entrées, mais nous ne rentrons pas plus dans ces détails qui ne sont pas le but de ce travail

}. A. Fig, 3 ? Fonction de génération de l'entête (entrées/sorties) de la fonction principale Générer_equations(ANPrincipal : AA_Noeud){ Écrire("if(init){, fichierInit

. Pour-chaque-eq-dans-anprincipale, ListeEquations() faire{ Générer_Equation(ANPrincipal.Paramètres_formels, ANPrincipal.Paramètres_formels, <Eq.var,Eq.initExpr>, 0, fichierInit)

}. A. Fig, 10 ? Génération du code pour une équation plie, selon le type de l'équation rencontrée. Les actions traiterRed, traiterMapRed, traiterMap et traiterFill prennent en charge la propagation à chaque itération rencontrée de la transformation en cas init et inv

. Dans-le-cas-d, une itération, on suit le même algorithme que pour le traitement de l'équation principale Cette fois, on ne génère pas des équations définissant les variables propRankN et pro- pRankNp1, mais des variables locales représentant les valeurs calculées par le noeud : ? après le premier passage dans l'itération

B. On-donne-À-la-figure, 6 l'action réalisant le traitement d'une équation map_red. Les actions correspondant au map, red et fill sont similaires. On commence par générer un appel initial du noeud itéré. Les paramètres de cet appel sont construits en appliquant l'action dupliquerInit aux paramètres de l'itération, et l'appel permet de calculer : ? l'accumulateur calculée par l'appel initial du noeud itéré : accRes_Init

R. Bibliographie, L. Alur, R. De-alfaro, T. A. Grosu, M. Henzinger et al., jMOCHA: A model checking tool that exploits design structure, Proceedings of the 23rd International Conference on Software Engeneering (ICSE-01), pp.835-836, 2001.

T. [. Alur and . Henzinger, Reactive modules, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science, pp.207-218, 1996.
DOI : 10.1109/LICS.1996.561320

T. R. Alur, F. Y. Henzinger, S. Mang, S. K. Qadeer, S. Rajamani et al., Modularity in model checking, Proceedings of the 10th International Computer Aided Verification Conference, pp.521-525, 1998.

L. [. Abadi and . Lamport, The existence of refinement mappings, Theoretical Computer Science, vol.82, issue.2, pp.253-284, 1991.
DOI : 10.1016/0304-3975(91)90224-P

L. [. Abadi and . Lamport, Composing specifications, ACM Transactions on Programming Languages and Systems, vol.15, issue.1, pp.73-132, 1993.
DOI : 10.1145/151646.151649

URL : http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.33.1637

L. [. Abadi and . Lamport, Conjoining specifications, ACM Transactions on Programming Languages and Systems, vol.17, issue.3, pp.507-534, 1995.
DOI : 10.1145/203095.201069

URL : http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.33.4928

W. [. Ashcroft and . Wadge, Lucid, a nonprocedural language with iteration, Communications of the ACM, vol.20, issue.7, pp.519-526, 1977.
DOI : 10.1145/359636.359715

]. J. Bac78 and . Backus, Can programming be liberated from the von neumann style?, Communications of the ACM, vol.8, pp.613-641, 1978.

R. [. Brand, L. Bergamaschi, and . Sotk, Don't cares in synthesis: theoretical pitfalls and practical solutions, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol.17, issue.4, 1995.
DOI : 10.1109/43.703819

D. Bartetzko, C. Fischer, M. Moller, and H. Wehrheim, Jass ? Java with assertions, Electronic Notes in Theoretical Computer Science, vol.55, issue.2, p.15, 2004.

G. [. Berry and . Gonthier, The Esterel synchronous programming language: design, semantics, implementation, Science of Computer Programming, vol.19, issue.2, pp.87-152, 1992.
DOI : 10.1016/0167-6423(92)90005-V

URL : https://hal.archives-ouvertes.fr/inria-00075711

]. R. Bir88 and . Bird, Lectures on constructive functional programming, Constructive Methods in Computer Science NATO ASI Series, pp.151-216, 1988.

D. [. Bergamaschi, A. Lobo, and . Kuehlmann, Control optimization in high-level synthesis using behavioral don't cares, [1992] Proceedings 29th ACM/IEEE Design Automation Conference, pp.657-661, 1992.
DOI : 10.1109/DAC.1992.227804

J. [. Basu and . Misra, Proving loop programs, IEEE Transactions on Software Engineering, vol.1, issue.1, pp.76-86, 1975.
DOI : 10.1109/TSE.1975.6312822

]. F. Bou89 and . Boussinot, A reactive extension of C, Inria, Institut National de Recherche en Informatique et en Automatique, 1989.

]. F. Bou01 and . Boussinot, Java fair threads, Inria, Institut National de Recherche en Informatique et en Automatique, 2001.

]. M. Bro98 and . Broy, A functional rephrasing of the assumption/commitment specification style. Formal Methods in System Design, An International Journal, vol.13, issue.1, pp.87-119, 1998.

J. [. Boussinot and . Susini, The sugarcubes tool box, Inria, Institut National de Recherche en Informatique et en Automatique, 1997.
URL : https://hal.archives-ouvertes.fr/inria-00073442

R. [. Cousot and . Cousot, Abstract interpretation: A unified lattice model for static analysis of programs by construction of approximation of fixed points, Proceedings of the 4th ACM Symposium on Principles of Programming Languages, pp.238-252, 1977.

E. [. Clarke, S. Emerson, A. P. Jha, and . Sistla, Symmetry reductions in model checking, Proceedings of the 10th International Computer Aided Verification Conference, pp.145-458, 1998.
DOI : 10.1007/BFb0028741

S. [. Clarke, R. Jha, T. Enders, and . Filkorn, Exploiting symmetry in temporal logic model checking. Formal Methods in System Design, An International Journal, vol.9, issue.12, pp.77-104, 1996.

P. Caspi and M. Pouzet, Synchronous kahn networks, ICFP '96: Proceedings of the first ACM SIGPLAN international conference on Functional programming, pp.226-238, 1996.
DOI : 10.1145/232627.232651

URL : http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.15.9168

L. De-alfaro and T. A. Henzinger, Interface automata, Proceedings of the Joint 8th European Software Engeneering Conference and 9th ACM SIGSOFT Symposium on the Foundation of Software Engeneering (ESEC/FSE-01), SOFTWARE ENGINEERING NOTES, pp.109-120, 2001.

L. De-alfaro and T. A. Henzinger, Interface Theories for Component-Based Design, Lecture Notes in Computer Science, vol.2211, pp.148-165, 2001.
DOI : 10.1007/3-540-45449-7_11

. [. Dumas-canovas, Méthodes Déductives Pour la Preuve de Programmes Lustre, 2000.

J. [. Distefano, A. Katoen, and . Rensink, On a Temporal Logic for Object-Based Systems, Formal Methods for Open Object-Based Distributed Systems IV -Proc. FMOODS'2000, 2000.
DOI : 10.1093/logcom/5.5.603

G. [. Damiani and . Micheli, Don't care set specifications in combinational and synchronous logic circuits, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol.12, issue.3, pp.365-388, 1993.
DOI : 10.1109/43.215001

P. [. Dezan and . Quinton, Verification of regular architectures using ALPHA: a case study, 1994.
URL : https://hal.archives-ouvertes.fr/inria-00074388

A. [. Emerson and . Sistla, Symmetry and model checking, Proceedings of the 5th International Computer Aided Verification Conference, pp.463-478, 1993.
DOI : 10.1007/bf00625970

URL : http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.53.3352

M. [. Findler and . Felleisen, Behavioral interface contracts for Java, 2000.

M. [. Findler and . Felleisen, Contracts for higher-order functions, ACM SIGPLAN Notices, vol.37, issue.9, pp.48-59, 2002.
DOI : 10.1145/583852.581484

URL : http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.4081

M. [. Findler, M. Latendresse, and . Felleisen, Object-oriented programming languages need well-founded contracts, 2001.

]. N. Fuc92 and . Fuchs, Specifications are (preferably) executable, Software Engineering Journal, vol.7, issue.5, pp.323-334, 1992.

]. F. Gau03 and . Gaucher, Etude du Débogage de Systèmes Réactifs et Application au Langage Synchrone Lustre, 2003.

[. Guernic and A. Benveniste, The synchronous language signal, Proceedings from the Second Workshop on Large-Grained Parallelism, pp.56-57, 1987.
URL : https://hal.archives-ouvertes.fr/hal-00544128

E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns, 1995.

D. [. Grumberg and . Long, Model checking and modular verification, ACM Transactions on Programming Languages and Systems, vol.16, issue.3, pp.843-871, 1994.
DOI : 10.1145/177492.177725

URL : http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.6959

. A. Glp93, J. Gill, S. L. Launchbury, . Peyton, and . Jones, A short cut to deforestation, 1993.

]. N. Hal93a and . Halbwachs, Synchronous Programming of Reactive Systems, 1993.

]. N. Hal93b and . Halbwachs, A tutorial of lustre, 1993.

]. C. Hay89, I. J. Jones, and . Hayes, Specifications are not (necessarily) executable, Software Engineering Journal, pp.330-338, 1989.

S. [. Halbwachs and . Baghdadi, Synchronous modeling of asynchronous systems, EMSOFT'02, 2002.

G. Hendriks, K. Behrmann, P. Larsen, F. Niebert, and . Vaandrager, Adding Symmetry Reduction to Uppaal, 2004.
DOI : 10.1007/978-3-540-40903-8_5

URL : http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.10.2104

P. [. Halbwachs, P. Caspi, D. Raymond, and . Pilaud, The synchronous data flow programming language LUSTRE, Proceedings of the IEEE, vol.79, issue.9, pp.1305-1320, 1991.
DOI : 10.1109/5.97300

A. [. Huber, L. O. Jensen, K. Jepsen, and . Jensen, Towards reachability trees for high-level petri nets. Lecture Notes in Computer Science: Advances in Petri Nets, pp.215-233, 1984.

F. [. Halbwachs, P. Lagnier, and . Raymond, Synchronous Observers and the Verification of Reactive Systems, Third Int. Conf. on Algebraic Methodology and Software Technology, AMAST'93 Workshops in Computing, 1993.
DOI : 10.1007/978-1-4471-3227-1_8

. Hmm-+-03-]-n, F. Halbwachs, D. Maraninchi, C. Merchat, R. K. Parent et al., A casestudy with the luste programming environment: a fault-tolerant data acquisition system, and Tata Institute of Fundamental Research Mubai, 2003.

]. C. Hoa69 and . Hoare, An Axiomatic Basis of Computer Programming, Communications of the ACM, vol.12, pp.576-580, 1969.

]. C. Hoa85 and . Hoare, Communicating Sequential Processes, 1985.

]. L. Hol00 and . Holenderski, Compositional verification of synchronous networks, FTRTFTS: Formal Techniques in Real-Time and Fault-Tolerant Systems: International Symposium Organized Jointly with the Working Group Provably Correct Systems ? ProCoS. LNCS, 2000.

A. [. Harel and . Pnueli, On the Development of Reactive Systems, pp.477-498, 1985.
DOI : 10.1007/978-3-642-82453-1_17

S. [. Henzinger and S. K. Rajamani, You assume, we guarantee: Methodology and case studies, Computer Aided Verification, pp.440-451, 1998.
DOI : 10.1007/BFb0028765

URL : http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.110.7757

]. C. Id93a, D. L. Ip, and . Dill, Better verification through symmetry, Proceedings of the 11th International Conference on Computer Hardware Description Languages and their Applications (CHDL'93), pp.97-112, 1993.

]. C. Id93b, D. L. Ip, and . Dill, Efficient verification of symmetric concurrent systems, Proceedings of the IEEE International Conference on Computer Design: VLSI in Computers and Processors, pp.230-234, 1993.

D. [. Ip and . Dill, Verifying systems with replicated components in mur??, Lecture Notes in Computer Science, vol.1102, pp.147-158, 1996.
DOI : 10.1007/3-540-61474-5_65

]. B. Jea00 and . Jeannet, Partitionnement Dynamique Dans l'Analyse de Relations Linéaires et Application à la Vérification de Programmes Synchrones, 2000.

M. Jourdan, F. Lagnier, F. Maraninchi, and P. Raymond, A multiparadigm language for reactive systems, Proceedings of 1994 IEEE International Conference on Computer Languages (ICCL'94), 1994.
DOI : 10.1109/ICCL.1994.288379

URL : http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.43.2700

K. [. Jensen, A. Larsen, and . Skou, Scaling up uppaal automatic verification of realtime systems using compositionality and abstraction, FTRTFTS: Formal Techniques in Real-Time and Fault-Tolerant Systems: International Symposium Organized Jointly with the Working Group Provably Correct Systems ? ProCoS. LNCS, 2000.

[. Jezequel, M. Train, and M. Mingins, Design Patterns and Contracts, 1999.

[. Johann, E. Visserkah74-]-g, M. Kahn, U. Karaorman, J. Hølzle et al., The semantics of a simple language for parallel programming Information Processing '74: Proceedings of the IFIP Congress jContractor: A reflective Java library to support design by contract Verification of a multiplier: 64 bits and beyond iContract?the Java Designs by Contract tool Combinatorial Optimization: Networks and Matroids JML: A notation for detailed design Compositional model checking of real time systems Retiming synchronous circuitry ALGRTHMICA: Algorithmica , 6 Warm fusion: Deriving build-catas from recursive definitions Morin-Allory. Vérification Formelle dans le Modèle Polyédrique A compositional rule for hardware design refinement, Stratego: A case study in generation of program transformation systems Proceedings of the 5th International Computer Aided Verification Conference Proceedings of Technology of Object-Oriented Languages and Systems, TOOLS 26 Proceedings of the Seventh International Conference on Functional Programming Languages and Computer Architecture (FPCA'95)Mau89] C. Mauras. Alpha, un langage équationnel pour la conception et la programmation d'architectures parallèles synchrones Proofs of networks of processes Proc. 9th International Computer Aided Verification ConferenceMcM99] K. L. McMillan. Verification of infinite state systems by compositional model checking. In Conference on Correct Hardware Design and Verification MethodsMcM00] K. L. McMillan. A methodology for hardware verification using compositional model checking. Science of Computer ProgrammingMcM01] K. L. McMillan. Parameterized verification of the FLASH cache coherence protocol by compositional model checking. Lecture Notes in Computer Science, pp.471-475175, 1974.

]. B. Mey92 and . Meyer, Applying " design by contract, Computer, vol.25, issue.10, pp.40-51, 1992.

F. [. Maraninchi and . Gaucher, Step-wise + algorithmic debugging for reactive programs: Ludic, a debugger for Lustre, AADEBUG'2000 ? Fourth International Workshop on Automated Debugging, 2000.

R. [. Manku, R. Hojati, and . Brayton, Structural symmetry and model checking, Lecture Notes in Computer Science, vol.1427, pp.159-172, 1998.
DOI : 10.1007/BFb0028742

]. J. Mik02 and . Mikac, Un raffinement pour le langage Lustre, 2002.

]. F. Mm04a, L. Maraninchi, and . Morel, Arrays and contracts for the specification and analysis of regular systems, Fourth International Conference on Application of Concurrency to System Design (ACSD), 2004.

F. Maraninchi and L. Morel, Logical-time contracts for reactive embedded components, Proceedings. 30th Euromicro Conference, 2004., 2004.
DOI : 10.1109/EURMIC.2004.1333355

URL : https://hal.archives-ouvertes.fr/hal-00293125

]. L. Mor02 and . Morel, Efficient compilation of array iterators for lustre, Electronic Notes in Theoretical Computer Science, 2002.

M. [. Mandel and . Pouzet, Reactiveml, a reactive extension to ml
URL : https://hal.archives-ouvertes.fr/hal-01489747

Y. [. Maraninchi and . Rémond, Argos: an automaton-based synchronous language, Computer Languages, vol.27, issue.1-3, pp.61-92, 2001.
DOI : 10.1016/S0096-0551(01)00016-9

URL : https://hal.archives-ouvertes.fr/hal-00273055

Y. [. Maraninchi and . Rémond, Mode-Automata: a new domain-specific construct for the development of safe critical systems, Science of Computer Programming, vol.46, issue.3, pp.1381219-254, 2003.
DOI : 10.1016/S0167-6423(02)00093-X

]. S. Muc00 and . Muchnick, Advanced Compiler Design and Implementation, 2000.

[. Sansonnet, O. Michel, and D. D. Vito, Data-parallelism and data-flow, 1992.

J. [. Owre, N. Rushby, and . Shankar, PVS: A prototype verification system, 11th International Conference on Automated Deduction (CADE), pp.748-752, 1992.
DOI : 10.1007/3-540-55602-8_217

]. A. Pnu84 and . Pnueli, In transition from global to modular temporal reasoning about programs, Logics and Model of Concurrent Systems, pp.123-144, 1984.

]. C. Rat92, Définition et Réalisation d'un Outil de Vérification Formelle de Programmes Lustre : le Système Lesar, 1992.

]. P. Ray91 and . Raymond, Compilation Efficace d'un Langage Déclaratif Synchrone : le Générateur de Code Lustre-V3, 1991.

K. [. Jhala and . Mcmillan, Microarchitecture Verification by Compositional Model Checking, Lecture Notes in Computer Science, vol.2102, pp.396-410, 2001.
DOI : 10.1007/3-540-44585-4_40

URL : http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.93.1710

]. F. Roc92 and . Rocheteau, Extension du Langage Lustre et Application à la Conception de Circuits: Le Langage Lustre-V4 et le Système Pollux, 1992.

P. Raymond, D. Weber, X. Nicollin, and N. Halbwachs, Automatic testing of reactive systems, Proceedings 19th IEEE Real-Time Systems Symposium (Cat. No.98CB36279), 1998.
DOI : 10.1109/REAL.1998.739746

]. N. Sha98 and . Shankar, Lazy compositional verification, Lecture Notes in Computer Science, vol.1536, pp.541-564, 1998.

]. E. Sta85 and . Stark, A proof technique for rely/guarantee properties, Foundations of Software Technology and Theoretical Computer Science : proceedings of the 5th conference of Lecture notes in computer science, pp.369-391, 1985.

]. K. Stø96 and . Stølen, Assumption/commitment rules for dataflow networks?with an emphasis on completeness, 6th European Symposium on Programming?ESOP'96, pp.356-372, 1996.

]. M. Var02 and . Vareille, Extension du concept de programmation par contrats aux système synchrones réactifse à travers le langage synchrone lustre, 2002.

]. W. Wa85a, E. Wadge, and . Ashcroft, Lucid, the Dataflow Programming Language, 1985.

]. W. Wa85b, E. A. Wadge, and . Ashcroft, Lucid, the Data Flow Programming Language, 1985.

]. P. Wad84 and . Wadler, Listlessness is better than laziness, Conference Record of the 1984 ACM Symposium on Lisp and Functional Programming, pp.45-52, 1984.

]. P. Wad85 and . Wadler, Listlessness is better than laziness II: Composing listless functions, In Lecture Notes in Computer Science, vol.217, 1985.

]. P. Wad90 and . Wadler, Deforestation: transforming programs to eliminate trees, Theoretical Computer Science, vol.73, pp.231-248

]. R. Wat91 and . Waters, Automatic transformation of series expressions into loops, ACM Transactions on Programming Languages and Systems, vol.13, issue.1, pp.52-98, 1991.

[. Wang and R. K. Brayton, Input don't care sequences in FSM networks, Proceedings of 1993 International Conference on Computer Aided Design (ICCAD), pp.321-329, 1993.
DOI : 10.1109/ICCAD.1993.580076

[. Wang and R. K. Brayton, Permissible observability relations in FSM networks, Proceedings of the 31st annual conference on Design automation conference , DAC '94, pp.677-683, 1994.
DOI : 10.1145/196244.196613