Abstract
We propose a general proof technique to show that a predicate is sound, that is, prevents stuck computation, with respect to a big-step semantics. This result may look surprising, since in big-step semantics there is no difference between non-terminating and stuck computations, hence soundness cannot even be expressed. The key idea is to define constructions yielding an extended version of a given arbitrary big-step semantics, where the difference is made explicit. The extended semantics are exploited in the meta-theory, notably they are necessary to show that the proof technique works. However, they remain transparent when using the proof technique, since it consists in checking three conditions on the original rules only, as we illustrate by several examples.
Chapter PDF
Similar content being viewed by others
References
Peter Aczel. An introduction to inductive definitions. In Handbook of Mathematical logic, pages 739–782, Amsterdam, 1977. North Holland.
Mads Sig Ager. From natural semantics to abstract machines. In Sandro Etalle, editor, LOPSTR 2014 - 14th International Symposium on Logic Based Program Synthesis and Transformation, volume 3573 of Lecture Notes in Computer Science, pages 245–261, Berlin, 2004. Springer. https://doi.org/10.1007/11506676_16.
Nada Amin and Tiark Rompf. Type soundness proofs with definitional interpreters. In Giuseppe Castagna and Andrew D. Gordon, editors, POPL’17 - ACM Symp. on Principles of Programming Languages, pages 666–679, New York, 2017. ACM Press. https://doi.org/10.1145/3009837.
Nada Amin, Tiark Rompf, and Martin Odersky. Foundations of path-dependent types. In Andrew P. Black and Todd D. Millstein, editors, OOPSLA’14 - ACM International Conference on Object Oriented Programming Systems Languages and Applications, pages 233–249, New York, 2014. ACM Press. https://doi.org/10.1145/2660193.2660216.
Davide Ancona. Soundness of object-oriented languages with coinductive big-step semantics. In James Noble, editor, ECOOP’12 - Object-Oriented Programming, volume 7313 of Lecture Notes in Computer Science, pages 459–483, Berlin, 2012. Springer. https://doi.org/10.1007/978-3-642-31057-7_21.
Davide Ancona. How to prove type soundness of Java-like languages without forgoing big-step semantics. In David J. Pearce, editor, FTfJP’14 - Formal Techniques for Java-like Programs, pages 1:1–1:6, New York, 2014. ACM Press. https://doi.org/10.1145/2635631.2635846.
Davide Ancona, Francesco Dagnino, and Elena Zucca. Generalizing inference systems by coaxioms. In Hongseok Yang, editor, ESOP 2017 - European Symposium on Programming, volume 10201 of Lecture Notes in Computer Science, pages 29–55, Berlin, 2017. Springer. https://doi.org/10.1007/978-3-662-54434-1_2.
Davide Ancona, Francesco Dagnino, and Elena Zucca. Reasoning on divergent computations with coaxioms. PACMPL, 1(OOPSLA):81:1–81:26, 2017. https://doi.org/10.1145/3133905.
Davide Ancona, Francesco Dagnino, and Elena Zucca. Modeling infinite behaviour by corules. In Todd D. Millstein, editor, ECOOP’18 - Object-Oriented Programming, volume 109 of LIPIcs, pages 21:1–21:31, Dagstuhl, 2018. Schloss Dagstuhl - Leibniz-Zentrum für Informatik. https://doi.org/10.4230/LIPIcs.ECOOP.2018.21.
Franco Barbanera, Mariangiola Dezani-Ciancaglini, and Ugo de’Liguoro. Intersection and union types: Syntax and semantics. Information and Computation, 119(2):202–230, 1995. https://doi.org/10.1006/inco.1995.1086.
Hendrik Pieter Barendregt, Wil Dekkers, and Richard Statman. Lambda Calculus with Types. Perspectives in logic. Cambridge University Press, Cambridge, 2013.
Lorenzo Bettini, Viviana Bono, Mariangiola Dezani-Ciancaglini, Paola Giannini, and Betti Venneri. Java & Lambda: a Featherweight story. Logical Methods in Computer Science, 14(3), 2018. https://doi.org/10.23638/LMCS-14(3:17)2018.
Martin Bodin, Thomas Jensen, and Alan Schmitt. Certified abstract interpretation with pretty-big-step semantics. In Xavier Leroy and Alwen Tiu, editors, CPP’15 - Proceedings of the 2015 Conference on Certified Programs and Proofs, pages 29–40, New York, 2015. ACM. https://doi.org/10.1145/2676724.2693174.
James Brotherston. Cyclic proofs for first-order logic with inductive definitions. In Bernhard Beckert, editor, Automated Reasoning with Analytic Tableaux and Related Methods, International Conference, TABLEAUX 2005, volume 3702 of Lecture Notes in Computer Science, pages 78–92. Springer, 2005. https://doi.org/10.1007/11554554_8.
James Brotherston and Alex Simpson. Sequent calculi for induction and infinite descent. Journal of Logic and Computation, 21(6):1177–1216, 2011. https://doi.org/10.1093/logcom/exq052.
Venanzio Capretta. General recursion via coinductive types. Logical Methods in Computer Science, 1(2), 2005. https://doi.org/10.2168/LMCS-1(2:1)2005.
Arthur Charguéraud. Pretty-big-step semantics. In Matthias Felleisen and Philippa Gardner, editors, ESOP 2013 - European Symposium on Programming, volume 7792 of Lecture Notes in Computer Science, pages 41–60, Berlin, 2013. Springer. https://doi.org/10.1007/978-3-642-37036-6_3.
Patrick Cousot and Radhia Cousot. Inductive definitions, semantics and abstract interpretations. In Ravi Sethi, editor, POPL’92 - ACM Symp. on Principles of Programming Languages, pages 83–94, New York, 1992. ACM Press. https://doi.org/10.1145/143165.143184.
Francesco Dagnino. Coaxioms: flexible coinductive definitions by inference systems. Logical Methods in Computer Science, 15(1), 2019. https://doi.org/10.23638/LMCS-15(1:26)2019.
Nils Anders Danielsson. Operational semantics using the partiality monad. In Peter Thiemann and Robby Bruce Findler, editors, ICFP’12 - International Conference on Functional Programming 2012, pages 127–138, New York, 2012. ACM Press. https://doi.org/10.1145/2364527.2364546.
Rocco De Nicola and Matthew Hennessy. Testing equivalences for processes. Theoretical Computer Science, 34(1):83 – 133, 1984. https://doi.org/10.1016/0304-3975(84)90113-0.
Mariangiola Dezani-Ciancaglini, Ugo de’Liguoro, and Adolfo Piperno. A filter model for concurrent lambda-calculus. SIAM Journal of Computing, 27(5):1376–1419, 1998. https://doi.org/10.1137/S0097539794275860.
Mariangiola Dezani-Ciancaglini, Paola Giannini, and Betti Venneri. Intersection types in Java: Back to the future. In Tiziana Margaria, Susanne Graf, and Kim G. Larsen, editors, Models, Mindsets, Meta: The What, the How, and the Why Not? - Essays Dedicated to Bernhard Steffen on the Occasion of His 60th Birthday, volume 11200 of Lecture Notes in Computer Science, pages 68–86. Springer, 2018. https://doi.org/10.1007/978-3-030-22348-9_6.
Erik Ernst, Klaus Ostermann, and William R. Cook. A virtual class calculus. In J. Gregory Morrisett and Simon L. Peyton Jones, editors, POPL’06 - ACM Symp. on Principles of Programming Languages, pages 270–282. ACM, 2006. https://doi.org/10.1145/1111037.1111062.
James Gosling, Bill Joy, Guy L. Steele, Gilad Bracha, and Alex Buckley. The Java Language Specification, Java SE 8 Edition. Addison-Wesley Professional, Boston, 1st edition, 2014.
Grzegorz Grudzinski. A minimal system of disjunctive properties for strictness analysis. In José D. P. Rolim, Andrei Z. Broder, Andrea Corradini, Roberto Gorrieri, Reiko Heckel, Juraj Hromkovic, Ugo Vaccaro, and J. B. Wells, editors, ICALP Workshops, pages 305–322, Waterloo, Ontario, Canada, 2000. Carleton Scientific.
Atsushi Igarashi, Benjamin C. Pierce, and Philip Wadler. Featherweight Java: A minimal core calculus for Java and GJ. ACM Transactions on Programming Languages and Systems, 23(3):396–450, 2001. https://doi.org/10.1145/503502.503505.
Gilles Kahn. Natural semantics. In Franz-Josef Brandenburg, Guy Vidal-Naquet, and Martin Wirsing, editors, STACS’87 - Symposium on Theoretical Aspects of Computer Science, volume 247 of Lecture Notes in Computer Science, pages 22–39, Berlin, 1987. Springer. https://doi.org/10.1007/BFb0039592.
Jaroslaw D. M. Kusmierek and Viviana Bono. Big-step operational semantics revisited. Fundamenta Informaticae, 103(1-4):137–172, 2010. https://doi.org/10.3233/FI-2010-323.
Xavier Leroy and Hervé Grall. Coinductive big-step operational semantics. Information and Computation, 207(2):284–304, 2009. https://doi.org/10.1016/j.ic.2007.12.004.
Robin Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17(3):348–375, 1978. https://doi.org/10.1016/0022-0000(78)90014-4.
Scott Owens, Magnus O. Myreen, Ramana Kumar, and Yong Kiam Tan. Functional big-step semantics. In Peter Thiemann, editor, ESOP 2016 - European Symposium on Programming, volume 9632 of Lecture Notes in Computer Science, pages 589–615, Berlin, 2016. Springer. https://doi.org/10.1007/978-3-662-49498-1_23.
Benjamin C. Pierce. Types and programming languages. MIT Press, Cambridge, Massachusetts, 2002.
Gordon D. Plotkin. A structural approach to operational semantics. Technical report, Aarhus University, 1981.
Gordon D. Plotkin. A structural approach to operational semantics. Journal of Logic and Algebraic Programming, 60-61:17–139, 2004.
Casper Bach Poulsen and Peter D. Mosses. Flag-based big-step semantics. Journal of Logic and Algebraic Methods in Programming, 88:174–190, 2017. https://doi.org/10.1016/j.jlamp.2016.05.001.
John C. Reynolds. Definitional interpreters for higher-order programming languages. Higher-Order and Symbolic Computation, 11(4):363–397, 1998. https://doi.org/10.1023/A:1010027404223.
Jan J. M. M. Rutten. Universal coalgebra: a theory of systems. Theoretical Computer Science, 249(1):3–80, 2000. https://doi.org/10.1016/S0304-3975(00)00056-6.
Jeremy Siek. Type safety in three easy lemmas. 2013. URL: http://siek.blogspot.com/2013/05/type-safety-in-three-easy-lemmas.html.
A. K. Wright and M. Felleisen. A syntactic approach to type soundness. Information and Computation, 115(1):38–94, 1994.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made.
The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
Copyright information
© 2020 The Author(s)
About this paper
Cite this paper
Dagnino, F., Bono, V., Zucca, E., Dezani-Ciancaglini, M. (2020). Soundness Conditions for Big-Step Semantics. In: Müller, P. (eds) Programming Languages and Systems. ESOP 2020. Lecture Notes in Computer Science(), vol 12075. Springer, Cham. https://doi.org/10.1007/978-3-030-44914-8_7
Download citation
DOI: https://doi.org/10.1007/978-3-030-44914-8_7
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-44913-1
Online ISBN: 978-3-030-44914-8
eBook Packages: Computer ScienceComputer Science (R0)