  We present a two-level theory to formalize constructive mathematics as
advocated in a previous paper with G. Sambin. One level is given by an
intensional type theory, called Minimal type theory. This theory extends the
set-theoretic version introduced in the mentioned paper with collections. The
other level is given by an extensional set theory which is interpreted in the
first one by means of a quotient model. This two-level theory has two main
features: it is minimal among the most relevant foundations for constructive
mathematics; it is constructive thanks to the way the extensional level is
linked to the intensional one which fulfills the "proofs-as-programs" paradigm
and acts as a programming language.
