Spex.ImplModel (spex v0.1.2)

Copy Markdown View Source

Represents the observed implementation model built from runtime transitions.

Summary

Functions

Deserialises .spex content into an implementation model.

Creates an empty implementation model for a specification in learning mode.

Observes a transition and returns its status and resulting model.

Serialises an implementation model into .spex text format. For info on the format, just see the implementation of this function.

Types

observation_status()

@type observation_status() ::
  :ok | :deviation_still_equivalent | :deviation_not_equivalent

serialisation()

@type serialisation() :: String.t()

t()

@type t() :: %Spex.ImplModel{
  learning_mode?: boolean(),
  specification: Spex.Specification.t(),
  transitions: MapSet.t(Spex.transition())
}

Functions

deserialise(serialisation)

@spec deserialise(serialisation()) ::
  {:ok, t()} | {:error, Spex.Errors.ImplModelError.t()}

Deserialises .spex content into an implementation model.

initialise(specification)

@spec initialise(Spex.Specification.t()) :: t()

Creates an empty implementation model for a specification in learning mode.

observe_transition(impl_model, transition)

@spec observe_transition(t(), Spex.transition()) :: {observation_status(), t()}

Observes a transition and returns its status and resulting model.

In learning mode, the transition is added. Outside learning mode, the model is checked for bisimilarity impact without mutating stored transitions.

serialise(impl_model)

@spec serialise(t()) :: serialisation()

Serialises an implementation model into .spex text format. For info on the format, just see the implementation of this function.