G. , E. , M. Out_exit, E. , M. G. Sp et al., n) k = k i si n = n i k df l sinon G, sp ? (switch(a){. . . case n i : exit(k i ) . . . default : exit(k df l ))

?. Soit, Var clos), (n + 1

. Stockage-des-racines, La liaison locale dans l'ensemble des racines à un emplacement n de Fminor devient une écriture à l'emplacement addrstack[(2 + n) × 4] (les deux premiers mot ayant l'usage décrit juste au-dessus). Enfin, la propriété de bon bornement (voir la section 6.5.2) des termes Fminor construits par compilation

=. Afin-d-'expliquer-notre-encodage-du-filtrage-en-cminor and . From, nous commençons par raisonner comme si nous disposions d'une instruction switch à la C. Depuis la numérotation des constructeurs (voir la section 2.4.4), les constructeurs sont représentés par des entiers Un constructeur appliqué devient en Cminor un bloc de tas, tel que décrit sur la figure 7.1.1. La construction d'un constructeur produit un pointeur to = "malloc"(hsize) : int -> int ; if (from == 0 || to == 0) return -1 ; int32, pp.32-32

M. Abadi, L. Cardelli, P. Curien, and J. Lévy, Abstract, Journal of Functional Programming, vol.34, issue.04, pp.375-416, 1991.
DOI : 10.1016/0304-3975(86)90035-6

A. W. Appel, Compiling with continuations, 1992.
DOI : 10.1017/CBO9780511609619

A. W. Appel and S. Blazy, Separation Logic for Small-Step cminor, Theorem Proving in Higher Order Logics, 20th Int. Conf. TPHOLs, pp.5-21, 2007.
DOI : 10.1007/978-3-540-74591-4_3

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

A. W. Appel and T. Jim, Continuation-passing, closure-passing style, Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages , POPL '89, pp.293-302, 1989.
DOI : 10.1145/75277.75303

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

A. W. Appel and D. A. Mcallester, An indexed model of recursive types for foundational proof-carrying code, ACM Transactions on Programming Languages and Systems, vol.23, issue.5, pp.657-683, 2001.
DOI : 10.1145/504709.504712

L. Augustsson, Compiling pattern matching, Functional Programming Languages and Computer Architecture, pp.368-381, 1985.
DOI : 10.1007/3-540-15975-4_48

B. E. Aydemir, A. Bohannon, M. Fairbairn, J. N. Foster, B. C. Pierce et al., Mechanized Metatheory for the Masses: The PoplMark Challenge, Int. Conf. on Theorem Proving in Higher Order Logics (TPHOLs), volume 3603 of Lecture Notes in Computer Science, pp.50-65, 2005.
DOI : 10.1007/11541868_4

H. P. Barendregt, The Lambda Calculus ? Its Syntax and Semantics, of Studies in Logic and the Foundations of Mathematics, 1984.

J. M. Bell, F. Bellegarde, and J. Hook, Type-Driven Defunctionalization, International Conference on Functional Programming, pp.25-37, 1997.
DOI : 10.1145/258948.258953

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

Y. Bertot and P. Castéran, Interactive Theorem Proving and Program Development ? Coq'Art : The Calculus of Inductive Constructions, EATCS Texts in Theoretical Computer Science, 2004.
URL : https://hal.archives-ouvertes.fr/hal-00344237

S. Blazy, Z. Dargaye, and X. Leroy, Formal Verification of a C Compiler Front-End, FM 2006 : Int. Symp. on Formal Methods, pp.460-475, 2006.
DOI : 10.1007/11813040_31

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

S. Blazy and X. Leroy, Mechanized Semantics for the Clight Subset of the C Language, Journal of Automated Reasoning, vol.29, issue.6, 2009.
DOI : 10.1007/s10817-009-9148-3

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

H. Boehm, Simple garbage-collector-safety, Programming Language Design and Implementation, pp.89-98, 1996.
DOI : 10.1145/249069.231394

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

H. Boehm and M. Weiser, Garbage collection in an uncooperative environment, Software: Practice and Experience, vol.20, issue.9, pp.807-820, 1988.
DOI : 10.1002/spe.4380180902

L. Cardelli, The functional abstract machine, Polymorphism Newsletter, vol.1, issue.1, 1983.

F. Cardone and J. R. Hindley, History of Lambda-calculus and Combinatory Logic, Handbook of the History of Logic, 2006.

A. Chlipala, A certified type-preserving compiler from lambda calculus to assembly language, Programming Language Design and Implementation, pp.54-65, 2007.
DOI : 10.1145/1273442.1250742

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

A. Church, A formulation of the simple theory of types, The Journal of Symbolic Logic, vol.1, issue.02, pp.56-68, 1940.
DOI : 10.2307/2371199

G. E. Collins, A method for overlapping and erasure of lists, Communications of the ACM, vol.3, issue.12, pp.655-657, 1960.
DOI : 10.1145/367487.367501

T. Coquand and G. Huet, The calculus of constructions, Information and Computation, vol.76, issue.2-3, pp.95-120, 1988.
DOI : 10.1016/0890-5401(88)90005-3

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

T. Coquand and C. Paulin-mohrind, Inductively defined types, Proceedings of International Conference on Computer Logic, 1990.
DOI : 10.1007/3-540-52335-9_47

G. Cousineau, P. Curien, and M. Mauny, The categorical abstract machine, Science of Computer Programming, vol.8, issue.2, pp.173-202, 1987.
DOI : 10.1016/0167-6423(87)90020-7

H. B. Curry and R. Feys, Combinatory Logic, volume I, 1958.

L. Damas and R. Milner, Principal type-schemes for functional programs, Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages , POPL '82, pp.207-212, 1982.
DOI : 10.1145/582153.582176

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

O. Danvy and L. R. Nielsen, Defunctionalization at work, International Conference on Principles and Practice of Declarative Programming, pp.162-174, 2001.

O. Danvy and L. R. Nielsen, A first-order one-pass CPS transformation, Theoretical Computer Science, vol.308, issue.1-3, pp.239-257, 2003.
DOI : 10.1016/S0304-3975(02)00733-8

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

Z. Dargaye, Décurryfication certifiée, Journées Francophones des Langages Applicatifs (JFLA'07), pp.119-133, 2007.

Z. Dargaye and X. Leroy, Mechanized Verification of CPS Transformations, Logic for Programming 14th Int. Conf. LPAR 2007, pp.211-225, 2007.
DOI : 10.1007/978-3-540-75560-9_17

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

M. A. Dave, Compiler verification, ACM SIGSOFT Software Engineering Notes, vol.28, issue.6, pp.2-2, 2003.
DOI : 10.1145/966221.966235

N. G. De-bruijn, Lambda-calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem, Indag. Math, vol.34, issue.5, pp.381-392, 1972.

A. Dold and V. Vialard, A Mechanically Verified Compiling Specification for a Lisp Compiler, Proc. FST TCS 2001, pp.144-155, 2001.
DOI : 10.1007/3-540-45294-X_13

D. Doligez, Conception, réalisation et certification d'un glaneur de cellules concurrent, Thèse de doctorat, 1995.

C. Dubois, Proving ML Type Soundness Within Coq, Theorem Proving in Higher Order Logics, 20th Int. Conf. TPHOLs, pp.126-144, 2000.
DOI : 10.1007/3-540-44659-1_9

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

C. Dubois and V. Ménissier-morain, Certification of a Type Inference Tool for ML : Damas-Milner within Coq, Journal of Automated Reasoning, vol.23, pp.3-4319, 1999.

M. Felleisen and D. P. Friedman, Control operators, the SECD machine and the ?calculus, Formal Description of Programming Concepts III, pp.131-141, 1986.

R. R. Fenichel and J. C. Yochelson, A LISP garbage-collector for virtual-memory computer systems, Communications of the ACM, vol.12, issue.11, pp.611-612, 1969.
DOI : 10.1145/363269.363280

J. Filliâtre and C. Marché, The Why/Krakatoa/Caduceus Platform for Deductive Program Verification, International Conference on Computer aided Verification CAV, pp.173-177, 2007.
DOI : 10.1007/978-3-540-73368-3_21

A. Fischbach and J. Hannan, Specification and Correctness of Lambda Lifting, Journal of Functional Programming, vol.13, issue.3, pp.509-543, 2003.
DOI : 10.1007/3-540-45350-4_10

C. Flanagan, A. Sabry, B. Duba, and M. Felleisen, The essence of compiling with continuations, Programming Language Design and Implementation 1993, pp.237-247, 1993.

S. Glondu, Extraction certifiée dans Coq-en-Coq, Journées Francophones des Langages Applicatifs (JFLA'09). INRIA, 2009.

A. Goldberg and D. Robson, Smalltalk-80 : the language and its implementation, 1983.

A. D. Gordon, A mechanisation of name-carrying syntax up to alpha-conversion. In Higher-order logic theorem proving and its applications 1993, Lecture Notes in Computer Science, vol.780, pp.414-426, 1994.

M. Gordon, From LCF to HOL : a short history, Proof, Language, and Interaction, pp.169-186, 2000.

B. Grégoire, Compilation des termes de preuves : un (nouveau) mariage entre Coq et OCaml, Thèse de doctorat, 2003.

J. Hannan and P. Hicks, Higher-order arity raising, International Conference on Functional Programming, pp.27-38, 1998.
DOI : 10.1145/289423.289426

J. Hannan and P. Hicks, Higher-order unCurrying, Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages , POPL '98, pp.1-11, 1998.
DOI : 10.1145/268946.268947

J. Hannan and F. Pfenning, Compiler verification in LF, [1992] Proceedings of the Seventh Annual IEEE Symposium on Logic in Computer Science, pp.407-418, 1992.
DOI : 10.1109/LICS.1992.185552

T. Hardin, L. Maranget, and B. Pagano, Functional runtime systems within the lambda-sigma calculus, Journal of Functional Programming, vol.8, issue.2, pp.131-176, 1998.
DOI : 10.1017/S0956796898002986

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

F. Henderson, Accurate garbage collection in an uncooperative environment, The Workshop on Memory Systems Performance (MSP 2002) and The International Symposium on Memory Management, pp.256-263, 2002.

W. A. Howard, The formulae-as-types notion of construction, pp.480-490, 1980.

G. Huet, Formal Structures for Computation and Deduction. Course Notes, page 184 pages, 1986.

T. Johnsson, Lambda lifting: Transforming programs to recursive equations, Functional Programming Languages and Computer Architecture, pp.190-203, 1985.
DOI : 10.1007/3-540-15975-4_37

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

S. L. Jones and S. Marlow, Secrets of the Glasgow Haskell Compiler inliner, Journal of Functional Programming, vol.12, issue.4&5, pp.393-433, 2002.

S. P. Jones, Haskell 98 Language and Libraries : The Revised Report, 2003.

G. Kahn, Natural semantics, STACS 87, 4th Annual Symposium on Theoretical Aspects of Computer Science, pp.22-39, 1987.
DOI : 10.1007/BFb0039592

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

R. Kelsey, W. Clinger, and J. Rees, The revised 5 report on the algorithmic language Scheme, SIGPLAN Notices, vol.33, issue.9, pp.26-76, 1998.

A. Kennedy, Compiling with continuations, continued, International Conference on Functional Programming, 2007.

B. W. Kernighan and D. M. Ritchie, The C programming language, 1988.

D. Kranz, N. Adams, R. Kelsey, J. Rees, P. Hudak et al., Orbit, SIGPLAN '86 symposium on Compiler Construction, pp.219-233, 1986.
DOI : 10.1145/989393.989414

P. J. Landin, The Mechanical Evaluation of Expressions, The Computer Journal, vol.6, issue.4, pp.308-320, 1964.
DOI : 10.1093/comjnl/6.4.308

X. Leroy, The ZINC experiment : an economical implementation of the ML language, 1990.
URL : https://hal.archives-ouvertes.fr/inria-00070049

X. Leroy, Typage polymorphe d'un langage algorithmique, Thèse de doctorat, 1992.
URL : https://hal.archives-ouvertes.fr/tel-01499951

X. Leroy, Le système Caml Special Light : modules et compilation efficace en Caml, Actes des Journées Francophones des Langages Applicatifs, pp.111-131, 1996.

X. Leroy, A modular module system, Journal of Functional Programming, vol.10, issue.3, pp.269-303, 2000.
DOI : 10.1017/S0956796800003683

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

X. Leroy, Formal certification of a compiler back-end, or : programming a compiler with a proof assistant, 33rd symposium Principles of Programming Languages, pp.42-54, 2006.
URL : https://hal.archives-ouvertes.fr/inria-00000963

X. Leroy, The Compcert verified compiler, commented Coq development Disponible à http ://gallium.inria.fr/~xleroy, 2007.

X. Leroy, A Formally Verified Compiler Back-end, Journal of Automated Reasoning, vol.27, issue.1, 2008.
DOI : 10.1007/s10817-009-9155-4

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

X. Leroy and S. Blazy, Formal Verification of a C-like Memory Model and Its Uses for Verifying Program Transformations, Journal of Automated Reasoning, vol.17, issue.5???6, pp.1-31, 2008.
DOI : 10.1007/s10817-008-9099-0

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

X. Leroy and D. Doligez, The Caml Light system, release 0.74. Logiciel et documentation disponibles sur le Web, 1997.

X. Leroy, D. Doligez, J. Garrigue, and J. Vouillon, The Objective Caml system. Logiciel et documentation disponibles à http, 1996.

P. Letouzey, A New Extraction for Coq, Lecture Notes in Computer Science, vol.2646, pp.200-219, 2002.
DOI : 10.1007/3-540-39185-1_12

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

P. Letouzey, Programmation fonctionnelle certifiée ? L'extraction de programmes dans l'assistant Coq, Thèse de doctorat, 2004.

L. Maranget, Compiling pattern matching to good decision trees, Proceedings of the 2008 ACM SIGPLAN workshop on ML, ML '08, pp.35-46, 2008.
DOI : 10.1145/1411304.1411311

S. Marlow and S. P. Jones, Making a fast curry : push/enter vs. eval/apply for higher-order languages, Journal of Functional Programming, vol.16, pp.4-5375, 2006.
DOI : 10.1145/1016850.1016856

J. Mc-carthy and J. A. Painter, Correctness of a compiler for arithmetical expressions, Symp. in Applied Mathematics, pp.33-41, 1967.

C. Mcbride and J. Mckinna, I am not a number ; I am a free variable, Proc. 2004 Haskell Workshop, pp.1-9, 2004.

J. Mccarthy, Recursive functions symbolic expressions and their computation by machine, Part I, Communications of the ACM, vol.3, issue.4, pp.184-195, 1960.
DOI : 10.1145/367177.367199

A. Mccreight, Z. Shao, C. Lin, and L. Li, A general framework for certifying garbage collectors and their mutators, Programming Language Design and Implementation, pp.468-479, 2007.

R. Milner, A calculus for the mathematical theory of computation, International Sympoisum on Theoretical Programming, pp.332-343, 1972.
DOI : 10.1007/3-540-06720-5_21

R. Milner, A theory of type polymorphism in programming, Journal of Computer and System Sciences, vol.17, issue.3, pp.348-375, 1978.
DOI : 10.1016/0022-0000(78)90014-4

R. Milner, M. Tofte, R. Harper, and D. Macqueen, The definition of Standard ML (revised), 1997.

Y. Minamide, G. Morrisett, and R. Harper, Typed closure conversion, Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages , POPL '96, pp.271-283, 1996.
DOI : 10.1145/237721.237791

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

Y. Minamide and K. Okuma, Verifying CPS transformations in Isabelle/HOL, Proceedings of the 2003 workshop on Mechanized reasoning about languages with variable binding , MERLIN '03, pp.1-8, 2003.
DOI : 10.1145/976571.976576

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

W. Naraschewski and T. Nipkow, Type inference verified: Algorithm W in Isabelle/HOL, Types for Proofs and Programs, Workshop TYPES, pp.317-332, 1996.
DOI : 10.1007/BFb0097799

G. C. Necula, Proof-carrying code, Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages , POPL '97, pp.106-119, 1997.
DOI : 10.1145/263699.263712

G. C. Necula, Translation validation for an optimizing compiler, Programming Language Design and Implementation, pp.83-95, 2000.
DOI : 10.1145/358438.349314

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

F. Nielson, H. R. Nielson, and C. Hankin, Principles of program analysis, 1999.
DOI : 10.1007/978-3-662-03811-6

C. Paulin-mohring, Extraction de programmes dans le Calcul des Constructions, Thèse, université Paris 7, 1989.
URL : https://hal.archives-ouvertes.fr/tel-00431825

S. L. Peyton and -. , The implementation of functional programming languages, 1987.

S. L. Peyton-jones, N. Ramsey, and F. Reig, C-???: A Portable Assembly Language that Supports Garbage Collection, PPDP'99 : International Conference on Principles and Practice of Declarative Programming, pp.1-28, 1999.
DOI : 10.1007/10704567_1

F. Pfenning and C. Elliott, Higher-order abstract syntax, Programming Language Design and Implementation, pp.199-208, 1988.

G. D. Plotkin, Call-by-name, call-by-value and the ??-calculus, Theoretical Computer Science, vol.1, issue.2, pp.125-159, 1975.
DOI : 10.1016/0304-3975(75)90017-1

G. D. Plotkin, A structural approach to operational semantics, Journal of Logic and Algebraic Programming, pp.60-6117, 2004.

A. Pnueli, M. Siegel, and E. Singerman, Translation validation, TACAS '98, pp.151-166, 1998.
DOI : 10.1007/BFb0054170

T. Ramananandro, Vérification formelle d'une implémentation d'un gestionnaire de mémoire pour un compilateur certifié, 2007.

N. Ramsey and S. L. Jones, A single intermediate language that supports multiple implementations of exceptions, Programming Language Design and Implementation, pp.285-298, 2000.

D. Rémy and J. Vouillon, Objective ML, Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages , POPL '97, pp.40-53, 1997.
DOI : 10.1145/263699.263707

D. Rémy and J. Vouillon, Objective ML, Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages , POPL '97, pp.27-50, 1998.
DOI : 10.1145/263699.263707

J. Reynolds, Definitional interpreters for higher-order programming languages, Proceedings of the ACM annual conference on , ACM '72, pp.717-740, 1972.
DOI : 10.1145/800194.805852

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

D. S. Scott, C. , and O. Theor, A Type-Theoretical Alternative to ISWIM, Comput. Sci, vol.121, issue.1&2, pp.411-440, 1993.

M. Serrano, Inline expansion: When and how?, International Symposium on Programming Languages, Implementations, Logics, and Programs, pp.143-157, 1997.
DOI : 10.1007/BFb0033842

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

O. Shivers, Control-flow analysis in Scheme, Programming Language Design and Implementation 1988, pp.164-174, 1988.

O. Shivers, Control-Flow Analysis of Higher-Order Languages, 1991.

J. Signoles, Calcul statique des applications de modules paramétrés, Journées françaises des langages applicatifs, JFLA, pp.21-36, 2003.

G. L. Steele, Rabbit : a compiler for Scheme, 1978.

G. J. Sussman and G. L. Jr, Scheme : a Interpreter for Extended Lambda Calculus. Higher-Order and Symbolic Computation, pp.405-439, 1998.

Y. H. Tian, Mechanically Verifying Correctness of CPS Compilation, CATS '06 : Proceedings of the 12th Computing : The Australasian Theory Symposium, pp.41-51, 2006.

M. Tofte, L. Birkedal, M. Elsman, and N. Hallenberg, A retrospective on region-based memory management. Higher-Order and Symbolic Computation, pp.245-265, 2004.

M. Tofte and J. Talpin, Region-Based Memory Management, Information and Computation, vol.132, issue.2, pp.109-176, 1997.
DOI : 10.1006/inco.1996.2613

C. Urban, Nominal Techniques in Isabelle/HOL, Journal of Automated Reasoning, vol.323, issue.1???2, pp.327-356, 2008.
DOI : 10.1007/s10817-008-9097-2

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

C. P. Wadsworth, Semantics and pragmatics of the lambda-calculus, Thèse de doctorat, 1971.

M. Wand and P. Steckler, Selective and lightweight closure conversion, Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages , POPL '94, pp.435-445, 1994.
DOI : 10.1145/174675.178044

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

S. Weeks, Whole-program compilation in MLton, Proceedings of the 2006 workshop on ML , ML '06, p.1, 2006.
DOI : 10.1145/1159876.1159877

P. R. Wilson, Uniprocessor garbage collection techniques, International Workshop on Memory Management, pp.1-42, 1992.
DOI : 10.1007/BFb0017182

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

A. K. Wright and R. Cartwright, A practical soft type system for scheme, ACM Transactions on Programming Languages and Systems, vol.19, issue.1, pp.87-152, 1997.
DOI : 10.1145/239912.239917

A. K. Wright and M. Felleisen, A Syntactic Approach to Type Soundness, Information and Computation, vol.115, issue.1, pp.38-94, 1994.
DOI : 10.1006/inco.1994.1093