GithubHelp home page GithubHelp logo

efsm-sal's Introduction

EFSM SAL

EFSM models fit nicely with the notion of model checking. We can therefore express properties over EFSMs in LTL and check that these properties are true with a model checker. We present a toolset to convert EFSM models and LTL properties between the Isabelle theorem prover and the SAL model checker. This repository demonstrates our toolset with four case studies.

Cloning

This repository makes reference to several submodules. When cloning this repository, you should do so with the --recursive option, i.e. git clone --recursive https://github.com/jmafoster1/efsm-sal.git

Building

You can build the jars from source by simply running make or make build from within the efsm-sal top level directory. This will compile the sources and create a directory called jars in which to place the compiled .jar files for the three utilities. These can then be run with java -jar jars/jarname.jar, in which jarname is one of the three tools listed below. Of course, this requires Java to be installed on your computer.

Precompiled JARs

Instead of building from the source code, you can simply download precompiled jar files by clicking on "releases".

Prerequisites

SAL

Our toolset is designed to work with the Symbolic Analysis Laboratory (SAL) model checker. You need to have this installed on your system. Full installation instructions can be found here.

In order to run SAL on these examples, you need to have the lib directory location in your SALCONTEXTPATH environment variable. You can set this variable in your .bashrc file if you're using bash. If you're not using bash, you're on your own!

Isabelle

Our toolset is designed to work with the Isabelle/HOL theorem prover. Full install instructions can be found (here)[https://isabelle.in.tum.de/installation.html].

###AFP Our toolset makes reference to the Extended Finite State Machine entry in Isabelle's Archive of Formal Proofs, which must be [installed separately][https://www.isa-afp.org/using.html] to Isabelle/HOL. The Extended Finite State Machine entry is available from 2020 onwards. If you are using an older version, you will need to upgrade or manually install the entry.

Please note that the reference name changed from EFSM to Extended_Finite_State_Machines between the 2020 and 2021 releases. Our tool supports the 2021 name. If you are using the 2020 version, you will need to either update the entry or manually change import Extended_Finite_State_Machines.EFSM to import EFSM.EFSM at the top of any generated theory files.

Tools

Our tools are located in the jars directory. Each can be run using java -jar TOOLNAME.jar file/to/convert, where file/to/convert is the filepath of the file to convert, and TOOLNAME is one of the following:

  • dot2isabelle - converts DOT files representing EFSMs into an Isabelle representation. This enables EFSMs to be edited graphically. For examples of the syntax to use, see the examples directory.
  • isabelle2sal converts Isabelle representations of EFSMs and LTL properties to SAL for quick and easy counterexample generation.
  • sal2isabelle converts SAL EFSMs and properties to Isabelle to enable coinductive proofs for the strongest assurance.

If called without a file argument, all three tools will bring up a file chooser window.

Make commands

Our repository contains a makefile with several supported commands.

  • dot - Converts DOT files to PDFs for easy viewing
  • clean - deletes Isabelle temporary files
  • cleanall - deletes Isabelle temporary files, dot files, PDF files, and SAL files. This is used for testing and assumes that Isabelle theories are the "original".

The examples directory also contains a makefile, with several commands relating to the examples.

  • clean - similar to cleanall above but also removes temporary files (e.g. error logs) created by our toolset.
  • testwf - runs the SAL wellformedness checker on the examples.
  • testsal - executes SAL on all theorems to ensure they pass and fail as expected.
  • dot - Same as dot above.

efsm-sal's People

Contributors

jmafoster1 avatar ramsay-t avatar

Watchers

 avatar  avatar

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.