Giter Club home page Giter Club logo

kraken's Introduction

Reflex DSL: Automating Formal Proofs for Reactive Systems

This repository gives the source code for the project described at this page: http://goto.ucsd.edu/reflex/. A VM image is available at that web page for trying out the systems we built (web browser, SSH server, web server), running the proof automation, and building a kernel of your own using Reflex.

This document describes the structure of this repository.

Directory structure

The repository is structured as follows:

  • The implementation of the interpreter is located at reflex/coq. A description of some of the files under that directory is given at docs/source-docs.txt.

  • The kernels for the web browser, ssh server, and web server are located at reflex/coq/bench-quark/Kernel.reflex, reflex/coq/bench-ssh/Kernel.reflex, reflex/coq/bench-webserver/Kernel.reflex, respectively.

  • The implementation of the proof automation is also found in reflex/coq. The bulk of the automation implementation is, somewhat confusingly, in the file ReflexFrontend.v.

  • bin contains a script for running proof general with the appropriate arguments for this project.

  • dep contains a makefile for pulling in and compiling the library Ynot, which we build upon.

  • doc contains a description of the files in reflex/coq. It also contains a script for generating a dependency diagram for modules in this project and a slightly outdated diagram.

  • examples is deprecated.

  • All Ocaml code related to extracting our interpreter is located in reflex/ml. This includes the Ocaml implementations of all of our Reflex primitives (for making system calls).

  • reflex/c-stubs contains a C implementation for passing a file descriptor over a socket.

  • reflex/examples contains the implementations of components that communicate with the echo server kernel and that communicate with the web server kernel.

Compiling

Simply run make to build the interpreter. In order to build a particular kernel, place your kernel in reflex/coq/bench-<name>. Under that directory, run

ln -s ../Makefile.bench Makefile
cd ../../
make build NAME=<name>

The resulting binary will reside in reflex/coq/bench-<name>/ml/kernel.

Running the proof automation on our properties

cd reflex/coq
make bench BENCHOUT=<results-dir> TIMEOUT=<timeout>

A single file called /results.csv will be created, giving, for each property, the time taken to produce a proof (Ltac), the time taken to check the proof (Qed), and the maximum memory used while creating the proof.

You can also tweak the automation optimizations that are run by modifying Opt.v. This file consists of six boolean valued expressions, each corresponding to an optimization.

Make sure that when you run automation on a machine with at least 4GB of memory.

Running the proof automation on your properties

Enter the directory where the kernel resides. Run make policies.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.