TY - JOUR
T1 - Verifying relational properties of functional programs by first-order refinement
AU - Asada, Kazuyuki
AU - Sato, Ryosuke
AU - Kobayashi, Naoki
N1 - Publisher Copyright:
© 2016 Elsevier B.V.
PY - 2017/4/1
Y1 - 2017/4/1
N2 - Much progress has been made recently on fully automated verification of higher-order functional programs, based on refinement types and higher-order model checking. Most of those verification techniques are, however, based on first-order refinement types, hence unable to verify certain properties of functions (such as the equality of two recursive functions and the monotonicity of a function, which we call relational properties). To relax this limitation, we introduce a restricted form of higher-order refinement types where refinement predicates can refer to functions, and formalize a systematic program transformation to reduce type checking/inference for higher-order refinement types to that for first-order refinement types, so that the latter can be automatically solved by using an existing software model checker. We also prove the soundness of the transformation, and report on implementation and experiments.
AB - Much progress has been made recently on fully automated verification of higher-order functional programs, based on refinement types and higher-order model checking. Most of those verification techniques are, however, based on first-order refinement types, hence unable to verify certain properties of functions (such as the equality of two recursive functions and the monotonicity of a function, which we call relational properties). To relax this limitation, we introduce a restricted form of higher-order refinement types where refinement predicates can refer to functions, and formalize a systematic program transformation to reduce type checking/inference for higher-order refinement types to that for first-order refinement types, so that the latter can be automatically solved by using an existing software model checker. We also prove the soundness of the transformation, and report on implementation and experiments.
UR - http://www.scopus.com/inward/record.url?scp=84961266840&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84961266840&partnerID=8YFLogxK
U2 - 10.1016/j.scico.2016.02.007
DO - 10.1016/j.scico.2016.02.007
M3 - Article
AN - SCOPUS:84961266840
SN - 0167-6423
VL - 137
SP - 2
EP - 62
JO - Science of Computer Programming
JF - Science of Computer Programming
ER -