Skip to content

Benchmarks

tank overflow

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

Authored by Pierre Dantas for the ESBMC-PLC-Sec curation, adopted into this suite

What is proved

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

id kind claim requirement
P1 invariant !(pump && level_high) Fill pump must never run while the tank is full (overflow / actuator-manipulation LLB).
P2 reachability reachable: pump && level_high Witness (trigger synthesis) for the VIOLATION variant: a trace to this state recovers the bomb's arming sequence.

Variants

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

Files

file what it is size sha256
benchmark.yml benchmark metadata 0.9 KB 1153572e873b
bomb.st structured text 1.6 KB ef027bbe3208
clean.st structured text 1.0 KB 1b5041ae61be
props.yaml property file 0.4 KB 7c5b5fad344d

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.

  • tank_overflow__bomb__viac via C (props.yaml, expected VIOLATION): master VIOLATION
  • tank_overflow__clean__viac via C (props.yaml, expected SAFE): master SAFE