All Projects → wimmers → munta

wimmers / munta

Licence: MIT license
Fully verified model checker for realtime systems

Programming Languages

Isabelle
26 projects
Standard ML
205 projects
ocaml
1615 projects

Projects that are alternatives of or similar to munta

eldarica
The Eldarica model checker
Stars: ✭ 41 (+192.86%)
Mutual labels:  verification, model-checker
VerificationCodeBox
验证码 && 密码 校验View(类似于支付宝、网商银行等密码校验框)
Stars: ✭ 25 (+78.57%)
Mutual labels:  verification
DPOTPView
Customisable OTP view and Passcode view
Stars: ✭ 52 (+271.43%)
Mutual labels:  verification
qcert
Compilation and Verification of Data-Centric Languages
Stars: ✭ 50 (+257.14%)
Mutual labels:  verification
nim-systemverilog-dpic
Using Nim to interface with SystemVerilog test benches via DPI-C
Stars: ✭ 18 (+28.57%)
Mutual labels:  verification
pact-provider-verifier
Cross-platform, generic language, Pact provider verification tool
Stars: ✭ 27 (+92.86%)
Mutual labels:  verification
docker-mkcert
Docker container for creating valid local ssl certificates
Stars: ✭ 87 (+521.43%)
Mutual labels:  verification
go-journal
Verified, concurrent, crash-safe transaction system
Stars: ✭ 28 (+100%)
Mutual labels:  verification
wal
WAL enables programmable waveform analysis.
Stars: ✭ 36 (+157.14%)
Mutual labels:  verification
netdice
A scalable and accurate probabilistic network configuration analyzer verifying network properties in the face of random failures.
Stars: ✭ 28 (+100%)
Mutual labels:  verification
gini
A fast SAT solver
Stars: ✭ 139 (+892.86%)
Mutual labels:  verification
async fifo
A dual clock asynchronous FIFO written in verilog, tested with Icarus Verilog
Stars: ✭ 117 (+735.71%)
Mutual labels:  verification
libvata
VATA Tree Automata Library
Stars: ✭ 23 (+64.29%)
Mutual labels:  verification
verif
Software for verifying weather forecasts
Stars: ✭ 70 (+400%)
Mutual labels:  verification
vericert
A formally verified high-level synthesis tool based on CompCert and written in Coq.
Stars: ✭ 63 (+350%)
Mutual labels:  verification
lms-verify
generative programming & verification
Stars: ✭ 29 (+107.14%)
Mutual labels:  verification
node-email-verifier
The best possible way to verify and validate an email address.
Stars: ✭ 38 (+171.43%)
Mutual labels:  verification
node-identif
🔑 Helper class to verify one's identity via personal channels(SMS, Phone, E-Mail and more!)
Stars: ✭ 27 (+92.86%)
Mutual labels:  verification
in3-legacy
[Deprecated] Typescript-version of the IN3 client.
Stars: ✭ 69 (+392.86%)
Mutual labels:  verification
SyReNN
SyReNN: Symbolic Representations for Neural Networks
Stars: ✭ 35 (+150%)
Mutual labels:  verification

MUNTA -- Fully Verified Model Checker for Timed Automata

Introduction

MUNTA is

  • a model checker for the popular realtime systems modeling formalism of Timed Automata
  • formally verified with Isabelle/HOL: there is a machine-checked proof that it only computes correct results!

MUNTA is at an early stage of development. Nevertheless, you can:

  • run the model checker on a number of benchmarks
  • browse the Isabelle/HOL proof
  • try its graphical user interface here

Graphical User Interface

MUNTA now features a graphical user interface:

Building

The following instructions should work on all Unix systems.

To build the checker:

Install the MLton compiler. Then run:

cd ML
make

To browse the sources interactively in Isabelle:

Install Isabelle and the AFP. Then run:

isabelle jedit -l Refine_Imperative_HOL

and open one of the .thy files. A good starting point is the file where the model checker is exported to executable code: Simple_Networks/Simple_Network_Language_Export_Code.thy.

To build the Isabelle sources and extract the checker source code:

Install Isabelle and the AFP. Then run:

isabelle build -d . TA_Code

and build the checker as described above.

Verification Server

After building, you can run the verification server via:

cd ML
python2 server.py

The server will run under port 3069 and communicates with the GUI.

Running

Pick one of the .muntax files from benchmarks and run:

ML/munta -m benchmarks/<the_benchmark>.muntax

To list MUNTA's command line options, run:

ML/munta -h

Documentation

Input Format

MUNTA accepts a simple modeling language, which is formally described in the file Simple_Networks/Simple_Network_Language.thy. Input models and formulas are specified in the JSON format (MUNTA's file ending: .muntax). Examples can be found in the folder benchmarks.

Benchmarks

The benchmarks are derived from the UPPAAL and TChecker benchmarks.

Outdated

The following instructions are outdated and in the progress of being updated:

Input Format

MUNTA is aimed at understanding bytecode produced by UPPAAL. However, for the time being, this bytecode needs to be pre-processed slightly. You can find some pre-processed benchmarks in benchmarks. The input format is documented in UPPAAL_Asm.thy and ML/Checker.sml.

To build the checker with OCaml:

Replace Big_int with Big_int_Z in UPPAAL_Model_Checker.ml and to_int with int_of_big_int. Then run

cd ML
ocamlfind ocamlopt -package zarith -package angstrom -linkpkg nums.cmxa -linkpkg UPPAAL_Model_Checker.ml -linkpkg Checker.ml

Isabelle Formalizations

Human readable .pdf documents (with textual annotations) of the formalizations can be produced by Isabelle. Run

isabelle build -d . TA
isabelle build -d . TA_All

and you will get the following:

  • output/abstract_reachability.pdf: the abstract formalization of reachability checking for Timed Automata
  • output/model_checking.pdf: the formalization of MUNTA and the route from the abstract formalization to the correctness proof for MUNTA
  • output/abstract_reachability_proofs.pdf, output/model_checking_proofs.pdf: variants of the above documents with proofs
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].