In the last decade, outstanding progress in type theory has been achieved and sophisticated type-theoretic computer-aided proof assistants such as LEGO have been developed. The maturity of the LEGO system and its underlying expressive unifying theory of dependent types suggests that it is now feasible to apply the available tools to the problem of non-trivial formal program development. Often, it is insufficient to validate the correctness of a complex software system by relying merely on test data. Delivering the program together with a formal proof of its correctness with respect to some specification guarantees a correct program whereas tests can only reduce errors.
Examples will be the driving force of this research. Focussing on imperative programming languages, the proposed research investigates type theory as a foundation for formal program development. Using the LEGO system, a framework for dealing with modularity and object orientation will be established.