Manifest Contracts for Datatypes
-
Published:2015-05-11
Issue:1
Volume:50
Page:195-207
-
ISSN:0362-1340
-
Container-title:ACM SIGPLAN Notices
-
language:en
-
Short-container-title:SIGPLAN Not.
Author:
Sekiyama Taro1,
Nishida Yuki1,
Igarashi Atsushi1
Affiliation:
1. Kyoto University, Kyoto, Japan
Abstract
We study algebraic data types in a manifest contract system, a software contract system where contract information occurs as refinement types. We first compare two simple approaches: refinements on type constructors and refinements on data constructors. For example, lists of positive integers can be described by {l:int list | for_all (lambda y. y > 0) l} in the former, whereas by a user-defined datatype pos_list with cons of type {x:int | x > 0} X pos_list -> pos_list in the latter. The two approaches are complementary: the former makes it easier for a programmer to write types and the latter enables more efficient contract checking. To take the best of both worlds, we propose (1) a syntactic translation from refinements on type constructors to equivalent refinements on data constructors and (2) dynamically checked casts between different but compatible datatypes such as int list and pos_list. We define a manifest contract calculus to formalize the semantics of the casts and prove that the translation is correct.
Funder
Japan Society for the Promotion of Science
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference33 articles.
1. The Agda 2 homepage. http://wiki.portal.chalmers.se/ agda/pmwiki.php. The Agda 2 homepage. http://wiki.portal.chalmers.se/ agda/pmwiki.php.
2. The Coq proof assistant. http://coq.inria.fr/. The Coq proof assistant. http://coq.inria.fr/.
3. LNCS;Belo J. F.,2011
4. Semantic subtyping with an SMT solver
Cited by
2 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Space-Efficient Latent Contracts;Lecture Notes in Computer Science;2019
2. Manifest Contracts with Intersection Types;Programming Languages and Systems;2019