developing programs by splitting atoms rely guarantee
play

Developing programs by Splitting atoms (rely/guarantee conditions, - PowerPoint PPT Presentation

Developing programs by Splitting atoms (rely/guarantee conditions, data reification, . . . ) Cliff B Jones Computing Science Newcastle University FMCO 2008-10-22 Cliff B Jones (Newcastle) Developing programs by Splitting atoms


  1. Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) Cliff B Jones Computing Science Newcastle University FMCO 2008-10-22 Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 1 / 36

  2. Contents Design as abstraction layers 1 ACMs 2 Where to start – a specification Splitting atoms (gently) in abstract state Retaining less history The four-slot representation Conclusions 3 Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 2 / 36

  3. Key abstractions Pre/post-conditions (as in VDM/B/. . . ) ◮ design by sequential “operation decomposition rules” ◮ Floyd/Hoare-like rules (coping with relational post-conditions) Rely/Guarantee “thinking” ◮ not (just) a specific set of rules ◮ show importance of “frames” (cf. Separation Logic) ◮ using “auxiliary variables” Abstract objects ◮ choice of abstract data objects key for specifications ◮ data “reification” (classic-VDM / Nipkow’s rule) ◮ link with R/G development “fiction of atomicity” ◮ “splitting (software) atoms safely” [Jon07] ◮ cf. database transactions [JLRW05], . . . Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 3 / 36

  4. While (operation decomposition) rule S sat ( P ∧ b, P ∧ W ) P ⇒ δ l ( b ) While - I mk - While ( b, S ) sat ( P, P ∧ ¬ b ∧ W ∗ ) Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 4 / 36

  5. An R/G picture Q G G G Program Environment R R R R P Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 5 / 36

  6. One R/G rule cf. [CJ07] { P, R ∨ Gr } ⊢ sl sat ( Gl, Ql ) { P, R ∨ Gl } ⊢ sr sat ( Gr, Qr ) Gl ∨ Gr ⇒ G ↼ − P ∧ Ql ∧ Qr ∧ ( R ∨ Gl ∨ Gr ) ∗ ⇒ Q Par - I { P, R } ⊢ mk - Par ( sl, sr ) sat ( G, Q ) Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 6 / 36

  7. Subtle link between R/G and data reification cf. [Jon07] in FINDP ◮ we have t ← min ( t , local ) in n parallel processes ◮ assuming we don’t want to “lock” t ◮ need a representation that helps us to preserve R/G conditions ◮ (simple to) represent as t as min ( et , ot ) SIEVE ◮ we have to remove an element from a set s ◮ assuming we don’t want to “lock” s (big!) ◮ need a representation that helps preserve R/G conditions s ⊆ ↼ − s ◮ (less obvious) represent s as a bit vector Simpson ◮ extremely interesting ◮ my claim: this is the essence of Simpson’s contribution Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 7 / 36

  8. Contents Design as abstraction layers 1 ACMs 2 Where to start – a specification Splitting atoms (gently) in abstract state Retaining less history The four-slot representation Conclusions 3 Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 8 / 36

  9. ACMs: topic of [JP08] Communication (Atomic?) Write(42)
 x
:=
Read()
 Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 9 / 36

  10. ACMs Atomic and (trying for) Asynchronous Write
 Read()
 Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 10 / 36

  11. Simpson’s algorithm Simpson’s algorithm ◮ ingenious algorithm ◮ difficult to prove correct ◮ actually, all proofs make assumptions ◮ different verification methods give different insights ◮ but, even then, lack of explanation several other folk still working on this ◮ come back to at end run through our “rational reconstruction” ◮ “explanation” via layers of abstraction essential to get the big steps right before detailed proof apologies for so much argument about eight lines of code . . . Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 11 / 36

  12. Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 12 / 36

  13. Specification Σ a :: data - w : Value ∗ fresh - w : N hold - r : N inv ( mk -Σ a ( data - w , fresh - w , hold - r )) △ fresh - w , hold - r ∈ { 1 .. len data - w } ∧ hold - r ≤ fresh - w σ a 0 = mk -Σ a ([ x ] , 1 , 1) while true do start - Write ( v : Value ): data - w ← data - w � [ v ]; commit - Write (): fresh - w ← len data - w od while true do start - Read (): hold - r ← fresh - w ; end - Read () r : Value : r ← data - w ( i ) for some i ∈ { hold - r .. fresh - w } od Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 13 / 36

  14. Examples 1, 2 mk -Σ a ([ x , y ] , 1 , 1) start - Write ( y ) .. mk -Σ a ([ x , y ] , 2 , 1) commit - Write () .. mk -Σ a ([ x , y ] , 2 , 2) start - Read () .. end - Read () .. r = y mk -Σ a ([ x , y ] , 1 , 1) start - Write ( y ) .. mk -Σ a ([ x , y ] , 1 , 1) start - Read () .. end - Read () .. r = x mk -Σ a ([ x , y ] , 2 , 1) commit - Write () .. Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 14 / 36

  15. Example 3 mk -Σ a ([ x ] , 1 , 1) start - Read () .. mk -Σ a ([ x , y ] , 1 , 1) start - Write ( y ) .. mk -Σ a ([ x , y ] , 2 , 1) commit - Write () .. mk -Σ a ([ x , y , z ] , 2 , 1) start - Write ( z ) .. mk -Σ a ([ x , y , z ] , 3 , 1) commit - Write () .. end - Read () .. r ∈ { x , y , z } mk -Σ a ([ x , y , z ] , 3 , 3) start - Read () .. end - Read () .. r = z Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 15 / 36

  16. Specification in terms of four sub-operations ( Write ) Atomic operations — therefore pure pre/post specification while true do start - Write ( v : Value ): data - w ← data - w � [ v ]; commit - Write (): fresh - w ← len data - w od || . . . Write ( v : Value ) start - Write ( v : Value ) wr data - w − − − − post data - w = ↼ data - w � [ v ] commit - Write ( v : Value ) rd data - w wr fresh - w pre data - w ( len data - w ) = v post fresh - w = len data - w Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 16 / 36

  17. Specification in terms of four sub-operations ( Read ) . . . || while true do start - Read (): hold - r ← fresh - w ; end - Read () r : Value : r ← data - w ( i ) for some i ∈ { hold - r .. fresh - w } od Read () r : Value local hold - r : N start - Read () wr hold - r rd fresh - w post hold - r = fresh - w end - Read () r : Value rd data - w , fresh - w post ∃ i ∈ { hold - r .. fresh - w } · r = data - w ( i ) Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 17 / 36

  18. General messages note “algorithmic” specification “fiction of atomicity” ◮ but single “atomic” variable does not cover all behaviour “frames” (for rd/wr access) ◮ plus “local” data abstraction Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 18 / 36

  19. Splitting atoms in Σ a ( Write ) Accept overlap (only read/write) — therefore rely/guarantee Write ( v : Value ) start - Write ( v : Value ) rd fresh - w wr data - w rely fresh - w = ↼ fresh - w ∧ data - w = ↼ − − − − − − − − data - w guar { 1 .. fresh - w } ✁ data - w = { 1 .. fresh - w } ✁ ↼ − − − − data - w post data - w = ↼ − − − − data - w � [ v ] commit - Write ( v : Value ) rd data - w wr fresh - w pre data - w ( len data - w ) = v rely fresh - w = ↼ fresh - w ∧ data - w = ↼ − − − − − − − − data - w post fresh - w = len data - w Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 19 / 36

  20. Splitting atoms in Σ a ( Read ) Read () r : Value start - Read () rd fresh - w wr hold - r rely hold - r = ↼ − − − hold - r post hold - r ∈ { ↼ − − − − fresh - w , fresh - w } end - Read () r : Value rd data - w , fresh - w , hold - r rely hold - r = ↼ hold - r ∧∀ i ∈ { hold - r ..↼ − − − fresh - w }· data - w ( i ) = ↼ − − − − − − − − data - w ( i ) post ∃ i ∈ { hold - r ..↼ fresh - w } · r = ↼ − − − − − − − − data - w ( i ) Cliff B Jones (Newcastle) Developing programs by “Splitting atoms” (rely/guarantee conditions, data reification, . . . ) FMCO 2008-10-22 20 / 36

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