The paper starts with the observation that in ALGOL 60 no specifications for formal procedure parameters are prescribed, whereas ALGOL 68 demands complete specifications. As a consequence, no ALGOL 68 program accepted by the compiler can have wrong parameter transmissions at run time whereas ALGOL 60 programs may have them. The property of ALGOL 60 programs to have only correct parameter transmissions obviously is undecidable if all data, conditional statements, etc. have to be taken into consideration (Theorem 1) and it is unfair to demand that the compiler should decide that property by a finite process. Therefore, we investigate this question of decidability under a much fairer condition, namely without taking into consideration any data or conditions and by giving all procedure calls occurring in the same block equal rights (Section IV, p. 123). Even this fairer problem turns out to be algorithmically unsolvable, in general (Theorem 5), but it is solvable as soon as the programs do not have global formal procedure parameters (Theorem 3). Analogous answers can be given to the problems of formal equivalence of programs and of formal reachability, formal recursivity, and strong formal recursivity of procedures (Theorems 8---11). Procedures which are not strongly formally recursive have great importance in compilation techniques as is shown in Section X.
Read full abstract