Design & Verification of Restart-robust Industrial Control - - PowerPoint PPT Presentation

design verification of restart robust industrial control
SMART_READER_LITE
LIVE PREVIEW

Design & Verification of Restart-robust Industrial Control - - PowerPoint PPT Presentation

Design & Verification of Restart-robust Industrial Control Software Dimitri Bohlender VTSA18, Inria Nancy, 27 August 2018 Introduction On Restart-robustness Programmable Logic Controllers (PLCs) PLCs are devices tailored to the


slide-1
SLIDE 1

Design & Verification of Restart-robust Industrial Control Software

Dimitri Bohlender VTSA’18, Inria Nancy, 27 August 2018

slide-2
SLIDE 2

Introduction On Restart-robustness

Programmable Logic Controllers (PLCs)

◮ PLCs are devices tailored to the domain of industrial automation, e.g. for actuating valves of a tank ◮ Realise reactive systems, repeatedly executing the same task

Single Cycle PLC sensors actuators

1 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-3
SLIDE 3

Introduction On Restart-robustness

Programmable Logic Controllers (PLCs)

◮ PLCs are devices tailored to the domain of industrial automation, e.g. for actuating valves of a tank ◮ Realise reactive systems, repeatedly executing the same task

Single Cycle PLC Input Variables sensors actuators

1 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-4
SLIDE 4

Introduction On Restart-robustness

Programmable Logic Controllers (PLCs)

◮ PLCs are devices tailored to the domain of industrial automation, e.g. for actuating valves of a tank ◮ Realise reactive systems, repeatedly executing the same task

Single Cycle PLC Program Input Variables sensors actuators

1 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-5
SLIDE 5

Introduction On Restart-robustness

Programmable Logic Controllers (PLCs)

◮ PLCs are devices tailored to the domain of industrial automation, e.g. for actuating valves of a tank ◮ Realise reactive systems, repeatedly executing the same task

Single Cycle PLC Program Input Variables Output Variables sensors actuators

1 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-6
SLIDE 6

Introduction On Restart-robustness

Programmable Logic Controllers (PLCs)

◮ PLCs are devices tailored to the domain of industrial automation, e.g. for actuating valves of a tank ◮ Realise reactive systems, repeatedly executing the same task

Single Cycle PLC Program Input Variables Local Variables Output Variables sensors actuators

1 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-7
SLIDE 7

Introduction On Restart-robustness

PLC Software

◮ Written in textual & graphical languages from IEC 61131-3 ◮ Features no recursion ⇒ Formalised as Control Flow Automaton (CFA)

✞ ☎

1 PROGRAM RunningExample 2 VAR RETAIN 3 fs:BOOL := TRUE; 4 END_VAR 5 VAR 6 a:INT := 0; 7 b:INT := 0; 8 END_VAR 9 IF fs THEN 10 fs := FALSE; 11 b := 2; 12 END_IF 13 a := 1234/b; 14 END_PROGRAM

✝ ✆

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

2 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-8
SLIDE 8

Introduction On Restart-robustness

PLC Software

◮ Written in textual & graphical languages from IEC 61131-3 ◮ Features no recursion ⇒ Formalised as Control Flow Automaton (CFA)

✞ ☎

1 PROGRAM RunningExample 2 VAR RETAIN 3 fs:BOOL := TRUE; 4 END_VAR 5 VAR 6 a:INT := 0; 7 b:INT := 0; 8 END_VAR 9 IF fs THEN 10 fs := FALSE; 11 b := 2; 12 END_IF 13 a := 1234/b; 14 END_PROGRAM

✝ ✆

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

2 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-9
SLIDE 9

Introduction On Restart-robustness

PLC Software

◮ Written in textual & graphical languages from IEC 61131-3 ◮ Features no recursion ⇒ Formalised as Control Flow Automaton (CFA)

✞ ☎

1 PROGRAM RunningExample 2 VAR RETAIN 3 fs:BOOL := TRUE; 4 END_VAR 5 VAR 6 a:INT := 0; 7 b:INT := 0; 8 END_VAR 9 IF fs THEN 10 fs := FALSE; 11 b := 2; 12 END_IF 13 a := 1234/b; 14 END_PROGRAM

✝ ✆

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

2 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-10
SLIDE 10

Introduction On Restart-robustness

Specifications

◮ Intermediate states are not observable ⇒ Automation engineers and specs always refer to the observable state ◮ Most specifications can be formalised via invariants or temporal logics ◮ Off-the-shelf verifier backend checks formalised program w.r.t. the specification ◮ Domain-specific specifications may require dedicated procedures:

  • PLCopen-/Specification automata
  • Cycle-bounded temporal logics

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

3 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-11
SLIDE 11

Introduction On Restart-robustness

Specifications

◮ Intermediate states are not observable ⇒ Automation engineers and specs always refer to the observable state ◮ Most specifications can be formalised via invariants or temporal logics ◮ Off-the-shelf verifier backend checks formalised program w.r.t. the specification ◮ Domain-specific specifications may require dedicated procedures:

  • PLCopen-/Specification automata
  • Cycle-bounded temporal logics

5 IO

3 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-12
SLIDE 12

Introduction On Restart-robustness

Specifications

◮ Intermediate states are not observable ⇒ Automation engineers and specs always refer to the observable state ◮ Most specifications can be formalised via invariants or temporal logics ◮ Off-the-shelf verifier backend checks formalised program w.r.t. the specification ◮ Domain-specific specifications may require dedicated procedures:

  • PLCopen-/Specification automata
  • Cycle-bounded temporal logics

5 IO

3 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-13
SLIDE 13

Introduction On Restart-robustness

Specifications

◮ Intermediate states are not observable ⇒ Automation engineers and specs always refer to the observable state ◮ Most specifications can be formalised via invariants or temporal logics ◮ Off-the-shelf verifier backend checks formalised program w.r.t. the specification ◮ Domain-specific specifications may require dedicated procedures:

  • PLCopen-/Specification automata
  • Cycle-bounded temporal logics

5 IO

3 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-14
SLIDE 14

Introduction On Restart-robustness

Specifications

◮ Intermediate states are not observable ⇒ Automation engineers and specs always refer to the observable state ◮ Most specifications can be formalised via invariants or temporal logics ◮ Off-the-shelf verifier backend checks formalised program w.r.t. the specification ◮ Domain-specific specifications may require dedicated procedures:

  • PLCopen-/Specification automata
  • Cycle-bounded temporal logics

5 IO

3 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-15
SLIDE 15

Introduction On Restart-robustness

Retain Variables

◮ PLC applications are often safety critical ◮ Power outage or manual restart should not affect correctness ⇒ PLCs feature battery-backed memory for retain variables

Example

Retain drill’s position in automated processing of workpieces ◮ Assignments to such variables have unspecified semantics ◮ Prominent: delayed writing at the current PLC cycle’s end

4 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-16
SLIDE 16

Introduction On Restart-robustness

Retain Variables

◮ PLC applications are often safety critical ◮ Power outage or manual restart should not affect correctness ⇒ PLCs feature battery-backed memory for retain variables

Example

Retain drill’s position in automated processing of workpieces ◮ Assignments to such variables have unspecified semantics ◮ Prominent: delayed writing at the current PLC cycle’s end

4 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-17
SLIDE 17

Introduction On Restart-robustness

Retain Variables

◮ PLC applications are often safety critical ◮ Power outage or manual restart should not affect correctness ⇒ PLCs feature battery-backed memory for retain variables

Example

Retain drill’s position in automated processing of workpieces ◮ Assignments to such variables have unspecified semantics ◮ Prominent: delayed writing at the current PLC cycle’s end

4 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-18
SLIDE 18

Introduction On Restart-robustness

Retain Variables

◮ PLC applications are often safety critical ◮ Power outage or manual restart should not affect correctness ⇒ PLCs feature battery-backed memory for retain variables

Example

Retain drill’s position in automated processing of workpieces ◮ Assignments to such variables have unspecified semantics ◮ Prominent: delayed writing at the current PLC cycle’s end

4 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-19
SLIDE 19

Introduction On Restart-robustness

Retain Variables

◮ PLC applications are often safety critical ◮ Power outage or manual restart should not affect correctness ⇒ PLCs feature battery-backed memory for retain variables

Example

Retain drill’s position in automated processing of workpieces ◮ Assignments to such variables have unspecified semantics ◮ Prominent: delayed writing at the current PLC cycle’s end

4 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-20
SLIDE 20

Introduction On Restart-robustness

Restart-robustness

Program is restart-robust w.r.t. a spec, if it complies with the spec in the context of restarts

Restart-robustness w.r.t. invariant a ≥ 0

◮ Initialised with [fs → true, a → 0, b → 0] ◮ The flag fs is retained ◮ Nominal behaviour compliant? ◮ Robust with delayed writes? ◮ Fixable for delayed writes?

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

5 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-21
SLIDE 21

Introduction On Restart-robustness

Restart-robustness

Program is restart-robust w.r.t. a spec, if it complies with the spec in the context of restarts

Restart-robustness w.r.t. invariant a ≥ 0

◮ Initialised with [fs → true, a → 0, b → 0] ◮ The flag fs is retained ◮ Nominal behaviour compliant? ◮ Robust with delayed writes? ◮ Fixable for delayed writes?

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

5 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-22
SLIDE 22

Introduction On Restart-robustness

Restart-robustness

Program is restart-robust w.r.t. a spec, if it complies with the spec in the context of restarts

Restart-robustness w.r.t. invariant a ≥ 0

◮ Initialised with [fs → true, a → 0, b → 0] ◮ The flag fs is retained ◮ Nominal behaviour compliant? ◮ Robust with delayed writes? ◮ Fixable for delayed writes?

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

5 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-23
SLIDE 23

Introduction On Restart-robustness

Restart-robustness

Program is restart-robust w.r.t. a spec, if it complies with the spec in the context of restarts

Restart-robustness w.r.t. invariant a ≥ 0

◮ Initialised with [fs → true, a → 0, b → 0] ◮ The flag fs is retained ◮ Nominal behaviour compliant? ✓ ◮ Robust with delayed writes? ◮ Fixable for delayed writes?

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

5 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-24
SLIDE 24

Introduction On Restart-robustness

Restart-robustness

Program is restart-robust w.r.t. a spec, if it complies with the spec in the context of restarts

Restart-robustness w.r.t. invariant a ≥ 0

◮ Initialised with [fs → true, a → 0, b → 0] ◮ The flag fs is retained ◮ Nominal behaviour compliant? ✓ ◮ Robust with delayed writes? ◮ Fixable for delayed writes?

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

5 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-25
SLIDE 25

Introduction On Restart-robustness

Restart-robustness

Program is restart-robust w.r.t. a spec, if it complies with the spec in the context of restarts

Restart-robustness w.r.t. invariant a ≥ 0

◮ Initialised with [fs → true, a → 0, b → 0] ◮ The flag fs is retained ◮ Nominal behaviour compliant? ✓ ◮ Robust with delayed writes? a:=1234/0 ◮ Fixable for delayed writes?

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

5 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-26
SLIDE 26

Introduction On Restart-robustness

Restart-robustness

Program is restart-robust w.r.t. a spec, if it complies with the spec in the context of restarts

Restart-robustness w.r.t. invariant a ≥ 0

◮ Initialised with [fs → true, a → 0, b → 0] ◮ The flag fs is retained ◮ Nominal behaviour compliant? ✓ ◮ Robust with delayed writes? a:=1234/0 ◮ Fixable for delayed writes?

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

5 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-27
SLIDE 27

Introduction On Restart-robustness

Restart-robustness

Program is restart-robust w.r.t. a spec, if it complies with the spec in the context of restarts

Restart-robustness w.r.t. invariant a ≥ 0

◮ Initialised with [fs → true, a → 0, b → 0] ◮ The flag fs is retained ◮ Nominal behaviour compliant? ✓ ◮ Robust with delayed writes? a:=1234/0 ◮ Fixable for delayed writes? Retain b

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

5 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-28
SLIDE 28

Introduction On Restart-robustness

Delayed Write Semantics

◮ Approach by instrumenting the CFA with restart-behaviour ◮ Observation: In case of restart,

  • perations since last cycle are

irrelevant ⇒ Model as nondeterministic choice: restart in next cycle?

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

6 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-29
SLIDE 29

Introduction On Restart-robustness

Delayed Write Semantics

◮ Approach by instrumenting the CFA with restart-behaviour ◮ Observation: In case of restart,

  • perations since last cycle are

irrelevant ⇒ Model as nondeterministic choice: restart in next cycle?

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

6 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-30
SLIDE 30

Introduction On Restart-robustness

Delayed Write Semantics

◮ Approach by instrumenting the CFA with restart-behaviour ◮ Observation: In case of restart,

  • perations since last cycle are

irrelevant ⇒ Model as nondeterministic choice: restart in next cycle?

1 2 3 4 5 fs fs:=FALSE b:=2 !fs a:=1234/b IO

6 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-31
SLIDE 31

Introduction On Restart-robustness

Delayed Write Semantics

◮ Approach by instrumenting the CFA with restart-behaviour ◮ Observation: In case of restart,

  • perations since last cycle are

irrelevant ⇒ Model as nondeterministic choice: restart in next cycle?

1 2 3 4 5 la fs fs:=FALSE b:=2 !fs a:=1234/b IO a:=0; b:=0 TRUE ✓ ✗

6 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-32
SLIDE 32

Introduction On Restart-robustness

Parameter Synthesis

◮ Instrumentation enables checking restart-robustness ◮ Doesn’t help with finding safe configuration of retain variables ⇒ Add Boolean parameter ret_v for each non-retain variable v ◮ Synthesis boils down to solving ∃ Vpar∀ V \ Vpar . . .

1 2 3 4 5 la fs fs:=FALSE b:=2 !fs a:=1234/b IO a:=0; b:=0 TRUE

7 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-33
SLIDE 33

Introduction On Restart-robustness

Parameter Synthesis

◮ Instrumentation enables checking restart-robustness ◮ Doesn’t help with finding safe configuration of retain variables ⇒ Add Boolean parameter ret_v for each non-retain variable v ◮ Synthesis boils down to solving ∃ Vpar∀ V \ Vpar . . .

1 2 3 4 5 la fs fs:=FALSE b:=2 !fs a:=1234/b IO a:=0; b:=0 TRUE

7 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-34
SLIDE 34

Introduction On Restart-robustness

Parameter Synthesis

◮ Instrumentation enables checking restart-robustness ◮ Doesn’t help with finding safe configuration of retain variables ⇒ Add Boolean parameter ret_v for each non-retain variable v ◮ Synthesis boils down to solving ∃ Vpar∀ V \ Vpar . . .

1 2 3 4 5 la fs fs:=FALSE b:=2 !fs a:=1234/b IO a:=ret_a ? a : 0; b:=ret_b ? b : 0 TRUE

7 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-35
SLIDE 35

Introduction On Restart-robustness

Parameter Synthesis

◮ Instrumentation enables checking restart-robustness ◮ Doesn’t help with finding safe configuration of retain variables ⇒ Add Boolean parameter ret_v for each non-retain variable v ◮ Synthesis boils down to solving ∃ Vpar∀ V \ Vpar . . .

1 2 3 4 5 la fs fs:=FALSE b:=2 !fs a:=1234/b IO a:=ret_a ? a : 0; b:=ret_b ? b : 0 TRUE

7 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-36
SLIDE 36

Introduction On Restart-robustness

Approach

Observations: ◮ ∃∀-quantified Horn clauses harder than regular CHCs ◮ Our special case: existential quantification over Booleans Idea: ◮ Manage choice of parameters and reuse efficient procedures for reasoning about restart-robustness for fixed parameters ◮ Over-approximate set of “safe” parameters and refine it while counterexamples exist (CEGAR)

8 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-37
SLIDE 37

Introduction On Restart-robustness

Approach

Observations: ◮ ∃∀-quantified Horn clauses harder than regular CHCs ◮ Our special case: existential quantification over Booleans Idea: ◮ Manage choice of parameters and reuse efficient procedures for reasoning about restart-robustness for fixed parameters ◮ Over-approximate set of “safe” parameters and refine it while counterexamples exist (CEGAR)

8 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-38
SLIDE 38

Introduction On Restart-robustness

Approach

Observations: ◮ ∃∀-quantified Horn clauses harder than regular CHCs ◮ Our special case: existential quantification over Booleans Idea: ◮ Manage choice of parameters and reuse efficient procedures for reasoning about restart-robustness for fixed parameters ◮ Over-approximate set of “safe” parameters and refine it while counterexamples exist (CEGAR)

8 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-39
SLIDE 39

Introduction On Restart-robustness

Approach

Observations: ◮ ∃∀-quantified Horn clauses harder than regular CHCs ◮ Our special case: existential quantification over Booleans Idea: ◮ Manage choice of parameters and reuse efficient procedures for reasoning about restart-robustness for fixed parameters ◮ Over-approximate set of “safe” parameters and refine it while counterexamples exist (CEGAR)

8 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-40
SLIDE 40

Introduction On Restart-robustness

Experiments – Synthesis Runtime [s]

100 101 102 103 100 101 102 103 Z3 (MBQI) – 47 TO CEGAR-based Synthesis – 2 TO Future work will investigate restart-robustness as a relational property between the nominal and restart-behaviour.

9 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-41
SLIDE 41

Introduction On Restart-robustness

Experiments – Synthesis Runtime [s]

100 101 102 103 100 101 102 103 Z3 (MBQI) – 47 TO CEGAR-based Synthesis – 2 TO Future work will investigate restart-robustness as a relational property between the nominal and restart-behaviour.

9 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-42
SLIDE 42

Appendix

Related Work

◮ [Hau+15] assumes delayed write semantics and adapts static value analysis to distinguish between variables’ values before and after a restart ◮ Crash recoverability of C programs [KY16] is a related problem, using a similar modelling, but differing from restart-robustness in terms of requirements and program transformations ◮ SMV-based parameter synthesis for models of gene regulatory networks [Bat+10] ◮ Our counterexample-guided approach is most similar to [Cim+13] but does not require quantifier elimination, is independent of the chosen theory to model values, and works with any CHC-solving algorithm

10 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-43
SLIDE 43

Appendix

Algorithm 1: SynthRetainConf(P, ϕ) Input : Program P = ( X ⊎ Xpar, Xin, A, lEoC, lEoC, def ) with prametrised retains Predicate ϕ( X) characterising safe states Variables: Predicate safe( Xpar) charactering parameters that do not lead to violations Universally quantified Horn clauses H

1 H ← toHorn(P)

// Represent program as ∀CHCs

2 (

V , I, T) ← toSymTS(P) // and as symbolic transition system

3 safe(

Xpar) ← true // All parameters are assumed to be safe

4 while ¬sat (H ∪ {ϕ(

X) ← pEoC( X ⊎ Xpar), safe( Xpar)}) do // ∃ violating run?

5

k ← length of violating run

6

cpar ← cube of chosen (Boolean) parameter values in violating run

7

foreach lit in cpar do

8

¯ cpar ← cpar with negated lit // Flip literal

9

if sat (I( V ) ∧

0≤i<k T(

Vi, Vi+1) ∧ ¯ cpar ∧ ¬ϕ( Xk)) then // Still violating?

10

cpar ← cpar \ lit // Drop literal

11

safe( Xpar) ← safe( Xpar) ∧ ¬cpar // Block unsafe parameters

12 return safe(

Xpar) // (Potentially empty) region of safe parameters

11 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-44
SLIDE 44

Appendix

References I

[Bat+10] Grégory Batt et al. “Efficient parameter search for qualitative models of regulatory networks using symbolic model checking”. In: Bioinformatics 26.18 (2010). [Cim+13] Alessandro Cimatti et al. “Parameter synthesis with IC3”. In: Formal Methods in Computer-Aided Design, FMCAD 2013, Portland, OR, USA, October 20-23,

  • 2013. 2013, pp. 165–168.

[Hau+15] Stefan Hauck-Stattelmann et al. “Analyzing the Restart Behavior of Industrial Control Applications”. In: FM 2015: Formal Methods - 20th International Symposium, Oslo, Norway, June 24-26, 2015,

  • Proceedings. 2015, pp. 585–588.

12 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender
slide-45
SLIDE 45

Appendix

References II

[KY16] Eric Koskinen and Junfeng Yang. “Reducing crash recoverability to reachability”. In: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2016,

  • St. Petersburg, FL, USA, January 20 - 22, 2016. 2016,
  • pp. 97–108.

13 / 9 Design & Verification of Restart-robust Industrial Control Software

  • D. Bohlender