Symbolic

This folder contains the data structures needed to encode the different abstractions.

Dionysos.Symbolic.SymbolicModelType
Abstract Type: SymbolicModel{N, M}

Defines a generic symbolic model interface, where:

  • N is the state space dimension.
  • M is the input space dimension.
source
Dionysos.Symbolic.GridBasedSymbolicModelType
GridBasedSymbolicModel{N,M} <: SymbolicModel{N,M}

Intermediate abstract type for symbolic models that rely on a grid-based or mapping-based discretization.

Semantics:

  • state mapping: global abstract-state numbering / coordinate map
  • input mapping: global abstract-input numbering / coordinate map
  • source domain (Xset): states enumerated as sources
  • retained domain (Rset): states allowed as targets
source
Dionysos.Symbolic.SymbolicModelListType

SymbolicModelList:

  • XMapping / UMapping define universes and conversions
  • Xset: states we build from (sources)
  • Rset: allowed states as targets (superset; "relation universe allowance")
  • Uset: inputs considered
source
Dionysos.Symbolic.determinize_symbolic_modelFunction
determinize_symbolic_model(sym; AutomatonConstructor, convert_U_to_list)

Return a deterministic symbolic model by refining the input alphabet: each original input u is replaced by a pair (u_coord, target_state).

This is useful to turn nondeterministic transitions into deterministic ones by making the target part of the symbol.

source
Dionysos.Symbolic.partition_source_state_idsFunction
partition_source_state_ids(symmodel, nparts; strategy=:roundrobin)

Partition the source abstract states into nparts lists of state ids. This ships only integer ids to workers, not the whole symbolic model.

source
Dionysos.Symbolic._run_local_partition_idsFunction
_run_local_partition_ids(state_ids; ...)

Run abstraction on the current worker for the source states listed in state_ids, using the worker-local persistent symbolic model and concrete approximation.

source
Dionysos.Symbolic.assign_states_to_workersFunction
assign_states_to_workers(parts, procs)

Assign the partition list parts to workers in procs using round-robin, then merge the partitions assigned to the same worker into a single vector of state ids. Returns a vector of pairs (p, ids).

source