Verifying Whiley Programs with Boogie

被引:2
|
作者
Pearce, David J. [1 ]
Utting, Mark [2 ]
Groves, Lindsay [1 ]
机构
[1] Victoria Univ Wellington, Wellington, New Zealand
[2] Univ Queensland, Brisbane, Qld, Australia
关键词
Whiley; Boogie; Verifying compiler; Intermediate verification language; Semantic translation; Impedance mismatch; Flow typing; Verification conditions; RUNTIME ASSERTION CHECKING; AUTOMATIC VERIFIER; STATIC ANALYSIS; VERIFICATION; JML; DESIGN; SPECIFICATION; SELECTION; LANGUAGE; SYSTEM;
D O I
10.1007/s10817-022-09619-1
中图分类号
TP18 [人工智能理论];
学科分类号
081104 ; 0812 ; 0835 ; 1405 ;
摘要
The quest to develop increasingly sophisticated verification systems continues unabated. Tools such as Dafny, Spec#, ESC/Java, SPARK Ada and Whiley attempt to seamlessly integrate specification and verification into a programming language, in a similar way to type checking. A common integration approach is to generate verification conditions that are handed off to an automated theorem prover. This provides a nice separation of concerns and allows different theorem provers to be used interchangeably. However, generating verification conditions is still a difficult undertaking and the use of more "high-level" intermediate verification languages has become commonplace. In particular, Boogie provides a widely used and understood intermediate verification language. A common difficulty is the potential for an impedance mismatch between the source language and the intermediate verification language. In this paper, we explore the use of Boogie as an intermediate verification language for verifying programs in Whiley. This is noteworthy because the Whiley language has (amongst other things) a rich type system with considerable potential for an impedance mismatch. We provide a comprehensive account of translating Whiley to Boogie which demonstrates that it is possible to model most aspects of the Whiley language. Key challenges posed by the Whiley language included: the encoding of Whiley's expressive type system and support for flow typing and generics; the implicit assumption that expressions in specifications are well defined; the ability to invoke methods from within expressions; the ability to return multiple values from a function or method; the presence of unrestricted lambda functions; and the limited syntax for framing. We demonstrate that the resulting verification tool can verify significantly more programs than the native Whiley verifier which was custom-built for Whiley verification. Furthermore, our work provides evidence that Boogie is (for the most part) sufficiently general to act as an intermediate language for a wide range of source languages.
引用
收藏
页码:747 / 803
页数:57
相关论文
共 50 条
  • [31] Modeling and Verifying Concurrent Programs with Finite Chu Spaces
    Xu-Tao Du
    Chun-Xiao Xing
    Li-Zhu Zhou
    Journal of Computer Science and Technology, 2010, 25 : 1168 - 1183
  • [32] Verifying Quantitative Reliability for Programs That Execute on Unreliable Hardware
    Carbin, Michael
    Misailovic, Sasa
    Rinard, Martin C.
    ACM SIGPLAN NOTICES, 2013, 48 (10) : 33 - 71
  • [33] Verifying ConGolog Programs on Bounded Situation Calculus Theories
    De Giacomo, Giuseppe
    Lesperance, Yves
    Patrizi, Fabio
    Sardina, Sebastian
    THIRTIETH AAAI CONFERENCE ON ARTIFICIAL INTELLIGENCE, 2016, : 950 - 956
  • [34] A Novel Symbolic Approach to Verifying Epistemic Properties of Programs
    Gorogiannis, Nikos
    Raimondi, Franco
    Boureanu, Ioana
    PROCEEDINGS OF THE TWENTY-SIXTH INTERNATIONAL JOINT CONFERENCE ON ARTIFICIAL INTELLIGENCE, 2017, : 206 - 212
  • [35] Modeling and Verifying Concurrent Programs with Finite Chu Spaces
    杜旭涛
    刑春晓
    周立柱
    Journal of Computer Science & Technology, 2010, 25 (06) : 1168 - 1183
  • [36] Testing and verifying invariant based programs in the SOCOS environment
    Back, Ralph-Johan
    Eriksson, Johannes
    Myreen, Magnus
    TESTS AND PROOFS, 2007, 4454 : 61 - +
  • [37] Verifying Numerical Programs via Iterative Abstract Testing
    Yin, Banghu
    Chen, Liqian
    Liu, Jiangchao
    Wang, Ji
    Cousot, Patrick
    STATIC ANALYSIS (SAS 2019), 2019, 11822 : 247 - 267
  • [38] Verifying Higher-order Programs with the Dijkstra Monad
    Swamy, Nikhil
    Weinberger, Joel
    Schlesinger, Cole
    Chen, Juan
    Livshits, Benjamin
    ACM SIGPLAN NOTICES, 2013, 48 (06) : 387 - 398
  • [39] Verifying Procedural Programs via Constrained Rewriting Induction
    Fuhs, Carsten
    Kop, Cynthia
    Nishida, Naoki
    ACM TRANSACTIONS ON COMPUTATIONAL LOGIC, 2017, 18 (02)
  • [40] Modeling and Verifying Concurrent Programs with Finite Chu Spaces
    Du, Xu-Tao
    Xing, Chun-Xiao
    Zhou, Li-Zhu
    JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY, 2010, 25 (06) : 1168 - 1183