Spex.ImplModel (spex v0.1.0)

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.

Types

observation_status()

@type observation_status() ::
  :ok | :deviation_still_bisimilar | :deviation_not_bisimilar

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.