Selective Ownership: Combining Object and Type Hierarchies for - - PowerPoint PPT Presentation

selective ownership combining object and type hierarchies
SMART_READER_LITE
LIVE PREVIEW

Selective Ownership: Combining Object and Type Hierarchies for - - PowerPoint PPT Presentation

Selective Ownership: Combining Object and Type Hierarchies for Flexible Sharing Stephanie Balzer, Thomas R. Gross, and Peter Mller School of Computer Science, Carnegie Mellon University Department of Computer Science, ETH Zurich FOOL 2012


slide-1
SLIDE 1

Selective Ownership: Combining Object and Type Hierarchies for Flexible Sharing

Stephanie Balzer, Thomas R. Gross, and Peter Müller School of Computer Science, Carnegie Mellon University Department of Computer Science, ETH Zurich FOOL 2012

slide-2
SLIDE 2

Ownership type systems

2

slide-3
SLIDE 3

Ownership type systems

Structure program heap

  • Facilitate reasoning about program

2

slide-4
SLIDE 4

Ownership type systems

Structure program heap

  • Facilitate reasoning about program

Application domains

  • Thread synchronization
  • Memory management
  • Enforcement of architectural styles
  • Program verification

2

slide-5
SLIDE 5

Ownership type systems

Structure program heap

  • Facilitate reasoning about program

Application domains

  • Thread synchronization
  • Memory management
  • Enforcement of architectural styles
  • Program verification

Proof obligations to verify, at compile-time, that invariants hold

2

slide-6
SLIDE 6

Ownership-based verification

3

slide-7
SLIDE 7

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7

3

slide-8
SLIDE 8

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7 invariant on tree nodes

3

slide-9
SLIDE 9

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7 Owner of children nodes invariant on tree nodes

3

slide-10
SLIDE 10

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7 Owner of children nodes invariant on tree nodes

3

slide-11
SLIDE 11

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7 Owner of children nodes Owner of children nodes invariant on tree nodes

3

slide-12
SLIDE 12

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7 Owner of children nodes Owner of children nodes invariant on tree nodes

3

slide-13
SLIDE 13

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7

Impose a tree topology on program heap

invariant on tree nodes

3

slide-14
SLIDE 14

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7

3

slide-15
SLIDE 15

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7

Modifications of objects are initiated by their owners

3

slide-16
SLIDE 16

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7 modification

Modifications of objects are initiated by their owners

n2

3

slide-17
SLIDE 17

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7 modification

Modifications of objects are initiated by their owners

n2

3

slide-18
SLIDE 18

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7 modification

Modifications of objects are initiated by their owners

n2

  • wner-as-modifier

discipline

3

slide-19
SLIDE 19

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7

3

slide-20
SLIDE 20

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7

No modifying call-backs into owners from owned objects

3

slide-21
SLIDE 21

Ownership-based verification

n1 n2 n4 n5 n3 n6 n7

No modifying call-backs into owners from owned objects

3

slide-22
SLIDE 22

Ownership-based verification: summary

Guarantees by ownership

  • Impose tree topology on program heap
  • Owner-as-modifier discipline
  • No modifying call-backs into owners from owned objects

4

slide-23
SLIDE 23

Ownership-based verification: summary

Guarantees by ownership

  • Impose tree topology on program heap
  • Owner-as-modifier discipline
  • No modifying call-backs into owners from owned objects

Sound, modular verification of invariants on owned objects

4

slide-24
SLIDE 24

Ownership-based verification: summary

Guarantees by ownership

  • Impose tree topology on program heap
  • Owner-as-modifier discipline
  • No modifying call-backs into owners from owned objects

Sound, modular verification of invariants on owned objects

However ...

4

slide-25
SLIDE 25

Ownership-based verification: summary

Restrict sharing: modifying access only by owner and peers

4

slide-26
SLIDE 26

Ownership-based verification: summary

n1 n2 n4 n5 n3 n6 n7

Restrict sharing: modifying access only by owner and peers

4

slide-27
SLIDE 27

Ownership-based verification: summary

n1 n2 n4 n5 n3 n6 n7

Restrict sharing: modifying access only by owner and peers

modifying access

4

slide-28
SLIDE 28

About this paper

5

slide-29
SLIDE 29

About this paper

Selective ownership

  • Less rigid form of ownership
  • Permits shared, modifying access to objects further “down” in

heap topology

5

slide-30
SLIDE 30

About this paper

Selective ownership

  • Less rigid form of ownership
  • Permits shared, modifying access to objects further “down” in

heap topology

n1 n2 n4 n5 n3 n6 n7

5

slide-31
SLIDE 31

About this paper

Selective ownership

  • Less rigid form of ownership
  • Permits shared, modifying access to objects further “down” in

heap topology

n1 n2 n4 n5 n3 n6 n7 modifying access

5

slide-32
SLIDE 32

About this paper

Selective ownership

  • Less rigid form of ownership
  • Permits shared, modifying access to objects further “down” in

heap topology

5

slide-33
SLIDE 33

About this paper

Selective ownership

  • Less rigid form of ownership
  • Permits shared, modifying access to objects further “down” in

heap topology

Selective ownership-based verification

  • Enables sound, modular verification of invariants over shared,

modifiable sub-structures

First-class relationships

  • Naturally support selective ownership

5

slide-34
SLIDE 34

Selective ownership in a nutshell

6

slide-35
SLIDE 35

Selective ownership in a nutshell

Gives structure to program heap

6

slide-36
SLIDE 36

Selective ownership in a nutshell

Gives structure to program heap

  • By defining order on type declarations
  • And, optionally, by imposing ownership on selected objects

6

slide-37
SLIDE 37

Selective ownership in a nutshell

Gives structure to program heap

  • By defining order on type declarations
  • And, optionally, by imposing ownership on selected objects

E.g., subtyping, package structure

6

slide-38
SLIDE 38

Selective ownership in a nutshell

Gives structure to program heap

  • By defining order on type declarations
  • And, optionally, by imposing ownership on selected objects

6

slide-39
SLIDE 39

Selective ownership in a nutshell

6

Selective ownership := type order [+ object ownership]

slide-40
SLIDE 40

Type order

7

slide-41
SLIDE 41

Type order

A B C D E

7

slide-42
SLIDE 42

Type order

A B C D E Legend: type

7

slide-43
SLIDE 43

Type order

A B C D E Legend: type type order

7

slide-44
SLIDE 44

Type order

A B C D E Legend: type type order

7

slide-45
SLIDE 45

Type order

A B C D E Legend: type type order

7

slide-46
SLIDE 46

Type order

A B C D E Legend: type type order

7

slide-47
SLIDE 47

Type order

A B C D E Legend: type type order

7

slide-48
SLIDE 48

Type order

A B C D E Legend: type type order

7

slide-49
SLIDE 49

Type order

A B C D E Legend: type type order

7

{A ↦ D, B ↦ C, B ↦ E, C ↦ D, C ↦ E}

slide-50
SLIDE 50

Type order

A B C D E Legend: type type order

7

slide-51
SLIDE 51

Type order

A B C D E Legend: type type order

Type order forms a strict partial order

7

slide-52
SLIDE 52

A B C D E

Type order

Legend: type type order

7

slide-53
SLIDE 53

A B C D E

Type order

Legend: type type order instance

7

slide-54
SLIDE 54

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance

7

slide-55
SLIDE 55

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance

7

Modifying references comply with type order

slide-56
SLIDE 56

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance modifying reference

7

Modifying references comply with type order

slide-57
SLIDE 57

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance modifying reference

7

Modifying references comply with type order

slide-58
SLIDE 58

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance modifying reference

7

Modifying references comply with type order

slide-59
SLIDE 59

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance modifying reference

7

Modifying references comply with type order

slide-60
SLIDE 60

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance modifying reference

7

slide-61
SLIDE 61

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance modifying reference

7

Read-only references are unrestricted

slide-62
SLIDE 62

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance modifying reference

7

Read-only references are unrestricted

read-only reference

slide-63
SLIDE 63

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance modifying reference

7

Read-only references are unrestricted

read-only reference

slide-64
SLIDE 64

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance modifying reference

7

slide-65
SLIDE 65

A B C D E

Type order

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 Legend: type type order instance modifying reference

Heap forms DAG (w.r.t. modifying access)

7

slide-66
SLIDE 66

Type order

Legend: type type order instance modifying reference A B C D E a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1

7

slide-67
SLIDE 67

Type order + ownership

Legend: type type order instance modifying reference A B C D E a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1

8

slide-68
SLIDE 68

Type order + ownership

Legend: type type order instance modifying reference A B C D E a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1

8

slide-69
SLIDE 69

Type order + ownership

Legend: type type order instance modifying reference A B C D E a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1

8

slide-70
SLIDE 70

Type order + ownership

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 A B C F D E G Legend: type type order instance modifying reference

8

slide-71
SLIDE 71

Type order + ownership

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 A B C F D E G Legend: type type order instance modifying reference

8

slide-72
SLIDE 72

Type order + ownership

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 A B C F D E G Legend: type type order instance modifying reference f1 f2 g1

8

slide-73
SLIDE 73

Type order + ownership

a1 a2 c1 c2 e1 e2 e3 b1 b2 b3 d1 A B C F D E G Legend: type type order instance modifying reference f1 f2 g1

8

slide-74
SLIDE 74

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G Legend: type type order instance modifying reference

8

slide-75
SLIDE 75

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-76
SLIDE 76

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G c1 Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-77
SLIDE 77

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G c1

Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-78
SLIDE 78

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G c1 Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-79
SLIDE 79

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-80
SLIDE 80

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G b2 Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-81
SLIDE 81

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G b2

Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-82
SLIDE 82

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G b2 Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-83
SLIDE 83

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b3 g1 d1 A B C F D E G b2 Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-84
SLIDE 84

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b3 g1 d1 A B C F D E G b2 b3 Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-85
SLIDE 85

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 g1 d1 A B C F D E G b2 b3 Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-86
SLIDE 86

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 g1 d1 A B C F D E G b2 b3

Heap forms DAG with “sub-trees” (w.r.t. modifying access)

Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-87
SLIDE 87

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 g1 d1 A B C F D E G b2 b3

Heap forms DAG with “sub-trees” (w.r.t. modifying access) restricted, modifying access

Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-88
SLIDE 88

Type order + ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 g1 d1 A B C F D E G b2 b3

shared, modifying access Heap forms DAG with “sub-trees” (w.r.t. modifying access) restricted, modifying access

Legend: type type order instance modifying reference

  • wnership (modifying ref)

8

slide-89
SLIDE 89

Recap

9

slide-90
SLIDE 90

Recap

OO verification challenges

  • Visible-state semantics in presence of call-backs
  • Modular verification of multi-object invariants

Ownership-based verification

  • Leverages tree topology to prevent modifying call-backs
  • Leverages tree topology to encapsulate ownership-based invariants

9

slide-91
SLIDE 91

Recap

OO verification challenges

  • Visible-state semantics in presence of call-backs
  • Modular verification of multi-object invariants

Ownership-based verification

  • Leverages tree topology to prevent modifying call-backs
  • Leverages tree topology to encapsulate ownership-based invariants

Selective ownership

  • Leverages type order to prevent modifying call-backs
  • Leverages ownership to encapsulate ownership-based invariants

9

slide-92
SLIDE 92

Verification: type order

F

10

slide-93
SLIDE 93

Verification: type order

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G

10

slide-94
SLIDE 94

Verification: type order

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G

No transitive call-backs

10

slide-95
SLIDE 95

Verification: type order

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G

No transitive call-backs

e3

10

slide-96
SLIDE 96

Verification: type order

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G

10

slide-97
SLIDE 97

Verification: type order

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G

invariant (b2)

b2

10

slide-98
SLIDE 98

Verification: type order

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G

Visible-state semantics for single-object invariants is sound invariant (b2)

b2

10

slide-99
SLIDE 99

Verification: type order + object ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G

11

slide-100
SLIDE 100

Verification: type order + object ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G

11

slide-101
SLIDE 101

Verification: type order + object ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 b2 b3 g1 d1 A B C F D E G

11

slide-102
SLIDE 102

B

Verification: type order + object ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 g1 d1 A C F D E G b2 b3

11

slide-103
SLIDE 103

B

Verification: type order + object ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 g1 d1 A C F D E G b2 b3

invariant (b2)

b2

11

slide-104
SLIDE 104

B

Verification: type order + object ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 g1 d1 A C F D E G b2 b3

invariant (b2)

b2 f1

invariant (b2,d1)

11

slide-105
SLIDE 105

B

Verification: type order + object ownership

a1 a2 c1 c2 f1 f2 e1 e2 e3 b1 g1 d1 A C F D E G b2 b3

Modular verification of multi-object invariants invariant (b2)

b2 f1

invariant (b2,d1)

11

slide-106
SLIDE 106

Relationships & selective ownership

12

slide-107
SLIDE 107

Relationships & selective ownership

Relationship-based programming languages

  • Successors to OO languages
  • Relationships as first-class citizens

First-class relationships

  • Naturally give rise to a type order

12

slide-108
SLIDE 108

Relationships & selective ownership

Relationship-based programming languages

  • Successors to OO languages
  • Relationships as first-class citizens

First-class relationships

  • Naturally give rise to a type order

Naturally support selective ownership

12

slide-109
SLIDE 109

In the paper

Rumer

  • Relationship-based programming and specification language

Running example: tree

  • Specification in Rumer
  • Tree invariants
  • Selective ownership-based verification

13

slide-110
SLIDE 110

Relationships & type order

14

slide-111
SLIDE 111

Relationships & type order

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node root, Set<Parent> tree) { void appendTree(Tree t, Node p) {...} }

14

slide-112
SLIDE 112

Relationships & type order

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node root, Set<Parent> tree) { void appendTree(Tree t, Node p) {...} }

14

slide-113
SLIDE 113

Relationships & type order

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node root, Set<Parent> tree) { void appendTree(Tree t, Node p) {...} }

14

slide-114
SLIDE 114

Relationships & type order Relates class or

relationships instances

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node root, Set<Parent> tree) { void appendTree(Tree t, Node p) {...} }

14

slide-115
SLIDE 115

Relationships & type order

Type order defined by relationship declarations

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node root, Set<Parent> tree) { void appendTree(Tree t, Node p) {...} }

14

slide-116
SLIDE 116

Relationships & type order

Type order defined by relationship declarations

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node root, Set<Parent> tree) { void appendTree(Tree t, Node p) {...} }

14

slide-117
SLIDE 117

Relationships & type order

Type order defined by relationship declarations {Tree ↦ Parent

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node root, Set<Parent> tree) { void appendTree(Tree t, Node p) {...} }

14

slide-118
SLIDE 118

Relationships & type order

Type order defined by relationship declarations {Tree ↦ Parent {Tree ↦ Parent, Tree ↦ Node

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node root, Set<Parent> tree) { void appendTree(Tree t, Node p) {...} }

14

slide-119
SLIDE 119

Relationships & type order

Type order defined by relationship declarations {Tree ↦ Parent {Tree ↦ Parent, Tree ↦ Node

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node root, Set<Parent> tree) { void appendTree(Tree t, Node p) {...} }

14

slide-120
SLIDE 120

Relationships & type order

Type order defined by relationship declarations {Tree ↦ Parent {Tree ↦ Parent, Tree ↦ Node {Tree ↦ Parent, Tree ↦ Node, Parent ↦ Node}

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node root, Set<Parent> tree) { void appendTree(Tree t, Node p) {...} }

14

slide-121
SLIDE 121

Relationships & instance ownership

15

slide-122
SLIDE 122

Relationships & instance ownership

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node r, owned Set<Parent> t) { void appendTree(Tree t, Node p) {...} }

15

slide-123
SLIDE 123

Relationships & instance ownership

Ownership relation must be subset of type order

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node r, owned Set<Parent> t) { void appendTree(Tree t, Node p) {...} }

15

slide-124
SLIDE 124

Relationships & instance ownership

Ownership relation must be subset of type order

class Node {...} relationship Parent participants (Node child, Node parent) { void link(Node c, Node p) {...} } relationship Tree participants (Node r, owned Set<Parent> t) { void appendTree(Tree t, Node p) {...} }

15

slide-125
SLIDE 125

Conclusions

16

slide-126
SLIDE 126

Conclusions

Selective ownership = type [+ object ownership]

  • Leverages type order to prevent modifying call-backs
  • Leverages ownership to encapsulate ownership-based invariants

16

slide-127
SLIDE 127

Conclusions

Selective ownership = type [+ object ownership]

  • Leverages type order to prevent modifying call-backs
  • Leverages ownership to encapsulate ownership-based invariants

Sound modular verification of multi-object invariants

16

slide-128
SLIDE 128

Conclusions

Selective ownership = type [+ object ownership]

  • Leverages type order to prevent modifying call-backs
  • Leverages ownership to encapsulate ownership-based invariants

Sound modular verification of multi-object invariants Permits shared, modifying access to objects further down

16

slide-129
SLIDE 129

Conclusions

Selective ownership = type [+ object ownership]

  • Leverages type order to prevent modifying call-backs
  • Leverages ownership to encapsulate ownership-based invariants

Sound modular verification of multi-object invariants Permits shared, modifying access to objects further down Type order naturally arises from first-class relationships

16

slide-130
SLIDE 130

Thank you for your attention!