.. _nmspec: ================== Language Reference ================== Nested model checking problems are specified in the simple language called **NML** and described in this section. The NM: language specify expressions that can be evaluated to integer numbers. They are stored in text files with *.nm* extension. Model checking ############## The **model checking primitive** is used to evaluate the result of a model checking problem. The result is a non-negative integer number whose meaning depends on the type of the model. When checking a property over a non-probabilistic model, the result is 0 (not satisfied) or 1 (satisfied). When checking a property over a probabilistic model, the result is the min (alt. max) probability that the property is satisfied in per thousand. For example, a probability equal to 0.1234 is represented as 123. Model checking models are specified using the (P)CSP# language (see `PAT documentation `_). The property to be verified is the first assertion of the given model. The result is computed using `PAT `_. +-----------------+ |mc(````) | +-----------------+ where +-----------------+-------------------------------------------+ |```` | Path to a (P)CSP# model (.csp, .pcsp) | +-----------------+-------------------------------------------+ Meta model checking ################### The **meta model checking primitive** is used to evaluate the result of a meta model checking problem. Similarly to the model checking primitive, it returns an integer number. Meta model models are specified using the (P)CSP# language (see `PAT documentation `_) extended with labeled place-holders of the form ``[id]`` where ``id`` is a label. These labeled place-holders can be used in place of integer constants (e.g., variable initial values, choice probabilities). A well-formed meta model checking call must bind all labeled place-holders of the given meta model with NML expressions. These bindings are specified in the *where* clause. When executed, the provided meta model is instantiated. A (P)CSP# model is obtained by substituting the occurrences of every labelled place-holder by the value of its binded expression. The property to be verified is the first assertion of the given model. The result is computed using `PAT `_. +---------------------------------------------------------------------------------+ |mcc(```` where ``