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. The state mapping, input mapping, retained domain and input domain remain global.
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.AbstractExecutionBackend — Type
AbstractExecutionBackendAbstract type for execution backends used to compute the transition relation in grid-based symbolic abstraction.
An execution backend defines how the abstraction computation is executed:
- sequentially,
- multithreaded,
- distributed across Julia workers,
- or via SLURM array jobs.
Dionysos.Symbolic.SequentialBackend — Type
SequentialBackend()Sequential execution (no parallelism).
Dionysos.Symbolic.ThreadedBackend — Type
ThreadedBackend(progress_dt=0.2)Multithreaded execution using all available Julia threads.
Parameters
progress_dt: minimum time (in seconds) between progress updates.
Dionysos.Symbolic.JuliaDistributedBackend — Type
JuliaDistributedBackend(
procs=nothing,
nparts=nothing,
partition_strategy=:roundrobin,
threaded_per_worker=false,
warmup_workers=true,
)Distributed execution over Julia worker processes.
Parameters
procs: worker IDs (defaults toDistributed.workers()).nparts: number of partitions (defaults to number of workers).partition_strategy: how to split states (:roundrobinor:contiguous).threaded_per_worker: enable threading inside each worker.warmup_workers: run a small warm-up to reduce compilation overhead.
Dionysos.Symbolic.SlurmArrayBackend — Type
SlurmArrayBackend(
nchunks,
chunk_id=nothing,
outdir,
partition_strategy=:contiguous,
write_only=true,
)Execution using SLURM array jobs (file-based parallelism).
Parameters
nchunks: total number of chunks (slurm array size).chunk_id: current chunk (defaults toSLURM_ARRAY_TASK_ID).outdir: directory where results are written.partition_strategy: how to split states (:contiguousor:roundrobin).write_only: iftrue, only writes transitions to disk (recommended for SLURM).