diff --git a/specification/wasm-3.0/7.0-soundness.contexts.spectec b/specification/wasm-3.0/7.0-soundness.contexts.spectec index 420fcf7c7e..8bd30a51d1 100644 --- a/specification/wasm-3.0/7.0-soundness.contexts.spectec +++ b/specification/wasm-3.0/7.0-soundness.contexts.spectec @@ -15,8 +15,8 @@ rule Context_ok: DATAS ok*, ELEMS et*, LOCALS lct*, - LABELS rt*, - RETURN rt'?, + LABELS (t*)*, + RETURN (t'*)?, REFS x* } -- if C_0 = {TYPES dt^n} @@ -30,6 +30,6 @@ rule Context_ok: -- (Expand: dt_F ~~ FUNC t_1 -> t_2)* -- (Reftype_ok: C_0 |- et : OK)* -- (Localtype_ok: C_0 |- lct : OK)* - -- (Resulttype_ok: C_0 |- rt : OK)* - -- (Resulttype_ok: C_0 |- rt' : OK)? + -- (Resulttype_ok: C_0 |- t*: OK)* + -- (Resulttype_ok: C_0 |- t'* : OK)? -- (if x < |dt_F*|)* diff --git a/specification/wasm-latest/7.0-soundness.contexts.spectec b/specification/wasm-latest/7.0-soundness.contexts.spectec index 420fcf7c7e..8bd30a51d1 100644 --- a/specification/wasm-latest/7.0-soundness.contexts.spectec +++ b/specification/wasm-latest/7.0-soundness.contexts.spectec @@ -15,8 +15,8 @@ rule Context_ok: DATAS ok*, ELEMS et*, LOCALS lct*, - LABELS rt*, - RETURN rt'?, + LABELS (t*)*, + RETURN (t'*)?, REFS x* } -- if C_0 = {TYPES dt^n} @@ -30,6 +30,6 @@ rule Context_ok: -- (Expand: dt_F ~~ FUNC t_1 -> t_2)* -- (Reftype_ok: C_0 |- et : OK)* -- (Localtype_ok: C_0 |- lct : OK)* - -- (Resulttype_ok: C_0 |- rt : OK)* - -- (Resulttype_ok: C_0 |- rt' : OK)? + -- (Resulttype_ok: C_0 |- t*: OK)* + -- (Resulttype_ok: C_0 |- t'* : OK)? -- (if x < |dt_F*|)* diff --git a/spectec/test-frontend/TEST.md b/spectec/test-frontend/TEST.md index 0b3e20844d..f0e1305f06 100644 --- a/spectec/test-frontend/TEST.md +++ b/spectec/test-frontend/TEST.md @@ -8173,9 +8173,9 @@ def $ordered(decl*) : bool ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec - rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `t**` : valtype**, `t'*?` : valtype*?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: `|-%:OK`(C,) - -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS `%`_resulttype(t*{t <- `t*`},)*{`t*` <- `t**`}, RETURN `%`_resulttype(t'*{t' <- `t'*`},)?{`t'*` <- `t'*?`}, REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1],), `%`_resulttype([t_2],))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)],)))*{rt <- `rt*`} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t*{t <- `t*`},)))*{`t*` <- `t**`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t'*{t' <- `t'*`},)))?{`t'*` <- `t'*?`} -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec diff --git a/spectec/test-latex/TEST.md b/spectec/test-latex/TEST.md index 6313ef72f7..da6bab1f64 100644 --- a/spectec/test-latex/TEST.md +++ b/spectec/test-latex/TEST.md @@ -14123,8 +14123,8 @@ C = \{ \begin{array}[t]{@{}l@{}} \mathsf{datas}~{{\mathit{ok}}^\ast},\; \\ \mathsf{elems}~{{\mathit{et}}^\ast},\; \\ \mathsf{locals}~{{{\mathit{lt}}}^\ast},\; \\ - \mathsf{labels}~{{\mathit{rt}}^\ast},\; \\ - \mathsf{return}~{{\mathit{rt}'}^?},\; \\ + \mathsf{labels}~{({t^\ast})^\ast},\; \\ + \mathsf{return}~{({{t'}^\ast})^?},\; \\ \mathsf{refs}~{x^\ast} \}\end{array} \qquad C_0 = \{ \mathsf{types}~{{\mathit{dt}}^{n}} \} @@ -14149,9 +14149,9 @@ C_0 = \{ \mathsf{types}~{{\mathit{dt}}^{n}} \} \qquad (C_0 \vdash {{\mathit{lt}}} : \mathsf{ok})^\ast \qquad -(C_0 \vdash {\mathit{rt}} : \mathsf{ok})^\ast +(C_0 \vdash {t^\ast} : \mathsf{ok})^\ast \qquad -(C_0 \vdash {\mathit{rt}'} : \mathsf{ok})^? +(C_0 \vdash {{t'}^\ast} : \mathsf{ok})^? \qquad (x < {|{{\mathit{dt}}_{\mathsf{f}}^\ast}|})^\ast }{ diff --git a/spectec/test-middlend/TEST.md b/spectec/test-middlend/TEST.md index ee68858b29..844049f8dc 100644 --- a/spectec/test-middlend/TEST.md +++ b/spectec/test-middlend/TEST.md @@ -7696,9 +7696,9 @@ def $ordered(decl*) : bool ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec - rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `t**` : valtype**, `t'*?` : valtype*?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: `|-%:OK`(C,) - -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS `%`_resulttype(t*{t <- `t*`},)*{`t*` <- `t**`}, RETURN `%`_resulttype(t'*{t' <- `t'*`},)?{`t'*` <- `t'*?`}, REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1],), `%`_resulttype([t_2],))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)],)))*{rt <- `rt*`} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t*{t <- `t*`},)))*{`t*` <- `t**`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t'*{t' <- `t'*`},)))?{`t'*` <- `t'*?`} -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec @@ -19607,9 +19607,9 @@ def $ordered(decl*) : bool ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec - rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `t**` : valtype**, `t'*?` : valtype*?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: `|-%:OK`(C,) - -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS `%`_resulttype(t*{t <- `t*`},)*{`t*` <- `t**`}, RETURN `%`_resulttype(t'*{t' <- `t'*`},)?{`t'*` <- `t'*?`}, REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1],), `%`_resulttype([t_2],))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)],)))*{rt <- `rt*`} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t*{t <- `t*`},)))*{`t*` <- `t**`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t'*{t' <- `t'*`},)))?{`t'*` <- `t'*?`} -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec @@ -31704,9 +31704,9 @@ def $ordered(decl*) : bool ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec relation Context_ok: `|-%:OK`(context,) ;; ../../../../specification/wasm-latest/7.0-soundness.contexts.spectec - rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `rt*` : reftype*, `rt'?` : reftype?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: + rule _{C : context, n : n, `dt*` : deftype*, `jt*` : tagtype*, `gt*` : globaltype*, `mt*` : memtype*, `tt*` : tabletype*, `dt_F*` : deftype*, `ok*` : datatype*, `et*` : elemtype*, `lct*` : localtype*, `t**` : valtype**, `t'*?` : valtype*?, `x*` : idx*, m : m, `st*` : subtype*, C_0 : context, `t_1*` : valtype*, `t_2*` : valtype*}: `|-%:OK`(C,) - -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS [`%`_resulttype((rt : reftype <: valtype)*{rt <- `rt*`},)], RETURN ?(`%`_resulttype(lift((rt' : reftype <: valtype)?{rt' <- `rt'?`}),)), REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) + -- if (C = {TYPES dt^n{dt <- `dt*`}, TAGS jt*{jt <- `jt*`}, GLOBALS gt*{gt <- `gt*`}, MEMS mt*{mt <- `mt*`}, TABLES tt*{tt <- `tt*`}, FUNCS dt_F*{dt_F <- `dt_F*`}, DATAS ok*{ok <- `ok*`}, ELEMS et*{et <- `et*`}, LOCALS lct*{lct <- `lct*`}, LABELS `%`_resulttype(t*{t <- `t*`},)*{`t*` <- `t**`}, RETURN `%`_resulttype(t'*{t' <- `t'*`},)?{`t'*` <- `t'*?`}, REFS x*{x <- `x*`}, RECS st^m{st <- `st*`}}) -- if (C_0 = {TYPES dt^n{dt <- `dt*`}, TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}) -- (Deftype_ok: `%|-%:OK`({TYPES dt^n{dt <- `dt*`}[0 : i], TAGS [], GLOBALS [], MEMS [], TABLES [], FUNCS [], DATAS [], ELEMS [], LOCALS [], LABELS [], RETURN ?(), REFS [], RECS []}, dt))^(i%`_comptype(`%`_resulttype([t_1],), `%`_resulttype([t_2],))))*{dt_F <- `dt_F*`, t_1 <- `t_1*`, t_2 <- `t_2*`} -- (Reftype_ok: `%|-%:OK`(C_0, et))*{et <- `et*`} -- (Localtype_ok: `%|-%:OK`(C_0, lct))*{lct <- `lct*`} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt : reftype <: valtype)],)))*{rt <- `rt*`} - -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype([(rt' : reftype <: valtype)],)))?{rt' <- `rt'?`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t*{t <- `t*`},)))*{`t*` <- `t**`} + -- (Resulttype_ok: `%|-%:OK`(C_0, `%`_resulttype(t'*{t' <- `t'*`},)))?{`t'*` <- `t'*?`} -- (if (x!`%`_idx.0 < |dt_F*{dt_F <- `dt_F*`}|))*{x <- `x*`} ;; ../../../../specification/wasm-latest/7.1-soundness.configurations.spectec diff --git a/spectec/test-prose/TEST.md b/spectec/test-prose/TEST.md index d8a57dbeba..ff6159818c 100644 --- a/spectec/test-prose/TEST.md +++ b/spectec/test-prose/TEST.md @@ -17745,7 +17745,7 @@ The identifier context :math:`I` is :ref:`valid ` if: The context :math:`C` is :ref:`valid ` if: - * The context :math:`C` is of the form :math:`\{ \mathsf{types}~{{\mathit{dt}}^{n}},\;\allowbreak \mathsf{tags}~{{\mathit{jt}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{gt}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{mt}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{tt}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{dt}}_{\mathsf{f}}^\ast},\;\allowbreak \mathsf{datas}~{{\mathit{ok}}^\ast},\;\allowbreak \mathsf{elems}~{{\mathit{et}}^\ast},\;\allowbreak \mathsf{locals}~{{{\mathit{lt}}}^\ast},\;\allowbreak \mathsf{labels}~{{\mathit{rt}}^\ast},\;\allowbreak \mathsf{return}~{{\mathit{rt}'}^?},\;\allowbreak \mathsf{refs}~{x^\ast},\;\allowbreak \mathsf{recs}~{{\mathit{st}}^{m}} \}`. + * The context :math:`C` is of the form :math:`\{ \mathsf{types}~{{\mathit{dt}}^{n}},\;\allowbreak \mathsf{tags}~{{\mathit{jt}}^\ast},\;\allowbreak \mathsf{globals}~{{\mathit{gt}}^\ast},\;\allowbreak \mathsf{mems}~{{\mathit{mt}}^\ast},\;\allowbreak \mathsf{tables}~{{\mathit{tt}}^\ast},\;\allowbreak \mathsf{funcs}~{{\mathit{dt}}_{\mathsf{f}}^\ast},\;\allowbreak \mathsf{datas}~{{\mathit{ok}}^\ast},\;\allowbreak \mathsf{elems}~{{\mathit{et}}^\ast},\;\allowbreak \mathsf{locals}~{{{\mathit{lt}}}^\ast},\;\allowbreak \mathsf{labels}~{{t^\ast}^\ast},\;\allowbreak \mathsf{return}~{({{t'}^\ast})^?},\;\allowbreak \mathsf{refs}~{x^\ast},\;\allowbreak \mathsf{recs}~{{\mathit{st}}^{m}} \}`. * The context :math:`C_0` is of the form :math:`\{ \mathsf{types}~{{\mathit{dt}}^{n}},\;\allowbreak \mathsf{return}~\epsilon \}`. @@ -17787,13 +17787,13 @@ The context :math:`C` is :ref:`valid ` if: * Under the context :math:`C_0`, the local type :math:`{{\mathit{lt}}}` is :ref:`valid `. - * For all :math:`{\mathit{rt}}` in :math:`{{\mathit{rt}}^\ast}`: + * For all :math:`{t^\ast}` in :math:`{{t^\ast}^\ast}`: - * Under the context :math:`C_0`, the result type :math:`{\mathit{rt}}` is :ref:`valid `. + * Under the context :math:`C_0`, the result type :math:`{t^\ast}` is :ref:`valid `. - * If :math:`{\mathit{rt}'}` is defined, then: + * If :math:`{{t'}^\ast}` is defined, then: - * Under the context :math:`C_0`, the result type :math:`{\mathit{rt}'}` is :ref:`valid `. + * Under the context :math:`C_0`, the result type :math:`{{t'}^\ast}` is :ref:`valid `. * For all :math:`x` in :math:`{x^\ast}`: @@ -29830,7 +29830,7 @@ Idctxt_ok Context_ok - the context C is valid if: - - C is { TYPES: dt^n; TAGS: jt*; GLOBALS: gt*; MEMS: mt*; TABLES: tt*; FUNCS: dt_F*; DATAS: ok*; ELEMS: et*; LOCALS: lct*; LABELS: [rt*]; RETURN: ?(rt'?); REFS: x*; RECS: st^m }. + - C is { TYPES: dt^n; TAGS: jt*; GLOBALS: gt*; MEMS: mt*; TABLES: tt*; FUNCS: dt_F*; DATAS: ok*; ELEMS: et*; LOCALS: lct*; LABELS: t**; RETURN: t'*?; REFS: x*; RECS: st^m }. - the context C_0 is { TYPES: dt^n; RETURN: ?() }. - For all dt in dt*: - Under the context { TYPES: dt^n[0 : i]; RETURN: ?() }, the defined type dt is valid. @@ -29851,10 +29851,10 @@ Context_ok - Under the context C_0, the reference type et is valid. - For all lct in lct*: - Under the context C_0, the local type lct is valid. - - For all rt in rt*: - - Under the context C_0, the result type [rt] is valid. - - If rt' is defined, then: - - Under the context C_0, the result type [rt'] is valid. + - For all t* in t**: + - Under the context C_0, the result type t* is valid. + - If t'* is defined, then: + - Under the context C_0, the result type t'* is valid. - For all x in x*: - |dt_F*| is greater than x.