Symbolic
This folder contains the data structures needed to encode the different abstractions.
Dionysos.Symbolic.SymbolicModel — Type
Abstract Type: SymbolicModel{N, M}Defines a generic symbolic model interface, where:
Nis the state space dimension.Mis the input space dimension.
Dionysos.Symbolic.GridBasedSymbolicModel — Type
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
Dionysos.Symbolic.SymbolicModelList — Type
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
Dionysos.Symbolic.LocalGridBasedSymbolicModel — Type
LocalGridBasedSymbolicModelWrapper around a global symbolic model that overrides only the source-domain enumeration while keeping the same global state/input mappings and retained set.
Dionysos.Symbolic.determinize_symbolic_model — Function
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.
Dionysos.Symbolic.init_abstraction_workers! — Function
init_abstraction_workers!(procs, symmodel, concrete_system_approx; warmup=true)Install heavy read-only data on each worker once. Optionally warm up the worker.
Dionysos.Symbolic._install_distributed_abstraction_data! — Function
_install_distributed_abstraction_data!(symmodel, concrete_system_approx)Install the heavy read-only abstraction objects in worker-local storage. This is meant to run on each worker process once.
Dionysos.Symbolic._warmup_distributed_abstraction_worker! — Function
_warmup_distributed_abstraction_worker!()Cheap warm-up of the main abstraction code paths on the current worker. This helps separate compilation/setup from actual benchmark timings.
Dionysos.Symbolic.partition_source_state_ids — Function
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.
Dionysos.Symbolic._run_local_partition_ids — Function
_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.
Dionysos.Symbolic.assign_states_to_workers — Function
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).
Dionysos.Symbolic._make_local_symmodel_from_ids — Function
_make_local_symmodel_from_ids(state_ids)Construct a local wrapper on the current worker using the worker-local parent symbolic model and the provided state ids.
Dionysos.Symbolic._clear_distributed_abstraction_data! — Function
_clear_distributed_abstraction_data!()Clear worker-local persistent storage.
Dionysos.Symbolic.clear_abstraction_workers! — Function
clear_abstraction_workers!(procs)Clear worker-local persistent storage.