"Constructive Type theory has been a topic of research interest to computer
scientists, mathematicians, logicians and philosophers for a number of years.
For computer scientists it provides a framework which brings together logic
and programming languages in a most elegant and fertile way: program
development and verification can proceed within a single system. Viewed
in a different way, type theory is a functional programming language with
some novel features, such as the totality of all its functions, its expressive
type system allowing functions whose result type depends upon the value
of its input, and sophisticated modules and abstract types whose interfaces
can contain logical assertions as well as signature information. A third
point of view emphasizes that programs (or functions) can be extracted
from proofs in the logic."