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

03/27/2018
by   Zheng Yang, et al.
0

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.

READ FULL TEXT

page 26

page 28

research
05/16/2022

Budge: a programming language and a theorem prover

We present a simple programming language based on Gödel numbering and pr...
research
01/31/2018

Deep Reinforcement Learning for Programming Language Correction

Novice programmers often struggle with the formal syntax of programming ...
research
11/02/2018

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

Stan is a probabilistic programming language that has been increasingly ...
research
08/09/2019

Functional programming with lambda-tree syntax

We present the design of a new functional programming language, MLTS, th...
research
03/17/2022

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...
research
07/17/2018

Merlin: A Language Server for OCaml (Experience Report)

We report on the experience of developing Merlin, a language server for ...
research
12/28/2017

Automated Refactoring of Nested-IF Formulae in Spreadsheets

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

Please sign up or login with your details

Forgot password? Click here to reset