(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).