https://github.com/andreadlm/master-thesis
A LEAN-certified reversibilization of Meyer-Ritchie LOOP language. Master thesis in computer science.
https://github.com/andreadlm/master-thesis
lean lean4 programming-languages reversible-computation
Last synced: 4 months ago
JSON representation
A LEAN-certified reversibilization of Meyer-Ritchie LOOP language. Master thesis in computer science.
- Host: GitHub
- URL: https://github.com/andreadlm/master-thesis
- Owner: andreadlm
- Created: 2024-05-17T09:47:44.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-03T07:12:32.000Z (over 1 year ago)
- Last Synced: 2025-06-25T07:07:06.441Z (12 months ago)
- Topics: lean, lean4, programming-languages, reversible-computation
- Language: Lean
- Homepage: https://andreadlm.github.io/master-thesis/MasterThesis.html
- Size: 194 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# A Lean-certified reversibilization of Meyer-Ritchie LOOP language
University of Turin, master thesis in computer science.
This project introduces the Lean formalization of SCORE, a minimal reversible programming language
designed as a reversible adaptation of Meyer and Ritchie's LOOP language. SCORE can be understood as
an extension of Matos' SRL language with native support for stacks. The language is _reversible_,
meaning that for every program, it is possible to compute the inverse program using a syntax-directed
inversion function. The operational semantics of the language is defined through an interpreter and
its invertibility property is proved. Additionally, the project provides a formal proof that two
compilers, one a generalization of the other, transform any LOOP program into an equivalent SCORE
program.
## Documentation
The full documentation of the project can be read [here](https://andreadlm.github.io/master-thesis/)
and is generated automatically from the source `.lean` files.
## Configuring
After downloading the project, run
```shell
lake update
```
to download/update all the dependecies.
## Building
To build the project run
```shell
lake build
```
To build the executable run
```shell
lake build l2s
```
### Building the docs
To build the documentation run:
```shell
lake build MasterThesis:docs
```
The root of the built docs will be `.lake/build/doc/index.html`.
## Running
> [!IMPORTANT]
> The command line version currently doesn't work on Windows due to a known
[issue](https://github.com/leanprover/lean4/issues/4159) with lake.
To execute the compiler from the command line run:
```shell
lake exe l2s -o
```
or directly, after building the executable:
```shell
cd .lake\build\bin
.\l2s -o
```