| We may also
think to put everything together. We may imagine a system where we have
simple types, high order types, type constructors and dependent types. This
system, which is denoted by LC, is known as Calculus of Constructions. It
is the basis of the formal system Coq that will be presented later in this
We have seen in this lecture that functional programming has very deep mathematical logic foundations. These are the foundations that make reasoning about functional programming so easy and so powerful.