@@ -19,7 +19,50 @@ The execution of a WebAssembly program gives rise to a :ref:`trace <relaxed-trac
1919Preliminary Definitions
2020~~~~~~~~~~~~~~~~~~~~~~~
2121
22- Bla bla
22+ .. math ::
23+ \begin {array}{rcl}
24+ \timeevt (\act ^\ast ~\AT ~\time ) & = & \time \\
25+ \\
26+ \locact (\ARD _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \loc \\
27+ \locact (\AWR _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \loc \\
28+ \locact (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & \loc \\
29+ \\
30+ \ordact (\ARD _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \ord \\
31+ \ordact (\AWR _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \ord \\
32+ \ordact (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & \SEQCST \\
33+ \\
34+ \overlapact (\act _1 , \act _2 ) & = & \rangeact (\act _1 ) \cup \rangeact (\act _2 ) \neq \epsilon \\
35+ \sameact (\act _1 , \act _2 ) & = & \rangeact (\act _1 ) = \rangeact (\act _2 ) \\
36+ \\
37+ \readingact (\act ) & = & \readact (\act ) \neq \epsilon \\
38+ \writingact (\act ) & = & \writeact (\act ) \neq \epsilon \\
39+ \\
40+ \readact (\ARD _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \byte ^\ast \\
41+ \readact (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & {\byte _1 }^\ast \\
42+ \readact (\act ) & = & \epsilon \qquad \otherwise \\
43+ &&\\
44+ \writeact (\AWR _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \byte ^\ast \\
45+ \writeact (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & {\byte _2 }^\ast \\
46+ \writeact (\act ) & = & \epsilon \qquad \otherwise \\
47+ &&\\
48+ \offsetact (\act ) & = & \u32 \qquad \iff \locact (\act ) = \reg [\u32 ] \ \\
49+ \\
50+ \syncact (\act _1 ,\act _2 ) & = & \sameact (\act _1 ,\act _2 ) \wedge \ordact (\act _1 ) = \ordact (\act _2 ) = \SEQCST \\
51+ \rangeact (\act ) & = & [\u32 \ldots \u32 + n - 1 ] \qquad \iff \locact (\act ) = \reg [\u32 ] \qquad n = \F {max}(|\readact (\act )|,|\writeact (\act )|) \\
52+ \\
53+ \tearfreeact (\ARD _{\ord }~\loc ~\byte ^\ast ) & = & \bot \qquad \iff \ord = \UNORD \vee \ord = \INIT \\
54+ \tearfreeact (\AWR _{\ord }~\loc ~\byte ^\ast ) & = & \bot \qquad \iff \ord = \UNORD \vee \ord = \INIT \\
55+ \tearfreeact (\act ) & = & \top \qquad \otherwise \\
56+ \\
57+ \X {func}_{\reg }(\act _1 ^\ast ~\act ~\act _2 ^\ast ~\AT ~\time ) & = & \X {func}(\act ) \qquad \iff \locact (\act ) = \reg [\u32 ] \\
58+ \X {func}_{\reg }(\act _1 ^\ast ~\act ~\act _2 ^\ast ~\AT ~\time , \act _3 ^\ast ~\act '~\act _4 ^\ast ~\AT ~\time ') & = & \X {func}(\act .\act ') \qquad \iff \locact (\act ) = \locact (\act ') = \reg [\u32 ] \\
59+ \end {array}
60+
61+ .. todo :: Double check notears
62+
63+ .. todo :: Tidy up range
64+
65+ .. todo :: add prose intuition?
2366
2467
2568.. _relaxed-trace :
@@ -46,78 +89,6 @@ When a WebAssembly program is executed, all behaviours observed during that exec
4689Consistency
4790~~~~~~~~~~~
4891
49- .. todo :: define auxiliary functions (either here or in Runtime Structure)
50-
51- .. math ::
52- \begin {array}{lcl}
53- \ordaux (\ARD _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \ord \\
54- \ordaux (\AWR _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \ord \\
55- \ordaux (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & \SEQCST \\
56- &&\\
57- \locaux (\ARD _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \loc \\
58- \locaux (\AWR _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \loc \\
59- \locaux (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & \loc \\
60- &&\\
61- \sizeaux (\ARD _{\ord }~\loc ~\byte ^n~\NOTEARS ^?) & = & n \\
62- \sizeaux (\AWR _{\ord }~\loc ~\byte ^n~\NOTEARS ^?) & = & n \\
63- \sizeaux (\ARMW ~\loc ~{\byte _1 }^n~{\byte _2 }^n) & = & n \\
64- &&\\
65- \readaux (\ARD _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \byte ^\ast \\
66- \readaux (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & {\byte _1 }^\ast \\
67- \readaux (\act ) & = & \epsilon \qquad \otherwise \\
68- &&\\
69- \writeaux (\ARD _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \epsilon \\
70- \writeaux (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & {\byte _2 }^\ast \\
71- \writeaux (\act ) & = & \epsilon \qquad \otherwise \\
72- &&\\
73- \addraux (\act ) & = & \addraux (\regionaux (\act ) \\
74- \addraux (\loc ) & = & \addraux (\regionaux (\reg ) \\
75- \addraux (\addr .\fld ) & = & \addr \\
76- &&\\
77- \regionaux (\act ) & = & \regionaux (\locaux (\act ) \\
78- \regionaux (\reg ) & = & \reg \\
79- \regionaux (\reg [i]) & = & \reg \\
80- &&\\
81- \offsetaux (\act ) & = & \offsetact (\locaux (\act )) \\
82- \offsetaux (\reg ) & = & 0 \\
83- \offsetaux (\reg [i]) & = & i \\
84- \end {array}
85-
86- .. math ::
87- \begin {array}{rcl}
88- \timeevt (\act ^\ast ~\AT ~\time ) & = & \time \\
89- \\
90- \ordact (\ARD _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \ord \\
91- \ordact (\AWR _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \ord \\
92- \ordact (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & \SEQCST \\
93- \\
94- \overlapact (\act _1 , \act _2 ) \ldots & = & \rangeact (\act _1 ) \cup \rangeact (\act _2 ) \neq \epsilon \\
95- \sameact \ldots & = & \rangeact (\act _1 ) = \rangeact (\act _2 ) \\
96- \\
97- \readingact (\act ) & = & \readact (\act ) \neq \epsilon \\
98- \writingact (\act ) & = & \writeact (\act ) \neq \epsilon \\
99- \\
100- \readact (\ARD _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \byte ^\ast \\
101- \readact (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & {\byte _1 }^\ast \\
102- \readact (\act ) & = & \epsilon \qquad \otherwise \\
103- &&\\
104- \writeact (\ARD _{\ord }~\loc ~\byte ^\ast ~\NOTEARS ^?) & = & \epsilon \\
105- \writeact (\ARMW ~\loc ~{\byte _1 }^\ast ~{\byte _2 }^\ast ) & = & {\byte _2 }^\ast \\
106- \writeact (\act ) & = & \epsilon \qquad \otherwise \\
107- &&\\
108- \offsetact (\act ) & = & \u32 \qquad \iff \locaux (\act ) = \reg [\u32 ] \ \\
109- \\
110- \syncact \ldots & = & \ldots \\
111- \rangeact \ldots & = & \ldots \\
112- \\
113- \tearfreeact \ldots & = & \ldots \\
114- \\
115- \X {func}_{\reg }(\act _1 ^\ast ~\act ~\act _2 ^\ast ~\AT ~\time ) & = & \X {func}(\act ) \qquad \iff \locaux (\act ) = \reg [\u32 ] \\
116- \X {func}_{\reg }(\act _1 ^\ast ~\act ~\act _2 ^\ast ~\AT ~\time , \act _3 ^\ast ~\act '~\act _4 ^\ast ~\AT ~\time ') & = & \X {func}(\act .\act ') \qquad \iff \locaux (\act ) = \locaux (\act ') = \reg [\u32 ] \\
117- \end {array}
118-
119- .. todo :: Add more auxiliary functions
120-
12192.. todo :: add prose intuition
12293
12394.. math ::
0 commit comments