session based compositional verification on actor based
play

Session-Based Compositional Verification on Actor-based Concurrent - PowerPoint PPT Presentation

Session-Based Compositional Verification on Actor-based Concurrent Systems Session Types for ABS Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 1


  1. Session-Based Compositional Verification on Actor-based Concurrent Systems Session Types for ABS Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 1

  2. Motivation ◮ ABS language can be verified w.r.t. methods preserving class invariants ◮ Specification is written class-local directly in the verification logic 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 2

  3. Motivation ◮ ABS language can be verified w.r.t. methods preserving class invariants ◮ Specification is written class-local directly in the verification logic Aim Use session types as specification language for global communication of ABS systems. 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 2

  4. Motivation ◮ ABS language can be verified w.r.t. methods preserving class invariants ◮ Specification is written class-local directly in the verification logic Aim Use session types as specification language for global communication of ABS systems. ◮ But session types are not defined for such a restrictive concurrency model 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 2

  5. The ABS Concurrency Model ◮ ABS stands for Abstract Behavioural Specification ◮ Communication between objects are always asynchronous method calls ◮ No direct access to the fields of other objects ◮ Asynchronous method calls are realized through futures ◮ Futures can be passed around through method calls ◮ Object fields with future types ◮ At most one process is active on an object at a time ◮ Cooperative scheduling ◮ scheduling points are made syntactically explicit in the code ◮ await statement (on future or boolean expression) 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 3

  6. The ABS Concurrency Model ◮ ABS stands for Abstract Behavioural Specification ◮ Communication between objects are always asynchronous method calls ◮ No direct access to the fields of other objects ◮ Asynchronous method calls are realized through futures ◮ Futures can be passed around through method calls ◮ Object fields with future types ◮ At most one process is active on an object at a time ◮ Cooperative scheduling ◮ scheduling points are made syntactically explicit in the code ◮ await statement (on future or boolean expression) 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 3

  7. An ABS Example (asynchronous call + future) int n( int i ){ Fut< int > f = o!m(i); await f ?; int r = f . get ; return r; } 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 4

  8. ABS-based Session Types ◮ Adapt session types to futures Instead of using arbitary channels ◮ Projections (global types to local types): global behavior → object-local behavior → method-local behavior ◮ Specify history-based class invariants based on the session types ◮ Verify the history-based class invariants using KeY-ABS theorem prover 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 5

  9. Basic Projection from Global Types to Local Types Global Types f − → q : m ( S ). G ::= p Local Types q ! f m ( S ). L | p ? f m ( S ). L ::= 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 6

  10. Basic Projection from Global Types to Local Types Global Types f − → q : m ( S ). G | q ↓ f : ( S ). G ::= p Local Types q ! f m ( S ). L | p ? f m ( S ). L | Put f : ( S ). L ::= 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 6

  11. Basic Projection from Global Types to Local Types Global Types f − → q : m ( S ). G | q ↓ f : ( S ). G | f ↑ p : ( S ). G ::= p Local Types q ! f m ( S ). L | p ? f m ( S ). L | Put f : ( S ). L ::= | Get f : ( S ). L 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 6

  12. Basic Projection from Global Types to Local Types Global Types f − → q : m ( S ). G | q ↓ f : ( S ). G | f ↑ p : ( S ). G | Rel( p , f ). G | end ::= p Local Types q ! f m ( S ). L | p ? f m ( S ). L | Put f : ( S ). L ::= | Get f : ( S ). L | Aw( f , f ′ ). L | React f . L | end 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 6

  13. Basic Projection from Global Types to Local Types Global Types f − → q : m ( S ). G | q ↓ f : ( S ). G | f ↑ p : ( S ). G | Rel( p , f ). G | end ::= p Local Types q ! f m ( S ). L | p ? f m ( S ). L | Put f : ( S ). L ::= | Get f : ( S ). L | Aw( f , f ′ ). L | React f . L | end ◮ Global Rel only needed if multiple Aw could be possible ◮ React never needed in global type 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 6

  14. Example f ′ f 0 f ′ ↑ b . f a ↓ f ′ . 0 − → a : m . a − → b : m 1 . b − → a : m 2 . b ↓ f . a ↓ f 0 . end 0 a b m2 m1 m f' f f0 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 7

  15. Example f ′ f 0 f ′ ↑ b . f a ↓ f ′ . 0 − → a : m . a − → b : m 1 . b − → a : m 2 . b ↓ f . a ↓ f 0 . end Get f ′ . b ? f m 1 . ! f ′ m 2 . Put f . end Put f ′ . a ? f 0 m . ! f m 1 . Aw( f 0 , f ).? f ′ m 2 . React f 0 . Put f 0 . end 0 a b m2 m1 m f' f f0 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 7

  16. Example f ′ f 0 f ′ ↑ b . f a ↓ f ′ . 0 − → a : m . a − → b : m 1 . b − → a : m 2 . b ↓ f . a ↓ f 0 . end Get f ′ . b ? f m 1 . ! f ′ m 2 . Put f . end Put f ′ . a ? f 0 m . ! f m 1 . Aw( f 0 , f ).? f ′ m 2 . React f 0 . Put f 0 . end m ? f 0 m . ! f m 1 . Aw( f 0 , f ). Put f 0 m 2 ? f ′ m 2 . Put f ′ m 1 ? f m 1 . ! f ′ m 2 . Get f ′ . Put f 0 a b m2 m1 m f' f f0 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 7

  17. Wellformed Global Types ◮ Consistency constraints on valid types, e.g. no reuse of futures ◮ For projecting on methods, keep track of ◮ busy objects ◮ currently computed futures ◮ waiting futures ◮ Current status: relying on unambiguous and scheduler-independent control flow 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 8

  18. Wellformed Global Types ◮ Consistency constraints on valid types, e.g. no reuse of futures ◮ For projecting on methods, keep track of ◮ busy objects ◮ currently computed futures ◮ waiting futures ◮ Current status: relying on unambiguous and scheduler-independent control flow f 0 f 1 f 2 f 3 − → a : m 0 . a − → b : m 1 . a − → c : m 2 . b − → c : m 2 . ... 0 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 8

  19. Wellformed Global Types ◮ Consistency constraints on valid types, e.g. no reuse of futures ◮ For projecting on methods, keep track of ◮ busy objects ◮ currently computed futures ◮ waiting futures ◮ Current status: relying on unambiguous and scheduler-independent control flow f 0 f 1 f 2 f 3 − → a : m 0 . a − → b : m 1 . a − → c : m 2 . b − → c : m 2 . ... 0 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 8

  20. Wellformed Global Types ◮ Consistency constraints on valid types, e.g. no reuse of futures ◮ For projecting on methods, keep track of ◮ busy objects ◮ currently computed futures ◮ waiting futures ◮ Current status: relying on unambiguous and scheduler-independent control flow f 0 f 1 f 2 f 3 − → a : m 0 . a − → b : m 1 . a − → c : m 2 . b − → c : m 2 . ... 0 f 0 f 1 f 2 f 3 − → a : m 0 . a − → b : m 1 . c − → e : m 2 . d − → f : m 2 . ... 0 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 8

  21. Wellformed Global Types ◮ Consistency constraints on valid types, e.g. no reuse of futures ◮ For projecting on methods, keep track of ◮ busy objects ◮ currently computed futures ◮ waiting futures ◮ Current status: relying on unambiguous and scheduler-independent control flow f 0 f 1 f 2 f 3 − → a : m 0 . a − → b : m 1 . a − → c : m 2 . b − → c : m 2 . ... 0 f 0 f 1 f 2 f 3 − → a : m 0 . a − → b : m 1 . c − → e : m 2 . d − → f : m 2 . ... 0 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 8

  22. Branching Branching operator  l 1 : G 1   l 2 : G 2  p ...   l n : G n  ◮ With arbitary channels the choice is made by sending the label over a channel ◮ But futures cannot send arbitary data 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 9

  23. Branching Branching operator f 1  − → q 1 : m 1 . G ′ l 1 : p 1   f 2   l 2 : p − → q 2 : m 2 . G ′ p 2 ...    f n  l n : p − → q n : m n . G ′ n ◮ With arbitary channels the choice is made by sending the label over a channel ◮ But futures cannot send arbitary data ◮ Each choice must be made by calling a different method: m i � = m j , if q i = q j ◮ Methodname takes role of branch-label 20. Oktober 2015 | TU Darmstadt | Eduard Kamburjan, Crystal Chang Din, Tzu-Chun Chen | 9

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