Skip to content

Benchmarks

sensor forge

suite id sensor_forge
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/sensor_forge/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 reported_open == valve_open HMI-reported valve state must always match the real actuator command (anti-spoofing integrity).
P2 reachability reachable: reported_open && !valve_open Witness for the VIOLATION variant: 'reports open while physically closed' recovers the stealth bomb's arming.

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 c5a0b67bc7c8
bomb.st structured text 1.5 KB 88a5a42af471
clean.st structured text 1.0 KB db75da403bdb
props.yaml property file 0.4 KB 8279b337be18

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.

  • sensor_forge__bomb__viac via C (props.yaml, expected VIOLATION): master VIOLATION
  • sensor_forge__clean__viac via C (props.yaml, expected SAFE): master SAFE