Papers
Topics
Authors
Recent
Gemini 2.5 Flash
Gemini 2.5 Flash
153 tokens/sec
GPT-4o
7 tokens/sec
Gemini 2.5 Pro Pro
45 tokens/sec
o3 Pro
4 tokens/sec
GPT-4.1 Pro
38 tokens/sec
DeepSeek R1 via Azure Pro
28 tokens/sec
2000 character limit reached

Simple Reference Immutability for System F-sub (2307.04960v1)

Published 11 Jul 2023 in cs.PL

Abstract: Reference immutability is a type based technique for taming mutation that has long been studied in the context of object-oriented languages, like Java. Recently, though, languages like Scala have blurred the lines between functional programming languages and object oriented programming languages. We explore how reference immutability interacts with features commonly found in these hybrid languages, in particular with higher-order functions -- polymorphism -- and subtyping. We construct a calculus System F-sub-M which encodes a reference immutability system as a simple extension of F-sub and prove that it satisfies the standard soundness and immutability safety properties.

Definition Search Book Streamline Icon: https://streamlinehq.com
References (19)
  1. The essence of dependent object types. A List of Successes That Can Change the World: Essays Dedicated to Philip Wadler on the Occasion of His 60th Birthday (2016), 249–272.
  2. Engineering Formal Metatheory. In Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (San Francisco, California, USA) (POPL ’08). Association for Computing Machinery, New York, NY, USA, 3–15. https://doi.org/10.1145/1328438.1328443
  3. Origins of the D Programming Language. Proc. ACM Program. Lang. 4, HOPL, Article 73 (jun 2020), 38 pages. https://doi.org/10.1145/3386323
  4. An Extension of System F with Subtyping. In Theoretical Aspects of Computer Software, International Conference TACS ’91, Sendai, Japan, September 24-27, 1991, Proceedings (Lecture Notes in Computer Science, Vol. 526), Takayasu Ito and Albert R. Meyer (Eds.). Springer, 750–770. https://doi.org/10.1007/3-540-54415-1_73
  5. Generic Universe Types. In ECOOP 2007 – Object-Oriented Programming, Erik Ernst (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 28–53.
  6. Views: Compositional Reasoning for Concurrent Programs. SIGPLAN Not. 48, 1 (jan 2013), 287–300. https://doi.org/10.1145/2480359.2429104
  7. Vlastimil Dort and Ondřej Lhoták. 2020. Reference Mutability for DOT. In 34th European Conference on Object-Oriented Programming (ECOOP 2020) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 166), Robert Hirschfeld and Tobias Pape (Eds.). Schloss Dagstuhl–Leibniz-Zentrum für Informatik, Dagstuhl, Germany, 18:1–18:28. https://doi.org/10.4230/LIPIcs.ECOOP.2020.18
  8. Mattias Felleisen and D. P. Friedman. 1987. A Calculus for Assignments in Higher-Order Languages. In Proceedings of the 14th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (Munich, West Germany) (POPL ’87). Association for Computing Machinery, New York, NY, USA, 314. https://doi.org/10.1145/41625.41654
  9. A Theory of Type Qualifiers. In Proceedings of the ACM SIGPLAN 1999 Conference on Programming Language Design and Implementation (Atlanta, Georgia, USA) (PLDI ’99). Association for Computing Machinery, New York, NY, USA, 192–203. https://doi.org/10.1145/301618.301665
  10. Uniqueness and Reference Immutability for Safe Parallelism. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (Tucson, Arizona, USA) (OOPSLA ’12). Association for Computing Machinery, New York, NY, USA, 21–40. https://doi.org/10.1145/2384616.2384619
  11. Philipp Haller and Ludvig Axelsson. 2017. Quantifying and Explaining Immutability in Scala. Electronic Proceedings in Theoretical Computer Science 246 (apr 2017), 21–27. https://doi.org/10.4204/eptcs.246.5
  12. ReIm and ReImInfer: Checking and Inference of Reference Immutability and Method Purity. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (Tucson, Arizona, USA) (OOPSLA ’12). Association for Computing Machinery, New York, NY, USA, 879–896. https://doi.org/10.1145/2384616.2384680
  13. Featherweight Java: A Minimal Core Calculus for Java and GJ. ACM Trans. Program. Lang. Syst. 23, 3 (may 2001), 396–450. https://doi.org/10.1145/503502.503505
  14. Fabian Muehlboeck and Ross Tate. 2018. Empowering Union and Intersection Types with Integrated Subtyping. Proc. ACM Program. Lang. 2, OOPSLA, Article 112 (oct 2018), 29 pages. https://doi.org/10.1145/3276482
  15. John C. Reynolds. 1997. Design of the Programming Language Forsythe. Birkhäuser Boston, Boston, MA, 173–233. https://doi.org/10.1007/978-1-4612-4118-8_9
  16. Chaperones and Impersonators: Run-Time Support for Reasonable Interposition. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (Tucson, Arizona, USA) (OOPSLA ’12). Association for Computing Machinery, New York, NY, USA, 943–962. https://doi.org/10.1145/2384616.2384685
  17. Bjarne Stroustrup. 2007. The C++ programming language - special edition (3. ed.). Addison-Wesley.
  18. Matthew S. Tschantz and Michael D. Ernst. 2005. Javari: Adding Reference Immutability to Java. SIGPLAN Not. 40, 10 (oct 2005), 211–230. https://doi.org/10.1145/1103845.1094828
  19. Object and Reference Immutability Using Java Generics. In Proceedings of the the 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on The Foundations of Software Engineering (Dubrovnik, Croatia) (ESEC-FSE ’07). Association for Computing Machinery, New York, NY, USA, 75–84. https://doi.org/10.1145/1287624.1287637
Citations (1)

Summary

We haven't generated a summary for this paper yet.