Journal of Information Processing
Online ISSN : 1882-6652
ISSN-L : 1882-6652
 
Refinement Types for Call-by-name Programs
Ryosuke Sato
著者情報
ジャーナル フリー

2023 年 31 巻 p. 708-721

詳細
抄録

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.

著者関連情報
© 2023 by the Information Processing Society of Japan
前の記事 次の記事
feedback
Top