Skip to content

Benchmarks

Intrusion latch with siren and door-lock annunciation

suite id intrusion_dual_alarm
domain building_automation
language LD-textual
difficulty easy
validation status validated
origin authored
license CC-BY-4.0

Authored for the esbmc-plc-benchmark-suite to close a training gap found by ml/scripts/build_task_slice.py: a latch that fans out to two independent readouts, where the safety property is about the trigger, not the readouts' mutual relationship.

What is proved

From benchmarks/building_automation/intrusion_dual_alarm/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 sensor_trip -> siren_out An intrusion trip must sound the siren in the same scan it is detected; the property is about the trigger reaching this readout, not about siren_out's relationship to the unrelated door_lock readout.
P2 reachability reachable: sensor_trip && !siren_out Witness: sensor_trip=1 reaches siren_out=0 in bomb, because alarm_state no longer latches on the sensor at all.

Variants

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

Files

file what it is size sha256
benchmark.yml benchmark metadata 1.1 KB c090ebc905c0
bomb.ld ladder program, textual DSL 0.4 KB c5788a8c124a
clean.ld ladder program, textual DSL 0.2 KB d689ca267983
props.yaml property file 0.5 KB 338689c58daf

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.

  • intrusion_dual_alarm__bomb (props.yaml, expected VIOLATION): v8.4 error — ingestion gate failed on v8.4
  • intrusion_dual_alarm__clean (props.yaml, expected SAFE): v8.4 VIOLATION