Skip to main content

Jupyter kernel for TLA⁺

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tlaplus_jupyter-0.1.1.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tlaplus_jupyter-0.1.1-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file tlaplus_jupyter-0.1.1.tar.gz.

File metadata

  • Download URL: tlaplus_jupyter-0.1.1.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.5

File hashes

Hashes for tlaplus_jupyter-0.1.1.tar.gz
Algorithm Hash digest
SHA256 0f96419bdfea18438f91aa40ffdd4ace63d81660cade7719e3a8f4a771c99457
MD5 3883e08abe28bab2a20e48850bc5f6fd
BLAKE2b-256 4fe26a9bd91c6d13e5cc6a03544229b35a153399335041673d150c53c1de4f1c

See more details on using hashes here.

File details

Details for the file tlaplus_jupyter-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tlaplus_jupyter-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.40.0 CPython/3.7.5

File hashes

Hashes for tlaplus_jupyter-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 47a2ce7b0a2f3bdb188cbda0e45af85059ffac3aeb273a7ce9731f05a6a4f213
MD5 cc51cdb9df8356d24601794e9bd7f0f2
BLAKE2b-256 858e90046bddfb9076e4e96c2b40171b9680be96c7356a3ef1b394d454a7367b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page