Computability of Recursive Functions
Journal of the ACM (JACM)
Properties of Programs and the First-Order Predicate Calculus
Journal of the ACM (JACM)
STOC '71 Proceedings of the third annual ACM symposium on Theory of computing
Computation: finite and infinite machines
Computation: finite and infinite machines
FOCS '65 Proceedings of the 6th Annual Symposium on Switching Circuit Theory and Logical Design (SWCT 1965)
Translating recursion equations into flow charts
Journal of Computer and System Sciences
On formalised computer programs
Journal of Computer and System Sciences
Hi-index | 0.00 |
The study of program schemata and the study of subrecursive programming languages are both concerned with limiting program structure in order to permit a more complete analysis of algorithms while retaining sufficiently rich computing power to allow interesting algorithms. In this paper we combine these approaches by defining classes of subrecursive program schemata and investigating their equivalence problems. Since the languages are all subrecursive, any scheme written in any one of them must halt (as long as we assume the basic functions and predicates are all total). Hence equivalence of schemes is the first question of interest we can ask about these languages. We consider schematic versions of various subrecursive programming languages similar to the Loop language. We distinguish between Pre-Loop and Post-Loop languages on the basis of whether the exit condition in an iteration loop is tested before iteration, an in Algol (Pre-), or after iteration, as in FORTRAN (Post-). We slow that at the program level all these languages have the same computing power (the primitive recursive functions) and all have unsolvable equivalence problems (of arithmetic degree II"1^0). But at the level of schemes, Pre-Loop has an unsolvable equivalence problem, while at least one formulation of Post-Loop has a solvable equivalence problem. If L is a programming language or scheme language, the we denote by E(L) the equivalence problem in L. The basic languages considered are: Loop (=Pre-Loop) Loop language for primitive recursive functions Post-Loop Post-Loop language for primitive recursive functions Loop"@? Loop language with restricted conditionals L[D,()] Loop schemata over D with identity L"@?[D,()] Loop schemata with conditionals PL[D,()] Post-Loop schemata over D PL"@?[D,()] Post-Loop schemata with conditionals P Program (flowchart) schemata P"d Program schemata with DO-statements In contrast to (pure) Loop schemata studied previously by the first author, some of these schemata languages contain the identity function so that a pure data transfer, X