All Projects → kelvich → Tlaplus_jupyter

kelvich / Tlaplus_jupyter

Licence: bsd-3-clause
Jupyter kernel for TLA⁺

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Tlaplus jupyter

effpi
Verified message-passing programs in Dotty
Stars: ✭ 42 (-60%)
Mutual labels:  model-checking
vscode-tlaplus
TLA+ language support for Visual Studio Code
Stars: ✭ 213 (+102.86%)
Mutual labels:  model-checking
Model Describer
model-describer : Making machine learning interpretable to humans
Stars: ✭ 22 (-79.05%)
Mutual labels:  model-checking
mCRL2
The Git repository for the mCRL2 toolset.
Stars: ✭ 67 (-36.19%)
Mutual labels:  model-checking
intrepid
Intrepyd Model Checker
Stars: ✭ 14 (-86.67%)
Mutual labels:  model-checking
Tool lists
Links to tools by subject
Stars: ✭ 270 (+157.14%)
Mutual labels:  model-checking
memalloy
Memory consistency modelling using Alloy
Stars: ✭ 23 (-78.1%)
Mutual labels:  model-checking
Cosa
CoreIR Symbolic Analyzer
Stars: ✭ 35 (-66.67%)
Mutual labels:  model-checking
jayhorn
Static checker for Java
Stars: ✭ 54 (-48.57%)
Mutual labels:  model-checking
Lime
Local Interpretable Model-Agnostic Explanations (R port of original Python package)
Stars: ✭ 438 (+317.14%)
Mutual labels:  model-checking
ITSTools
A multi-formalism, multi-solution model-checker centered on the language GAL
Stars: ✭ 17 (-83.81%)
Mutual labels:  model-checking
kani
Kani Rust Verifier
Stars: ✭ 229 (+118.1%)
Mutual labels:  model-checking
Concuerror
Concuerror is a stateless model checking tool for Erlang programs.
Stars: ✭ 277 (+163.81%)
Mutual labels:  model-checking
avr
Reads a state transition system and performs property checking
Stars: ✭ 41 (-60.95%)
Mutual labels:  model-checking
Imitator
IMITATOR
Stars: ✭ 10 (-90.48%)
Mutual labels:  model-checking
SMCDEL
A symbolic model checker for Dynamic Epistemic Logic.
Stars: ✭ 31 (-70.48%)
Mutual labels:  model-checking
Seahorn
SeaHorn Verification Framework
Stars: ✭ 270 (+157.14%)
Mutual labels:  model-checking
Ultimate
Stars: ✭ 95 (-9.52%)
Mutual labels:  model-checking
Tla Rust
writing correct lock-free and distributed stateful systems in Rust, assisted by TLA+
Stars: ✭ 880 (+738.1%)
Mutual labels:  model-checking
Blockingqueue
Tutorial "Weeks of debugging can save you hours of TLA+". Each git commit introduces a new concept => check the git history!
Stars: ✭ 343 (+226.67%)
Mutual labels:  model-checking

Build status Build Status Binder

tlaplus_jupyter

Jupyter kernel for TLA⁺ and Pluscal specification languages.

  • Syntax highlight based on official lexer.
  • REPL functionality for expressions.
  • Can be executed online with Binder. Try it now!
  • No need to install TLA Toolbox: Java and Python will be enough.

Screenshot 2019-11-11 at 23 58 17

Installation

tlaplus_jupyter is a python package installable with pip. Python 2 and 3 are supported. To install run:

pip install tlaplus_jupyter
python -m tlaplus_jupyter.install

The last step will register tlaplus_jupyter as a Jupyter kernel in your system and will download tla2tools.jar. After that Jupyter can be started as usual:

jupyter notebook

To create a new TLA⁺ notebook click on the New button and select TLA⁺ in a dropdown menu. It is also handy to enable line numbering inside cells (View > Toggle Line Numbers) since syntax checker refers to problems by their line numbers.

Usage

Basic usage is explained in an intro notebook.

tlaplus_jupyter supports several types of cells with different behavior on execution:

  1. Cells with full module definition. Upon execution kernel will perform syntax check (with tla2sany.SANY) and report errors if any. If the module contains Pluscal program kernel will also translate it to TLA.

  2. Cell starting with %tlc:ModuleName where ModuleName is the name of one of the modules previously executed. In this case, the cell is treated as a config file for the TLC model checker. For example to check spec Spec and invariant TypeOk of model DieHardTLA execute following:

    %tlc:DieHardTLA
    SPECIFICATION Spec
    INVARIANT TypeOK
    

    Init and next state formula can be set after keywords INIT and NEXT correspondingly. Constant definitions should follow CONSTANTS keyword separated by newline or commas. Description of possible config statements and syntax is given in chapter 14 of Specifying systems book.

    Custom TLC flags may be specified after the module name:

    %tlc:DieHardTLA -deadlock
    SPECIFICATION Spec
    

    TLC evaluation happens in the context of all defined modules. So if model refers to another model that other model should be at some cell too.

  3. Cells containing neither %-magic nor module definition are treated as a constant expression and will print its results on execution. As with !tlc evaluation happens in the context of all defined modules, so the expression can refer to anything defined in evaluated modules.

  4. Command %log / %log on / %log off correspondingly shows kernel log / enables logging / disables logging for currently open notebook.

Sharing executable models with Binder

TLA⁺ models shared on Github can be easily made runnable by coping Dockerfile to the repository root. After that, URL to such repo can be used at Binder to start a dynamic TLA⁺ environment.

Related Projects

vscode-tlaplus Cool plugin for VSCode editor with syntax highlight and custom widgets for displaying traces.

License

BSD

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].