SLIDE 27 Locks Held Throughout
Ensures no lock finally acquired at the cut is used afterwards. State space: B × 2X × 2X Accepting states: {(C, A, U) ∈ B × 2X × 2X | A ∩ U = ∅}
NIL → (⊥, ∅, ∅) RET → (⊥, ∅, ∅) BASE p → p NCALL p → p ACQx,⊤ p → p CUT (⊥, A, U) → (⊤, A, U) RCALL (⊥, A, U) (⊥, A′, U′) → (⊥, A ∪ A′, U ∪ U′) RCALL (⊤, A, U) (⊥, _, U′) → (⊤, A, U ∪ U′) RCALL (⊥, A, _) (⊤, A′, U′) → (⊤, A ∪ A′, U′) USEx,⊥ (⊥, A, U) (⊥, A′, U′) → (⊥, A ∪ A′, U ∪ U′ ∪ {x}) USEx,⊥ (⊤, A, U) (⊥, _, U′) → (⊤, A, U ∪ U′) USEx,⊥ (⊥, A, _) (⊤, A′, U′) → (⊤, A ∪ A′, U′) ACQx,⊥ (⊥, A, U) → (⊥, A, U ∪ {x}) ACQx,⊥ (⊤, A, U) → (⊤, A ∪ {x}, U) SPAWN (_, A, U) (C, A′, U′) → (C, A ∪ A′, U ∪ U′) (Reentrant use nodes are handled like returning calls.)
Benedikt Nordhoff Tree-Regular Analysis of Parallel Programs 16