Abstract
We extend Meyer and Ritchie's Loop language with higher-order procedures and procedural variables and we show that the resulting programming language (called Loopω) is a natural imperative counterpart of Gödel System T. The argument is two-fold:
(1) we define a translation of the Loopω language into System T and we prove that this translation actually provides a lock-step simulation,
(2) using a converse translation, we show that Loopω is expressive enough to encode any term of System T.
Moreover, we define the “iteration rank” of a Loopω program, which corresponds to the classical notion of “recursion rank” in System T, and we show that both translations preserve ranks. Two applications of these results in the area of implicit complexity are described.
- Appel, A. W. 1998. Modern Compiler Implementation in ML. Cambridge University Press, Cambridge, UK. Google ScholarDigital Library
- Avigad, J. and Feferman, S. 1998. Gödel's functional (“dialectica”) interpretation. In Handbook of Proof Theory, S. R. Buss, Ed. Elsevier Science Publishers, 337--405.Google Scholar
- Beckmann, A. and Weiermann, A. 2000. Characterizing the elementary recursive functions by a fragment of Gödel's T. Archive Math. Logic 39, 475--491.Google ScholarCross Ref
- Calude, C. 1988. Theories of Computational Complexity. Elsevier Science Inc. Google ScholarDigital Library
- Colson, L. 1991. About primitive recursive algorithms. Theor. Comput. Sci. 83, 57--69. Google ScholarDigital Library
- Colson, L. and Fredholm, D. 1998. System T, call-by-value and the minimum problem. Theor. Comput. Sci. 206, 1-2, 301--315. Google ScholarDigital Library
- Crolard, T., Lacas, S., and Valarcher, P. 2006. On the expressive power of the loop language. Nordic J. Comput. 13, 1-2, 46--57. Google ScholarDigital Library
- Davis, M. and Weyuker, E. 1983. Computability, Complexity and Languages. Academic Press. Google ScholarDigital Library
- DOD. 1980. The Programming Language Ada. Reference Manual. Springer.Google Scholar
- Donahue, J. E. 1977. Locations considered unnecessary. Acta Inf. 8, 221--242.Google ScholarDigital Library
- Felleisen, M. and Friedman, D. P. 1987. A calculus for assignments in higher-order languages. In Proceedings of the 14th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (POPL '87). ACM Press, New York, 314. Google ScholarDigital Library
- Filinski, A. 1994. Representing monads. In Conference Record of the 21st Annual Symposium on Principles of Programming Languages. 446--457. Google ScholarDigital Library
- Filliâtre, J.-C. 2003. Verification of non-functional programs using interpretations in type theory. J. Funct. Program. 13, 4, 709--745. Google ScholarDigital Library
- Filliâtre, J.-C. and Marché, C. 2004. Multi-prover verification of C programs. In Proceedings of the Formal Methods and Software Engineering, 6th International Conference on Formal Engineering Methods, (ICFEM'04). Lecture Notes in Computer Science, vol. 3308. Springer-Verlag, 15--29.Google Scholar
- Gellerich, W. and Plödereder, E. 2001. Parameter-induced aliasing in ada. In Proceedings of the 6th Ade-Europe International Conference. D. Craeynest and A. Strohmeier, Eds. Lecture Notes in Computer Science, vol. 2043. Springer, 88--99. Google ScholarDigital Library
- Gifford, D. and Lucassen, J. 1986. Integrating functional and imperative programming. In Proceedings of the ACM Symposium on Principles of Programming Languages. Google ScholarDigital Library
- Girard, J.-Y., Lafont, Y., and Taylor, P. 1989. Proofs and Types. Vol. 7. Cambridge Tracts in Theoretical Computer Science. Google ScholarDigital Library
- Gödel, K. 1958. Über eine bisher noch nicht benützteerweiterung des finiten standpunktes. Dialectica 12, 280--287.Google ScholarCross Ref
- Gödel, K. 1990. Collected Works vol. 2. Oxford University Press, Oxford, UK.Google Scholar
- Hatcliff, J. and Danvy, O. 1997. Thunks and the lambda-calculus. J. Funct. Program. 7, 3, 303--319. Google ScholarDigital Library
- ISO. 2003. C# language specification ISO/IEC 23270. Google ScholarDigital Library
- Jones, N. D. 1997. Computability and Complexity from a Programming Perspective. The MIT Press. Google ScholarDigital Library
- Kahn, G. 1987. Natural semantics. In Proceedings of the Symposium on Theoretical Aspects of Computer Science (STACS). Lecture Notes in Computer Science, vol. 247. Springer-Verlag, 22--39. Google ScholarDigital Library
- Kelsey, R., Clinger, W., and Rees, J. 1998. Revised5 report on the algorithmic language Scheme. Higher-Order Symbol. Comput. 11, 1, 7--105. Google ScholarDigital Library
- Kreisel, G. 1951. On the interpretation of non-finitist proofs—part I. J. Symb. Log 16, 4, 241--267.Google Scholar
- Landin, P. J. 1964. The mechanical evaluation of expressions. Comput. J. 6, 308--320.Google ScholarCross Ref
- McCarthy, J. 1960. Recursive functions of symbolic expressions and their computation by machine, part I. Comm. ACM 3, 4, 184--195. Google ScholarDigital Library
- Meyer, A. R. and Ritchie, D. M. 1976. The complexity of loop programs. In Proceedings of the ACM Natural Meeting.Google Scholar
- Milner, R., Tofte, M., Harper, R., and MacQueen, D. 1997. The Definition of Standard ML. Rev. Ed. MIT Press. Google ScholarDigital Library
- Moggi, E. 1991. Notions of computation and monads. Inform. Comput. 93, 1, 55--92. Google ScholarDigital Library
- O'Hearn, P. W. and Tennent, R. D., Eds. 1997. Algol-Like Languages. Birkhaüser. Google ScholarDigital Library
- Peter, R. 1968. Recursive Functions. Academic Press.Google Scholar
- Plotkin, G. 1981. A structural approach to operational semantics. Tech. rep. DAIMI FN-19, Aarhus University.Google Scholar
- Reynolds, J. C. 1978. Syntactic control of interference. In Proceedings of the Annual Symposium on Principles of Programming Languages (POPL). 39--46. Google ScholarDigital Library
- Reynolds, J. C. 1981. The essence of Algol. In Algorithmic Languages, de Bakker and van Vliet, Eds. IFIP, North-Holland, Amsterdam, 345--372.Google Scholar
- Reynolds, J. C. 1998. Theories of Programming Languages. Cambridge University Press. Google ScholarDigital Library
- Schmidt, D. A. 1994. The Structure of Typed Programming Languages. The MIT Press. Google ScholarDigital Library
- Schütte, K. 1967. Proof Theory. Addison Wesley.Google Scholar
- Stoy, J. 1977. Denotational Semantics of Programming Languages: The Scott-Strachey Approach to Programming Language Theory. The MIT Press. Google ScholarDigital Library
- Talpin, J.-P. and Jouvelot, P. 1994. The type and effect discipline. Inform. Computat. 111, 2, 245--296. Google ScholarDigital Library
- Turner, D. A. 2004. Total functional programming. J. Unin. Comput. Sci. 10, 7, 751--768.Google Scholar
- Wadler, P. 1990. Comprehending monads. In Proceedings of the ACM Conference on Lisp and Functional Programming. 61--78. Google ScholarDigital Library
- Wadler, P. 1998. The marriage of effects and monads. In Proceedings of the International Conference on Functional Programming. ACM, Baltimore, 63--74. Google ScholarDigital Library
Index Terms
- Extending the loop language with higher-order procedural variables
Recommendations
Small bisimulations for reasoning about higher-order imperative programs
Proceedings of the 2006 POPL ConferenceWe introduce a new notion of bisimulation for showing contextual equivalence of expressions in an untyped lambda-calculus with an explicit store, and in which all expressed values, including higher-order values, are storable. Our notion of bisimulation ...
Higher-order abstract syntax in classical higher-order logic
LFMTP '09: Proceedings of the Fourth International Workshop on Logical Frameworks and Meta-Languages: Theory and PracticeHigher-Order Abstract Syntax, or HOAS, is a technique for using a higher-order logic as a metalanguage for an object language with binding operators. It avoids formalizing syntactic details related to variable binding. This paper gives an extension to ...
Comments