BIZONYÍTHATÓ SAFETY-RÉTEG

Turing-incomplete.
On purpose.

# ...
CELL PumpHole {
  INTERFACE {
    INPUT  temp:       FLOAT [celsius] RANGE(-40, 300);
    OUTPUT pump_power: FLOAT [pct]     RANGE(0, 100);
  }
  INVARIANTS {
    RULE power: pump_power <= 80;
  }
  HAZARDS {
    HAZARD overheat: temp > 250;
  }
}
✗ FAIL
: temp = 300, pump_power = 80

# ...
CELL MCAS {
  META { STANDARD: "DO-178C"; }
  INTERFACE {
    INPUT  aoa_left:  FLOAT [deg] RANGE(-30, 90);
    INPUT  aoa_right: FLOAT [deg] RANGE(-30, 90);
    OUTPUT trim_cmd:  FLOAT [deg] RANGE(-5, 5);
  }
  INVARIANTS {
    RULE authority: abs(trim_cmd) <= 2.5;
  }
  HAZARDS {
    HAZARD runaway: abs(aoa_left - aoa_right) > 5.5 and trim_cmd < 0;
  }
}
✗ FAIL
: aoa_left = 75°, aoa_right = 5°, trim_cmd = −2.5°

.bio → Z3 → Python · IEC 61131-3 ST · C

AI → ACTUATOR

IEC 61508 · SIL

OPEN · FREE

ENTERPRISE