-
Notifications
You must be signed in to change notification settings - Fork 4
Tutorial
David Chemouil edited this page May 2, 2018
·
15 revisions
This brief tutorial to Electrum is aimed at users already fluent in Alloy.
We also suppose that Electrum Analyzer is already installed.
In a nutshell, Electrum is an extension of Alloy with:
- A keyword ("
var
") to declare some fields and signature as mutable (i.e. their valuation may vary along time); - Connectives from Linear Temporal Logic with Past (PLTL) to express properties of traces;
- Primed expressions that represent the value of the said expressions in the next instant (so the prime sign is not a valid character for identifiers anymore);
- Bounded and unbounded model-checking procedures to analyze the resulting specifications.
If you are used to modelling Alloy specifications using the "local state idiom", then the shift is very easy:
- Relations that were indexed by
Time
will usually be just taggedvar
; - You need not join variable expression with an expression denoting an instant;
- You must replace quantifications over time by the corresponding, classic LTL operators (e.g.
always
,eventually
...); - Traces are now always infinite sequences of states, hence there is no hypothetical last state of a trace to consider (but it also means that if your specification models a system that may terminate, you must still ensure traces are infinite, otherwise your specification may be inconsistent: we shall see later how to achieve this).
To be continued...