logical foundations of cyber physical systems

Logical Foundations of Cyber-Physical Systems Andr Platzer Andr - PowerPoint PPT Presentation

07: Control Loops & Invariants Logical Foundations of Cyber-Physical Systems Andr Platzer Logical Foundations of Cyber-Physical Systems Andr Platzer Andr Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 1 / 16


  1. A Simple Discrete Loop Example loop Ξ“ ⊒ J , βˆ† J ⊒ [ Ξ± ] J J ⊒ P Ξ“ ⊒ [ Ξ± βˆ— ] P , βˆ† x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 ⊒ J J ⊒ [ x := x + y ; y := x βˆ’ 2 Β· y ] J J ⊒ x β‰₯ 0 loop x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 ⊒ [( x := x + y ; y := x βˆ’ 2 Β· y ) βˆ— ] x β‰₯ 0 β†’ R ⊒ x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 β†’ [( x := x + y ; y := x βˆ’ 2 Β· y ) βˆ— ] x β‰₯ 0 J ≑ x β‰₯ 0 stronger: Lacks info about y 1 J ≑ x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 weaker: Changes immediately 2 J ≑ x β‰₯ 0 ∧ y β‰₯ 0 3 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 8 / 16

  2. A Simple Discrete Loop Example loop Ξ“ ⊒ J , βˆ† J ⊒ [ Ξ± ] J J ⊒ P Ξ“ ⊒ [ Ξ± βˆ— ] P , βˆ† x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 ⊒ J J ⊒ [ x := x + y ; y := x βˆ’ 2 Β· y ] J J ⊒ x β‰₯ 0 loop x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 ⊒ [( x := x + y ; y := x βˆ’ 2 Β· y ) βˆ— ] x β‰₯ 0 β†’ R ⊒ x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 β†’ [( x := x + y ; y := x βˆ’ 2 Β· y ) βˆ— ] x β‰₯ 0 J ≑ x β‰₯ 0 stronger: Lacks info about y 1 J ≑ x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 weaker: Changes immediately 2 J ≑ x β‰₯ 0 ∧ y β‰₯ 0 no: y may become negative if x < y 3 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 8 / 16

  3. A Simple Discrete Loop Example loop Ξ“ ⊒ J , βˆ† J ⊒ [ Ξ± ] J J ⊒ P Ξ“ ⊒ [ Ξ± βˆ— ] P , βˆ† x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 ⊒ J J ⊒ [ x := x + y ; y := x βˆ’ 2 Β· y ] J J ⊒ x β‰₯ 0 loop x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 ⊒ [( x := x + y ; y := x βˆ’ 2 Β· y ) βˆ— ] x β‰₯ 0 β†’ R ⊒ x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 β†’ [( x := x + y ; y := x βˆ’ 2 Β· y ) βˆ— ] x β‰₯ 0 J ≑ x β‰₯ 0 stronger: Lacks info about y 1 J ≑ x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 weaker: Changes immediately 2 J ≑ x β‰₯ 0 ∧ y β‰₯ 0 no: y may become negative if x < y 3 J ≑ x β‰₯ y ∧ y β‰₯ 0 4 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 8 / 16

  4. A Simple Discrete Loop Example loop Ξ“ ⊒ J , βˆ† J ⊒ [ Ξ± ] J J ⊒ P Ξ“ ⊒ [ Ξ± βˆ— ] P , βˆ† x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 ⊒ J J ⊒ [ x := x + y ; y := x βˆ’ 2 Β· y ] J J ⊒ x β‰₯ 0 loop x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 ⊒ [( x := x + y ; y := x βˆ’ 2 Β· y ) βˆ— ] x β‰₯ 0 β†’ R ⊒ x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 β†’ [( x := x + y ; y := x βˆ’ 2 Β· y ) βˆ— ] x β‰₯ 0 J ≑ x β‰₯ 0 stronger: Lacks info about y 1 J ≑ x β‰₯ 8 ∧ 5 β‰₯ y ∧ y β‰₯ 0 weaker: Changes immediately 2 J ≑ x β‰₯ 0 ∧ y β‰₯ 0 no: y may become negative if x < y 3 J ≑ x β‰₯ y ∧ y β‰₯ 0 correct loop invariant 4 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 8 / 16

  5. Forgot to Add Sequent Context Ξ“ , βˆ† to Premises Ξ“ ⊒ J , βˆ† Ξ“?? , J ⊒ [ Ξ± ] J , βˆ†?? Ξ“?? , J ⊒ P , βˆ†?? Ξ“ ⊒ [ Ξ± βˆ— ] P , βˆ† AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 9 / 16

  6. Forgot to Add Sequent Context Ξ“ , βˆ† to Premises Ξ“ ⊒ J , βˆ† Ξ“?? , J ⊒ [ Ξ± ] J , βˆ†?? Ξ“?? , J ⊒ P , βˆ†?? Ξ“ ⊒ [ Ξ± βˆ— ] P , βˆ† x = 0 ⊒ x ≀ 1 x = 0 , x ≀ 1 ⊒ [ x := x + 1 ] x ≀ 1 x ≀ 1 ⊒ x ≀ 1 οΏ½ x = 0 , x ≀ 1 ⊒ [( x := x + 1 ) βˆ— ] x ≀ 1 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 9 / 16

  7. Forgot to Add Sequent Context Ξ“ , βˆ† to Premises Ξ“ ⊒ J , βˆ† Ξ“?? , J ⊒ [ Ξ± ] J , βˆ†?? Ξ“?? , J ⊒ P , βˆ†?? Ξ“ ⊒ [ Ξ± βˆ— ] P , βˆ† x = 0 ⊒ x ≀ 1 x = 0 , x ≀ 1 ⊒ [ x := x + 1 ] x ≀ 1 x ≀ 1 ⊒ x ≀ 1 οΏ½ x = 0 , x ≀ 1 ⊒ [( x := x + 1 ) βˆ— ] x ≀ 1 x = 0 ⊒ x β‰₯ 0 x β‰₯ 0 ⊒ [ x := x + 1 ] x β‰₯ 0 x = 0 , x β‰₯ 0 ⊒ x = 0 οΏ½ x = 0 ⊒ [( x := x + 1 ) βˆ— ] x = 0 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 9 / 16

  8. Forgot to Add Sequent Context Ξ“ , βˆ† to Premises Ξ“ ⊒ J , βˆ† Ξ“?? , J ⊒ [ Ξ± ] J , βˆ†?? Ξ“?? , J ⊒ P , βˆ†?? Ξ“ ⊒ [ Ξ± βˆ— ] P , βˆ† x = 0 ⊒ x ≀ 1 x = 0 , x ≀ 1 ⊒ [ x := x + 1 ] x ≀ 1 x ≀ 1 ⊒ x ≀ 1 οΏ½ x = 0 , x ≀ 1 ⊒ [( x := x + 1 ) βˆ— ] x ≀ 1 x = 0 ⊒ x β‰₯ 0 x β‰₯ 0 ⊒ [ x := x + 1 ] x β‰₯ 0 x = 0 , x β‰₯ 0 ⊒ x = 0 οΏ½ x = 0 ⊒ [( x := x + 1 ) βˆ— ] x = 0 Unsound! Be careful where your assumptions go, or your CPS might go where it shouldn’t. AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 9 / 16

  9. Outline Learning Objectives 1 Induction for Loops 2 Iteration Axiom Induction Axiom Induction Rule for Loops Loop Invariants Simple Example Contextual Soundness Requirements Operationalize Invariant Construction 3 Bouncing Ball Rescuing Misplaced Constants Safe Quantum Summary 4 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 9 / 16

  10. Proving Quantum the Acrophobic Bouncing Ball οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  11. Proving Quantum the Acrophobic Bouncing Ball A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  12. Proving Quantum the Acrophobic Bouncing Ball j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  13. Proving Quantum the Acrophobic Bouncing Ball j ( x , v ) ⊒ [ grav ][? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) [;] j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  14. Proving Quantum the Acrophobic Bouncing Ball j ( x , v ) ⊒ [ grav ] j ( x , v ) j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) MR j ( x , v ) ⊒ [ grav ][? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) [;] j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  15. Proving Quantum the Acrophobic Bouncing Ball j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) ∧ [? x οΏ½ = 0 ] j ( x , v ) j ( x , v ) ⊒ [ grav ] j ( x , v ) [ βˆͺ ] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) MR j ( x , v ) ⊒ [ grav ][? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) [;] j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  16. Proving Quantum the Acrophobic Bouncing Ball ∧ R j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) j ( x , v ) ⊒ [? x οΏ½ = 0 ] j ( x , v ) j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) ∧ [? x οΏ½ = 0 ] j ( x , v ) j ( x , v ) ⊒ [ grav ] j ( x , v ) [ βˆͺ ] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) MR j ( x , v ) ⊒ [ grav ][? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) [;] j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  17. Proving Quantum the Acrophobic Bouncing Ball [;] j ( x , v ) ⊒ [? x = 0 ][ v := βˆ’ cv ] j ( x , v ) j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) j ( x , v ) ⊒ [? x οΏ½ = 0 ] j ( x , v ) ∧ R j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) ∧ [? x οΏ½ = 0 ] j ( x , v ) j ( x , v ) ⊒ [ grav ] j ( x , v ) [ βˆͺ ] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) MR j ( x , v ) ⊒ [ grav ][? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) [;] j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  18. Proving Quantum the Acrophobic Bouncing Ball [?] , β†’ R j ( x , v ) , x = 0 ⊒ [ v := βˆ’ cv ] j ( x , v ) j ( x , v ) ⊒ [? x = 0 ][ v := βˆ’ cv ] j ( x , v ) [;] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) j ( x , v ) ⊒ [? x οΏ½ = 0 ] j ( x , v ) ∧ R j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) ∧ [? x οΏ½ = 0 ] j ( x , v ) j ( x , v ) ⊒ [ grav ] j ( x , v ) [ βˆͺ ] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) MR j ( x , v ) ⊒ [ grav ][? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) [;] j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  19. Proving Quantum the Acrophobic Bouncing Ball j ( x , v ) , x = 0 ⊒ j ( x , βˆ’ cv ) [:=] j ( x , v ) , x = 0 ⊒ [ v := βˆ’ cv ] j ( x , v ) [?] , β†’ R j ( x , v ) ⊒ [? x = 0 ][ v := βˆ’ cv ] j ( x , v ) [;] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) j ( x , v ) ⊒ [? x οΏ½ = 0 ] j ( x , v ) ∧ R j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) ∧ [? x οΏ½ = 0 ] j ( x , v ) j ( x , v ) ⊒ [ grav ] j ( x , v ) [ βˆͺ ] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) MR j ( x , v ) ⊒ [ grav ][? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) [;] j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  20. Proving Quantum the Acrophobic Bouncing Ball j ( x , v ) , x = 0 ⊒ j ( x , βˆ’ cv ) [:=] j ( x , v ) , x = 0 ⊒ [ v := βˆ’ cv ] j ( x , v ) [?] , β†’ R j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [? x = 0 ][ v := βˆ’ cv ] j ( x , v ) [;] [?] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) j ( x , v ) ⊒ [? x οΏ½ = 0 ] j ( x , v ) ∧ R j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) ∧ [? x οΏ½ = 0 ] j ( x , v ) j ( x , v ) ⊒ [ grav ] j ( x , v ) [ βˆͺ ] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) MR j ( x , v ) ⊒ [ grav ][? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) [;] j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  21. Proving Quantum the Acrophobic Bouncing Ball j ( x , v ) , x = 0 ⊒ j ( x , βˆ’ cv ) [:=] j ( x , v ) , x = 0 ⊒ [ v := βˆ’ cv ] j ( x , v ) [?] , β†’ R j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [? x = 0 ][ v := βˆ’ cv ] j ( x , v ) [;] [?] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) j ( x , v ) ⊒ [? x οΏ½ = 0 ] j ( x , v ) ∧ R j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv ] j ( x , v ) ∧ [? x οΏ½ = 0 ] j ( x , v ) j ( x , v ) ⊒ [ grav ] j ( x , v ) [ βˆͺ ] j ( x , v ) ⊒ [? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) MR j ( x , v ) ⊒ [ grav ][? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ] j ( x , v ) [;] j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) A ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) j ( x , v ) ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )] j ( x , v ) loop οΏ½ βˆ— ] B ( x , v ) οΏ½ A ⊒ [ grav ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 10 / 16

  22. Proving Quantum the Acrophobic Bouncing Ball A ⊒ j ( x , v ) j ( x , v ) ⊒ [ grav ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ B ( x , v ) A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  23. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  24. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H 2 A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  25. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  26. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  27. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  28. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 3 A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  29. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  30. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 4 A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  31. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  32. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 5 A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  33. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ j ( x , v ) j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) j ( x , v ) , x = 0 ⊒ j ( x , ( βˆ’ cv )) j ( x , v ) , x οΏ½ = 0 ⊒ j ( x , v ) j ( x , v ) ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 A ≑ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 B ( x , v ) ≑ 0 ≀ x ∧ x ≀ H grav ≑ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  34. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  35. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  36. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 if c = 1 ... 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  37. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 if c = 1 ... 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  38. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 if c = 1 ... οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  39. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 if c = 1 ... οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  40. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 if c = 1 ... οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H because g > 0 j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  41. Proving Quantum the Acrophobic Bouncing Ball 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 if c = 1 ... οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H because g > 0 j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  42. Proving Quantum the Acrophobic Bouncing Ball οΏ½ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 if c = 1 ... οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H because g > 0 j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  43. Proving Quantum the Acrophobic Bouncing Ball οΏ½ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 if c = 1 ... οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H because g > 0 j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  44. Proving Quantum the Acrophobic Bouncing Ball οΏ½ 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 β‰₯ c β‰₯ 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 j ( x , v ) ⊒ [ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ]( j ( x , v ) ) οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x = 0 ⊒ 2 gx = 2 gH βˆ’ ( βˆ’ cv ) 2 ∧ x β‰₯ 0 if c = 1 ... οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , x οΏ½ = 0 ⊒ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 οΏ½ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ⊒ 0 ≀ x ∧ x ≀ H because g > 0 j ( x , v ) ≑ x β‰₯ 0 weaker: fails postcondition if x > H 1 j ( x , v ) ≑ 0 ≀ x ∧ x ≀ H weak: fails ODE if v ≫ 0 2 j ( x , v ) ≑ x = 0 ∧ v = 0 strong: fails initial condition if x > 0 3 j ( x , v ) ≑ x = 0 ∨ x = H ∧ v = 0 no space for intermediate states 4 j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 works: implicitly links v and x 5 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 11 / 16

  45. Proving Quantum the Acrophobic Bouncing Ball [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  46. Proving Quantum the Acrophobic Bouncing Ball [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  47. Proving Quantum the Acrophobic Bouncing Ball [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  48. Proving Quantum the Acrophobic Bouncing Ball [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  49. Proving Quantum the Acrophobic Bouncing Ball βˆ€ R j ( x , v ) ⊒ βˆ€ t β‰₯ 0 ( H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  50. Proving Quantum the Acrophobic Bouncing Ball β†’ R j ( x , v ) ⊒ t β‰₯ 0 β†’ H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) βˆ€ R j ( x , v ) ⊒ βˆ€ t β‰₯ 0 ( H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  51. Proving Quantum the Acrophobic Bouncing Ball j ( x , v ) , t β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) β†’ R j ( x , v ) ⊒ t β‰₯ 0 β†’ H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) βˆ€ R j ( x , v ) ⊒ βˆ€ t β‰₯ 0 ( H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  52. Proving Quantum the Acrophobic Bouncing Ball j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ 2 g ( H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 ∧ ( H βˆ’ g 2 t 2 ) β‰₯ 0 j ( x , v ) , t β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) β†’ R j ( x , v ) ⊒ t β‰₯ 0 β†’ H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) βˆ€ R j ( x , v ) ⊒ βˆ€ t β‰₯ 0 ( H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  53. Proving Quantum the Acrophobic Bouncing Ball 2 gx = 2 gH βˆ’ v 2 ⊒ 2 g ( H βˆ’ g H βˆ’ g 2 t 2 β‰₯ 0 ⊒ H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 2 t 2 β‰₯ 0 ∧ R 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ 2 g ( H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 ∧ ( H βˆ’ g 2 t 2 ) β‰₯ 0 j ( x , v ) , t β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) β†’ R j ( x , v ) ⊒ t β‰₯ 0 β†’ H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) βˆ€ R j ( x , v ) ⊒ βˆ€ t β‰₯ 0 ( H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  54. Proving Quantum the Acrophobic Bouncing Ball βˆ— R 2 gx = 2 gH βˆ’ v 2 ⊒ 2 g ( H βˆ’ g H βˆ’ g 2 t 2 β‰₯ 0 ⊒ H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 2 t 2 β‰₯ 0 ∧ R 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ 2 g ( H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 ∧ ( H βˆ’ g 2 t 2 ) β‰₯ 0 j ( x , v ) , t β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) β†’ R j ( x , v ) ⊒ t β‰₯ 0 β†’ H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) βˆ€ R j ( x , v ) ⊒ βˆ€ t β‰₯ 0 ( H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  55. Proving Quantum the Acrophobic Bouncing Ball βˆ— βˆ— R id 2 gx = 2 gH βˆ’ v 2 ⊒ 2 g ( H βˆ’ g H βˆ’ g 2 t 2 β‰₯ 0 ⊒ H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 2 t 2 β‰₯ 0 ∧ R 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ 2 g ( H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 ∧ ( H βˆ’ g 2 t 2 ) β‰₯ 0 j ( x , v ) , t β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) β†’ R j ( x , v ) ⊒ t β‰₯ 0 β†’ H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) βˆ€ R j ( x , v ) ⊒ βˆ€ t β‰₯ 0 ( H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  56. Proving Quantum the Acrophobic Bouncing Ball βˆ— βˆ— R id 2 gx = 2 gH βˆ’ v 2 ⊒ 2 g ( H βˆ’ g H βˆ’ g 2 t 2 β‰₯ 0 ⊒ H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 2 t 2 β‰₯ 0 ∧ R 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ 2 g ( H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 ∧ ( H βˆ’ g 2 t 2 ) β‰₯ 0 j ( x , v ) , t β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) β†’ R j ( x , v ) ⊒ t β‰₯ 0 β†’ H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) βˆ€ R j ( x , v ) ⊒ βˆ€ t β‰₯ 0 ( H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) Is Quantum done with his safety proof? AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  57. Proving Quantum the Acrophobic Bouncing Ball βˆ— βˆ— R id 2 gx = 2 gH βˆ’ v 2 ⊒ 2 g ( H βˆ’ g H βˆ’ g 2 t 2 β‰₯ 0 ⊒ H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 2 t 2 β‰₯ 0 ∧ R 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ 2 g ( H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 ∧ ( H βˆ’ g 2 t 2 ) β‰₯ 0 j ( x , v ) , t β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) β†’ R j ( x , v ) ⊒ t β‰₯ 0 β†’ H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) βˆ€ R j ( x , v ) ⊒ βˆ€ t β‰₯ 0 ( H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) Is Quantum done with his safety proof? Oh no! The solutions we sneaked into [ β€² ] only solve the ODE/IVP if x = H , v = 0 which assumption j ( x , v ) can’t guarantee! AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  58. Proving Quantum the Acrophobic Bouncing Ball βˆ— βˆ— R id 2 gx = 2 gH βˆ’ v 2 ⊒ 2 g ( H βˆ’ g H βˆ’ g 2 t 2 β‰₯ 0 ⊒ H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 2 t 2 β‰₯ 0 ∧ R 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ 2 g ( H βˆ’ g 2 t 2 )= 2 gH βˆ’ ( gt ) 2 ∧ ( H βˆ’ g 2 t 2 ) β‰₯ 0 j ( x , v ) , t β‰₯ 0 , H βˆ’ g 2 t 2 β‰₯ 0 ⊒ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) β†’ R j ( x , v ) ⊒ t β‰₯ 0 β†’ H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) βˆ€ R j ( x , v ) ⊒ βˆ€ t β‰₯ 0 ( H βˆ’ g 2 t 2 β‰₯ 0 β†’ j ( H βˆ’ g 2 t 2 , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ]( x β‰₯ 0 β†’ j ( x , βˆ’ gt ) ) [:=] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ][ v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [;] j ( x , v ) ⊒ βˆ€ t β‰₯ 0 [ x := H βˆ’ g 2 t 2 ; v := βˆ’ gt ]( x β‰₯ 0 β†’ j ( x , v ) ) [ β€² ] j ( x , v ) ⊒ [ x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 ] j ( x , v ) Is Quantum done with his safety proof? Oh no! The solutions we sneaked into [ β€² ] only solve the ODE/IVP if x = H , v = 0 which assumption j ( x , v ) can’t guarantee! Todo redo proof with true solution Never use solutions without proof! AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 12 / 16

  59. Clumsy Quantum Misplaced the Constants loop A ⊒ [ Ξ± βˆ— ] B ( x , v ) j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 1 p ≑ c = 1 ∧ g > 0 2 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 13 / 16

  60. Clumsy Quantum Misplaced the Constants loop A ⊒ [ Ξ± βˆ— ] B ( x , v ) j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 1 p ≑ c = 1 ∧ g > 0 2 J ≑ j ( x , v ) ∧ p as loop invariant 3 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 13 / 16

  61. Clumsy Quantum Misplaced the Constants βˆ— R A ⊒ j ( x , v ) ∧ p [] ∧ R j ( x , v ) ∧ p ⊒ B ( x , v ) j ( x , v ) ∧ p ⊒ [ Ξ± ]( j ( x , v ) ∧ p ) loop A ⊒ [ Ξ± βˆ— ] B ( x , v ) j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 1 p ≑ c = 1 ∧ g > 0 2 J ≑ j ( x , v ) ∧ p as loop invariant 3 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 13 / 16

  62. Clumsy Quantum Misplaced the Constants [] ∧ [ Ξ± ]( P ∧ Q ) ↔ [ Ξ± ] P ∧ [ Ξ± ] Q above j ( x , v ) ∧ p ⊒ [ Ξ± ] j ( x , v ) V j ( x , v ) ∧ p ⊒ [ Ξ± ] p ∧ R j ( x , v ) ∧ p ⊒ [ Ξ± ] j ( x , v ) ∧ [ Ξ± ] p βˆ— R A ⊒ j ( x , v ) ∧ p [] ∧ R j ( x , v ) ∧ p ⊒ B ( x , v ) j ( x , v ) ∧ p ⊒ [ Ξ± ]( j ( x , v ) ∧ p ) loop A ⊒ [ Ξ± βˆ— ] B ( x , v ) j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 1 p ≑ c = 1 ∧ g > 0 2 J ≑ j ( x , v ) ∧ p as loop invariant 3 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 13 / 16

  63. Clumsy Quantum Misplaced the Constants [] ∧ [ Ξ± ]( P ∧ Q ) ↔ [ Ξ± ] P ∧ [ Ξ± ] Q V p β†’ [ Ξ± ] p ( FV ( p ) ∩ BV ( Ξ± ) = / 0 ) βˆ— above V j ( x , v ) ∧ p ⊒ [ Ξ± ] p j ( x , v ) ∧ p ⊒ [ Ξ± ] j ( x , v ) ∧ R j ( x , v ) ∧ p ⊒ [ Ξ± ] j ( x , v ) ∧ [ Ξ± ] p βˆ— R A ⊒ j ( x , v ) ∧ p [] ∧ R j ( x , v ) ∧ p ⊒ B ( x , v ) j ( x , v ) ∧ p ⊒ [ Ξ± ]( j ( x , v ) ∧ p ) loop A ⊒ [ Ξ± βˆ— ] B ( x , v ) j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 1 p ≑ c = 1 ∧ g > 0 2 J ≑ j ( x , v ) ∧ p as loop invariant 3 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 13 / 16

  64. Clumsy Quantum Misplaced the Constants [] ∧ [ Ξ± ]( P ∧ Q ) ↔ [ Ξ± ] P ∧ [ Ξ± ] Q V p β†’ [ Ξ± ] p ( FV ( p ) ∩ BV ( Ξ± ) = / 0 ) βˆ— above V j ( x , v ) ∧ p ⊒ [ Ξ± ] p j ( x , v ) ∧ p ⊒ [ Ξ± ] j ( x , v ) ∧ R j ( x , v ) ∧ p ⊒ [ Ξ± ] j ( x , v ) ∧ [ Ξ± ] p βˆ— βˆ— R A ⊒ j ( x , v ) ∧ p [] ∧ R j ( x , v ) ∧ p ⊒ B ( x , v ) j ( x , v ) ∧ p ⊒ [ Ξ± ]( j ( x , v ) ∧ p ) loop A ⊒ [ Ξ± βˆ— ] B ( x , v ) j ( x , v ) ≑ 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 1 p ≑ c = 1 ∧ g > 0 2 J ≑ j ( x , v ) ∧ p as loop invariant 3 Note: constants c = 1 ∧ g > 0 that never change are usually elided from J AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 13 / 16

  65. Quantum the Provably Safe Bouncing Ball Proposition (Quantum can bounce around safely) 0 ≀ x ∧ x = H ∧ v = 0 ∧ g > 0 ∧ 1 = c β†’ { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ;(? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 ) οΏ½ βˆ— ]( 0 ≀ x ∧ x ≀ H ) οΏ½ [ requires ( 0 ≀ x ∧ x = H ∧ v = 0 ) requires ( g > 0 ∧ 1 = c ) ensures ( 0 ≀ x ∧ x ≀ H ) { x β€² = v , v β€² = βˆ’ g & x β‰₯ 0 } ; οΏ½ οΏ½ βˆ— @invariant ( 2 gx = 2 gH βˆ’ v 2 ∧ x β‰₯ 0 ) (? x = 0 ; v := βˆ’ cv βˆͺ ? x οΏ½ = 0 )) Invariant Contracts Invariants play a crucial rΓ΄le in CPS design. Capture them if you can. Use @invariant () contracts in your hybrid programs. AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 14 / 16

  66. Outline Learning Objectives 1 Induction for Loops 2 Iteration Axiom Induction Axiom Induction Rule for Loops Loop Invariants Simple Example Contextual Soundness Requirements Operationalize Invariant Construction 3 Bouncing Ball Rescuing Misplaced Constants Safe Quantum Summary 4 AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 14 / 16

  67. Invariants The lion’s share of understanding comes from understanding what does change (variants/progress measures) and what doesn’t change (invariants). Invariants are a fundamental force of CS Variants are another fundamental force of CS AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 15 / 16

  68. Summary: Loops, Generalizations, Splittings I [ Ξ± βˆ— ] P ↔ P ∧ [ Ξ± βˆ— ]( P β†’ [ Ξ± ] P ) P G [ Ξ± ] P P β†’ Q M [ Β· ] [ Ξ± ] P β†’ [ Ξ± ] Q loop Ξ“ ⊒ J , βˆ† J ⊒ [ Ξ± ] J J ⊒ P Ξ“ ⊒ [ Ξ± βˆ— ] P , βˆ† MR Ξ“ ⊒ [ Ξ± ] Q , βˆ† Q ⊒ P Ξ“ ⊒ [ Ξ± ] P , βˆ† [] ∧ [ Ξ± ]( P ∧ Q ) ↔ [ Ξ± ] P ∧ [ Ξ± ] Q V p β†’ [ Ξ± ] p ( FV ( p ) ∩ BV ( Ξ± ) = / 0 ) AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 16 / 16

  69. Outline Appendix 5 Iteration Axiom Iterations & Splitting the Box Iteration & Generalizations AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 16 / 16

  70. Iteration Axiom compositional semantics β‡’ compositional rules! AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 17 / 16

  71. Loops of Proofs: Iterations [ βˆ— ] [ Ξ± βˆ— ] P ↔ P ∧ [ Ξ± ][ Ξ± βˆ— ] P A ⊒ [ Ξ± βˆ— ] B AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 18 / 16

  72. Loops of Proofs: Iterations [ βˆ— ] [ Ξ± βˆ— ] P ↔ P ∧ [ Ξ± ][ Ξ± βˆ— ] P A ⊒ B ∧ [ Ξ± ][ Ξ± βˆ— ] B [ βˆ— ] A ⊒ [ Ξ± βˆ— ] B AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 18 / 16

  73. Loops of Proofs: Iterations [ βˆ— ] [ Ξ± βˆ— ] P ↔ P ∧ [ Ξ± ][ Ξ± βˆ— ] P A ⊒ B ∧ [ Ξ± ]( B ∧ [ Ξ± ][ Ξ± βˆ— ] B ) [ βˆ— ] A ⊒ B ∧ [ Ξ± ][ Ξ± βˆ— ] B [ βˆ— ] A ⊒ [ Ξ± βˆ— ] B AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 18 / 16

  74. Loops of Proofs: Iterations [ βˆ— ] [ Ξ± βˆ— ] P ↔ P ∧ [ Ξ± ][ Ξ± βˆ— ] P οΏ½ B ∧ [ Ξ± ]( B ∧ [ Ξ± ][ Ξ± βˆ— ] B ) οΏ½ A ⊒ B ∧ [ Ξ± ] [ βˆ— ] A ⊒ B ∧ [ Ξ± ]( B ∧ [ Ξ± ][ Ξ± βˆ— ] B ) [ βˆ— ] A ⊒ B ∧ [ Ξ± ][ Ξ± βˆ— ] B [ βˆ— ] A ⊒ [ Ξ± βˆ— ] B AndrΓ© Platzer (CMU) LFCPS/07: Control Loops & Invariants LFCPS/07 18 / 16

Recommend


More recommend


Explore More Topics

Stay informed with curated content and fresh updates.