Learning refinement types

We propose the integration of a random test generation system (capable of discovering program bugs) and a refinement type system (capable of expressing and verifying program invariants), for higher-order functional programs, using a novel lightweight learning algorithm as an effective intermediary b...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:SIGPLAN notices 2015-12, Vol.50 (9), p.400-411
Hauptverfasser: Zhu, He, Nori, Aditya V., Jagannathan, Suresh
Format: Artikel
Sprache:eng ; jpn
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 411
container_issue 9
container_start_page 400
container_title SIGPLAN notices
container_volume 50
creator Zhu, He
Nori, Aditya V.
Jagannathan, Suresh
description We propose the integration of a random test generation system (capable of discovering program bugs) and a refinement type system (capable of expressing and verifying program invariants), for higher-order functional programs, using a novel lightweight learning algorithm as an effective intermediary between the two. Our approach is based on the well-understood intuition that useful, but difficult to infer, program properties can often be observed from concrete program states generated by tests; these properties act as likely invariants, which if used to refine simple types, can have their validity checked by a refinement type checker. We describe an implementation of our technique for a variety of benchmarks written in ML, and demonstrate its effectiveness in inferring and proving useful invariants for programs that express complex higher-order control and dataflow.
doi_str_mv 10.1145/2858949.2784766
format Article
fullrecord <record><control><sourceid>crossref</sourceid><recordid>TN_cdi_crossref_primary_10_1145_2858949_2784766</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>10_1145_2858949_2784766</sourcerecordid><originalsourceid>FETCH-LOGICAL-c191t-ce1fa3c0011028ee064284d042807962998d07d355df7bad72a3d75dbe406a573</originalsourceid><addsrcrecordid>eNotj81Kw0AURi-iYKyuxV1fYNp753-WUtQKATe6HqaZG4nYWGay6dsbMZvv2x3OAbgn3BBps5Xe-KDDRjqvnbUX0JAxXhBZvIQGlZWClMZruKn1CxEVSt_AQ8upjMP4uS7cDyMfeZzW0_nE9Rau-vRd-W75FXw8P73v9qJ9e3ndPbaio0CT6Jj6pDpEohnIjFZLrzPOiy5YGYLP6LIyJvfukLKTSWVn8oE12mScWsH2n9uVn1pni3gqwzGVcySMf2VxKYtLmfoFAiw-lw</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>Learning refinement types</title><source>ACM Digital Library Complete</source><creator>Zhu, He ; Nori, Aditya V. ; Jagannathan, Suresh</creator><creatorcontrib>Zhu, He ; Nori, Aditya V. ; Jagannathan, Suresh</creatorcontrib><description>We propose the integration of a random test generation system (capable of discovering program bugs) and a refinement type system (capable of expressing and verifying program invariants), for higher-order functional programs, using a novel lightweight learning algorithm as an effective intermediary between the two. Our approach is based on the well-understood intuition that useful, but difficult to infer, program properties can often be observed from concrete program states generated by tests; these properties act as likely invariants, which if used to refine simple types, can have their validity checked by a refinement type checker. We describe an implementation of our technique for a variety of benchmarks written in ML, and demonstrate its effectiveness in inferring and proving useful invariants for programs that express complex higher-order control and dataflow.</description><identifier>ISSN: 0362-1340</identifier><identifier>EISSN: 1558-1160</identifier><identifier>DOI: 10.1145/2858949.2784766</identifier><language>eng ; jpn</language><ispartof>SIGPLAN notices, 2015-12, Vol.50 (9), p.400-411</ispartof><woscitedreferencessubscribed>false</woscitedreferencessubscribed><cites>FETCH-LOGICAL-c191t-ce1fa3c0011028ee064284d042807962998d07d355df7bad72a3d75dbe406a573</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,776,780,27901,27902</link.rule.ids></links><search><creatorcontrib>Zhu, He</creatorcontrib><creatorcontrib>Nori, Aditya V.</creatorcontrib><creatorcontrib>Jagannathan, Suresh</creatorcontrib><title>Learning refinement types</title><title>SIGPLAN notices</title><description>We propose the integration of a random test generation system (capable of discovering program bugs) and a refinement type system (capable of expressing and verifying program invariants), for higher-order functional programs, using a novel lightweight learning algorithm as an effective intermediary between the two. Our approach is based on the well-understood intuition that useful, but difficult to infer, program properties can often be observed from concrete program states generated by tests; these properties act as likely invariants, which if used to refine simple types, can have their validity checked by a refinement type checker. We describe an implementation of our technique for a variety of benchmarks written in ML, and demonstrate its effectiveness in inferring and proving useful invariants for programs that express complex higher-order control and dataflow.</description><issn>0362-1340</issn><issn>1558-1160</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2015</creationdate><recordtype>article</recordtype><recordid>eNotj81Kw0AURi-iYKyuxV1fYNp753-WUtQKATe6HqaZG4nYWGay6dsbMZvv2x3OAbgn3BBps5Xe-KDDRjqvnbUX0JAxXhBZvIQGlZWClMZruKn1CxEVSt_AQ8upjMP4uS7cDyMfeZzW0_nE9Rau-vRd-W75FXw8P73v9qJ9e3ndPbaio0CT6Jj6pDpEohnIjFZLrzPOiy5YGYLP6LIyJvfukLKTSWVn8oE12mScWsH2n9uVn1pni3gqwzGVcySMf2VxKYtLmfoFAiw-lw</recordid><startdate>20151218</startdate><enddate>20151218</enddate><creator>Zhu, He</creator><creator>Nori, Aditya V.</creator><creator>Jagannathan, Suresh</creator><scope>AAYXX</scope><scope>CITATION</scope></search><sort><creationdate>20151218</creationdate><title>Learning refinement types</title><author>Zhu, He ; Nori, Aditya V. ; Jagannathan, Suresh</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c191t-ce1fa3c0011028ee064284d042807962998d07d355df7bad72a3d75dbe406a573</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng ; jpn</language><creationdate>2015</creationdate><toplevel>online_resources</toplevel><creatorcontrib>Zhu, He</creatorcontrib><creatorcontrib>Nori, Aditya V.</creatorcontrib><creatorcontrib>Jagannathan, Suresh</creatorcontrib><collection>CrossRef</collection><jtitle>SIGPLAN notices</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Zhu, He</au><au>Nori, Aditya V.</au><au>Jagannathan, Suresh</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Learning refinement types</atitle><jtitle>SIGPLAN notices</jtitle><date>2015-12-18</date><risdate>2015</risdate><volume>50</volume><issue>9</issue><spage>400</spage><epage>411</epage><pages>400-411</pages><issn>0362-1340</issn><eissn>1558-1160</eissn><abstract>We propose the integration of a random test generation system (capable of discovering program bugs) and a refinement type system (capable of expressing and verifying program invariants), for higher-order functional programs, using a novel lightweight learning algorithm as an effective intermediary between the two. Our approach is based on the well-understood intuition that useful, but difficult to infer, program properties can often be observed from concrete program states generated by tests; these properties act as likely invariants, which if used to refine simple types, can have their validity checked by a refinement type checker. We describe an implementation of our technique for a variety of benchmarks written in ML, and demonstrate its effectiveness in inferring and proving useful invariants for programs that express complex higher-order control and dataflow.</abstract><doi>10.1145/2858949.2784766</doi><tpages>12</tpages></addata></record>
fulltext fulltext
identifier ISSN: 0362-1340
ispartof SIGPLAN notices, 2015-12, Vol.50 (9), p.400-411
issn 0362-1340
1558-1160
language eng ; jpn
recordid cdi_crossref_primary_10_1145_2858949_2784766
source ACM Digital Library Complete
title Learning refinement types
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-02-21T21%3A18%3A26IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-crossref&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Learning%20refinement%20types&rft.jtitle=SIGPLAN%20notices&rft.au=Zhu,%20He&rft.date=2015-12-18&rft.volume=50&rft.issue=9&rft.spage=400&rft.epage=411&rft.pages=400-411&rft.issn=0362-1340&rft.eissn=1558-1160&rft_id=info:doi/10.1145/2858949.2784766&rft_dat=%3Ccrossref%3E10_1145_2858949_2784766%3C/crossref%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true