|Note: This repository holds Electrum Analyzer version 1, which is no longer being updated as of version 1.2.2 (July 2019). Electrum Analyzer 2, which is based on the Alloy Analyzer 5, is developed in a different GitHub repository.|
This extension to the Alloy Analyzer by INESC TEC (the Institute for Systems and Computer Engineering, Technology and Science) and ONERA (the French aerospace research center) provides an analyzer for Electrum models, a temporal extension to the Alloy modeling language. The Analyzer provides both bounded and unbounded model checking procedures.
Alloy is a simple structural modeling language based on first-order logic developed at the Software Design Group. Its Analyzer can generate instances of invariants, simulate the execution of operations, and check user-specified properties of a model.
The best way to get started with Electrum is to download the executable
jar (see Running) and follow the tutorial. A repository of examples with familiar Alloy examples converted into Electrum is also available here.
$ java -jar electrum-1.2.jar
This will launch Electrum's/Alloy Analyzer's simple GUI, which is packaged with several examples. The file can also by run from the command-line, for more information run
$ java -jar electrum-1.2.jar --help
Building Electrum Analyzer
The Electrum Analyzer requires Java 8 and can be built using Maven. The script will also build Kodkod/Pardinus.
Clone the Electrum repository, as well as Pardinus' as a submodule
$ git clone -b master --recursive https://github.com/haslab/Electrum
$ cd Electrum
Run the Maven script to generate a self containable executable under
electrum/target. This will compile Electrum and Pardinus, and pack the available native libraries.
$ mvn clean package -DskipTests
Prototype: Electrum with actions
If you wish to build it, repeat the steps above, just replacing
-b master in the first line by
ERTMS Case Study
Our response to the ABZ 2018 call for case study submissions, the ERTMS system, can be found here. Or access directly the:
Electrum is open-source and available under the MIT license, as is the Alloy Analyzer. However, it utilizes several third-party packages whose code may be distributed under a different license (see the various LICENSE files in the distribution for details), including Kodod and its extension Pardinus, and the underlying solvers (SAT4J, MiniSat, Glucose/Syrup, (P)Lingeling, Yices, zChaff, CryptoMiniSat and Electrod. CUP and JFlex are also used to generate the parser.
- Nuno Macedo, HASLab, INESC TEC & Universidade do Minho, Portugal
- Julien Brunel, ONERA/DTIS & Université fédérale de Toulouse, France
- David Chemouil, ONERA/DTIS & Université fédérale de Toulouse, France
- Alcino Cunha, HASLab, INESC TEC & Universidade do Minho, Portugal
- Denis Kuperberg, TU Munich, Germany
- Eduardo Pessoa, HASLab, INESC TEC & Universidade do Minho, Portugal
1.2 (April 2019)Electrum
- Several improvements and bug fixes to the interface, visualiser and evaluator
1.1 (May 2018)Electrum
- Initial support for symbolic bound extraction
- Repository of examples
- Many enhancements and bug fixes
- Accompanied the ASE'18 submission
1.0 (January 2018)Electrum
- First stable public release (accompanying the ABZ'18 submission)
- Common interface for temporal relational model finding problems through Pardinus
- Bounded and unbounded model checking of Electrum models
- Uniform visualisation of trace instances
- Support for a decomposed solving strategy
0.2 (November 2016)Electrum
- Direct embedding into a temporal extension to Kodkod (Pardinus)
- Visualizer natively supports temporal solutions
0.1 (March 2016)Electrum
- First release (accompanying the FSE'16 submission)
- Bounded model checking of Electrum models
- Electrum models expanded into Alloy models
- Expanded Alloy models returned to the visualizer
Electrum has been developed in the context of the TRUST project, and incorporates contributions from several publications:
- J. Brunel, D. Chemouil, A. Cunha and N. Macedo. The Electrum Analyzer: Model checking relational first-order temporal specifications. In the proceedings ASE'18. ACM, 2018.
- A. Cunha and N. Macedo. Validating the Hybrid ERTMS/ETCS Level 3 concept with Electrum. In the proceedings of ABZ'18. LNCS 10817. Springer, 2018.
- J. Brunel, D. Chemouil, A. Cunha, T. Hujsa, N. Macedo and J. Tawa. Proposition of an action layer for Electrum. In the proceedings of ABZ'18. LNCS 10817. Springer, 2018.
- N. Macedo, A. Cunha and E. Pessoa. Exploiting partial knowledge for efficient model analysis. In the proceedings of ATVA'17. LNCS 10482. Springer, 2017.
- N. Macedo, J. Brunel, D. Chemouil, A. Cunha and D. Kuperberg. Lightweight specification and analysis of dynamic systems with rich configurations. In the proceedings of FSE'16. ACM, 2016.
- N. Macedo, A. Cunha and T. Guimarães. Exploring scenario exploration. In the proceedings of FASE'15. LNCS 9033. Springer, 2015.
- A. Cunha, N. Macedo and T. Guimarães. Target oriented relational model finding. In the proceedings of FASE'14. LNCS 8411. Springer, 2014.