Skip to content

Benchmarks

Three-pump station lockout

suite id st_three_pump_lockout
domain manufacturing
language ST
difficulty medium
validation status candidate
origin authored
license CC-BY-4.0

Authored for the ESBMC-PLC benchmark suite to cover N-ary (N>2) mutual_exclusion, previously unrepresented in the corpus.

What is proved

From benchmarks/manufacturing/st_three_pump_lockout/props.yaml. What each kind claims, and what it becomes on either route, is on The properties we prove.

id kind claim requirement
P1 mutual_exclusion never true together: pump_a, pump_b, pump_c At most one of the three pumps may run at a time; the shared discharge header cannot take combined flow from two or more.
P2 reachability reachable: pump_a && pump_b Trigger synthesis: a witness recovers the maintenance-override input combination that violates pairwise exclusion between pump_a and pump_b.

Variants

file expected verdict violates method
clean.st SAFE none expert
bomb.st VIOLATION P1 fault-injection

Files

file what it is size sha256
benchmark.yml benchmark metadata 1.3 KB 0d9a01fa458d
bomb.st structured text 1.4 KB 76cfdf2e5e1c
clean.st structured text 1.0 KB b58509b8e237
props.yaml property file 0.6 KB 33998fe94d21

Recorded runs

A task can carry two routes. ld is ESBMC's ladder front end reading the program directly. via C is the same solver reached through Beremiz and MatIEC, which is the only route that reaches ST, IL, FBD and SFC; see How ESBMC-PLC works.

No ESBMC run is recorded against this task yet. The lessons carry the recorded runs; see Reproducing to make your own.