Presentation is loading. Please wait.

Presentation is loading. Please wait.

A Step-Indexed Model of Substructural State

Similar presentations


Presentation on theme: "A Step-Indexed Model of Substructural State"— Presentation transcript:

1 A Step-Indexed Model of Substructural State
Matthew Fluet Cornell University Amal Ahmed Greg Morrisett Harvard University

2 A Step-Indexed Model of Substructural State
Matthew Fluet Cornell University Amal Ahmed Greg Morrisett Harvard University

3 Introduction Mutable state is here to stay Sept. 26, 2005

4 Introduction Mutable state is here to stay
high-level – I/O, data structures low-level – virtual machines, garbage collector Sept. 26, 2005

5 Introduction Mutable state is hard to control Sept. 26, 2005

6 Introduction Mutable state is hard to control
C / Java / SML – unrestricted objects Sept. 26, 2005

7 Introduction Mutable state is hard to control
Various forms of uniqueness have appeared as a means to “tame” state Sept. 26, 2005

8 Introduction Mutable state is hard to control
Various forms of uniqueness have appeared as a means to “tame” state Clean – uniqueness types I/O operations in a purely-functional language Cyclone – unique pointers fine-grained memory management Vault – unique keys resource management protocols Sept. 26, 2005

9 Introduction Mutable state is hard to control
Various forms of uniqueness have appeared as a means to “tame” state Clean – uniqueness types I/O operations in a purely-functional language Cyclone – unique pointers fine-grained memory management Vault – unique keys resource management protocols Sept. 26, 2005

10 Introduction Mutable state is hard to control
Unique objects alone are too restrictive Sept. 26, 2005

11 Introduction Mutable state is hard to control
Unique objects alone are too restrictive Only tree-like data structures Only single paths to a unique object Sept. 26, 2005

12 Introduction Mutable state is hard to control
Unique objects alone are too restrictive Only tree-like data structures Only single paths to a unique object fun f () = … lr … fun g () = … lr … lr -- unique resource Sept. 26, 2005

13 Introduction Mutable state is hard to control
Unique objects alone are too restrictive Only tree-like data structures Only single paths to a unique object fun f () = … lr … fun g () = … lr … lr -- unique resource Sept. 26, 2005

14 Introduction Mutable state is hard to control
Unique objects alone are too restrictive Cyclone and Vault allow programs to store unique objects in shared objects Sept. 26, 2005

15 Introduction Mutable state is hard to control
Unique objects alone are too restrictive Cyclone and Vault allow programs to store unique objects in shared objects fun f () = … ls … fun g () = … ls … ls lr -- shared object lr -- unique resource Sept. 26, 2005

16 Introduction Mutable state is hard to control
Unique objects alone are too restrictive Cyclone and Vault allow programs to store unique objects in shared objects Safety of mixed objects requires some restrictions Sept. 26, 2005

17 Introduction Mutable state is hard to control
Unique objects alone are too restrictive Cyclone and Vault allow programs to store unique objects in shared objects Safety of mixed objects requires some restrictions Cyclone and Vault have different interpretations of “unique” and “shared” Sept. 26, 2005

18 So, they have different sets of restrictions (i.e., type-systems)
Introduction Mutable state is hard to control Unique objects alone are too restrictive Cyclone and Vault allow programs to store unique objects in shared objects Safety of mixed objects requires some restrictions Cyclone and Vault have different interpretations of “unique” and “shared” So, they have different sets of restrictions (i.e., type-systems) Sept. 26, 2005

19 Introduction How do we compare and evaluate these languages?
Mutable state is hard to control Unique objects alone are too restrictive Cyclone and Vault allow programs to store unique objects in shared objects Safety of mixed objects requires some restrictions Cyclone and Vault have different interpretations of “unique” and “shared” So, they have different sets of restrictions (i.e., type-systems) This is an important point for us as researchers: high-level design papers tout “unique under shared” as a technical contribution, we should be critical of these claims when the technical meaning of “unique” and “shared” are not made concrete Sept. 26, 2005

20 Introduction Can we generalize the interpretations and restrictions?
Mutable state is hard to control Unique objects alone are too restrictive Cyclone and Vault allow programs to store unique objects in shared objects Safety of mixed objects requires some restrictions Cyclone and Vault have different interpretations of “unique” and “shared” So, they have different sets of restrictions (i.e., type-systems) Sept. 26, 2005

21 Introduction Can we define an expressive target language?
Mutable state is hard to control Unique objects alone are too restrictive Cyclone and Vault allow programs to store unique objects in shared objects Safety of mixed objects requires some restrictions Cyclone and Vault have different interpretations of “unique” and “shared” So, they have different sets of restrictions (i.e., type-systems) Sept. 26, 2005

22 Introduction We study a core language with mutable references
Sept. 26, 2005

23 Introduction We study a core language with mutable references
deallocation of references strong (type-varying) updates storage of unique objects in shared references Sept. 26, 2005

24 Introduction We study a core language with mutable references of all qualifiers Sept. 26, 2005

25 Introduction We study a core language with mutable references of all qualifiers Unrestricted – like C / Java / SML Affine – like Clean and Cyclone Linear – like Vault Sept. 26, 2005

26 Introduction We study a core language with mutable references of all qualifiers Unrestricted – like C / Java / SML Relevant Affine – like Clean and Cyclone Linear – like Vault Sept. 26, 2005

27 Introduction We study a core language with mutable references of all qualifiers Unrestricted – like C / Java / SML Relevant Affine – like Clean and Cyclone Linear – like Vault Sept. 26, 2005

28 Outline A Substructural Type System … with References Model Teaser
Sept. 26, 2005

29 Structural Properties
Conventional type systems satisfy Exchange use typing assumptions in any order Contraction use typing assumptions more than once Weakening use typing assumptions less than once Sept. 26, 2005

30 Structural Properties
Conventional type systems satisfy Exchange use typing assumptions in any order Contraction – Copy use typing assumptions more than once Weakening – Drop use typing assumptions less than once Sept. 26, 2005

31 Structural Properties
Substructural type systems fail to satisfy Exchange use typing assumptions in any order Contraction – Copy use typing assumptions more than once Weakening – Drop use typing assumptions less than once Sept. 26, 2005

32 Structural Properties
Substructural type systems fail to satisfy Exchange use typing assumptions in any order Contraction – Copy use typing assumptions more than once Weakening – Drop use typing assumptions less than once Sept. 26, 2005

33 Substructural Qualifiers
Linear Affine Drop Relevant Copy Unrestricted Drop Copy Sept. 26, 2005

34 Substructural Qualifiers
Unique objects – may be “used” at most once Linear Affine Drop Relevant Copy Unrestricted Drop Copy Shared objects – may be “used” more than once Sept. 26, 2005

35 Substructural Qualifiers
Unique objects – may be “used” at most once Linear Affine Drop Relevant Copy Unrestricted Drop Copy Shared objects – may be “used” more than once Sept. 26, 2005

36 Substructural Qualifiers
Unique objects – may be “used” at most once Linear Affine Drop Relevant Copy Unrestricted Drop Copy Shared objects – may be “used” more than once Sept. 26, 2005

37 Substructural Qualifiers
Unique objects – may be “used” at most once Linear Affine Drop Relevant Copy Unrestricted Drop Copy Shared objects – may be “used” more than once Sept. 26, 2005

38 Substructural Qualifiers
Linear Essential objects – must be “used” at least once Affine Drop Relevant Copy Inessential objects – may be “used” less than once Unrestricted Drop Copy Sept. 26, 2005

39 Substructural Qualifiers
Linear Essential objects – must be “used” at least once Affine Drop Relevant Copy Inessential objects – may be “used” less than once Unrestricted Drop Copy Sept. 26, 2005

40 Substructural Qualifiers
Linear Essential objects – must be “used” at least once Affine Drop Relevant Copy Inessential objects – may be “used” less than once Unrestricted Drop Copy Sept. 26, 2005

41 Substructural Qualifiers
Linear Essential objects – must be “used” at least once Affine Drop Relevant Copy Inessential objects – may be “used” less than once Unrestricted Drop Copy Sept. 26, 2005

42 A Substructural Type System
Qualifiers q ::= U j R j A j L PreTypes t ::= 1 j t1 ­ t2 j t1 ( t2 Types t ::= qt Sept. 26, 2005

43 A Substructural Type System
Qualifiers q ::= U j R j A j L PreTypes t ::= 1 j t1 ­ t2 j t1 ( t2 Types t ::= qt How may the value be used? Sept. 26, 2005

44 A Substructural Type System
Qualifiers q ::= U j R j A j L PreTypes t ::= 1 j t1 ­ t2 j t1 ( t2 Types t ::= qt How often may the value be used? How may the value be used? Sept. 26, 2005

45 Copy with Pairs copy UhLv1,Lv2i ! hUhLv1,Lv2i, UhLv1,Lv2ii
U(Lt1 ­ Lt2) U(At1 ­ At2)  Sept. 26, 2005

46 hv1, v2i may be used more than once
Copy with Pairs copy UhLv1,Lv2i ! hUhLv1,Lv2i, UhLv1,Lv2ii U(Lt1 ­ Lt2) U(At1 ­ At2)  hv1, v2i may be used more than once Sept. 26, 2005

47 hv1, v2i may be used more than once
Copy with Pairs copy UhLv1,Lv2i ! hUhLv1,Lv2i, UhLv1,Lv2ii U(Lt1 ­ Lt2) U(At1 ­ At2)  hv1, v2i may be used more than once Sept. 26, 2005

48 v1 and v2 may be used more than once
Copy with Pairs copy UhLv1,Lv2i ! hUhLv1,Lv2i, UhLv1,Lv2ii U(Lt1 ­ Lt2) U(At1 ­ At2)  v1 and v2 may be used more than once Sept. 26, 2005

49 v1 and v2 may be used more than once
Copy with Pairs copy UhLv1,Lv2i ! hUhLv1,Lv2i, UhLv1,Lv2ii U(Lt1 ­ Lt2) U(At1 ­ At2)  v1 and v2 may be used more than once Sept. 26, 2005

50 Copy with Pairs copy UhLv1,Lv2i ! hUhLv1,Lv2i, UhLv1,Lv2ii
U(Lt1 ­ Lt2) U(At1 ­ At2)  Sept. 26, 2005

51 Copy with Pairs copy UhAv1,Av2i ! hUhAv1,Av2i, UhAv1,Av2ii
U(Lt1 ­ Lt2) U(At1 ­ At2)  Sept. 26, 2005

52 Copy with Pairs copy UhUv1,Uv2i ! hUhUv1,Uv2i, UhUv1,Uv2ii
U(Lt1 ­ Lt2) U(At1 ­ At2)  U(Ut1 ­ Ut2)  Sept. 26, 2005

53 Drop with Pairs drop UhLv1,Lv2i ! hi U(Lt1 ­ Lt2) U(Rt1 ­ Rt2) 
Sept. 26, 2005

54 Drop with Pairs drop UhLv1,Lv2i ! hi U(Lt1 ­ Lt2) U(Rt1 ­ Rt2) 
hv1, v2i is not used Sept. 26, 2005

55 Drop with Pairs drop UhLv1,Lv2i ! hi U(Lt1 ­ Lt2) U(Rt1 ­ Rt2) 
hv1, v2i is not used Sept. 26, 2005

56 Drop with Pairs drop UhLv1,Lv2i ! hi U(Lt1 ­ Lt2) U(Rt1 ­ Rt2) 
v1 and v2 are not used Sept. 26, 2005

57 Drop with Pairs drop UhLv1,Lv2i ! hi U(Lt1 ­ Lt2) U(Rt1 ­ Rt2) 
v1 and v2 are not used Sept. 26, 2005

58 Drop with Pairs drop UhLv1,Lv2i ! hi U(Lt1 ­ Lt2) U(Rt1 ­ Rt2) 
Sept. 26, 2005

59 Drop with Pairs drop UhRv1,Rv2i ! hi U(Lt1 ­ Lt2) U(Rt1 ­ Rt2) 
Sept. 26, 2005

60 Drop with Pairs drop UhUv1,Uv2i ! hi U(Lt1 ­ Lt2) U(Rt1 ­ Rt2) 
U(Ut1 ­ Ut2)  Sept. 26, 2005

61 … with References PreTypes Expressions t ::= … j ref t
e ::= … j new e j free e e ::= … j read e j write e1 e2 j swap e1 e2 Sept. 26, 2005

62 … with References PreTypes Raises design questions: t ::= … j ref t
What does it mean to copy or drop a ref? What operations make sense on different refs? What combinations make sense for the qualifier and contents of a ref? Sept. 26, 2005

63 Copy & Drop with References
copy Ul ! hUl, Uli drop Ul ! hi Lv Lv U(ref Lt) U(ref Rt)  U(ref Ut) U(ref At)  Sept. 26, 2005

64 Copy & Drop with References
copy Ul ! hUl, Uli drop Ul ! hi Lv Lv U(ref Lt) U(ref Rt)  U(ref Ut) U(ref At)  l may be used more than once; but contents are not copied Sept. 26, 2005

65 Copy & Drop with References
copy Ul ! hUl, Uli drop Ul ! hi Lv Lv Lv Lv U(ref Lt) U(ref Rt)  U(ref Ut) U(ref At)  Sept. 26, 2005

66 Copy & Drop with References
copy Ul ! hUl, Uli drop Ul ! hi Lv Lv Lv Lv U(ref Lt) U(ref Rt)  U(ref Ut) U(ref At)  l is not used; and contents are (implicitly) dropped Sept. 26, 2005

67 Copy & Drop with References
copy Ul ! hUl, Uli drop Ul ! hi Lv Lv Lv Lv U(ref Lt) U(ref Rt)  U(ref Ut) U(ref At)  Sept. 26, 2005

68 Copy & Drop with References
copy Ul ! hUl, Uli drop Ul ! hi Lv Lv Lv Lv U(ref Ut) U(ref At)  U(ref Lt) U(ref Rt)  Sept. 26, 2005

69 Copy & Drop with References
copy Ul ! hUl, Uli drop Ul ! hi Lv Lv Lv Lv U(ref Lt) U(ref Rt)  U(ref Ut) U(ref At)  Sept. 26, 2005

70 Copy & Drop with References
copy Ul ! hUl, Uli drop Ul ! hi Rv Rv Rv Rv U(ref Lt) U(ref Rt)  U(ref Ut) U(ref At)  Sept. 26, 2005

71 Copy & Drop with References
copy Ul ! hUl, Uli drop Ul ! hi Uv Uv Uv Uv U(ref Lt) U(ref Rt)  U(ref Ut) U(ref At)  Sept. 26, 2005

72 Copy & Drop with References
copy Ul ! hUl, Uli drop Ul ! hi Av Av Av Av U(ref Lt) U(ref Rt)  U(ref Ut) U(ref At)  Sept. 26, 2005

73 Deallocation qv free Ll ! qv free : L(ref t) ! t 
free : A(ref t) ! t  free : R(ref t) ! t  free : U(ref t) ! t  qv Sept. 26, 2005

74 Deallocation qv free Ll ! qv free : L(ref t) ! t 
free : A(ref t) ! t  free : R(ref t) ! t  free : U(ref t) ! t  qv Sept. 26, 2005

75 Deallocation qv free Ll ! qv free : L(ref t) ! t 
free : A(ref t) ! t  free : R(ref t) ! t  free : U(ref t) ! t  qv Sept. 26, 2005

76 Deallocation qv free Ll ! qv free : L(ref t) ! t 
free : A(ref t) ! t  free : R(ref t) ! t  free : U(ref t) ! t  qv Sept. 26, 2005

77 Deallocation qv free Al ! qv free : L(ref t) ! t 
free : A(ref t) ! t  free : R(ref t) ! t  free : U(ref t) ! t  qv Sept. 26, 2005

78 Deallocation qv free Ul ! qv free : L(ref t) ! t 
free : A(ref t) ! t  free : R(ref t) ! t  free : U(ref t) ! t  qv Sept. 26, 2005

79 Deallocation qv free Ul ! qv free : L(ref t) ! t 
free : A(ref t) ! t  free : R(ref t) ! t  free : U(ref t) ! t  qv Sept. 26, 2005

80 Deallocation qv free Ul ! qv free : L(ref t) ! t 
free : A(ref t) ! t  free : R(ref t) ! t  free : U(ref t) ! t  qv Sept. 26, 2005

81 Deallocation qv free Rl ! qv free : L(ref t) ! t 
free : A(ref t) ! t  free : R(ref t) ! t  free : U(ref t) ! t  qv Sept. 26, 2005

82 Swap swap ql v ! hql, v1i swap : q(ref t) ! t ! L(q(ref t) ­ t)  swap! : L(ref t1) ! t2 ! L(L(ref t2) ­ t1)  swap! : A(ref t1) ! t2 ! L(A(ref t2) ­ t1)  v1 v2 Sept. 26, 2005

83 Swap swap ql v ! hql, v1i swap : q(ref t) ! t ! L(q(ref t) ­ t)  swap! : L(ref t1) ! t2 ! L(L(ref t2) ­ t1)  swap! : A(ref t1) ! t2 ! L(A(ref t2) ­ t1)  v1 v2 Sept. 26, 2005

84 Swap swap ql v ! hql, v1i swap : q(ref t) ! t ! L(q(ref t) ­ t)  swap! : L(ref t1) ! t2 ! L(L(ref t2) ­ t1)  swap! : A(ref t1) ! t2 ! L(A(ref t2) ­ t1)  v1 v2 Sept. 26, 2005

85 Swap swap ql v ! hql, v1i swap : q(ref t) ! t ! L(q(ref t) ­ t)  swap! : L(ref t1) ! t2 ! L(L(ref t2) ­ t1)  swap! : A(ref t1) ! t2 ! L(A(ref t2) ­ t1)  v1 v2 Sept. 26, 2005

86 Swap swap Ll v ! hLl, v1i swap : q(ref t) ! t ! L(q(ref t) ­ t)  swap! : L(ref t1) ! t2 ! L(L(ref t2) ­ t1)  swap! : A(ref t1) ! t2 ! L(A(ref t2) ­ t1)  v1 v2 Sept. 26, 2005

87 Swap swap Ll v ! hLl, v1i swap : q(ref t) ! t ! L(q(ref t) ­ t)  swap! : L(ref t1) ! t2 ! L(L(ref t2) ­ t1)  swap! : A(ref t1) ! t2 ! L(A(ref t2) ­ t1)  v1 v2 Sept. 26, 2005

88 Swap swap Al v ! hAl, v1i swap : q(ref t) ! t ! L(q(ref t) ­ t)  swap! : L(ref t1) ! t2 ! L(L(ref t2) ­ t1)  swap! : A(ref t1) ! t2 ! L(A(ref t2) ­ t1)  v1 v2 Sept. 26, 2005

89 Operations on Substructural State
new free swap! read write! Contents and Ops Ref U R A L shared unique Sept. 26, 2005

90 Operations on Substructural State
new free swap! read write! Contents and Ops Ref U R A L shared unique Sept. 26, 2005

91 Operations on Substructural State
new free swap! read write! Contents and Ops Ref U R A L shared unique Sept. 26, 2005

92 Operations on Substructural State
new free swap! read write! Contents and Ops Ref U R A L shared unique Sept. 26, 2005

93 Operations on Substructural State
C Java SML Operations on Substructural State new free swap! read write! shared unique Contents and Ops Ref U R A L Sept. 26, 2005

94 Operations on Substructural State
Clean Cyclone Operations on Substructural State new free swap! read write! shared unique Contents and Ops Ref U R A L Sept. 26, 2005

95 Operations on Substructural State
Vault Operations on Substructural State new free swap! read write! shared unique Contents and Ops Ref U R A L Sept. 26, 2005

96 Operations on Substructural State
new free swap! read write! Contents and Ops Ref U R A L shared unique Sept. 26, 2005

97 Type Safety No fundamental difficulty in pursuing a syntactic proof of type safety Sept. 26, 2005

98 Type Safety No fundamental difficulty in pursuing a syntactic proof of type safety In fact, we have carried out a proof using the Twelf logical framework, based on the standard syntactic approach Sept. 26, 2005

99 Type Safety No fundamental difficulty in pursuing a syntactic proof of type safety In fact, we have carried out a proof using the Twelf logical framework, based on the standard syntactic approach But, syntactic proofs only go so far Sept. 26, 2005

100 Type Safety Type safety of the language may be proven by showing the soundness of the typing rules with respect to a model Sept. 26, 2005

101 Type Safety Type safety of the language may be proven by showing the soundness of the typing rules with respect to a model Simpler typing rules Store typing does not appear in judgments Sept. 26, 2005

102 Type Safety Type safety of the language may be proven by showing the soundness of the typing rules with respect to a model Simpler typing rules Stronger meta-theoretic results «8a.t¬: forall semantic types, not just syntactic types Sept. 26, 2005

103 Type Safety Type safety of the language may be proven by showing the soundness of the typing rules with respect to a model Simpler typing rules Stronger meta-theoretic results Compatible with Appel’s FPCC project Well-founded, set-theoretic model amenable to formalization in higher-order logic Sept. 26, 2005

104 Type Safety Type safety of the language may be proven by showing the soundness of the typing rules with respect to a model Simpler typing rules Stronger meta-theoretic results Compatible with Appel’s FPCC project Scales to binary logical relations for proving equivalence of programs [Ahmed POPL’06] Sept. 26, 2005

105 A Model of Substructural State
See paper for (many) more details Sept. 26, 2005

106 A Model of Substructural State
See paper for (many) more details Key insights Sept. 26, 2005

107 A Model of Substructural State
See paper for (many) more details Key insights Local store typings types of locations that are sub-exprs of a value Sept. 26, 2005

108 A Model of Substructural State
See paper for (many) more details Key insights Local store typings types of locations that are sub-exprs of a value Merge of local store typings no unique locations in both local store typings identical types for shared locations in both Sept. 26, 2005

109 A Model of Substructural State
See paper for (many) more details Key insights Local store typings types of locations that are sub-exprs of a value Merge of local store typings no unique locations in both local store typings identical types for shared locations in both Step-indexed technique [Appel-McAllester ’01], [Ahmed-Appel-Virga ’03] Sept. 26, 2005

110 Conclusion and Future Work
Core language, type-system, and model framework for comparing high-level designs Model more advanced features Cyclone – alias construct allows a unique pointer to be treated as shared for a limited scope Vault – focus construct allows a shared object to be treated as unique for a limited scope Sept. 26, 2005

111 Sept. 26, 2005

112 Structural Lemmas Exchange: Contraction: Weakening:
If G1,x1:t1,x2:t2,G2 ` e : t, then G1,x2:t2,x1:t1,G2 ` e : t. Contraction: If G1,x1:tx,x2:tx,G2 ` e : t, then G1,x:tx,G2 ` e[x/x1][x/x2] : t. Weakening: If G ` e : t, then G,x:tx ` e : t. Sept. 26, 2005

113 Structural Lemmas Exchange: Contraction: Duplicate Weakening: Discard
If G1,x1:t1,x2:t2,G2 ` e : t, then G1,x2:t2,x1:t1,G2 ` e : t. Contraction: Duplicate If G1,x1:tx,x2:tx,G2 ` e : t, then G1,x:tx,G2 ` e[x/x1][x/x2] : t. Weakening: Discard If G ` e : t, then G,x:tx ` e : t. Sept. 26, 2005

114 Substructural Qualifiers
Linear Exch Affine Exch,Weak Relevant Exch,Cntr Unrestricted Exch,Cntr,Weak Sept. 26, 2005

115 Structural Lemmas Revisited
Contraction: If q ¹ R and G1,x1:qtx,x2:qtx,G2 ` e : t, then G1,x1:qtx,G2 ` e[x/x1][x/x2] : t. Weakening: If q ¹ A and G ` e : t, then G,x:qtx ` e : t. Sept. 26, 2005

116 Operations on Substructural State
Contents and Ops Ref U R A L Sept. 26, 2005

117 Operations on Substructural State
shared unique Sept. 26, 2005

118 Operations on Substructural State
new free swap! read write! Sept. 26, 2005

119 Operations on Substructural State
Sept. 26, 2005

120 Operations on Substructural State
new free swap! read write! Contents and Ops Ref U R A L shared unique Sept. 26, 2005

121 A Model of Substructural State
Model a type as a set of tuples of qualifier, value, and local store typing «t¬ ::= { (q,v,y), …} Model a local store typing as a partial map from locations to qualifiers and types y ::= { l → (q,«t¬), … } Sept. 26, 2005

122 A Model of Substructural State
Model a type as a set of tuples Type = Ã(Qual £ Value £ LocalStore) Model a local store typing as a partial map LocalStore = Locs ! (Qual £ Type) Sept. 26, 2005

123 A Model of Substructural State
Model a type as a set of tuples Type = Ã(Qual £ Value £ LocalStore) Model a local store typing as a partial map LocalStore = Locs ! (Qual £ Type) Sept. 26, 2005

124 A Model of Substructural State
Model a type as a set of tuples Type = Ã(Qual £ Value £ LocalStore) Model a local store typing as a partial map LocalStore = Locs ! (Qual £ Type) Cardinality problem is handled by stratifying definitions with “# of steps to run the program” [Appel-McAllester ’01], [Ahmed-Appel-Virga ’03] Sept. 26, 2005

125 A Model of Substructural State
Model a type as a set of tuples of qualifier, value, and local store typing Model a local store typing as a partial map from locations to qualifiers and types Local store y of a value v only defined on those locations that appear as sub-expressions of v Sept. 26, 2005

126 A Model of Substructural State
Model a type as a set of tuples of qualifier, value, and local store typing Model a local store typing as a partial map from locations to qualifiers and types Local store y of a value v only defined on those locations that appear as sub-expressions of v Further restrictions to rule out  references Sept. 26, 2005

127 A Model of Substructural State
Why only a local store typing? Sept. 26, 2005

128 A Model of Substructural State
Why only a local store typing? hx, yi l1 L l2 L l3 U l4 A Sept. 26, 2005

129 A Model of Substructural State
Why only a local store typing? A global store typing … hx, yi Y = Yx = Yy = Yl1 = Yl2 = … l1 L l2 L l3 U l9 L l4 A Sept. 26, 2005

130 A Model of Substructural State
Why only a local store typing? A global store typing does not distinguish the “real” occurrence of a unique reference hx, yi Y = Yx = Yy = Yl1 = Yl2 = … l1 L l2 L l3 U l9 L l4 A Sept. 26, 2005

131 A Model of Substructural State
Why only a local store typing? A “reachable” store typing … hx, yi Yx l1 L l2 L l3 U l4 A Sept. 26, 2005

132 A Model of Substructural State
Why only a local store typing? A “reachable” store typing … hx, yi Yy l1 L l2 L l3 U l4 A Sept. 26, 2005

133 A Model of Substructural State
Why only a local store typing? A “reachable” store typing … hx, yi Yx Yy l1 L l2 L l3 U l4 A Sept. 26, 2005

134 A Model of Substructural State
Why only a local store typing? A “reachable” store typing does not distinguish shared and exclusive unique references hx, yi Yx Yy l1 L l2 L l3 U l4 A Sept. 26, 2005

135 A Model of Substructural State
Why only a local store typing? A “reachable” store typing does not distinguish shared and exclusive unique references hx, yi l1 L l2 L Yl1 l3 U l4 A Sept. 26, 2005

136 A Model of Substructural State
Why only a local store typing? A “reachable” store typing does not distinguish shared and exclusive unique references hx, yi l1 L l2 L Yl2 l3 U l4 A Sept. 26, 2005

137 A Model of Substructural State
Why only a local store typing? A “reachable” store typing does not distinguish shared and exclusive unique references hx, yi l1 L l2 L l3 U Yl3 l4 A Sept. 26, 2005

138 A Model of Substructural State
Local store typing hx, yi yx yy l1 L l2 L l3 U l4 A Sept. 26, 2005

139 A Model of Substructural State
Local store typing hx, yi yx yy l1 L l2 L yl1 yl2 l3 U yl3 l4 A Sept. 26, 2005

140 A Model of Substructural State
Local store typing Storing a unique object in a shared reference “hides” the unique object hx, yi yx yy l1 L l2 L yl1 yl2 l3 U yl3 l4 A Sept. 26, 2005

141 A Model of Substructural State
Local store typing Storing a unique object in a shared reference the unique object becomes local to the reference hx, yi yx yy l1 L l2 L yl1 yl2 l3 U yl3 l4 A Sept. 26, 2005

142 A Model of Substructural State
When does a global store s satisfy a local store typing y? Local store typing Storing a unique object in a shared reference the unique object becomes local to the reference hx, yi yx yy l1 L l2 L yl1 yl2 l3 U yl3 l4 A Sept. 26, 2005

143 Store Satisfaction s : y when there exists a set of locations
reachable from dom(y) such that the local store typings of all reachable locations merge in a compatible manner into a global store typing that describes the store Sept. 26, 2005

144 A unique location may not appear more than once
Store Satisfaction s : y when there exists a set of locations reachable from dom(y) such that the local store typings of all reachable locations merge in a compatible manner into a global store typing that describes the store A unique location may not appear more than once Sept. 26, 2005

145 A shared location must appear with the same type
Store Satisfaction s : y when there exists a set of locations reachable from dom(y) such that the local store typings of all reachable locations merge in a compatible manner into a global store typing that describes the store A shared location must appear with the same type Sept. 26, 2005

146 Store Satisfaction s : y when Similar to a Garbage Collector
there exists a set of locations reachable from dom(y) such that the local store typings of all reachable locations merge in a compatible manner into a global store typing that describes the store Similar to a Garbage Collector Sept. 26, 2005

147 Store Satisfaction s : y when Similar to a Garbage Collector
there exists a set of locations reachable from dom(y) such that the local store typings of all reachable locations merge in a compatible manner into a global store typing that describes the store Similar to a Garbage Collector These are the roots These are the child locations traced from the contents of a reachable location Sept. 26, 2005


Download ppt "A Step-Indexed Model of Substructural State"

Similar presentations


Ads by Google