8 research outputs found
Mechanized semantics for the Clight subset of the C language
This article presents the formal semantics of a large subset of the C
language called Clight. Clight includes pointer arithmetic, "struct" and
"union" types, C loops and structured "switch" statements. Clight is the source
language of the CompCert verified compiler. The formal semantics of Clight is a
big-step operational semantics that observes both terminating and diverging
executions and produces traces of input/output events. The formal semantics of
Clight is mechanized using the Coq proof assistant. In addition to the
semantics of Clight, this article describes its integration in the CompCert
verified compiler and several ways by which the semantics was validated.Comment: Journal of Automated Reasoning (2009
Lolisa: Formal syntax and semantics for a subset of the solidity programming language in Mathematical Tool Coq
This article presents the formal syntax and semantics for a large subset of
the Solidity programming language developed for the Etheruem blockchain
platform based on our resent work about developing a general, extensible, and
reusable formal memory (GERM) framework and an extension of Curry-Howard
isomorphism, denoted as execution-verification isomorphism (EVI). This subset
is denoted as Lolisa, which, to our knowledge, is the first mechanized and
validated formal syntax and semantics developed for Solidity. The formal syntax
of Lolisa adopts a stronger static type system than Solidity for enhanced type
safety. In addition, Lolisa not only includes nearly all the syntax components
of Solidity, such as mapping, modifier, contract, and address types, but it
also contains general-purpose programming language features, such as multiple
return values, pointer arithmetic, struct, and field access. Therefore, the
inherent compatibility of Lolisa allows Solidity programs to be directly
translated into Lolisa with a line-by-line correspondence without rebuilding or
abstracting, and, in addition, the inherent generality of Lolisa allows it to
be extended to express other programming languages as well. To this end, we
also present a preliminary scheme for extending Lolisa to other languages
systematically.Comment: 15 pages,14 figures. arXiv admin note: text overlap with
arXiv:0901.3619 by other author
A formal model of memory peculiarities for the verification of low-level operating-system code
This paper presents our solutions to some problems we encountered in an ongoing attempt to verify the micro-hypervisor currently developed within the Robin project. The problems that we discuss are (1) efficient automatic reasoning for type-correct programs in virtual memory, and (2) modeling memory-mapped devices with alignment requirements. The discussed solutions are integrated in our verification environment for operating-system kernels in the interactive theorem prover PVS. This verification environment will ultimately be used for the verification of the Robin micro-hypervisor. As a proof of concept we include an example verification of a very simple piece of code in our environment
A formal model of memory peculiarities for the verification of low-level operating-system code
Abstract This paper presents our solutions to some problems we encountered in an ongoing attempt to verify the micro-hypervisor currently developed within the Robin project. The problems that we discuss are (1) efficient automatic reasoning for type-correct programs in virtual memory, and (2) modeling memory-mapped devices with alignment requirements. The discussed solutions are integrated in our verification environment for operating-system kernels in the interactive theorem prover PVS. This verification environment will ultimately be used for the verification of the Robin micro-hypervisor. As a proof of concept we include an example verification of a very simple piece of code in our environment