2016
DOI: 10.1145/3022671.2984027
|View full text |Cite
|
Sign up to set email alerts
|

Semantics-based program verifiers for all languages

Abstract: We present a language-independent verification framework that can be instantiated with an operational semantics to automatically generate a program verifier. The framework treats both the operational semantics and the program correctness specifications as reachability rules between matching logic patterns, and uses the sound and relatively complete reachability logic proof system to prove the specifications using the semantics. We instantiate the framework with the semantics of one academic language, KernelC, … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
22
0

Year Published

2017
2017
2021
2021

Publication Types

Select...
5
2
1

Relationship

2
6

Authors

Journals

citations
Cited by 24 publications
(22 citation statements)
references
References 58 publications
0
22
0
Order By: Relevance
“…Particularly, an executable semantics of EVM [24], the bytecode language of smart contracts, has been constructed in the K-framework. K backends, like the Isabelle theory generator, the model checker, and the deductive verifier, can be utilized to prove properties on the semantics and construct verification tools [42].…”
Section: The K-frameworkmentioning
confidence: 99%
“…Particularly, an executable semantics of EVM [24], the bytecode language of smart contracts, has been constructed in the K-framework. K backends, like the Isabelle theory generator, the model checker, and the deductive verifier, can be utilized to prove properties on the semantics and construct verification tools [42].…”
Section: The K-frameworkmentioning
confidence: 99%
“…We also apply Cosette to specification-driven bug-finding. Functional correctness specifications of JS programs are highly intricate, with only a few tools (JaVerT [22] and KJS [16,36]) supporting such expressivity. When these tools cannot prove that a given function satisfies a specification, the developer has to understand a complicated proof trace to discover the error (JaVerT), or act with essentially no feedback (KJS).…”
Section: :1mentioning
confidence: 99%
“…Alternatively, we might have used the matching logic specifications of KJS [16], a verification tool for core ES5 obtained by instantiating the general K framework with the semantics of JS [36]. Similarly to JaVerT, KJS has been used to verify functional correctness properties of small data structure libraries.…”
Section: Related Workmentioning
confidence: 99%
“…Example 4.5 Program verifiers abund in literature, e.g., [3,21,27]. For example, [13] aims at complexity verification on domains like that in Example 3.2 (5) while reachability verifiers like [33] can check numerical properties of program variables such as those of Example 3.3.…”
Section: Program Analysers and Verifiersmentioning
confidence: 99%