(Taken from the introduction) (...) The aim of the research presented in this thesis is develop to type assignment systems with intersection types for the Lambda Calculus and for Term Rewriting Systems, in order to investigate and understand their structure and properties and to see whether the definition of a type-checker for a functional programming language with intersection types is feasible. (...) There is a great number of notions of type assignment presented in this thesis (fifteen in total), (...) In chapters one through three a short overview of various type disciplines will be given. It starts with the presentation of the Curry Type Assignment System in chapter one. Chapter two will contain the development of the Intersection Type Discipline, by presenting the several systems that were published in the past. In section 2.1 the Coppo-Dezani System will be discussed, and in section 2.2 three Coppo-Dezani-Venneri Systems. In section 2.3 the Barendregt-Coppo-Dezani System will be discussed. In chapter three a short overview of the Milner Type Assignment System will be given -- that will be compared to the Rank~2 Intersection Type Assignment System in chapter eight -- and the Mycroft Type Assignment System. In chapters four through eight intersection type disciplines for the Lambda Calculus will be studied. In chapter four the Strict Type Assignment System will be presented, a restriction of the BCD-system that satisfies all major properties of that full system, for which in chapter six will be proved that the principal type property holds. In chapter five the Essential Intersection Type Assignment System will be defined, a slight generalization of the strict one and also a restriction of the BCD-system. The intersection type assignment system without the type constant will be presented in chapter seven. It will be shown that all three restrictions yield undecidable systems. (...) In chapter eight the Rank~2 Intersection Type Assignment System will be defined, (...). It will be shown that in this system type assignment is decidable and that it has the principal type property. In chapters nine through twelve intersection type disciplines will be studied for Applicative Term Rewriting Systems, that will be defined in chapter nine. In chapter ten a formal notion of type assignment will be presented that uses strict intersection types. Chapters eleven and twelve will be presented in such a way that they can be read independently from the other chapters in this thesis, although it is advisable to study chapter eight before reading chapter twelve. Those chapters aim to present type assignment systems that can be used in functional programming languages, so not only will be shown that the presented systems have the principal type property, but also will be shown that type assignment is decidable in those systems by presenting (terminating) unification algorithms that should be implemented when such a system is used. In chapter eleven a formal notion of type assignment on left linear Applicative Term Rewriting Systems will be presented that uses Curry types, and the way of dealing with recursion of the extension defined by Mycroft of Curry's system. This chapter aims to give formal motivation for the type system of Miranda, and to provide a formal type system for all languages that use pattern matching and have type systems based on Mycroft's extension of Curry's system. In chapter twelve a type assignment system for Applicative Term Rewriting Systems will be defined that uses intersection types of Rank~2. The Rank~2 system is very close to the Milner Type Assignment System, as discussed in chapter eight, so should show the advantages of intersection types over Curry types (or ML types).