Programming Languages meets Program Verification最新文献

筛选
英文 中文
Formalizing a correctness property of a type-directed partial evaluator 形式化有类型部分求值器的正确性属性
Programming Languages meets Program Verification Pub Date : 2014-01-11 DOI: 10.1145/2541568.2541572
Noriko Hirota, K. Asai
{"title":"Formalizing a correctness property of a type-directed partial evaluator","authors":"Noriko Hirota, K. Asai","doi":"10.1145/2541568.2541572","DOIUrl":"https://doi.org/10.1145/2541568.2541572","url":null,"abstract":"This paper presents our experience of formalizing Danvy's type-directed partial evaluator (TDPE) for the call-by-name lambda calculus in the proof assistant Coq. Following the previous approach by Coquand and Ilik, we characterize TDPE as a composition of completeness and soundness theorems of typing rules with respect to the semantics. To show the correctness property of TDPE (i.e., TDPE preserves semantics), we further define a logical relation between residualizing and standard semantics, following Filinski. The use of parametric higher-order abstract syntax (PHOAS) leads to a simple formalization without being disturbed by fresh names created during TDPE. Because of the higher-order nature of PHOAS, it also requires us to prove manually a core property that corresponds to the main lemma of logical relations, which appears to be difficult to prove in Coq.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-01-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128306136","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Refinement types for Haskell Haskell的细化类型
Programming Languages meets Program Verification Pub Date : 2014-01-11 DOI: 10.1145/2541568.2541569
Ranjit Jhala
{"title":"Refinement types for Haskell","authors":"Ranjit Jhala","doi":"10.1145/2541568.2541569","DOIUrl":"https://doi.org/10.1145/2541568.2541569","url":null,"abstract":"We present LiquidHaskell (http://goto.ucsd.edu/liquid), an automatic verifier for Haskell. LiquidHaskell uses Refinement types, a restricted form of dependent types where relationships between values are encoded by decorating types with logical predicates drawn from an efficiently SMT decidable theory (of arithmetic and uninterpreted functions.)\u0000 In this talk, we will describe the key ingredients of LiquidHaskell.\u0000 First, we will present a rapid overview of refinement types, including SMT solver based (decidable) subtyping, and inference. Decidability is achieved by eschewing the use of arbitrary terms inside types, and the use of indices to encode rich properties of data.\u0000 Second, we will show how to recover some of the expressiveness lost by restricting the logic, with two new techniques: measures which encode structural properties of values and abstract refinements which enable generalization (i.e. quantification) over refinements.\u0000 Third, we will discuss the curious interaction of laziness and refinement typing. In a nutshell, the technique of refinement typing can be viewed as a type-based generalization of Floyd-Hoare logics. Surprisingly, we demonstrate that under non-strict evaluation, these logics (and hence, classical refinement typing) is unsound, due to the presence of potentially divergent sub-computations. Fortunately, we show how soundness can be recovered with a termination analysis, itself, circularly bootstrapped off refinement typing.\u0000 We have used LiquidHaskell to verify safety, functional correctness and termination properties of real-world Haskell libraries totalling mroe than 10,000 lines of code. Time permitting, we will present a demonstration of the tool and a few short case studies illustrating its use.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"79 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-01-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116158260","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 198
The recursive polarized dual calculus 递归极化对偶演算
Programming Languages meets Program Verification Pub Date : 2014-01-11 DOI: 10.1145/2541568.2541575
Aaron Stump
{"title":"The recursive polarized dual calculus","authors":"Aaron Stump","doi":"10.1145/2541568.2541575","DOIUrl":"https://doi.org/10.1145/2541568.2541575","url":null,"abstract":"This paper introduces the Recursive Polarized Dual Calculus (RP-DC), based on Wadler's Dual Calculus. RP-DC features a polarized form of reduction, which enables several simplifications over previous related systems. It also adds inductive types with recursion, from which coinductive types with corecursion can be defined. Typing and reduction relations are defined for RP-DC, and we consider several examples of practical programming. Logical consistency is proved, as well as a canonicity theorem showing that all closed values of a certain family of types are canonical. This shows how RP-DC can be used for practical programming, where canonical final results are required.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"113 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-01-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117191134","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Verified programs with binders 经过验证的程序与粘合剂
Programming Languages meets Program Verification Pub Date : 2014-01-11 DOI: 10.1145/2541568.2541571
Martin Clochard, C. Marché, A. Paskevich
{"title":"Verified programs with binders","authors":"Martin Clochard, C. Marché, A. Paskevich","doi":"10.1145/2541568.2541571","DOIUrl":"https://doi.org/10.1145/2541568.2541571","url":null,"abstract":"Programs that treat datatypes with binders, such as theorem provers or higher-order compilers, are regularly used for mission-critical purposes, and must be both reliable and performant. Formally proving such programs using as much automation as possible is highly desirable. In this paper, we propose a generic approach to handle datatypes with binders both in the program and its specification in a way that facilitates automated reasoning about such datatypes and also leads to a reasonably efficient code. Our method is implemented in the Why3 environment for program verification. We validate it on the examples of a lambda-interpreter with several reduction strategies and a simple tableaux-based theorem prover.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"117 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-01-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124526914","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
An abstract categorical semantics for functional reactive programming with processes 具有过程的函数式响应式编程的抽象范畴语义
Programming Languages meets Program Verification Pub Date : 2014-01-11 DOI: 10.1145/2541568.2541573
W. Jeltsch
{"title":"An abstract categorical semantics for functional reactive programming with processes","authors":"W. Jeltsch","doi":"10.1145/2541568.2541573","DOIUrl":"https://doi.org/10.1145/2541568.2541573","url":null,"abstract":"Linear-time temporal logic and functional reactive programming (FRP) are related via a Curry-Howard correspondence. Thereby proofs of \"always,\" \"eventually,\" and \"until\" propositions correspond to behaviors, events, and processes, respectively. Processes in the FRP sense combine continuous and discrete aspects and generalize behaviors and events. In this paper, we develop a class of axiomatically defined categorical models of FRP with processes. We call these models abstract process categories (APCs). We relate APCs to other categorical models of FRP, namely temporal categories and concrete process categories.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"51 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-01-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125529840","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Substructural typestates 子结构typestates
Programming Languages meets Program Verification Pub Date : 2014-01-11 DOI: 10.1145/2541568.2541574
Filipe Militão, Jonathan Aldrich, Luís Caires
{"title":"Substructural typestates","authors":"Filipe Militão, Jonathan Aldrich, Luís Caires","doi":"10.1145/2541568.2541574","DOIUrl":"https://doi.org/10.1145/2541568.2541574","url":null,"abstract":"Finding simple, yet expressive, verification techniques to reason about both aliasing and mutable state has been a major challenge for static program verification. One such approach, of practical relevance, is centered around a lightweight typing discipline where types denote abstract object states, known as typestates.\u0000 In this paper, we show how key typestate concepts can be precisely captured by a substructural type-and-effect system, exploiting ideas from linear and separation logic. Building on this foundation, we show how a small set of primitive concepts can be composed to express high-level idioms such as objects with multiple independent state dimensions, dynamic state tests, and behavior-oriented usage protocols that enforce strong information hiding. By exploring the relationship between two mainstream modularity concepts, state abstraction and hiding, we also provide new insights on how they naturally fit together and complement one another.\u0000 Technically, our results are based on a typed lambda calculus with mutable references, location-dependent types, and second-order polymorphism. The soundness of our type system is shown through progress and preservation theorems. We also describe a prototype implementation of a type checker for our system, which is available on the web and can be used to experiment with the examples in the paper.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"112 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-01-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116071401","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 12
Programming languages for high-assurance autonomous vehicles: extended abstract 高保证自动驾驶汽车的编程语言:扩展抽象
Programming Languages meets Program Verification Pub Date : 2014-01-11 DOI: 10.1145/2541568.2541570
Lee Pike, P. Hickey, James Bielman, Trevor Elliott, Thomas Dubuisson, J. Launchbury
{"title":"Programming languages for high-assurance autonomous vehicles: extended abstract","authors":"Lee Pike, P. Hickey, James Bielman, Trevor Elliott, Thomas Dubuisson, J. Launchbury","doi":"10.1145/2541568.2541570","DOIUrl":"https://doi.org/10.1145/2541568.2541570","url":null,"abstract":"We briefly describe the use of embedded domain-specific languages to improve programmer productivity and increase software assurance in the context of building a fully-featured autopilot for unpiloted aircraft.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-01-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130823046","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 11
LTL types FRP: linear-time temporal logic propositions as types, proofs as functional reactive programs LTL类型FRP:作为类型的线性时间时间逻辑命题,作为功能反应程序的证明
Programming Languages meets Program Verification Pub Date : 2012-01-24 DOI: 10.1145/2103776.2103783
A. Jeffrey
{"title":"LTL types FRP: linear-time temporal logic propositions as types, proofs as functional reactive programs","authors":"A. Jeffrey","doi":"10.1145/2103776.2103783","DOIUrl":"https://doi.org/10.1145/2103776.2103783","url":null,"abstract":"Functional Reactive Programming (FRP) is a form of reactive programming whose model is pure functions over signals. FRP is often expressed in terms of arrows with loops, which is the type class for a Freyd category (that is a premonoidal category with a cartesian centre) equipped with a premonoidal trace. This type system suffices to define the dataflow structure of a reactive program, but does not express its temporal properties. In this paper, we show that Linear-time Temporal Logic (LTL) is a natural extension of the type system for FRP, which constrains the temporal behaviour of reactive programs. We show that a constructive LTL can be defined in a dependently typed functional language, and that reactive programs form proofs of constructive LTL properties. In particular, implication in LTL gives rise to stateless functions on streams, and the \"constrains\" modality gives rise to causal functions. We show that reactive programs form a partially traced monoidal category, and hence can be given as a form of arrows with loops, where the type system enforces that only decoupled functions can be looped.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"26 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-01-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125228085","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 64
Reflexive toolbox for regular expression matching: verification of functional programs in Coq+Ssreflect 用于正则表达式匹配的反射工具箱:Coq+Ssreflect中函数程序的验证
Programming Languages meets Program Verification Pub Date : 2012-01-24 DOI: 10.1145/2103776.2103784
Vladimir Komendantsky
{"title":"Reflexive toolbox for regular expression matching: verification of functional programs in Coq+Ssreflect","authors":"Vladimir Komendantsky","doi":"10.1145/2103776.2103784","DOIUrl":"https://doi.org/10.1145/2103776.2103784","url":null,"abstract":"We study a derivative method allowing to prove termination of computations on regular expressions. A Coq formalisation of a canonical non-deterministic finite automaton construction on a regular expression is presented. The correctness of the functional definitions is formally verified in Coq using the libraries and the small-scale reflection tools of Ssreflect. We propose to extend the proofs further, and this is a work in progress, to study termination of containment and equivalence in terms of partial derivatives. This serves as a major motivation and intended application of the presented approach. A method that we develop in the paper, called shadowing, allows for a smooth program extraction from decision procedures whatever the complexity of the dependently typed proofs.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"133 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-01-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115095319","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Equational reasoning about programs with general recursion and call-by-value semantics 具有一般递归和按值调用语义的程序的等式推理
Programming Languages meets Program Verification Pub Date : 2012-01-24 DOI: 10.1145/2103776.2103780
Garrin Kimmell, Aaron Stump, H. Eades, Peng Fu, T. Sheard, Stephanie Weirich, Chris Casinghino, Vilhelm Sjöberg, Nathan Collins, Ki Yung Ahn
{"title":"Equational reasoning about programs with general recursion and call-by-value semantics","authors":"Garrin Kimmell, Aaron Stump, H. Eades, Peng Fu, T. Sheard, Stephanie Weirich, Chris Casinghino, Vilhelm Sjöberg, Nathan Collins, Ki Yung Ahn","doi":"10.1145/2103776.2103780","DOIUrl":"https://doi.org/10.1145/2103776.2103780","url":null,"abstract":"Dependently typed programming languages provide a mechanism for integrating verification and programming by encoding invariants as types. Traditionally, dependently typed languages have been based on constructive type theories, where the connection between proofs and programs is based on the Curry-Howard correspondence. This connection comes at a price, however, as it is necessary for the languages to be normalizing to preserve logical soundness. Trellys is a call-by-value dependently typed programming language currently in development that is designed to integrate a type theory with unsound programming features, such as general recursion, Type:Type, and others. In this paper we outline one core language design for Trellys, and demonstrate the use of the key language constructs to facilitate sound reasoning about potentially unsound programs.","PeriodicalId":153056,"journal":{"name":"Programming Languages meets Program Verification","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-01-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121345229","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 29
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信