In this paper we extend, by allowing rank 2 intersection types, the type assignment system for the detection and elimination of dead code in typed functional programs presented by Coppo et al Giannini and the rst author in the Static Analysis Symposium '96. The main application of this method is the optimization of programs extracted from proofs in logical frameworks, but it could be used as well in the elimination of dead code determined by program specialization. This system rely on annotated types which allow to exploit the type structure of the language for the investigation of program properties. The detection of dead code is obtained via annotated type inference, which c a n b e performed in a complete way, b y reducing it to the solution of a system of inequalities between annotation variables. Even though the language considered in the paper is the simply typed -calculus with cartesian product, if-then-else, xpoint, and arithmetic constants we can generalize our approach to polymorphic languages like Miranda, Haskell, and CAML.Keywords: Intersection Types, Dead-Code Analysis, Annotated Types R esum e Dans ce papier nous etendons, en permettant des types intersections de rang 2, un syst eme d'inf erence de types pour la d etection et l' elimination du code mort dans les programmes fonctionnels typ es pr esent e par Coppo et al dans le Static Analysis Symposium '96. La principale application de cette m ethode est l'optimisation de programmes extraits de preuves, mais il peut aussi bien etre utilis e pour l' elimination du code mort produit par la sp ecialisation de programmes. Ce syst eme repose sur des types annot es qui permettent d'exploiter la structure des types du langage pour trouver des propri et es sur un programme. La d etection du code mort est obtenue via un syst eme d'inf erence de types. L'inf erence peutêtre r ealis e e n r eduisant le probl eme a la solution d'un syst eme d'in egalit es entre les variables d'annotations. Bien que le langage consid er e soit le -calcul simplement t yp e etendu par le produit cart esien, le if-then-else, le point xe et des constantes arithm etiques, nous pouvons g en eraliser notre approche aux langages polymorphes tels que Miranda, Haskell et CAML. Abstract. In this paper we extend, by a l l o wing rank 2 intersection types, the type assignment system for the detection and elimination of dead code in typed functional programs presented by Coppo et al in the Static Analysis Symposium '96. The main application of this method is the optimization of programs extracted from proofs in logical frameworks, but it could be used as well in the elimination of dead code determined by program specialization. This system rely on annotated types which allow to exploit the type structure of the language for the investigation of program properties. The detection of dead code is obtained via annotated type inference, which can be performed in a complete way, b y reducing it to the solution of a system of inequalities between annotation variables. Even though the langu...