This paper surveys a number of requirements for the adequate formulation of deductions such as program derivations. The kernel of a possible framework for such formulations is proposed. It is described in terms of a naive semantics and of corresponding algebras; deductions are composed from basic deduction-rules, and typing is defined as an endomorphism on deductions. Approaches based on typed h-calculi, including the Deva language, are compared with the proposed one, and a few general issues are discussed.
Expression of Program DerivationsFirst, we sum up requirements for the expression of program derivations. These requirements stem from experiments in the formalization of program deductions and of programming methods. Accordingly, the initial driving force has been programming rather than logic or algebra; this may explain differences in basic options. Yet, logic and algebra played a growing part in the subsequent technical elaboration, and the resulting approach appears to be also relevant for proofs.
Deductions of ProgramsGiven the Curry-Howard isomorphism between types and formulae [5] (w it is mathematically legitimate to derive programs by extracting recursive functions from constructive proofs. This characterizes one specific method of program design. Our aim is to express also other mathematical methods of program construction, such as refinements and transformations.As a consequence, we relate programs to deductions as follows. Problem specifications and the corresponding programs are all viewed as formulae at the same level of discourse. The derivations yielding programs from specifications are then considered to be deductions of formulae from formulae.