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 条
  • [1] Verifying Whiley Programs with Boogie
    David J. Pearce
    Mark Utting
    Lindsay Groves
    Journal of Automated Reasoning, 2022, 66 : 747 - 803
  • [2] Designing a verifying compiler: Lessons learned from developing Whiley
    Pearce, David J.
    Groves, Lindsay
    SCIENCE OF COMPUTER PROGRAMMING, 2015, 113 : 191 - 220
  • [3] Bound Analysis for Whiley Programs
    Weng, Min-Hsien
    Utting, Mark
    Pfahringer, Bernhard
    ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE, 2016, 320 : 53 - 67
  • [4] Verifying Determinism in Sequential Programs
    Mudduluru, Rashmi
    34TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE 2019), 2019, : 1271 - 1273
  • [5] Verifying Determinism in Sequential Programs
    Mudduluru, Rashmi
    Waataja, Jason
    Millstein, Suzanne
    Ernst, Michael D.
    2021 IEEE/ACM 43RD INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2021), 2021, : 37 - 49
  • [6] Verifying Fortran Programs with CIVL
    Wu, Wenhao
    Huckelheim, Jan
    Hovland, Paul D.
    Siegel, Stephen F.
    TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS, TACAS 2022, PT I, 2022, 13243 : 106 - 124
  • [7] Verifying Properties of Differentiable Programs
    Huckelheim, Jan
    Luo, Ziqing
    Narayanan, Hari Krishna
    Siegel, Stephen
    Hovland, Paul D.
    STATIC ANALYSIS (SAS 2018), 2018, 11002 : 205 - 222
  • [8] Specifying and Verifying Concurrent C Programs with TLA
    Methni, Amira
    Lemerre, Matthieu
    Ben Hedia, Belgacem
    Haddad, Serge
    Barkaoui, Kamel
    FORMAL TECHNIQUES FOR SAFETY-CRITICAL SYSTEMS, FTSCS 2014, 2015, 476 : 206 - 222
  • [9] HOL-Boogie-An Interactive Prover-Backend for the Verifying C Compiler
    Boehme, Sascha
    Moskal, Micha
    Schulte, Wolfram
    Wolff, Burkhart
    JOURNAL OF AUTOMATED REASONING, 2010, 44 (1-2) : 111 - 144
  • [10] Verifying Liveness for Asynchronous Programs
    Ganty, Pierre
    Majumdar, Rupak
    Rybalchenko, Andrey
    ACM SIGPLAN NOTICES, 2009, 44 (01) : 102 - 113