Continuation Passing Transformation and Abstract Interpretation

  • Juarez Muylaert Filho
  • Geoffrey Burn
Conference paper
Part of the Workshops in Computing book series (WORKSHOPS COMP.)


Compiler writers have found that the continuation passing style (cps) translation exposes various code optimisations. We show that the same is true for semantically based program analysis techniques: performing a cps-translation on a program before analysing it may expose more information than can be found by analysing the original program.




Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    S. Abramsky. Abstract interpretation, logical relations and Kan extensions. Journal of Logic and Computation, 1 (1): 5 - 39, 1990.MathSciNetCrossRefGoogle Scholar
  2. [2]
    A. W. Appel. Compiling with Continuations. Cambridge University Press, 1992.Google Scholar
  3. [3]
    A. Bondorf. Improving binding times without explicit CPS-conversion. In Proceedings of the 1992 ACM Conference on LISP and Functional Programming, pages 1-10, San Fransisco, California, 22 - 24 June 1992.Google Scholar
  4. [4]
    G.L. Burn. The abstract interpretation of functional languages. In this volume.Google Scholar
  5. [5]
    G.L. Burn. Lazy Functional Languages: Abstract Interpretation and Compilation. Research Monographs in Parallel and Distributed Computing. Pitman in association with MIT Press, 1991. 238 pp.MATHGoogle Scholar
  6. [6]
    C. Consel and O. Danvy. For a better support of static data flow. In J. Hughes, editor, Proceedings of the Conference on Functional Programming and Computer Architecture,pages 496-519, Cambridge, Massachussets, USA, 26-28 August 1991. Springer-Verlag LNCS523.Google Scholar
  7. [7]
    P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In Proceedings of the Sixth Annual Symposium on Principles of Programming Languages, pages 269 - 282. ACM, January 1979.Google Scholar
  8. [8]
    P. Cousot and R. Cousot. Abstract interpretation and application to logic programs. Journal of Logic Programming, 13 (2-3): 103 - 179, 1992.MathSciNetMATHCrossRefGoogle Scholar
  9. [9]
    P. Cousot and R. Cousot. Comparing the Galois connection and widening/narrowing approaches to abstract interpretation. In M. Bruynooghe and M. Wirsing, editors, Programming Language Implementation and Logic Programming, Proceedings of the Fourth International Symposium, pages 269-295. Springer-Verlag LNCS631, Leuven, Belgium, August 1992.Google Scholar
  10. [10]
    P. Granger. Combinations of semantic analyses. In INRIA, editor, Proceedings of Informatika 88 (French-Soviet Workshop), pages 71 - 88, Nice, February 1988.Google Scholar
  11. [11]
    R. Haper and M. Lillibridge. Polymorphic type assignment and CPS conversion. In O. Danvy and C. Talcott, editors, Proceedings of the ACM SIPLAN Workshop on Continuations CW92,pages 13-22, San Fransisco, USA, 21st June 1992. Stanford University Report number STAN-CS-92-1426.Google Scholar
  12. [12]
    L.S. Hunt and D. Sands. Binding time analysis: A new PERspective. In Proceedings of the Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM 91),pages 154-165, Yale University, USA, 11-19 June 1991. ACM.Google Scholar
  13. [13]
    D.A. Kranz, R. Kelsey, J.A. Rees, P. Hudak, J. Philbin, and N.I. Adams. Orbit: An optimising compiler for scheme. In Proceedings of the SIGPLAN 86 Symposium on Compiler Construction, pages 219 - 233. ACM, June 1986.CrossRefGoogle Scholar
  14. [14]
    A. Meyer and M. Wand. Continuation semantics in the typed lambda-calculus. In Proceedings of Logics of Programs,pages 219-224, Berlin, 1985. Springer-Verlag LNCS 193.Google Scholar
  15. [15]
    C.R. Murthy. Control operators, hierarchies, and pseudo-classical type systems: A-translation at work. In O. Danvy and C. Talcott, editors, Proceedings of the ACM SIPLAN Workshop on Continuations CW92,pages 49-71, San Fransisco, USA, 21st June 1992. Stanford University Report number STAN-CS-92-1426.Google Scholar
  16. [16]
    F. Nielson. A denotational framework for data flow analysis. Acta Informatica, 18: 265287, 1982.Google Scholar
  17. [17]
    F. Nielson. Two-level semantics and abstract interpretation. Theoretical Computer Science, 69: 117 - 242, 1989.MathSciNetCrossRefGoogle Scholar
  18. [18]
    G.D. Plotkin. Lambda definability and logical relations. Technical report, Department of AI, University of Edinburgh, 1973.Google Scholar
  19. [19]
    J.C. Reynolds. On the relation between direct and continuation semantics. In Proceedings of the Second Colloquium on Automata, Languages and Programming,pages 141-156, Saarbrucken, 1974. Springer-Verlag.Google Scholar
  20. [20]
    A. Sabry and M. Felleisen. Reasoning about programs in continuation-passing style. In Proceedings of the 1992 ACM Conference on Lisp and Functional Programming,pages 288-298, San Fransisco, California, 22-24 June 1992. Full version in Rice University Technical Report Rice TR 92-180.Google Scholar
  21. [21]
    G.L. Steele Jr. Rabbit: A compiler for scheme. Technical Report AI Tech. Rep. 474, MIT, Cambridge, Mass., 1978.Google Scholar

Copyright information

© British Computer Society 1993

Authors and Affiliations

  • Juarez Muylaert Filho
    • 1
  • Geoffrey Burn
    • 1
  1. 1.Department of ComputingImperial CollegeLondonUK

Personalised recommendations