safety analysis of systems
play

Safety Analysis of Systems Aaron R. Bradley Stanford University - PowerPoint PPT Presentation

Safety Analysis of Systems Aaron R. Bradley Stanford University Safety Analysis of Systems 1/39 Why Analyze Systems? Two trends: increasing prominence in controlling and decision-making roles rising complexity (multi-core


  1. Safety Analysis of Systems Aaron R. Bradley Stanford University Safety Analysis of Systems – 1/39

  2. Why Analyze Systems? • Two trends: • increasing prominence in controlling and decision-making roles • rising complexity (multi-core processors) Safety Analysis of Systems – 2/39

  3. Why Analyze Systems? • Two trends: • increasing prominence in controlling and decision-making roles • rising complexity (multi-core processors) Demand for guarantees Safety Analysis of Systems – 2/39

  4. Why Analyze Systems? • Two trends: • increasing prominence in controlling and decision-making roles • rising complexity (multi-core processors) Demand for guarantees • Methods have other applications: • Study other (natural & engineered) systems. • Characterize decidability & complexity. • Provide tools (constraint solvers, static analyses) . Safety Analysis of Systems – 2/39

  5. What Comprises Verification? int [] BubbleSort ( int [] a 0 , int ℓ, int u ) { int [] a := a 0 ; for ( int i := u ; i > ℓ ; i := i − 1) for ( int j := ℓ ; j < i ; j := j + 1) if ( a [ j ] > a [ j + 1]) { int t := a [ j ]; a [ j ] := a [ j + 1]; a [ j + 1] := t ; } return a ; } Safety Analysis of Systems – 3/39

  6. What Comprises Verification? • Implementation int [] BubbleSort ( int [] a 0 , int ℓ, int u ) { { int [] a := a 0 ; for ( int m := u ; m > ℓ ; m := m − 1) for ( int n := ℓ ; n < m ; n := n + 1) if ( a [ n ] > a [ n + 1]) { int t := a [ n ]; a [ n ] := a [ n + 1]; a [ n + 1] := t ; } return a ; } Safety Analysis of Systems – 3/39

  7. What Comprises Verification? • Implementation @ pre 0 ≤ ℓ, u < | a 0 | @ post ∀ i, j. ℓ ≤ i ≤ j ≤ u → rv [ i ] ≤ rv [ j ] • Specification ∧ | rv | = | a 0 | ∧ ∀ i. 0 ≤ i < ℓ → rv [ i ] = a 0 [ i ] ∧ ∀ i. u < i < | rv | → rv [ i ] = a 0 [ i ] int [] BubbleSort ( int [] a 0 , int ℓ, int u ) { { int [] a := a 0 ; for ( int m := u ; m > ℓ ; m := m − 1) for ( int n := ℓ ; n < m ; n := n + 1) if ( a [ n ] > a [ n + 1]) { int t := a [ n ]; a [ n ] := a [ n + 1]; a [ n + 1] := t ; } return a ; } Safety Analysis of Systems – 3/39

  8. What Comprises Verification? • Implementation @ pre 0 ≤ ℓ, u < | a 0 | @ post ∀ i, j. ℓ ≤ i ≤ j ≤ u → rv [ i ] ≤ rv [ j ] • Specification ∧ | rv | = | a 0 | ∧ ∀ i. 0 ≤ i < ℓ → rv [ i ] = a 0 [ i ] ∧ ∀ i. u < i < | rv | → rv [ i ] = a 0 [ i ] int [] BubbleSort ( int [] a 0 , int ℓ, int u ) { • Strengthen { int [] a := a 0 ; for invariant generation i ≤ u ∧ | a | = | a 0 | 2 3 ∧ ∀ i, j. m ≤ i ≤ j ≤ u → a [ i ] ≤ a [ j ] 6 7 [BMS05c, BM06, BM07] @ L 1 : ∧ ∀ i, j. ℓ ≤ i ≤ m < j ≤ u → a [ i ] ≤ a [ j ] 6 7 6 7 ∧ ∀ i. 0 ≤ i < ℓ → a [ i ] = a 0 [ i ] 4 5 ∧ ∀ i. u < i < | a | → a [ i ] = a 0 [ i ] ( int m := u ; m > ℓ ; m := m − 1) for ℓ < i ≤ u ∧ ℓ ≤ j ≤ i ∧ | a | = | a 0 | 2 3 ∧ ∀ i, j. m ≤ i ≤ j ≤ u → a [ i ] ≤ a [ j ] 6 7 ∧ ∀ i, j. ℓ ≤ i ≤ m < j ≤ u → a [ i ] ≤ a [ j ] 6 7 @ L 2 : 6 7 ∧ ∀ i. ℓ ≤ i < n → a [ i ] ≤ a [ n ] 6 7 6 7 ∧ ∀ i. 0 ≤ i < ℓ → a [ i ] = a 0 [ i ] 4 5 ∧ ∀ i. u < i < | a | → a [ i ] = a 0 [ i ] ( int n := ℓ ; n < m ; n := n + 1) Safety Analysis of Systems – 3/39

  9. What Comprises Verification? • Implementation @ pre 0 ≤ ℓ, u < | a 0 | @ post ∀ i, j. ℓ ≤ i ≤ j ≤ u → rv [ i ] ≤ rv [ j ] • Specification ∧ | rv | = | a 0 | ∧ ∀ i. 0 ≤ i < ℓ → rv [ i ] = a 0 [ i ] ∧ ∀ i. u < i < | rv | → rv [ i ] = a 0 [ i ] int [] BubbleSort ( int [] a 0 , int ℓ, int u ) { • Strengthen { int [] a := a 0 ; for invariant generation i ≤ u ∧ | a | = | a 0 | 2 3 ∧ ∀ i, j. m ≤ i ≤ j ≤ u → a [ i ] ≤ a [ j ] 6 7 [BMS05c, BM06, BM07] @ L 1 : ∧ ∀ i, j. ℓ ≤ i ≤ m < j ≤ u → a [ i ] ≤ a [ j ] 6 7 6 7 ∧ ∀ i. 0 ≤ i < ℓ → a [ i ] = a 0 [ i ] 4 5 • Check argument ∧ ∀ i. u < i < | a | → a [ i ] = a 0 [ i ] ( int m := u ; m > ℓ ; m := m − 1) for decision procedures ℓ < i ≤ u ∧ ℓ ≤ j ≤ i ∧ | a | = | a 0 | 2 3 ∧ ∀ i, j. m ≤ i ≤ j ≤ u → a [ i ] ≤ a [ j ] [BMS06] 6 7 ∧ ∀ i, j. ℓ ≤ i ≤ m < j ≤ u → a [ i ] ≤ a [ j ] 6 7 @ L 2 : 6 7 ∧ ∀ i. ℓ ≤ i < n → a [ i ] ≤ a [ n ] 6 7 6 7 ∧ ∀ i. 0 ≤ i < ℓ → a [ i ] = a 0 [ i ] 4 5 ∧ ∀ i. u < i < | a | → a [ i ] = a 0 [ i ] ( int n := ℓ ; n < m ; n := n + 1) Safety Analysis of Systems – 3/39

  10. What Comprises Verification? Contributions: • Implementation @ pre 0 ≤ ℓ, u < | a 0 | • Decision procedures: @ post ∀ i, j. ℓ ≤ i ≤ j ≤ u → rv [ i ] ≤ rv [ j ] • Specification ∧ | rv | = | a 0 | • theory of arrays [BMS06] ∧ ∀ i. 0 ≤ i < ℓ → rv [ i ] = a 0 [ i ] ∧ ∀ i. u < i < | rv | → rv [ i ] = a 0 [ i ] • Property-guided invariant generation: int [] BubbleSort ( int [] a 0 , int ℓ, int u ) { • Strengthen { int [] a := a 0 ; for • clauses (hardware) [BM07] invariant generation i ≤ u ∧ | a | = | a 0 | 2 3 ∧ ∀ i, j. m ≤ i ≤ j ≤ u → a [ i ] ≤ a [ j ] • linear/polynomial inequalities (software) 6 7 [BMS05c, BM06, BM07] @ L 1 : ∧ ∀ i, j. ℓ ≤ i ≤ m < j ≤ u → a [ i ] ≤ a [ j ] 6 7 6 7 ∧ ∀ i. 0 ≤ i < ℓ → a [ i ] = a 0 [ i ] 4 5 [BM06] • Check argument ∧ ∀ i. u < i < | a | → a [ i ] = a 0 [ i ] ( int m := u ; m > ℓ ; m := m − 1) • linear inequalities of integers (mixed) for decision procedures ℓ < i ≤ u ∧ ℓ ≤ j ≤ i ∧ | a | = | a 0 | 2 3 [BMS05c] ∧ ∀ i, j. m ≤ i ≤ j ≤ u → a [ i ] ≤ a [ j ] [BMS06] 6 7 ∧ ∀ i, j. ℓ ≤ i ≤ m < j ≤ u → a [ i ] ≤ a [ j ] 6 7 @ L 2 : 6 7 • Termination analysis ∧ ∀ i. ℓ ≤ i < n → a [ i ] ≤ a [ n ] 6 7 6 7 ∧ ∀ i. 0 ≤ i < ℓ → a [ i ] = a 0 [ i ] 4 5 ∧ ∀ i. u < i < | a | → a [ i ] = a 0 [ i ] [BMS05d, BMS05b, BMS05a, BMS05c] ( int n := ℓ ; n < m ; n := n + 1) Safety Analysis of Systems – 3/39

  11. Invariant • Invariant: • • • Over-approximates reachable states • • • Represented as formula in practice • • • Safety Analysis of Systems – 4/39

  12. Invariant • Invariant: • • • Over-approximates reachable states • • • Represented as formula in practice • • Inductive Invariant: • • Initiation: Includes initial states • Consecution: Closed under transitions Safety Analysis of Systems – 4/39

  13. Invariant • Invariant: • • • Over-approximates reachable states • • • Represented as formula in practice • • Inductive Invariant: • • Initiation: Includes initial states • Consecution: Closed under transitions Based on mathematical induction: • Base case: Initiation • Inductive case: Consecution Safety Analysis of Systems – 4/39

  14. Formally... Transition system � x, Θ , ρ � : • Θ[ x ] : initial states x ≥ 0 x ′ = x + 1 ∨ x ′ = 0 • ρ [ x, x ′ ] : transition relation Safety Analysis of Systems – 5/39

  15. Formally... Transition system � x, Θ , ρ � : • Θ[ x ] : initial states x ≥ 0 x ′ = x + 1 ∨ x ′ = 0 • ρ [ x, x ′ ] : transition relation Inductive invariant ϕ : • Θ ⇒ ϕ (initiation) • ϕ ∧ ρ ⇒ ϕ ′ (consecution) 1. x ≥ 0 ⇒ x ≥ 0 2. x ≥ 0 ∧ ( x ′ = x + 1 ∨ x ′ = 0) ⇒ x ′ ≥ 0 Safety Analysis of Systems – 5/39

  16. Formally... Given � x, Θ , ρ � and property Π . Goal: Prove that Π is invariant. Safety Analysis of Systems – 6/39

  17. Formally... Given � x, Θ , ρ � and property Π . Goal: Prove that Π is invariant. Inductive method: Find strengthening assertion χ such that • Θ ⇒ Π ∧ χ • • Π ∧ χ ∧ ρ ⇒ Π ′ ∧ χ ′ • • • • • • • Safety Analysis of Systems – 6/39

  18. Formally... Given � x, Θ , ρ � and property Π . Goal: Prove that Π is invariant. Inductive method: Find strengthening assertion χ such that • Θ ⇒ Π ∧ χ • • Π ∧ χ ∧ ρ ⇒ Π ′ ∧ χ ′ • • • • • • • Safety Analysis of Systems – 6/39

  19. Challenges 1. Prove initiation and consecution automatically (especially for infinite-state systems) ⇒ decision procedures 2. Discover strengthening invariants automatically ⇒ invariant generation procedures Safety Analysis of Systems – 7/39

  20. Outline 1. Introduction 2. Decision Procedure for Arrays 3. Invariant Generation of Clauses 4. Course: The Calculus of Computation 5. Directions for Research Safety Analysis of Systems – 8/39

  21. Theory of Arrays: Context Important theory with long history: • axioms [McC62]; DP for QFF [Kin69] • Early 1980s • sorting [Mat81, Jaf81, SJ80] • (restricted) permutation [SJ80] • 2001: QFF of extensional theory [SBDL01] Safety Analysis of Systems – 9/39

  22. Theory of Arrays: Context Important theory with long history: • axioms [McC62]; DP for QFF [Kin69] • Early 1980s • sorting [Mat81, Jaf81, SJ80] • (restricted) permutation [SJ80] • 2001: QFF of extensional theory [SBDL01] Questions: 1. Unifying decidable fragment? 2. Upper bounds on decidability? Goal: Combination theories (for indices & elements) Safety Analysis of Systems – 9/39

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend