• Keine Ergebnisse gefunden

We give the proofs for the meta theory from Appendix B.

C.1 Compositionality

Proof C.1(Lemma B.28).By definition of≤andOEBR. Proof C.2(Lemma B.29).By definition of≤andOHP𝑘 . Proof C.3(Lemma B.30).By definition of≤andOHP0,1. Proof C.4(Proposition 5.3).Consider someℎ∈S((𝑙1, 𝜑)). We show thatℎ∈S((𝑙2, 𝜑))holds.

To that end, we proceed by induction over the length ofℎ. In the base case, we haveℎ=𝜖. Then, location𝑙1is not accepting by definition. By the simulation relation,𝑙2is not accepting as well.

Hence,ℎ∈S((𝑙2, 𝜑))follows as required. For the induction step, consider𝑓(𝑣).ℎ∈S((𝑙1, 𝜑)).

By Assumption 5.2, there are steps(𝑙1, 𝜑)−−−→

𝑓(𝑣)

(𝑙1, 𝜑)and(𝑙2, 𝜑)−−−→

𝑓(𝑣)

(𝑙2, 𝜑). The former step is due to a transition𝑙1−−−−→

𝑓(𝑟), 𝑔

𝑙1 such that𝜑(𝑔[𝑟 ↦𝑣])evaluates totrue. Similarly, the latter step is due to a transition𝑙2−−−−→

𝑓(𝑟), 𝑔

𝑙2 such that𝜑(𝑔[𝑟↦𝑣])evaluates totrue. This means𝜑is a model for𝑔and𝑔. That is,𝑔∧𝑔is satisfiable. Then,𝑙1O 𝑙2yields𝑙1O 𝑙2. Note that we haveℎ∈S((𝑙1, 𝜑))by definition. By induction, we getℎ∈S((𝑙2, 𝜑)). Because SMR automata are deterministic by Assumption 5.2, we conclude𝑓(𝑣).ℎ∈S((𝑙2, 𝜑))as required.

Proof C.5(Theorem A.2).We proceed by induction over the structure of𝜏. In the base case, we have the empty computation𝜏 =𝜖. Then, the claim follows by definition for𝜎 =𝜖. For the induction step, consider𝜏 ∈⟦P(R)⟧AdrAdrand the following step in the standard semantics:

(pc1pc3, 𝜏)⇢⇢Q,𝑡 (pc1pc3, 𝜏 .act) with pc1pc3ctrl(𝜏). (1) By definition,𝜏 .act∈⟦P(R)⟧AdrAdr. Assume we already constructed for𝜏 some𝜎 ∈⟦𝑀𝐺𝐶(R)⟧AdrAdr with the desired properties. That is, there ispc2withpc2pc3ctrl(𝜎). Furthermore, we have the following:𝑚R𝜏 = 𝑚R𝜎,𝑚𝜏IVar =𝑚𝜎IVar,H(𝜏)= H(𝜎),fresh𝜏fresh𝜎,freed𝜏freed𝜎,

Section C.1 Compositionality 171

andused(𝜏)⊆used(𝜎). We construct a computation𝜎∈⟦𝑀𝐺𝐶(R)⟧AdrAdr that mimics𝜏 .act. To that end, we show that there is a program step of the form:

(pc2pc3, 𝜎)⇢⇢(pc2pc3, 𝜎) (2) with the following:𝑚𝜏 .Ract =𝑚R

𝜎,𝑚𝜏 .actIVar =𝑚𝜎IVar,fresh𝜏 .actfresh𝜎,freed𝜏 .actfreed𝜎, andused(𝜏 .act)used(𝜎), as well asH(𝜏 .act)=H(𝜎). Letact=⟨𝑡 ,com,up⟩.

Case 1: Q=R

Step (1) is due to Rule (sos-std-par) followed by Rule (sos-std-smr). By definition, we havepc1 =pc1. Letstmt3 =pc3(𝑡). Then,pc3 =pc3[𝑡 ↦stmt3]withstmt3 −−comstmt3. By definition of Rule (sos-std-par), we the step(stmt2stmt3, 𝜎)⇢⇢R,𝑡 (stmt2stmt3, 𝜎 .act) satisfies (2), provided we haveactAct(𝜎 , 𝑡 ,com). We show thatactAct(𝜎 , 𝑡 ,com)holds and that𝜎=𝜎 .actsatisfies the required properties. To do this, we rely on the following:

∀exp. comcontainsexpexpIVarVarRSelR (3)

∀exp. comassigns toexpexpVarRSelR (4)

∀exp. expIVarVarRSelR ⟹ 𝑚𝜏(exp)=𝑚𝜎(exp) (5) Implications (3) and (4) follow from𝜏 .actbeing free from separation violations. The remaining implication (5) is due toexpdom(𝑚𝜏IVar)∪dom(𝑚𝜏R)by definition together with both 𝑚𝜏R=𝑚R𝜎and𝑚𝜏IVar =𝑚𝜎IVarby induction. Now, we do a case distinction overcom.

Case 1.1: com∈{in∶func(𝑟), re∶func, env(𝑎) }

By definition of Rule (sos-std-smr), the case does apply.

Case 1.2: com∈{beginAtomic, endAtomic,comskip}

By definition,actAct(𝜎 , 𝑡 ,com)as required. We conclude by induction:

𝑚R𝜏 .act=𝑚𝜏R=𝑚R𝜎=𝑚R𝜎 .act

𝑚𝜏 .actIVar =𝑚𝜏IVar =𝑚𝜎IVar =𝑚𝜎 .actIVar fresh𝜏 .act=fresh𝜏fresh𝜎 =fresh𝜎 .act

freed𝜏 .act=freed𝜏freed𝜎=freed𝜎 .act

used(𝜏 .act)=used(𝜏)⊆used(𝜎)=used(𝜎 .act) H(𝜏 .act)=H(𝜏)=H(𝜎)=H(𝜎 .act)

Case 1.3: comexp∶=exp

First, we showactAct(𝜎 , 𝑡 ,com). To that end, we show that the updateupis an appro-priate update forcomafter𝜎. IfexpVar, then the update isup=[exp↦𝑚𝜏(exp)].

From (5), we obtain𝑚𝜏(exp)=𝑚𝜎(exp). That is,upis appropriate. Otherwise, we have

172 Appendix C Proof of Meta Theory

expVar. This meansexpSelR by (3). Soexpmust be of the formexp≡𝑝 .sel. Let 𝑎=𝑚𝜏(𝑝). The update isup= [𝑎 .sel↦𝑚𝜏(exp)]. From (5), we get𝑚𝜎(𝑝)=𝑎and 𝑚𝜏(exp)=𝑚𝜎(exp). Again,upis appropriate. Altogether,actAct(𝜎 , 𝑡 ,com).

Observe that (4) yieldsexpVarRSelR. We have𝑚𝜏(exp)=𝑚𝜎(exp)=𝑏for some address𝑏, as argued above. So we get:

𝑚𝜏 .actIVar =𝑚𝜏IVar =𝑚𝜎IVar =𝑚𝜎 .actIVar 𝑚𝜏 .Ract =𝑚R𝜏[up]=𝑚R𝜎[up]=𝑚R𝜎 .act

The remaining properties follow by definition and induction as before.

Case 1.4: comassumecond

Letexpbe an expression incond. Similarly to the previous cases,𝑚𝜏(exp)=𝑚𝜎(exp) follows (3) and (5). SoactAct(𝜎 , 𝑡 ,com)follows becausecondhas the same truth value after𝜏 and𝜎. The remaining properties follow immediately sinceactdoes not modify the memory nor affects the fresh/free addresses.

Case 1.5: com≡𝑝∶=malloc

Let𝑎=𝑚𝜏 .act(𝑝)be the allocated address. We have𝑎 ∈fresh𝜏freed𝜏. By induction, we get𝑎∈fresh𝜎freed𝜎. This yieldsactAct(𝜎 , 𝑡 ,com). Moreover, we get:

fresh𝜏 .act =fresh𝜏 \ {𝑎}⊆fresh𝜎\ {𝑎}=fresh𝜎 .act

freed𝜏 .act=freed𝜏 \ {𝑎}⊆freed𝜎\ {𝑎}=freed𝜎 .act

H(𝜏 .act)=H(𝜏)=H(𝜎)=H(𝜎 .act)

We turn to the remaining properties. We haveup=[𝑝↦𝑎, 𝑎 .nextseg, 𝑎 .data↦𝑑] for some𝑑. Observe that𝑝∈VarRholds by (4). SinceVarRIVar =∅, we get:

𝑚𝜏 .actIVar =𝑚𝜏IVar =𝑚𝜎IVar =𝑚𝜎 .actIVar used(𝜏 .act)=used(𝜏)⊆used(𝜎)=used(𝜎 .act)

For𝑝we have𝑚𝜏 .Ract(𝑝)=𝑎=𝑚R𝜎 .act(𝑝). For𝑎 .nextwe have:

𝑚R𝜏 .act(𝑎 .next)=seg=𝑚R𝜎 .act(𝑎 .next) ifnextSelR 𝑚𝜏 .Ract(𝑎 .next)=⊥=𝑚R𝜎 .act𝑎 .next otherwise.

Similarly, we obtain𝑚R𝜏 .act(𝑎 .data) =𝑚R𝜎 .act(𝑎 .data). Altogether, this establishes the desired𝑚R𝜏 .act=𝑚R𝜎 .actasupdoes not modify expressions besides𝑝,𝑎 .next, and𝑎 .data.

Section C.1 Compositionality 173

Case 1.6: comfree(𝑝)

We haveactAct(𝜎 , 𝑡 ,com)by definition. Let𝑚𝜏(𝑝)=𝑎. As before,𝑚𝜏(𝑝)=𝑚𝜎(𝑝) follows from (3) and (5). Hence, we conclude as follows:

fresh𝜏 .act=fresh𝜏\ {𝑎}⊆fresh𝜎\ {𝑎}=fresh𝜎 .act

freed𝜏 .act=freed𝜏 ∪{𝑎}⊆freed𝜎∪{𝑎}=freed𝜎 .act

H(𝜏 .act)=H(𝜏).free(𝑎)=H(𝜎).free(𝑎)=H(𝜎 .act) used(𝜏 .act)=used(𝜏)⊆used(𝜎)=used(𝜎 .act)

𝑚𝜏 .actIVar =𝑚𝜏IVar =𝑚𝜎IVar =𝑚𝜎 .actIVar 𝑚R𝜏 .act=𝑚𝜏R=𝑚R𝜎=𝑚R𝜎 .act

where the last two equalities are due toup=∅.

Case 2: Q=Pandcom≡/ env(𝑎)

Step (1) is due to Rule (sos-std-par). Letstmt1=pc1(𝑡)andstmt3=pc3(𝑡). By definition, pc1 =pc1[𝑡 ↦stmt1]andpc3=pc3[𝑡 ↦stmt3]withstmt1stmt3−−comstmt1stmt3.

Case 2.1: comin∶func(𝑟)

Step (1) involves Rule (sos-std-call):stmt3skipandstmt3R.func;awaitfunc.

Assume for a moment we havestmt2 −−comstmt2 andactAct(𝜎 , 𝑡 ,com). Then, we satisfies (2) by step(pc2pc3, 𝜎)⇢⇢R,𝑡 (pc2pc3, 𝜎 .act)due to Rule (sos-std-call) combined with Rule (sos-std-par). Now, we show thatactis enabled after𝜎. By assumption,𝑟𝑖IVar. By induction,seg≠𝑚𝜏(𝑟𝑖)=𝑚𝜎(𝑟𝑖). So,𝜎 .act∈O⟦P⟧AdrAdrby the assumptions on the𝑀𝐺𝐶. This means we satisfy (2) because the stepstmt2−−comstmt2 exists andactAct(𝜎 , 𝑡 ,com)holds. We turn to the remaining properties and establish that𝜎=𝜎 .actis an adequate choice. Letevtbe an event such thatH(𝜏 .act)=H(𝜏).evt.

Since we have established𝑚𝜏(𝑟𝑖)=𝑚𝜎(𝑟𝑖)already, we getH(𝜎 .act)= H(𝜎).evt. By induction,H(𝜏 .act)=H(𝜎 .act). The remaining properties follow by definition together with induction as before sinceactdoes not affect the memory nor the fresh/freed/used addresses.

Case 2.2: comre∶func

The step is due to Rule (sos-std-return): stmt3awaitfunc andstmt3skip. We show that𝜎 = 𝜎 .act is an appropriate choice. We get𝜎 .act ∈ O⟦P⟧AdrAdr by the assumptions on the𝑀𝐺𝐶. We find a step(pc2pc3, 𝜎) ⇢⇢R,𝑡 (pc2pc3, 𝜎 .act)that satisfies (2), as in the previous case. Further, we get:

H(𝜏 .act)=H(𝜏).re∶func(𝑡)=H(𝜎).re∶func(𝑡)=H(𝜎 .act)

and conclude the remaining properties by definition together with induction as before.

174 Appendix C Proof of Meta Theory

Case 2.3: otherwise

The step is due to Rule (sos-std-ds). By definition,stmt3stmt3. Observe that we satisfy (2) with𝜎=𝜎and𝜎=𝜎 .actfor anyactAct(𝜎 , 𝑡 ,com). Depending oncom, we decide whether or not to append an action and show the remaining properties.

Case 2.3.1: com≡𝑝∶=mallocand𝑝 ∉IVar

Next, observe that𝑝∈VarPsince𝜏 .actis free from separation violations. Hence, we obtain: for all selectorsselSelRsince𝑝∉IVar (the selectors of all other addresses remain unchanged). This follows from the fact thatupandupagree on the updates they perform on selectors. Formally, we have𝑚𝜏 .Ract(𝑎 .sel)=𝑣 =𝑚R

𝜎 .act(𝑎 .sel)where we use𝑣 =𝑎ifsel=nextand𝑣 =𝑑ifsel=data.

Case 2.3.2: com≡𝑝∶=mallocand𝑝 ∈IVar

Follows analogously to the previous case. Here, we can simply choose𝜎=𝜎 .actand observe that𝑚𝜏 .Ract(𝑝)=𝑚R

and conclude the remaining properties by definition and induction as before.

Case 2.3.4: comexp∶=expwithexpIVar

We show that𝜎=𝜎satisfies the desired properties. We get (2) forpc2=pc2. Next, we show𝑚R𝜏 .act =𝑚R𝜎. To do so, it is sufficient to show𝑚R𝜏 .act =𝑚R𝜏 since𝑚R𝜏 =𝑚R𝜎 holds by induction. To the contrary, assume𝑚R𝜏 .act ≠𝑚R𝜏. Note that, by definition, we havedom(𝑚𝜏R)=dom(𝑚R𝜏 .act). Consider𝑝 ∈dom(𝑚𝜏R). Because𝜏 .actis free from separation violations, we haveexp ≡/ 𝑝. Hence,𝑚R𝜏 .act(𝑝) =𝑚𝜏R(𝑝)holds. That is, there must be𝑎 .seldom(𝑚R𝜏)such that𝑚R𝜏 .act(𝑎 .sel) ≠𝑚R𝜏(𝑎 .sel). Hence, we haveexp≡𝑞 .selwith𝑚𝜏(𝑞)=𝑎. Observe that𝑎 .seldom(𝑚𝜏R)meansselSelR. So,actis a separation violation. This contradicts the assumptions and thus concludes the desired𝑚𝜏 .Ract =𝑚R𝜏. The remaining properties follow by definition together with induction.

Case 2.3.5: com∈{assumecond, beginAtomic, endAtomic,skip}

We can choose𝜎=𝜎 and immediately obtain the desired properties by induction.

Case 3: Q=Pandcomenv(𝑎)

Step (1) is due to Rule (sos-std-env). We havepc1pc1andpc3pc3and𝑡 =⊥. By definition,𝑎∈fresh𝜏freed𝜏. By induction,𝑎∈fresh𝜎freed𝜎. So,actAct(𝜎 ,⊥,com).

That is, we obtain the step(pc2pc3, 𝜎)⇢⇢P,⊥(pc2pc3, 𝜎 .act)which satisfies (2). Next, we establish𝑚R𝜏 .act=𝑚R𝜎 .act. To that end, considerexpPExpDExp. IfexpAdr≠{𝑎}, then we get𝑚𝜏 .Ractexp =𝑚R𝜏exp =𝑚R𝜎exp =𝑚R𝜎 .actexpwhere the second equality holds by induction and the first/third equality holds byup. It remains to show, for allselSelR, that𝑚R𝜏 .act(𝑎 .sel)=𝑚R

𝜎 .act(𝑎 .sel)holds. This follows from the fact thatupandupagree on the updates they perform on selectors. The remaining properties follow by induction since actdoes not affect the control locations nor the valuation of variables nor the history nor the fresh/freed/used addresses.

The above case distinction is complete and thus concludes the claim.

Proof C.6(Corollary A.3).Consequence of Theorem A.2.

Proof C.7(Theorem A.4).We proceed by induction over the structure of𝜏. In the base case, we have the empty computation𝜏 = 𝜖. Then, the claim follows by definition for𝜎 = 𝜖. For the induction step, consider𝜏 ∈ ⟦P(R)⟧AdrAdr and the following program step in the standard semantics:

(pc1pc2, 𝜏)⇢⇢Q,𝑡 (pc1pc2, 𝜏 .act) with pc1pc2ctrl(𝜏). (6) By definition,𝜏 .act ∈ ⟦P(R)⟧AdrAdr. Assume we already constructed for𝜏 some𝜎 ∈ ⟦P(R)⟧AdrAdr with the following: stmt1ctrl(𝜎),𝑚𝜏P =𝑚P𝜎,H(𝜏)=H(𝜎),fresh𝜏fresh𝜎,freed𝜏freed𝜎,

176 Appendix C Proof of Meta Theory

andretired𝜏retired𝜎. We now construct a computation𝜎 ∈ ⟦P(R)⟧AdrAdr that mimics𝜏 .act.

More precisely, we show that there is a program step in the SMR semantics of the form (pc1, 𝜎)⇢(pc1, 𝜎) (7) satisfying the following:𝑚P𝜏 .act=𝑚P

𝜎,H(𝜏 .act)=H(𝜎),fresh𝜏 .actfresh𝜎,freed𝜏 .actfreed𝜎, andretired𝜏 .actretired𝜎. Letact=⟨𝑡 ,com,up⟩.

Case 1: Q =R

Step (6) is due to Rule (sos-std-par) followed by Rule (sos-std-smr). By definition, we havepc1=pc1. Letstmt2 =pc2(𝑡). Then,pc2=pc2[𝑡 ↦stmt2]withstmt2−−comstmt2.

Case 1.1: com∈{in∶func(𝑟), re∶func}

According to Rule (sos-std-smr), the case does not apply.

Case 1.2: com∈{skip, beginAtomic, endAtomic,assumecond}

We show that𝜎=𝜎is an appropriate choice. We immediately satisfy (7) bypc1 =pc1. For the remaining properties, we conclude by induction as follows:

𝑚P𝜏 .act=𝑚𝜏P=𝑚P𝜎=𝑚P𝜎 .act H(𝜏 .act)=H(𝜏)=H(𝜎)=H(𝜎 .act)

fresh𝜏 .act=fresh𝜏fresh𝜎 =fresh𝜎 .act

freed𝜏 .act=freed𝜏freed𝜎=freed𝜎 .act

retired𝜏 .act =retired𝜏retired𝜎 =retired𝜎 .act

Case 1.3: comexp∶=exp

We choose𝜎=𝜎. We immediately satisfy (7) bypc1 =pc1. Next, we show𝑚P𝜏 .act=𝑚P𝜎. To that end, it suffices to establish𝑚P𝜏 .act=𝑚𝜏P. First, consider the case whereexpVar holds. Then,expVarR because𝜏 .actis free from separation violations. By definition, we obtain𝑚𝜏 .act=𝑚𝜏[exp↦𝑚𝜏(exp)]. That is,𝑚P𝜏 .act=𝑚𝜏PbecauseVarRVarP =∅.

Second, consider the remaining case whereexpVarholds. So,exp≡𝑝 .selfor some pointer𝑝 and selectorsel. Let𝑎 =𝑚𝜏(𝑝). We have𝑚𝜏 .act = 𝑚𝜏[𝑎 .sel ↦𝑚𝜏(exp)].

Since𝜏 .actis free from separation violations,selSelR. So, we get𝑚𝜏 .Pact=𝑚P𝜏 because ofSelRSelP =∅. The remaining properties follow by definition together with induction as before.

Case 1.4: com≡𝑝∶=malloc

Let𝑎=𝑚𝜏 .act(𝑝). The update isup =[𝑝 ↦𝑎, 𝑎 .nextseg, 𝑎 .data ↦𝑑]for some𝑑. We choose𝜎=𝜎 .actwithact=⟨𝑡 ,env(𝑎),up⟩andup=[𝑎 .nextseg, 𝑎 .data↦𝑑].

By definition, we have𝑎∈fresh𝜏freed𝜏. Hence,𝑎∈fresh𝜎freed𝜎 by induction. So we getactAct(𝜎 , 𝑡 ,env(𝑎)). Rule (sos-env) yields the step(pc1, 𝜎)⇢(pc1, 𝜎 .act)

Section C.1 Compositionality 177

which satisfies (7). Next, we show𝑚P𝜏 .act = 𝑚P

𝜎 .act. The remaining properties follow by definition and induction as before.

Case 1.5: comfree(𝑝)

Let𝑚𝜏(𝑝)=𝑎. We choose𝜎 =𝜎 .actwithact =⟨𝑡 ,free(𝑎),∅⟩. By the standard se-mantics, we haveactAct(𝜏 , 𝑡 ,com). Hence,actAct(𝜎 ,⊥,free(𝑎))holds according to the SMR semantics. Then, Rule (sos-free) yields(pc1, 𝜎) ⇢ (pc1, 𝜎 .act)which satisfies (7). For the remaining properties, we conclude by definition and induction as before.

By definition,actAct(𝜎 , 𝑡 ,com). We conclude by definition and induction:

𝑚P𝜏 .act =𝑚P𝜏 =𝑚P𝜎 =𝑚P𝜎 .act

Step (6) involves Rule (sos-std-call). By assumption, we have𝑟𝑖IVar. By induction, we get𝑚𝜏(𝑟𝑖)=𝑚𝜎(𝑟𝑖). Hence,𝑚𝜎(𝑟𝑖)≠ segbecause𝑚𝜏(𝑟𝑖)≠ segaccording to the semantics. This givesactAct(𝜎 , 𝑡 ,com)by definition. Now, letevtbe the event emitted

178 Appendix C Proof of Meta Theory

byactafter𝜏, that is,H(𝜏 .act)=H(𝜏).evt. Because we have already established𝑚𝜏(𝑟𝑖)= 𝑚𝜎(𝑟𝑖),actmust emit the same event after𝜎, i.e.,H(𝜎 .act)=H(𝜎).evt. So,H(𝜏 .act)= H(𝜎 .act)follows by induction. For the remaining property, let𝑀 ⊆ Adr such that 𝑀={𝑎}ifevtinretire(𝑡 , 𝑎)and𝑀=∅otherwise. Then, we get:

retired𝜏 .act =retired𝜏 ∪𝑀⊆retired𝜎∪𝑀=retired𝜎 .act.

The remaining properties follow by definition and induction as before.

Case 2.3: comre∶func

Step (6) involves Rule (sos-std-return). By definition,actAct(𝜎 , 𝑡 ,re∶func). We get:

H(𝜏 .act)=H(𝜏).re∶func(𝑡)=H(𝜎).refunc(𝑡)=H(𝜎 .act)

and conclude the remaining properties by definition and induction as before.

Case 2.4: com≡𝑝∶=malloc

Let𝑎=𝑚𝜏 .act(𝑝). Then, the update isup=[𝑝↦𝑎, 𝑎 .nextseg, 𝑎 .data ↦𝑑]for some data value𝑑. By definition,𝑎 ∈ fresh𝜏freed𝜏. So,𝑎 ∈ fresh𝜎freed𝜎 by induction.

This meansactAct(𝜎 , 𝑡 ,com). Moreover, we get:

fresh𝜏 .act =fresh𝜏 \ {𝑎}⊆fresh𝜎\ {𝑎}=fresh𝜎 .act

freed𝜏 .act=freed𝜏 \ {𝑎}⊆freed𝜎\ {𝑎}=freed𝜎 .act

retired𝜏 .act =retired𝜏retired𝜎 =retired𝜎 .act H(𝜏 .act)=H(𝜏)=H(𝜎)=H(𝜎 .act)

It remains to establish𝑚P𝜏 .act =𝑚P𝜎 .act. By induction and the form ofup, we have:

𝑚P𝜏 .act(exp)=𝑚P𝜏(exp)=𝑚P𝜎(exp)=𝑚P

𝜎 .act(exp) if exp∉{𝑝, 𝑎 .next, 𝑎 .data}. Hence, it suffices to show𝑚P𝜏 .act(exp)=𝑚P𝜎 .act(exp)forexp∈{𝑝, 𝑎 .next, 𝑎 .data}. By the definition of the memory separation, it suffices to show𝑚𝜏 .act(exp)=𝑚𝜎 .act(exp).

This follows immediately from the performed updateup.

Case 2.5: com≡𝑝 .sel∶=exp

By definition of the syntax, we haveexpVar. Let𝑎 =𝑚𝜏(𝑝)and let𝑣 =𝑚𝜏(exp).

Then, the update isup=[𝑎 .sel↦𝑣]. Since𝜏 .actis free from separation violations, we get𝑝,expVarPandselSelP. Hence,{𝑝,exp, 𝑎 .sel}⊆dom(𝑚P𝜏). By induction, we have𝑚𝜎(𝑝)=𝑎and𝑚𝜎(exp)=𝑣. This meansupis a valid foractafter𝜎. That is, we obtainactAct(𝜎 , 𝑡 ,com). FromselSelPwe get:

𝑚𝜏 .Pact =𝑚P𝜏[𝑎 .sel↦𝑣]=𝑚P𝜎[𝑎 .sel↦𝑣]=𝑚P𝜎 .act.

Section C.1 Compositionality 179

The remaining properties follow by definition and induction as before.

Case 2.6: com≡𝑝∶=exp Analogous to the previous case.

Case 2.7: comassumecond

Letexpbe an expression incond. Similarly to the previous cases,𝑚𝜏(exp)=𝑚𝜎(exp) by induction together with the fact that𝜏 .actis free from separation violations and thus only variables fromVarP and selectors fromSelP can occur inexp. Then, we arrive atactAct(𝜎 , 𝑡 ,com)sincecondhas the same truth value after𝜏and𝜎. The remaining properties follow by induction.

Case 3: Q=Pandcomenv(𝑎)

Step (6) is due to Rule (sos-std-env). By definition of the rule, we havepc1 =pc1as well asup= [𝑎 .nextseg, 𝑎 .data ↦𝑑]for some value𝑑. By definition,𝑎∈ fresh𝜏freed𝜏. By induction,𝑎 ∈ fresh𝜎freed𝜎. Hence, we obtainactAct(𝜎 , 𝑡 ,com)such that the step(pc1, 𝜎)⇢(pc1, 𝜎 .act)by Rule (sos-env) satisfies (7). Next, we show𝑚P𝜏 .act=𝑚P𝜎 .act. By induction together with the form ofup, we have:

𝑚𝜏 .Pact(exp)=𝑚𝜏P(exp)=𝑚𝜎P(exp)=𝑚P

𝜎 .act(exp) if exp∉{𝑎 .next, 𝑎 .data}. Hence, it suffices to show𝑚P𝜏 .act(exp)=𝑚P𝜎 .act(exp)forexp∈{𝑝, 𝑎 .next, 𝑎 .data}. By the definition of the memory separation, it suffices to show𝑚𝜏 .act(exp) =𝑚𝜎 .act(exp). This follows from the performed updateup. The remaining properties follow by definition and induction as before.

The above case distinction is complete and thus concludes the induction.

Proof C.8(Theorem 5.10).Note that Theorem A.4 implicitly assumes that⟦P(R)⟧AdrAdr is free from separation violations—these requirements were stated informally in Section 5.3. This means that Theorem A.4 is applicable. Consider now some computation𝜏 ∈⟦P(R)⟧AdrAdr. From Theorem A.4 we get𝜎 ∈ O⟦P⟧AdrAdr withctrlP(𝜏)= ctrl(𝜎). By assumption, we havegood(𝜎).

That is,ctrlP(𝜎)∩Fault = ∅. From this we getctrlP(𝜏)∩Fault = ∅. This givesgood(𝜏)as

required.

Proof C.9(Theorem 5.11).As noted in Proof C.8 already, Theorem 5.11 comes with the implicit assumption that⟦P(R)⟧AdrAdr is free from separation violations. Towards a contradiction, assume that⟦P(R)⟧AdrAdris not free from double retires. That is, there is a computation𝜏 .act∈⟦P(R)⟧AdrAdr withact = ⟨𝑡 ,inretire(𝑝),up⟩and𝑚𝜏 .act(𝑝)∈ retired𝜏. Theorem A.4 yields𝜎 ∈ O⟦P⟧AdrAdr with𝑚P𝜏 =𝑚P𝜎 andretired𝜏retired𝜎. We obtain𝜎 .act ∈O⟦P⟧AdrAdr. To see thatactis enabled, note that𝑝 ∈ IVarVarP by assumption and thus𝑚𝜎(𝑝) = 𝑚𝜏(𝑝) ≠ seg. Moreover, this

180 Appendix C Proof of Meta Theory

means𝑚𝜎(𝑝)∈retired𝜎. That is,𝜎 .actis a double retire. This contradicts the assumption of the

semanticsO⟦P⟧AdrAdr being free from double retires.

C.2 Ownership

Proof C.10(Theorem 6.7).We show the contrapositive:

∀𝜏 , 𝑝, 𝑡 . 𝑝∉local𝑡 ∧𝑝∈valid𝜏 ⟹ 𝑚𝜏(𝑝)∉owned𝜏(𝑡).

To that end, we proceed by induction over the structure of𝜏 ∈O⟦P⟧AdrAdr. In the base case,𝜏 =𝜖. Then, the claim follows byowned𝜏(𝑡)= ∅. For the induction step, consider𝜏 .act∈ O⟦P⟧AdrAdr and assume that the claim holds for𝜏. Consider some thread𝑡and some𝑥 ∈PVar\local𝑡 such that𝑝∈valid𝜏. We show that𝑚𝜏(𝑝)∉owned𝜏(𝑡)holds. Letact=⟨𝑡,com,up⟩.

Case 1: 𝑡≠𝑡

By definition, we haveowned𝜏 .act(𝑡)⊆owned𝜏(𝑡).

Case 1.1: 𝑥 ∉shared

If𝑥 ∉ shared, then𝑥 cannot occur in comby to the semantics. Hence,𝑥 ∈ valid𝜏 .act

implies𝑥 ∈ valid𝜏. Moreover,𝑚𝜏 .act(𝑥) =𝑚𝜏(𝑥). By induction,𝑚𝜏(𝑥) ∉ owned𝜏(𝑡).

Hence, we obtain𝑚𝜏 .act(𝑥)∉owned𝜏 .act(𝑡)as required.

Case 1.2: 𝑥 ∈sharedand[𝑥 ↦•] /⊆up

That𝑥 does not receive an update means that it is not the target of an assignment nor an allocation. We get𝑚𝜏(𝑥)=𝑚𝜏 .act(𝑥)by definition. Moreover, we obtain𝑥 ∈valid𝜏 by𝑥 ∈valid𝜏 .act. By induction,𝑚𝜏(𝑥)∉owned𝜏(𝑡). Hence,𝑚𝜏 .act(𝑥)∉owned𝜏 .act(𝑡)as required.

Case 1.3: 𝑥 ∈sharedand[𝑥 ↦𝑎]⊆up

Byowned𝜏 .act(𝑡)⊆ owned𝜏(𝑡), we know thatcomcannot be an allocation targeting𝑥. So,com≡𝑥 ∶=pexp. First, considerpexpPVar. To arrive at𝑥 ∈ valid𝜏 .act, we must havepexpvalid𝜏. As this gives a contradicting𝑚𝜏 .act(𝑥)=𝑎∉owned𝜏 .act(𝑡), the case cannot apply. That is,pexp ≡ 𝑝 .next. Let𝑏 =𝑚𝜏(𝑝). To arrive at𝑥 ∈ valid𝜏 .act, we must have𝑝, 𝑏 .nextvalid𝜏. By definition, this results in𝑚𝜏 .act(𝑥)=𝑎∉owned𝜏 .act(𝑡).

Hence, the case cannot apply.

Case 2: 𝑡=𝑡

We distinguish three cases.

Case 2.1: 𝑥 ∉shared

By the semantics,𝑥 cannot occur incom. We get𝑥 ∈ valid𝜏 and𝑚𝜏(𝑥) = 𝑚𝜏 .act(𝑥).

Section C.2 Ownership 181

Hence,𝑚𝜏 .act(𝑥)∉ owned𝜏(𝑡). Ifowned𝜏 .act(𝑡) ⊆owned𝜏(𝑡), then nothing remains to be shown. Consider nowowned𝜏 .act(𝑡) /⊆owned𝜏(𝑡). By definition, this means we must havecom≡𝑝∶=mallocand thusowned𝜏 .act(𝑡)=owned𝜏(𝑡)∪{𝑎}where𝑎=𝑚𝜏 .act(𝑝).

If𝑚𝜏(𝑥)= 𝑎, then𝑥 ∉ valid𝜏 by the definition of validity. Since this contradicts the previous𝑥 ∈valid𝜏, we must have𝑚𝜏(𝑥)≠𝑎. Hence,𝑚𝜏 .act(𝑥)∉owned𝜏 .act(𝑡)follows as required.

Case 2.2: 𝑥 ∈sharedand[𝑥 ↦•] /⊆up

That𝑥 does not receive an update means it is not the target of an assignment nor an allocation. We get𝑥 ∈ valid𝜏 and𝑚𝜏(𝑥) =𝑚𝜏 .act(𝑥). We conclude as in the previous case.

Case 2.3: 𝑥 ∈sharedand[𝑥 ↦𝑎]⊆up

To the contrary, assumecom≡𝑥 ∶=malloc. This means𝑚𝜏 .act(𝑥)∈fresh𝜏freed𝜏. By definition,𝑚𝜏 .act(𝑥)∉ owned𝜏(𝑡). Because of𝑥 ∈ shared, the allocated address is not owned, that is,𝑚𝜏 .act(𝑥)∉owned𝜏 .act(𝑡)by definition. Since this contradicts the choice of𝑥, we must havecom≡/𝑥 ∶=malloc. Hence, we get𝑚𝜏 .act(𝑥)∈owned𝜏 .act(𝑡)⊆𝜏 𝑡. Becausecomis no allocation but updates𝑥, it must be an assignment,com≡𝑥 ∶=pexp.

By𝑥 ∈shared, we must havepexpPVarin order to get𝑚𝜏 .act(𝑥)=𝑎∈owned𝜏 .act(𝑡).

To get𝑥 ∈valid𝜏 .act, we must havepexpvalid𝜏. We get𝑚𝜏 .act(𝑥)=𝑎∉owned𝜏 .act(𝑡).

Since this contradicts the choice of𝑥, the case cannot apply.

The above case distinction is complete and thus concludes the induction.

C.3 Reductions

Proof C.11(Lemma B.31).By definition.

Proof C.12(Lemma B.32).By definition.

Proof C.13(Lemma B.33).By definition.

Proof C.14(Lemma B.34).By definition.

Proof C.15(Lemma B.35).By definition we have:

182 Appendix C Proof of Meta Theory