Papers
Topics
Authors
Recent
Gemini 2.5 Flash
Gemini 2.5 Flash
125 tokens/sec
GPT-4o
53 tokens/sec
Gemini 2.5 Pro Pro
42 tokens/sec
o3 Pro
4 tokens/sec
GPT-4.1 Pro
47 tokens/sec
DeepSeek R1 via Azure Pro
28 tokens/sec
2000 character limit reached

Explicit Refinement Types (2311.13995v1)

Published 23 Nov 2023 in cs.PL

Abstract: We present {\lambda}ert, a type theory supporting refinement types with explicit proofs. Instead of solving refinement constraints with an SMT solver like DML and Liquid Haskell, our system requires and permits programmers to embed proofs of properties within the program text, letting us support a rich logic of properties including quantifiers and induction. We show that the type system is sound by showing that every refined program erases to a simply-typed program, and by means of a denotational semantics, we show that every erased program has all of the properties demanded by its refined type. All of our proofs are formalised in Lean 4.

Definition Search Book Streamline Icon: https://streamlinehq.com
References (30)
  1. Danel Ahman. 2018. Handling fibred algebraic effects. Proc. ACM Program. Lang. 2, POPL (2018), 7:1–7:29. https://doi.org/10.1145/3158095
  2. Robert Atkey. 2018. The Syntax and Semantics of Quantitative Type Theory. In LICS ’18: 33rd Annual ACM/IEEE Symposium on Logic in Computer Science, July 9–12, 2018, Oxford, United Kingdom. https://doi.org/10.1145/3209108.3209189
  3. Steven Awodey and Andrej Bauer. 2004. Propositions as [types]. Journal of logic and computation 14, 4 (2004), 447–471.
  4. Bruno Barras and Bruno Bernardo. 2008. The implicit calculus of constructions as a programming language with dependent types. In Foundations of Software Science and Computational Structures: 11th International Conference, FOSSACS 2008, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2008, Budapest, Hungary, March 29-April 6, 2008. Proceedings 11. Springer, 365–379.
  5. Ats: A language that combines programming with theorem proving. In Frontiers of Combining Systems: 5th International Workshop, FroCoS 2005, Vienna, Austria, September 19-21, 2005. Proceedings 5. Springer, 310–320.
  6. Nicola Gambino and Peter Aczel. 2006. The generalised type-theoretic interpretation of constructive set theory. The Journal of Symbolic Logic 71, 1 (2006), 67–103. https://doi.org/10.2178/jsl/1140641163
  7. Robert Harper. 1992. Constructing type systems over an operational semantics. Journal of Symbolic Computation 14, 1 (1992), 71–84. https://doi.org/10.1016/0747-7171(92)90026-Z
  8. Ranjit Jhala and Niki Vazou. 2020. Refinement Types: A Tutorial. arXiv e-prints, Article arXiv:2010.07763 (Oct. 2020), arXiv:2010.07763 pages. arXiv:2010.07763 [cs.PL]
  9. Shin-ya Katsumata. 2014. Parametric Effect Monads and Semantics of Effect Systems. In Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (San Diego, California, USA) (POPL ’14). Association for Computing Machinery, New York, NY, USA, 633–645. https://doi.org/10.1145/2535838.2535846
  10. Alexei Kopylov. 2003. Dependent Intersection: A New Way of Defining Records in Type Theory. In 18th IEEE Symposium on Logic in Computer Science (LICS 2003), 22-25 June 2003, Ottawa, Canada, Proceedings. IEEE Computer Society, 86–95. https://doi.org/10.1109/LICS.2003.1210048
  11. Laura Kovács and Andrei Voronkov. 2013. First-Order Theorem Proving and Vampire. In Computer Aided Verification, Natasha Sharygina and Helmut Veith (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 1–35.
  12. Notions of anonymous existence in Martin-Löf type theory. Logical Methods in Computer Science 13, 1 (2017).
  13. Satoshi Kura. 2021. A General Semantic Construction of Dependent Refinement Type Systems, Categorically. In Foundations of Software Science and Computation Structures - 24th International Conference, FOSSACS 2021, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2021, Luxembourg City, Luxembourg, March 27 - April 1, 2021, Proceedings (Lecture Notes in Computer Science, Vol. 12650), Stefan Kiefer and Christine Tasson (Eds.). Springer, 406–426. https://doi.org/10.1007/978-3-030-71995-1_21
  14. Zhaohui Luo. 1990. An extended calculus of constructions. Ph. D. Dissertation. University of Edinburgh.
  15. Paul-André Melliès and Noam Zeilberger. 2015. Functors Are Type Refinement Systems. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Mumbai, India) (POPL ’15). Association for Computing Machinery, New York, NY, USA, 3–16. https://doi.org/10.1145/2676726.2676970
  16. Robin Milner. 1978. A theory of type polymorphism in programming. Journal of computer and system sciences 17, 3 (1978), 348–375.
  17. Alexandre Miquel. 2000. A model for impredicative type systems, universes, intersection types and subtyping. In Proceedings Fifteenth Annual IEEE Symposium on Logic in Computer Science (Cat. No. 99CB36332). IEEE, 18–29.
  18. Eugenio Moggi. 1991. Notions of computation and monads. Information and Computation 93, 1 (1991), 55–92. https://doi.org/10.1016/0890-5401(91)90052-4 Selections from 1989 IEEE Symposium on Logic in Computer Science.
  19. John C. Reynolds. 2003. What do types mean? — From intrinsic to extrinsic semantics. Springer New York, New York, NY, 309–327. https://doi.org/10.1007/978-0-387-21798-7_15
  20. Liquid Types. SIGPLAN Not. 43, 6 (jun 2008), 159–169. https://doi.org/10.1145/1379022.1375602
  21. Vilhelm Sjöberg and Stephanie Weirich. 2015. Programming up to Congruence. SIGPLAN Not. 50, 1 (Jan. 2015), 369–382. https://doi.org/10.1145/2775051.2676974
  22. Jonathan Sterling and Robert Harper. 2021. Logical relations as types: Proof-relevant parametricity for program modules. Journal of the ACM (JACM) 68, 6 (2021), 1–47.
  23. Matúš Tejiščák. 2019. Erasure in Dependently Typed Programming. Ph. D. Dissertation. University of St. Andrews.
  24. The Coq Development Team. 2021. The Coq Proof Assistant. LogiCal Project. https://doi.org/10.5281/zenodo.4501022
  25. Benno van den Berg and Martijn den Besten. 2021. Quadratic type checking for objective type theory. arXiv e-prints, Article arXiv:2102.00905 (Feb. 2021), arXiv:2102.00905 pages. arXiv:2102.00905 [cs.LO]
  26. Niki Vazou and Michael Greenberg. 2022. How to safely use extensionality in Liquid Haskell. In Haskell ’22: 15th ACM SIGPLAN International Haskell Symposium, Ljubljana, Slovenia, September 15 - 16, 2022, Nadia Polikarpova (Ed.). ACM, 13–26. https://doi.org/10.1145/3546189.3549919
  27. Refinement Types for Haskell. SIGPLAN Not. 49, 9 (aug 2014), 269–282. https://doi.org/10.1145/2692915.2628161
  28. Spass Version 2.0. In Automated Deduction—CADE-18, Andrei Voronkov (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 275–279.
  29. On the Unusual Effectiveness of Type-Aware Operator Mutations for Testing SMT Solvers. 4, OOPSLA, Article 193 (nov 2020), 25 pages. https://doi.org/10.1145/3428261
  30. Hongwei Xi and Frank Pfenning. 1998. Eliminating Array Bound Checking through Dependent Types. In Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation (Montreal, Quebec, Canada) (PLDI ’98). Association for Computing Machinery, New York, NY, USA, 249–257. https://doi.org/10.1145/277650.277732

Summary

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