Releases: fadoss/umaudemc
Releases · fadoss/umaudemc
Latest release
The umaudemc
file is a compressed bundle that can be run as an executable ./umaudemc
in Linux and macOS, or with the python
command as PYTHON_PATH=umaudemc python -m umaudemc
.
Otherwise, the package can be installed through PyPI with pip install umaudemc
or using the attached wheel with pip install umaudemc-0.13.1-py3-none-any.whl
. (Outdated) Docker images are also available at ghcr.io/fadoss/umaudemc
with tags latest
for classical and qmaude
for quantitative model checking.
Changes introduced in 0.13
- The model checker for the Kleene-star semantics of the iteration (
--kleene-iteration
flag) now uses the more efficient builtin implementation of the strategy language introduced for thepcheck
command when using Spot as backend. Opaque strategies are not supported yet, and the previous implementation is still used for other backends. - New option
--kleene-iteration
to thegraph
command. It prints the graph used in the Kleene-aware model checker, where edges starting or terminating an iteration are annotated with an opaque identifier of the iteration. - Fixed a bug in the
graph
command when printing probabilistic strategy-controlled graphs. - The number of rewrites printed by
pcheck
with thestrategy
assignment method is more accurate. - The web-based interface does no longer depend on the deprecated
cgi
module. - The unmaintained GTK-based interface has been replaced by a thin wrapper around the web-based interface. Its only advantage is that a more confortable native file chooser is used for selecting Maude files. It requires GTK 4 and WebKitGTK 6.
- Removed backward compatibility code for very old versions of the
maude
Python library.
Bug fixes in 0.13.1
- Fixed a bug that causes an internal error when the observation of a QuaTEx expression is a constant.
- Fixed a bug in the parallel statistical simulator that affects macOS and Windows due to a different default behavior of the
multiprocessing
package.
Changes introduced in 0.12
- The connection with the probabilistic model checker Storm now uses its Python bindings StormPy if available. Otherwise, it falls back to the previous command-line communication.
- Weight annotations for
metadata
assignment method can now be terms depending on the matching substitution also in strategy-controlled models. - The
graph
command can now show transition labels for models whose probabilities/rates have been assigned with thestrategy
method (it was the only case were edge labels were not printed). - New method
MaudeModel.scheck
in the Python API for statistical model checking. - Bug fixes related to the normalization of probabilities under the
strategy
method.
Minor improvements in 0.12.1
- In
scheck
, thestrategy
assignment method has been renamed tostrategy-fast
andstrategy-full
has been renamed tostrategy
. Warnings are now printed bystrategy-fast
when local unquantified nondeterminism or conditional expressions are detected. However, conditional expressions whose conditions only contain tests can now safely used.
Bug fixes and minor improvements in 0.12.2
- Fixed a bug in the translation from QuaTEx to Python.
- Fixed a bug in the web interface when the result of a query is infinity.
- Test specifications in TOML are also admitted for Python ≥ 3.11.
- Switching to PEP 621 build system (pyproject.toml).
Changes in previous versions
Changes introduced in 0.11
All changes are related to the probabilistic and statistical model-checking commands pcheck
and scheck
:
- Support for the new
matchrew with weight
operator of the probabilistic Maude strategy language. - Support for checking continuous-time Markov chains (CTMC) in the
pcheck
command by prependingctmc-
to the existing probability assignment methods. Weights obtained by these methods are interpreted as firing rates instead of unnormalized probabilities (the only practical difference with respect to DTMC is the measurement of time). - In the
scheck
command, the special observationtime
now returns the elapsed time as calculated for a CTMC (regardless of whetherctmc-
is prepended to the assignment method name or not). The previous behavior, i.e. obtaining the number of rewrites, can be achieved with the special observationsteps
, and it is also maintained for thestep
andstrategy
methods. - Weight annotations for the probability assignment method
metadata
can now be terms of sortNat
orFloat
on the variables of the matching substitution, in addition to numeric literals. For the moment, this does not work for strategy-controlled models. - QuaTEx expressions containing the logical negation operator
!
are now supported.
Changes introduced in 0.10
All changes in this release are related to the statistical model-checking command scheck
:
- Parametric queries à la MultiVeSta are supported in QuaTEx formulae. They are written
eval parametric(E[expr], name, start, step, stop)
whereexpr
is a QuaTEx expression containing the variablename
. It will be evaluated in every pointstart + k * step
that is lower or equal tostop
. - New option
--plot
to plot the confidence intervals obtained from parametric queries using Matplotlib (which should be installed for this option). - QuaTEx expressions containing the logical operators
&&
and||
are now supported. - Fixed a bug in the execution of simultaneous queries that may produce wrong results.
- Fixed a bug in the parser of QuaTEx expressions that did not allow consecutive line comments.
- Fixed some ungraceful-termination bugs when the given assignment method argument is not valid or the input file contains no queries.
Changes introduced in 0.9
- New command
scheck
for statistical model checking using the Quantitative Temporal Expressions (QuaTEx) query language of the Vesta tool family. Probabilities can be expressed using the same methods supported by the probabilistic model-checking commandpcheck
(with some natural exceptions and additions) and the separate toolmvmaude
based on MultiVeSta. There is a new assignment methodpmaude
for operating with PMaude specifications. - JANI models can be obtained from probabilistic specifications by passing the
--format jani
option toumaudemc graph
. - Spin has been added as another qualitative model-checking backend for LTL. Notice that the communication with Spin relies on writing a Promela file with the low-level description of the Kripke structure. Hence, this backend is likely less efficient and scalable than the others.
Bug fixes and minor improvements in 0.9.1
- Fixed a bug in the
strategy
assignment method related to states where both a strategy solution and a rewrite are possible. - Fixed a bug in the
scheck
command where integer observations under thepmaude
assignment method were not properly handled. - Fixed a bug in the
prism
andstorm
backends that cause them to fail when an atomic proposition contains characters that are not admitted within PRISM labels.
Changes introduced in 0.8
- Probabilistic model checking is now possible through the
umaudemc gui --web
interface. - The wheel package now installs a command
umaudemc
for calling the tool as withpython -m umaudemc
. - Other minor improvements.
Changes introduced in 0.7
- In the
pcheck
command, steady-state and transient probabilities can be calculated by writing@steady
or@transient(n)
instead of the temporal formula. - The probability specification of the
--assign
argument can be loaded from file by passing@
followed by a file name to it. - In the
graph
command, PRISM files can be exported with--format prism
. The probability specification should be passed with the--passign
option, and every atomic proposition passed to--aprops
will be evaluated in the graph and set as a label, like for NuSMV output. - Probabilistic models can also be exported in DOT format, where edges will be annotated with their corresponding probabilities.
- Edges labels may include the line number of the statement that causes the transition by using the template
%n
in the format string of the--elabel
argument. - The list of standard and probabilistic backends of the
--backend
option can be specified with the environment variablesUMAUDEMC_BACKEND
andUMAUDEMC_PBACKEND
, respectively. The command-line option takes precedence over the environment variables. - Some test cases have been included in the repository, and several minor bugs have been fixed.
Bug fixes and minor improvements in 0.7.1
- In the
pcheck
command,--fraction
or-f
can be used to show approximate fractions instead of floating-point numbers for probabilities and expected values. PRISM_PATH
may point to a file instead of a directory to select the PRISM executable. This allows usingngprism
for avoiding the initialization overhead of the Java virtual machine. For consistency,STORM_PATH
can also point to a file.- Fixed a bug in the parsing of steady-state probabilities from Storm, whose internal identifiers may not coincide with the state variables of the model.
- Fixed a bug in the implementation of the
strategy
assignment method that misses some execution cycles inside conditional expressions. - Fixed some bugs in...