The design of a programming system is guided by certain beliefs, principles, and practical constraints. These considerations are not always manifest from the rules defining the system. In this paper, the author discusses some of the principles which have guided the design of the programming logics built at Cornell in the last decade. Most of the necessarily brief discussion concerns type theory with stress on the concepts of function space and quotient types.
Key Words and Phrases: automated logic, combinators, Edinburgh LCF, partial recursive functions, programming languages and logics, PL/CV, PRL, propositions-as-types, quotient types, strong intensionality, type theory.