Journal of Information Processing
Online ISSN : 1882-6652
ISSN-L : 1882-6652
 
Refinement Types for Call-by-name Programs
Ryosuke Sato
Author information
JOURNAL FREE ACCESS

2023 Volume 31 Pages 708-721

Details
Abstract

A refinement type system can be used as a basis of a fully automated verification tool of higher-order functional programs. Most of existing refinement type systems are, however, designed for call-by-value programs, which are unsound for call-by-name programs. In this paper, we introduce a refinement type system for a call-by-name functional language. The most important difference between call-by-value and call-by-name for constructing a refinement type system is whether a variable can be treated as a value or not. The soundness of a typical refinement type systems depends on this fact. On the other hand, in a call-by-name program, since a variable is bound to a term, we cannot treat a variable as a value. To overcome this problem, we track when the term bound to a variable will be evaluated. If we found that a variable is already evaluated in some context, we can treat the variable as a value at the context. We also introduce a type inference algorithm and report on a prototype implementation and preliminary experiments.

Content from these authors
© 2023 by the Information Processing Society of Japan
Previous article Next article
feedback
Top