a promela front end for spot
play

A Promela front-end for Spot Guillaume Sadegh LRDE EPITA Research - PowerPoint PPT Presentation

Introduction Promela and state-space generation Implementation Benchmark Conclusion A Promela front-end for Spot Guillaume Sadegh LRDE EPITA Research and Development Laboratory July 02, 2008 Guillaume Sadegh A Promela front-end for


  1. Introduction Promela and state-space generation Implementation Benchmark Conclusion A Promela front-end for Spot Guillaume Sadegh LRDE – EPITA Research and Development Laboratory July 02, 2008 Guillaume Sadegh A Promela front-end for Spot 1 / 27

  2. Introduction Promela and state-space generation Implementation Benchmark Conclusion Spot [Duret-Lutz and Poitrenaud, 2004] Reminder. . . ◮ Model Checking library. ◮ Set of algorithms and data type to build a model checker. ◮ Relies on the automata-theoretic approach to model checking. Guillaume Sadegh A Promela front-end for Spot 2 / 27

  3. Introduction Promela and state-space generation Implementation Benchmark Conclusion Automata-theoretic approach High-level model LTL formula M ϕ Guillaume Sadegh A Promela front-end for Spot 3 / 27 Figure: Automata-theoretic approach to model-checking.

  4. Introduction Promela and state-space generation Implementation Benchmark Conclusion Automata-theoretic approach High-level model LTL formula M ϕ State-graph LTL-to-Büchi generation translation State-graph Negated formula automaton automaton A M A ¬ ϕ Guillaume Sadegh A Promela front-end for Spot 3 / 27 Figure: Automata-theoretic approach to model-checking.

  5. Introduction Promela and state-space generation Implementation Benchmark Conclusion Automata-theoretic approach High-level model LTL formula M ϕ State-graph LTL-to-Büchi generation translation State-graph Negated formula automaton automaton A M Synch. product A ¬ ϕ Product automaton A M ⊗ A ¬ ϕ Guillaume Sadegh A Promela front-end for Spot 3 / 27 Figure: Automata-theoretic approach to model-checking.

  6. Introduction Promela and state-space generation Implementation Benchmark Conclusion Automata-theoretic approach High-level model LTL formula M ϕ State-graph LTL-to-Büchi generation translation State-graph Negated formula automaton automaton A M Synch. product A ¬ ϕ Product automaton A M ⊗ A ¬ ϕ Emptiness check M | = ϕ or counter-example Guillaume Sadegh A Promela front-end for Spot 3 / 27 Figure: Automata-theoretic approach to model-checking.

  7. Introduction Promela and state-space generation Implementation Benchmark Conclusion Automata-theoretic approach High-level model LTL formula M ϕ State-graph LTL-to-Büchi generation translation State-graph Negated formula automaton automaton A M Synch. product A ¬ ϕ Product automaton A M ⊗ A ¬ ϕ Emptiness check M | = ϕ or counter-example Provided by Spot Guillaume Sadegh A Promela front-end for Spot 3 / 27 Figure: Automata-theoretic approach to model-checking.

  8. Introduction Promela and state-space generation Implementation Benchmark Conclusion Automata-theoretic approach Missing High-level model LTL formula M ϕ State-graph LTL-to-Büchi generation translation State-graph Negated formula automaton automaton A M Synch. product A ¬ ϕ Product automaton A M ⊗ A ¬ ϕ Emptiness check M | = ϕ or counter-example Provided by Spot Guillaume Sadegh A Promela front-end for Spot 3 / 27 Figure: Automata-theoretic approach to model-checking.

  9. Introduction Promela and state-space generation Implementation Benchmark Conclusion Adding a Promela front-end Why 1. To work on more abstract models. 2. To take advantage of a large set of models. 3. To compare Spot and another model checker (S PIN ). Guillaume Sadegh A Promela front-end for Spot 4 / 27

  10. Introduction Promela and state-space generation Implementation Benchmark Conclusion Outline 1 Promela and state-space generation Implementation 2 Existing hack N IPS Virtual Machine Benchmark 3 Conclusion 4 Guillaume Sadegh A Promela front-end for Spot 5 / 27

  11. Introduction Promela and state-space generation Implementation Benchmark Conclusion Outline 1 Promela and state-space generation Implementation 2 Existing hack N IPS Virtual Machine Benchmark 3 Conclusion 4 Guillaume Sadegh A Promela front-end for Spot 6 / 27

  12. Introduction Promela and state-space generation Implementation Benchmark Conclusion Promela High-level modeling language Overview ◮ The modeling language of the S PIN model checker [Holzmann, 1990]. ◮ To represent concurrent systems with abstraction. Why Promela ? 1. S PIN is the most used model-checker worldwide. 2. There is a large collection of Promela models to test or use with our algorithms. Guillaume Sadegh A Promela front-end for Spot 7 / 27

  13. Introduction Promela and state-space generation Implementation Benchmark Conclusion Promela High-level modeling language Overview ◮ The modeling language of the S PIN model checker [Holzmann, 1990]. ◮ To represent concurrent systems with abstraction. Why Promela ? 1. S PIN is the most used model-checker worldwide. 2. There is a large collection of Promela models to test or use with our algorithms. Guillaume Sadegh A Promela front-end for Spot 7 / 27

  14. Introduction Promela and state-space generation Implementation Benchmark Conclusion Promela semantics A Promela program is a set of ◮ Processes. ◮ Message channels. ◮ Variables. Let’s see an example. Guillaume Sadegh A Promela front-end for Spot 8 / 27

  15. Introduction Promela and state-space generation Implementation Benchmark Conclusion Promela example The dinning philosopher problem Dining philosophers problem ✞ ☎ chan stick_1 = [ 1 ] of { bool } ; chan stick_2 = [ 1 ] of { bool } ; byte p1 , p2 ; / ∗ Id of processes ∗ / proctype philo ( chan l e f t _ s t i c k , r i g h t _ s t i c k ) { do : : l e f t _ s t i c k ?_ ; / ∗ Wait f o r data from the l e f t s t i c k ∗ / take_r : r i g h t _ s t i c k ?_ ; / ∗ Wait f o r data from the r i g h t s t i c k ∗ / release_l : l e f t _ s t i c k ! 1 ; / ∗ F i l l the l e f t s t i c k ∗ / release_r : r i g h t _ s t i c k ! 1 ; / ∗ F i l l the r i g h t s t i c k ∗ / od } i n i t { atomic { stick_1 ! 1 ; stick_2 ! 1 ; p1 = run philo ( stick_1 , stick_2 ) ; / ∗ Philosopher 1 ∗ / p2 = run philo ( stick_2 , stick_1 ) ; / ∗ Philosopher 2 ∗ / } } ✝ ✆ Guillaume Sadegh A Promela front-end for Spot 9 / 27

  16. Introduction Promela and state-space generation Implementation Benchmark Conclusion State-space generation with the philosophers p[p1]@take_r p[p1]@release_l p[p1]@release_r stick_1: f stick_2: f p[p2]@ proctype philo( chan left_s, right_s) take_r { do :: left_s?_; /* Wait */ p[p2]@ take_r: right_s?_; /* Wait */ release_l release_l: left_s!1; /* Send */ release_r: right_s!1; /* Send */ od p[p2]@ } release_r Guillaume Sadegh A Promela front-end for Spot 10 / 27

  17. Introduction Promela and state-space generation Implementation Benchmark Conclusion State-space generation with the philosophers p[p1]@take_r p[p1]@release_l p[p1]@release_r stick_1: f stick_1: e stick_2: f stick_2: f p[p2]@ stick_1: f proctype philo( chan left_s, right_s) take_r stick_2: e { do :: left_s?_; /* Wait */ p[p2]@ take_r: right_s?_; /* Wait */ release_l release_l: left_s!1; /* Send */ release_r: right_s!1; /* Send */ od p[p2]@ } release_r Guillaume Sadegh A Promela front-end for Spot 10 / 27

  18. Introduction Promela and state-space generation Implementation Benchmark Conclusion State-space generation with the philosophers p[p1]@take_r p[p1]@release_l p[p1]@release_r stick_1: f stick_1: e stick_1: e stick_2: f stick_2: f stick_2: e p[p2]@ stick_1: f stick_1: e proctype philo( chan left_s, right_s) take_r stick_2: e stick_2: e { do :: left_s?_; /* Wait */ p[p2]@ stick_1: e take_r: right_s?_; /* Wait */ release_l stick_2: e release_l: left_s!1; /* Send */ release_r: right_s!1; /* Send */ od p[p2]@ } release_r Guillaume Sadegh A Promela front-end for Spot 10 / 27

  19. Introduction Promela and state-space generation Implementation Benchmark Conclusion State-space generation with the philosophers p[p1]@take_r p[p1]@release_l p[p1]@release_r stick_1: f stick_1: e stick_1: e stick_1: f stick_2: f stick_2: f stick_2: e stick_2: e p[p2]@ stick_1: f stick_1: e proctype philo( chan left_s, right_s) take_r stick_2: e stick_2: e { do :: left_s?_; /* Wait */ p[p2]@ stick_1: e take_r: right_s?_; /* Wait */ release_l stick_2: e release_l: left_s!1; /* Send */ release_r: right_s!1; /* Send */ od p[p2]@ stick_1: e } release_r stick_2: f Guillaume Sadegh A Promela front-end for Spot 10 / 27

  20. Introduction Promela and state-space generation Implementation Benchmark Conclusion State-space generation with the philosophers p[p1]@take_r p[p1]@release_l p[p1]@release_r stick_1: f stick_1: e stick_1: e stick_1: f stick_2: f stick_2: f stick_2: e stick_2: e p[p2]@ stick_1: f stick_1: e proctype philo( chan left_s, right_s) take_r stick_2: e stick_2: e { do :: left_s?_; /* Wait */ p[p2]@ stick_1: e take_r: right_s?_; /* Wait */ release_l stick_2: e release_l: left_s!1; /* Send */ release_r: right_s!1; /* Send */ od p[p2]@ stick_1: e } release_r stick_2: f Guillaume Sadegh A Promela front-end for Spot 10 / 27

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