synth ese de syst emes distribu es ouverts
play

Synth` ese de syst` emes distribu es ouverts Nathalie Sznajder - PowerPoint PPT Presentation

Synth` ese de syst` emes distribu es ouverts Nathalie Sznajder LSV, ENS Cachan & CNRS & INRIA Saclay IdF 12 Novembre 2009 Nathalie Sznajder PhD defense - November 12th, 2009 , p.1 Introduction Need for formal methods Nathalie


  1. Synthesis of synchronous distributed systems Undecidable and decidable architectures Pnueli-Rosner (FOCS’90) Synthesis problem for synchronous distributed systems is undecid- able for LTL or CTL external or total specifications. u v a b y z Nathalie Sznajder PhD defense - November 12th, 2009 , p.14

  2. Synthesis of synchronous distributed systems Undecidable and decidable architectures Pnueli-Rosner (FOCS’90) Synthesis problem for synchronous distributed systems is undecid- able for LTL or CTL external or total specifications. Pnueli-Rosner (FOCS’90), Kupferman-Vardi (LICS’01) Synthesis problem for pipeline architectures is decidable for CTL ∗ total specifications. a 1 y 1 a 2 y 2 a 3 u v x a b z 1 z 2 z 3 y z Nathalie Sznajder PhD defense - November 12th, 2009 , p.14

  3. Synthesis of synchronous distributed systems Undecidable and decidable architectures Pnueli-Rosner (FOCS’90) Synthesis problem for synchronous distributed systems is undecid- able for LTL or CTL external or total specifications. Pnueli-Rosner (FOCS’90), Kupferman-Vardi (LICS’01) Synthesis problem for pipeline architectures is decidable for CTL ∗ total specifications. a 1 y 1 a 2 y 2 a 3 u v x ? a b z 1 z 2 z 3 y z Nathalie Sznajder PhD defense - November 12th, 2009 , p.14

  4. Synthesis of synchronous distributed systems Total specifications: Information fork criterion Finkbeiner-Schewe (LICS’05) Synthesis problem is decidable for a given architecture if and only if there is no information fork. u v p x 0 x 1 a b y 0 y 1 q w Nathalie Sznajder PhD defense - November 12th, 2009 , p.15

  5. Synthesis of synchronous distributed systems Total specifications: Information fork criterion Finkbeiner-Schewe (LICS’05) Synthesis problem is decidable for a given architecture if and only if there is no information fork. u v p x 0 x 1 a b y 0 y 1 q w Nathalie Sznajder PhD defense - November 12th, 2009 , p.15

  6. Synthesis of synchronous distributed systems Back to external specifications y u b a x v c z Nathalie Sznajder PhD defense - November 12th, 2009 , p.16

  7. Synthesis of synchronous distributed systems Back to external specifications y u b a x v c z Nathalie Sznajder PhD defense - November 12th, 2009 , p.16

  8. Synthesis of synchronous distributed systems Back to external specifications y u b a x v c z Finkbeiner-Schewe (LICS’05) Synthesis problem is undecidable over this architecture with LTL total specifications. Nathalie Sznajder PhD defense - November 12th, 2009 , p.16

  9. Synthesis of synchronous distributed systems Back to external specifications y u b a x v c z Finkbeiner-Schewe (LICS’05) Synthesis problem is undecidable over this architecture with LTL total specifications. Pnueli-Rosner (FOCS’90) Synthesis problem is decidable over this architecture with LTL ex- ternal specifications. Nathalie Sznajder PhD defense - November 12th, 2009 , p.16

  10. Synthesis of synchronous distributed systems What if we consider external specifications? a 1 y 1 a 2 y 2 a 3 y 3 u v x a ? b z 1 z 2 z 3 y z Nathalie Sznajder PhD defense - November 12th, 2009 , p.17

  11. Synthesis of synchronous distributed systems Architectures with uncomparable information View of a variable For an output variable x , View ( x ) is the set of input variables u such that x is accessible from u . Uncomparable information (FSTTCS’06) An architecture has uncomparable information if there exist x , y out- put variables such that View ( x ) \ View ( y ) � = ∅ and View ( y ) \ View ( x ) � = ∅ . u v y x Nathalie Sznajder PhD defense - November 12th, 2009 , p.18

  12. Synthesis of synchronous distributed systems Architectures with uncomparable information View of a variable For an output variable x , View ( x ) is the set of input variables u such that x is accessible from u . Uncomparable information (FSTTCS’06) An architecture has uncomparable information if there exist x , y out- put variables such that View ( x ) \ View ( y ) � = ∅ and View ( y ) \ View ( x ) � = ∅ . Otherwise it is said to have linearly preordered information. u 1 u 2 u 3 u 4 u v y x x 1 x 2 x 3 x 4 Nathalie Sznajder PhD defense - November 12th, 2009 , p.18

  13. Synthesis of synchronous distributed systems Architectures with uncomparable information View of a variable For an output variable x , View ( x ) is the set of input variables u such that x is accessible from u . Uncomparable information (FSTTCS’06) An architecture has uncomparable information if there exist x , y out- put variables such that View ( x ) \ View ( y ) � = ∅ and View ( y ) \ View ( x ) � = ∅ . Otherwise it is said to have linearly preordered information. u 1 u 2 u 3 u 4 u v y x x 1 x 2 x 3 x 4 Nathalie Sznajder PhD defense - November 12th, 2009 , p.18

  14. Synthesis of synchronous distributed systems Architectures with uncomparable information View of a variable For an output variable x , View ( x ) is the set of input variables u such that x is accessible from u . Uncomparable information (FSTTCS’06) An architecture has uncomparable information if there exist x , y out- put variables such that View ( x ) \ View ( y ) � = ∅ and View ( y ) \ View ( x ) � = ∅ . Otherwise it is said to have linearly preordered information. u 1 u 2 u 3 u 4 u v y x x 1 x 2 x 3 x 4 Nathalie Sznajder PhD defense - November 12th, 2009 , p.18

  15. Synthesis of synchronous distributed systems Architectures with uncomparable information View of a variable For an output variable x , View ( x ) is the set of input variables u such that x is accessible from u . Uncomparable information (FSTTCS’06) An architecture has uncomparable information if there exist x , y out- put variables such that View ( x ) \ View ( y ) � = ∅ and View ( y ) \ View ( x ) � = ∅ . Otherwise it is said to have linearly preordered information. u 1 u 2 u 3 u 4 u v y x x 1 x 2 x 3 x 4 Nathalie Sznajder PhD defense - November 12th, 2009 , p.18

  16. Synthesis of synchronous distributed systems Architectures with uncomparable information View of a variable For an output variable x , View ( x ) is the set of input variables u such that x is accessible from u . Uncomparable information (FSTTCS’06) An architecture has uncomparable information if there exist x , y out- put variables such that View ( x ) \ View ( y ) � = ∅ and View ( y ) \ View ( x ) � = ∅ . Otherwise it is said to have linearly preordered information. u 1 u 2 u 3 u 4 u v y x x 1 x 2 x 3 x 4 Nathalie Sznajder PhD defense - November 12th, 2009 , p.18

  17. Synthesis of synchronous distributed systems Uncomparable information yields undecidability Theorem (FSTTCS’06,FMSD’09) Synthesis problem is undecidable for architectures with uncompara- ble information and LTL or CTL external specifications. u v y x Nathalie Sznajder PhD defense - November 12th, 2009 , p.19

  18. Synthesis of synchronous distributed systems Uniformly well connected architectures Definition An architecture is uniformly well connected (UWC) if there is a unique routing which, for each output variable x , sends variables in View ( x ) to x . u v w p 1 p 2 s t p 3 p 4 p 5 y x z Nathalie Sznajder PhD defense - November 12th, 2009 , p.20

  19. Synthesis of synchronous distributed systems Uniformly well connected architectures Definition An architecture is uniformly well connected (UWC) if there is a unique routing which, for each output variable x , sends variables in View ( x ) to x . u v w p 1 p 2 s t p 3 p 4 p 5 y x z Nathalie Sznajder PhD defense - November 12th, 2009 , p.20

  20. Synthesis of synchronous distributed systems Uniformly well connected architectures Definition An architecture is uniformly well connected (UWC) if there is a unique routing which, for each output variable x , sends variables in View ( x ) to x . u v w p 1 p 2 s t p 3 p 4 p 5 y x z Nathalie Sznajder PhD defense - November 12th, 2009 , p.20

  21. Synthesis of synchronous distributed systems Uniformly well connected architectures Definition An architecture is uniformly well connected (UWC) if there is a unique routing which, for each output variable x , sends variables in View ( x ) to x . u v w p 1 p 2 s t p 3 p 4 p 5 y x z Nathalie Sznajder PhD defense - November 12th, 2009 , p.20

  22. Synthesis of synchronous distributed systems Uniformly well connected architectures Definition An architecture is uniformly well connected (UWC) if there is a unique routing which, for each output variable x , sends variables in View ( x ) to x . u v w p 1 p 2 u ⊕ v v ⊕ w s t p 3 p 4 p 5 y x z Nathalie Sznajder PhD defense - November 12th, 2009 , p.20

  23. Synthesis of synchronous distributed systems Decidability results Proposition Checking if an architecture is UWC is decidable, in 2-NEXPTIME and NP-hard. Nathalie Sznajder PhD defense - November 12th, 2009 , p.21

  24. Synthesis of synchronous distributed systems Decidability results Proposition Checking if an architecture is UWC is decidable, in 2-NEXPTIME and NP-hard. Theorem (FSTTCS’06, FMSD’09) Synthesis problem is decidable for UWC architectures with linearly preordered information and external specifications (branching or lin- ear time). Proof idea Routing is used for memoryless internal strategies. Nathalie Sznajder PhD defense - November 12th, 2009 , p.21

  25. Synthesis of synchronous distributed systems Robust specifications Definition (FSTTCS’06, FMSD’09) A formula ϕ in CTL ∗ is robust if ϕ = � � z ∈ Out ψ z where ψ z only depends on View ( z ) ∪ { z } . Nathalie Sznajder PhD defense - November 12th, 2009 , p.22

  26. Synthesis of synchronous distributed systems Robust specifications Definition (FSTTCS’06, FMSD’09) A formula ϕ in CTL ∗ is robust if ϕ = � � z ∈ Out ψ z where ψ z only depends on View ( z ) ∪ { z } . u v w p 1 p 2 s t p 3 p 4 p 5 y x z Nathalie Sznajder PhD defense - November 12th, 2009 , p.22

  27. Synthesis of synchronous distributed systems Robust specifications Definition (FSTTCS’06, FMSD’09) A formula ϕ in CTL ∗ is robust if ϕ = � � z ∈ Out ψ z where ψ z only depends on View ( z ) ∪ { z } . u v w p 1 p 2 s t p 3 p 4 p 5 y x z Nathalie Sznajder PhD defense - November 12th, 2009 , p.22

  28. Synthesis of synchronous distributed systems Robust specifications Definition (FSTTCS’06, FMSD’09) A formula ϕ in CTL ∗ is robust if ϕ = � � z ∈ Out ψ z where ψ z only depends on View ( z ) ∪ { z } . u v w p 1 p 2 s t p 3 p 4 p 5 y x z Nathalie Sznajder PhD defense - November 12th, 2009 , p.22

  29. Synthesis of synchronous distributed systems Robust specifications Definition (FSTTCS’06,FMSD’09) A formula ϕ ∈ CTL ∗ is robust if ϕ = � � z ∈ Out ψ z where ψ z only depends on View ( z ) ∪ { z } . Theorem (FSTTCS’06, FMSD’09) Synthesis problem is decidable for uniformly well connected archi- tectures and external, robust CTL ∗ specifications. Nathalie Sznajder PhD defense - November 12th, 2009 , p.23

  30. Synthesis of synchronous distributed systems Undecidable and decidable architectures - Total specifications a 1 y 1 a 2 y 2 a 3 x Information fork z 1 z 2 z 3 u v a b y z Nathalie Sznajder PhD defense - November 12th, 2009 , p.24

  31. Synthesis of synchronous distributed systems Undecidable and decidable architectures - External specifications a 1 y 1 a 2 y 2 a 3 x Uncomparable ? information z 1 z 2 z 3 u v a b y z Nathalie Sznajder PhD defense - November 12th, 2009 , p.24

  32. Synthesis of synchronous distributed systems Undecidable and decidable architectures - External specifications a 1 y 1 a 2 y 2 a 3 x Uncomparable Uncomparable ? information information z 1 z 2 z 3 UWC architectures u v a b y z Nathalie Sznajder PhD defense - November 12th, 2009 , p.24

  33. Synthesis of synchronous distributed systems Well Connected Architectures Definition An architecture is well connected if, for each output variable v , the subarchitecture formed by its ‘ancestors’ is UWC. A well-connected architecture, but not UWC (from Rasala Lehman-Lehman, SODA’04) u w z 1 z 2 z 2 z 3 z 3 z 4 z 4 z 12 z 13 z 14 z 23 z 24 z 34 Nathalie Sznajder PhD defense - November 12th, 2009 , p.25

  34. Synthesis of synchronous distributed systems Well Connected Architectures Definition An architecture is well connected if, for each output variable v , the subarchitecture formed by its ‘ancestors’ is UWC. A well-connected architecture, but not UWC (from Rasala Lehman-Lehman, SODA’04) u w z 1 z 1 z 2 z 2 z 3 z 3 z 4 z 4 z 12 z 13 z 14 z 23 z 24 z 34 Nathalie Sznajder PhD defense - November 12th, 2009 , p.25

  35. Synthesis of synchronous distributed systems Well Connected Architectures Definition An architecture is well connected if, for each output variable v , the subarchitecture formed by its ‘ancestors’ is UWC. A well-connected architecture, but not UWC (from Rasala Lehman-Lehman, SODA’04) u w z 1 z 1 z 2 z 2 z 3 z 3 z 4 z 4 z 12 z 13 z 14 z 23 z 24 z 34 Nathalie Sznajder PhD defense - November 12th, 2009 , p.25

  36. Synthesis of synchronous distributed systems Well Connected Architectures Definition An architecture is well connected if, for each output variable v , the subarchitecture formed by its ‘ancestors’ is UWC. A well-connected architecture, but not UWC (from Rasala Lehman-Lehman, SODA’04) u w z 1 z 1 z 2 z 2 z 3 z 3 z 4 z 4 z 12 z 13 z 14 z 23 z 24 z 34 Nathalie Sznajder PhD defense - November 12th, 2009 , p.25

  37. Synthesis of synchronous distributed systems Well Connected Architectures Definition An architecture is well connected if, for each output variable v , the subarchitecture formed by its ‘ancestors’ is UWC. A well-connected architecture, but not UWC (from Rasala Lehman-Lehman, SODA’04) u w z 1 z 2 z 2 z 3 z 3 z 4 z 4 z 12 z 13 z 14 z 23 z 24 z 34 Nathalie Sznajder PhD defense - November 12th, 2009 , p.25

  38. Synthesis of synchronous distributed systems Well Connected Architectures Definition An architecture is well connected if, for each output variable v , the subarchitecture formed by its ‘ancestors’ is UWC. A well-connected architecture, but not UWC (from Rasala Lehman-Lehman, SODA’04) u w z 1 z 2 z 2 z 3 z 3 z 4 z 4 z 12 z 13 z 14 z 23 z 24 z 34 Nathalie Sznajder PhD defense - November 12th, 2009 , p.25

  39. Synthesis of synchronous distributed systems Well Connected Architectures Definition An architecture is well connected if, for each output variable v , the subarchitecture formed by its ‘ancestors’ is UWC. A well-connected architecture, but not UWC (from Rasala Lehman-Lehman, SODA’04) u w z 1 z 2 z 2 z 3 z 3 z 4 z 4 z 12 z 13 z 14 z 23 z 24 z 34 Nathalie Sznajder PhD defense - November 12th, 2009 , p.25

  40. Synthesis of synchronous distributed systems Undecidability for well connected architectures with linearly preordered information u w v q 0 z 0 p x z 1 z 2 z 3 z 4 p 1 p 2 p 3 p 4 p 5 p 6 y u 1 w 1 u 2 w 2 u 3 w 3 u 4 w 4 u 5 w 5 u 6 w 6 Nathalie Sznajder PhD defense - November 12th, 2009 , p.26

  41. Synthesis of synchronous distributed systems Undecidability for well connected architectures with linearly preordered information u w v q 0 z 0 p x z 1 z 2 z 3 z 4 p 1 p 2 p 3 p 4 p 5 p 6 y u 1 w 1 u 2 w 2 u 3 w 3 u 4 w 4 u 5 w 5 u 6 w 6 Nathalie Sznajder PhD defense - November 12th, 2009 , p.26

  42. Synthesis of synchronous distributed systems Undecidability for well connected architectures with linearly preordered information u w v q 0 z 0 p x z 1 z 2 z 3 z 4 p 1 p 2 p 3 p 4 p 5 p 6 y u 1 w 1 u 2 w 2 u 3 w 3 u 4 w 4 u 5 w 5 u 6 w 6 Process p 6 knowing no value of u yields undecidability Nathalie Sznajder PhD defense - November 12th, 2009 , p.26

  43. Synthesis of synchronous distributed systems Undecidability for well connected architectures with linearly preordered information u w v q 0 z 0 p x z 1 z 2 z 3 z 4 p 1 p 2 p 3 p 4 p 5 p 6 y u 1 w 1 u 2 w 2 u 3 w 3 u 4 w 4 u 5 w 5 u 6 w 6 Process p 6 knowing all values of u yields decidability Nathalie Sznajder PhD defense - November 12th, 2009 , p.26

  44. Synthesis of synchronous distributed systems Undecidability for well connected architectures with linearly preordered information u w v q 0 z 0 p x z 1 z 2 z 3 z 4 p 1 p 2 p 3 p 4 p 5 p 6 y u 1 w 1 u 2 w 2 u 3 w 3 u 4 w 4 u 5 w 5 u 6 w 6 Process p 6 missing one bit of u yields undecidability Nathalie Sznajder PhD defense - November 12th, 2009 , p.26

  45. Synthesis of synchronous distributed systems Undecidable and decidable architectures - External specifications a 1 y 1 a 2 y 2 a 3 x Uncomparable Uncomparable ? information information z 1 z 2 z 3 WC architectures UWC architectures u v a b y z Nathalie Sznajder PhD defense - November 12th, 2009 , p.27

  46. Synthesis of synchronous distributed systems Related work ◮ Total specifications: [Kupferman-Vardi, LICS’01], [Finkbeiner-Schewe, LICS’05] ◮ External specifications: [Pnueli-Rosner, FOCS’90], [S., PhD’09] ◮ Local specifications: [Madhusudan-Thiagarajan, ICALP’01] ◮ Distributed games framework: [Peterson-Reif, FOCS’79], [Mohalik-Walukiewicz, FSTTCS’03], [Bernet-Janin, FCT’05] Nathalie Sznajder PhD defense - November 12th, 2009 , p.28

  47. Synthesis of asynchronous distributed systems Outline Introduction Synthesis of synchronous distributed systems Model and motivations Uncomparable information Uniformly well connected architectures Well connected architectures Synthesis of asynchronous distributed systems Model Specifications Decidability Results Conclusion Nathalie Sznajder PhD defense - November 12th, 2009 , p.29

  48. Synthesis of asynchronous distributed systems Distributed Synthesis Parameters ◮ Which semantics? asynchronous executions are partial orders (Mazurkiewicz traces) ◮ What kind of memory for the programs? local memory ◮ What kind of specification? external, over partial orders Nathalie Sznajder PhD defense - November 12th, 2009 , p.30

  49. Synthesis of asynchronous distributed systems Asynchronous semantics : communication through common actions ◮ Rendez-vous: two processes agree on a common action. 1 2 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.31

  50. Synthesis of asynchronous distributed systems Asynchronous semantics : communication through common actions ◮ Rendez-vous: two processes agree on a common action. 1 2 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.31

  51. Synthesis of asynchronous distributed systems Asynchronous semantics : communication through common actions ◮ Rendez-vous: two processes agree on a common action. 1 2 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.31

  52. Synthesis of asynchronous distributed systems Asynchronous semantics : communication through common actions ◮ Rendez-vous: two processes agree on a common action. 1 2 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.31

  53. Synthesis of asynchronous distributed systems Asynchronous semantics : communication through common actions ◮ Rendez-vous: two processes agree on a common action. 1 2 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.31

  54. Synthesis of asynchronous distributed systems Asynchronous semantics : communication through common actions ◮ Rendez-vous: two processes agree on a common action. 1 2 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.31

  55. Synthesis of asynchronous distributed systems Asynchronous semantics : communication through common actions ◮ Rendez-vous: two processes agree on a common action. Drawback: For an action to be played, the two processes have to take the same decision, maybe with different knowledge. 1 2 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.31

  56. Synthesis of asynchronous distributed systems Asynchronous semantics : communication through common actions ◮ Rendez-vous: two processes agree on a common action. Drawback: For an action to be played, the two processes have to take the same decision, maybe with different knowledge. ◮ Signal: asymmetric rendez-vous. A common action is initiated by only one process. 1 2 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.31

  57. Synthesis of asynchronous distributed systems Communication by signals Architectures ◮ Communication graph ( Proc , E ) 1 2 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.32

  58. Synthesis of asynchronous distributed systems Communication by signals Architectures ◮ Communication graph ( Proc , E ) ◮ For each process i , sets In i and Out i of input and output signals: Γ = � i ∈ Proc In i ∪ � i ∈ Proc Out i 1 2 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.32

  59. Synthesis of asynchronous distributed systems Communication by signals Architectures ◮ Communication graph ( Proc , E ) ◮ For each process i , sets In i and Out i of input and output signals: Γ = � i ∈ Proc In i ∪ � i ∈ Proc Out i ◮ For each process i , Σ c i is the set of signals it can send (control), Σ i is the set of signals it can observe. 1 1 2 2 3 3 Nathalie Sznajder PhD defense - November 12th, 2009 , p.32

  60. Synthesis of asynchronous distributed systems Programs ◮ Strategies are partial functions f i : Σ ∗ i → Σ c i with local memory. f 1 : b 1 2 f 2 : c 3 f 3 : d Nathalie Sznajder PhD defense - November 12th, 2009 , p.33

  61. Synthesis of asynchronous distributed systems Programs ◮ Strategies are partial functions f i : Σ ∗ i → Σ c i with local memory. ◮ Signal semantics implies reactivity of processes to events. f 1 : b 1 2 f 2 : c 3 f 3 : d Nathalie Sznajder PhD defense - November 12th, 2009 , p.33

  62. Synthesis of asynchronous distributed systems Programs ◮ Strategies are partial functions f i : Σ ∗ i → Σ c i with local memory. ◮ Signal semantics implies reactivity of processes to events. a f 1 : b ′ 1 2 f 2 : c 3 f 3 : d Nathalie Sznajder PhD defense - November 12th, 2009 , p.33

  63. Synthesis of asynchronous distributed systems Programs ◮ Strategies are partial functions f i : Σ ∗ i → Σ c i with local memory. ◮ Signal semantics implies reactivity of processes to events. a f 1 : b ′ 1 a ′ f 2 : c ′ 2 3 f 3 : d Nathalie Sznajder PhD defense - November 12th, 2009 , p.33

  64. Synthesis of asynchronous distributed systems Programs ◮ Strategies are partial functions f i : Σ ∗ i → Σ c i with local memory. ◮ Signal semantics implies reactivity of processes to events. a f 1 : b ′ 1 a ′ a ′ 2 f 2 : c 3 f 3 : d Nathalie Sznajder PhD defense - November 12th, 2009 , p.33

  65. Synthesis of asynchronous distributed systems Programs ◮ Strategies are partial functions f i : Σ ∗ i → Σ c i with local memory. ◮ Signal semantics implies reactivity of processes to events. b ′ a f 1 : g 1 a ′ a ′ 2 f 2 : h 3 f 3 : d Nathalie Sznajder PhD defense - November 12th, 2009 , p.33

  66. Synthesis of asynchronous distributed systems Programs ◮ Strategies are partial functions f i : Σ ∗ i → Σ c i with local memory. ◮ Signal semantics implies reactivity of processes to events. b ′ a f 1 : g 1 a ′ a ′ h 2 f 2 : i 3 f 3 : d Nathalie Sznajder PhD defense - November 12th, 2009 , p.33

Recommend


More recommend