Advertisement

Formalization of the Undecidability of the Halting Problem for a Functional Language

  • Thiago Mendonça Ferreira Ramos
  • César Muñoz
  • Mauricio Ayala-Rincón
  • Mariano Moscato
  • Aaron Dutle
  • Anthony Narkawicz
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10944)

Abstract

This paper presents a formalization of the proof of the undecidability of the halting problem for a functional programming language. The computational model consists of a simple first-order functional language called PVS0 whose operational semantics is specified in the Prototype Verification System (PVS). The formalization is part of a termination analysis library in PVS that includes the specification and equivalence proofs of several notions of termination. The proof of the undecidability of the halting problem required classical constructions such as mappings between naturals and PVS0 programs and inputs. These constructs are used to disprove the existence of a PVS0 program that decides termination of other programs, which gives rise to a contradiction.

References

  1. 1.
    Arts, T.: Termination by absence of infinite chains of dependency pairs. In: Kirchner, H. (ed.) CAAP 1996. LNCS, vol. 1059, pp. 196–210. Springer, Heidelberg (1996).  https://doi.org/10.1007/3-540-61064-2_38CrossRefGoogle Scholar
  2. 2.
    Arts, T., Giesl, J.: Termination of term rewriting using dependency pairs. Theor. Comput. Sci. 236(1–2), 133–178 (2000)MathSciNetCrossRefGoogle Scholar
  3. 3.
    Avelar, A.B.: Formalização da automação da terminação através de grafos com matrizes de medida. Ph.D. thesis, Universidade de Brasília, Departamento de Matemática, Brasília, Distrito Federal, Brasil (2015). In PortugueseGoogle Scholar
  4. 4.
    Forster, Y., Smolka, G.: Weak call-by-value lambda calculus as a model of computation in Coq. In: Ayala-Rincón, M., Muñoz, C.A. (eds.) ITP 2017. LNCS, vol. 10499, pp. 189–206. Springer, Cham (2017).  https://doi.org/10.1007/978-3-319-66107-0_13CrossRefGoogle Scholar
  5. 5.
    Krauss, A., Sternagel, C., Thiemann, R., Fuhs, C., Giesl, J.: Termination of Isabelle functions via termination of rewriting. In: van Eekelen, M., Geuvers, H., Schmaltz, J., Wiedijk, F. (eds.) ITP 2011. LNCS, vol. 6898, pp. 152–167. Springer, Heidelberg (2011).  https://doi.org/10.1007/978-3-642-22863-6_13CrossRefGoogle Scholar
  6. 6.
    Larchey-Wendling, D.: Typing total recursive functions in Coq. In: Ayala-Rincón, M., Muñoz, C.A. (eds.) ITP 2017. LNCS, vol. 10499, pp. 371–388. Springer, Cham (2017).  https://doi.org/10.1007/978-3-319-66107-0_24CrossRefGoogle Scholar
  7. 7.
    Lee, C.S., Jones, N.D., Ben-Amram, A.M.: The size-change principle for program termination. In: Conference Record of POPL 2001: The 28th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 81–92 (2001)Google Scholar
  8. 8.
    Manolios, P., Vroon, D.: Termination analysis with calling context graphs. In: Ball, T., Jones, R.B. (eds.) CAV 2006. LNCS, vol. 4144, pp. 401–414. Springer, Heidelberg (2006).  https://doi.org/10.1007/11817963_36CrossRefGoogle Scholar
  9. 9.
    Norrish, M.: Mechanised computability theory. In: van Eekelen, M., Geuvers, H., Schmaltz, J., Wiedijk, F. (eds.) ITP 2011. LNCS, vol. 6898, pp. 297–311. Springer, Heidelberg (2011).  https://doi.org/10.1007/978-3-642-22863-6_22CrossRefGoogle Scholar
  10. 10.
    Owre, S., Rushby, J.M., Shankar, N.: PVS: a prototype verification system. In: Kapur, D. (ed.) CADE 1992. LNCS, vol. 607, pp. 748–752. Springer, Heidelberg (1992).  https://doi.org/10.1007/3-540-55602-8_217CrossRefGoogle Scholar
  11. 11.
    Thiemann, R., Giesl, J.: Size-change termination for term rewriting. In: Nieuwenhuis, R. (ed.) RTA 2003. LNCS, vol. 2706, pp. 264–278. Springer, Heidelberg (2003).  https://doi.org/10.1007/3-540-44881-0_19CrossRefzbMATHGoogle Scholar
  12. 12.
    Turing, A.M.: On computable numbers, with an application to the Entscheidungsproblem. Proc. London Math. Soc. 42(1), 230–265 (1937)MathSciNetCrossRefGoogle Scholar
  13. 13.
    Turing, A.M.: Checking a large routine. In: Campbell-Kelly, M. (ed.) The Early British Computer Conferences, pp. 70–72. MIT Press, Cambridge (1989)Google Scholar
  14. 14.
    Xu, J., Zhang, X., Urban, C.: Mechanising Turing machines and computability theory in Isabelle/HOL. In: Blazy, S., Paulin-Mohring, C., Pichardie, D. (eds.) ITP 2013. LNCS, vol. 7998, pp. 147–162. Springer, Heidelberg (2013).  https://doi.org/10.1007/978-3-642-39634-2_13CrossRefGoogle Scholar
  15. 15.
    Yamada, A., Sternagel, C., Thiemann, R., Kusakari, K.: AC dependency pairs revisited. In: Proceedings 25th EACSL Annual Conference on Computer Science Logic, CSL 2016, LIPIcs, vol. 62, pp. 8:1–8:16. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik (2016)Google Scholar

Copyright information

© Springer-Verlag GmbH Germany, part of Springer Nature 2018

Authors and Affiliations

  1. 1.University of BrasíliaBrasíliaBrazil
  2. 2.NASA Langley Research CenterHamptonUSA
  3. 3.National Institute of AerospaceHamptonUSA

Personalised recommendations