Log In Sign Up

Lolisa: Formal Syntax and Semantics for a Subset of the Solidity Programming Language

by   Zheng Yang, et al.

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.


page 26

page 28


Budge: a programming language and a theorem prover

We present a simple programming language based on Gödel numbering and pr...

Deep Reinforcement Learning for Programming Language Correction

Novice programmers often struggle with the formal syntax of programming ...

Probabilistic Programming with Densities in SlicStan: Efficient, Flexible and Deterministic

Stan is a probabilistic programming language that has been increasingly ...

Functional programming with lambda-tree syntax

We present the design of a new functional programming language, MLTS, th...

Lupa: A Framework for Large Scale Analysis of the Programming Language Usage

In this paper, we present Lupa - a framework for large-scale analysis of...

Merlin: A Language Server for OCaml (Experience Report)

We report on the experience of developing Merlin, a language server for ...

Automated Refactoring of Nested-IF Formulae in Spreadsheets

Spreadsheets are the most popular end-user programming software, where f...