scamper/validation

Configuration validation, deadlock detection, and reachability analysis.

Types

Warnings produced by config validation.

pub type ValidationWarning(state) {
  UnreachableState(state: state)
  TransitionFromFinalState(state: state)
  MissingFallback(from: state)
}

Constructors

  • UnreachableState(state: state)

    A state has no incoming transitions (unreachable from initial state).

  • TransitionFromFinalState(state: state)

    A final state has outgoing transitions defined (which will never execute).

  • MissingFallback(from: state)

    A group of guarded transitions has no fallback (guard = None) rule.

Values

pub fn detect_deadlocks(
  config: config.Config(state, context, event),
) -> List(state)

Find non-final states that have no outgoing transitions (deadlock states).

pub fn reachable_states(
  config: config.Config(state, context, event),
  initial_state: state,
) -> List(state)

Find all states reachable from the initial state via BFS. Ignores guards (assumes all guards could pass).

pub fn validate_config(
  config: config.Config(state, context, event),
  initial_state: state,
) -> Result(Nil, List(ValidationWarning(state)))

Validate a config for common issues. Returns Ok(Nil) if no warnings, or Error with a list of warnings.

Search Document