diff --git a/document/core/appendix/properties.rst b/document/core/appendix/properties.rst index 46ec6424..2c2c3eea 100644 --- a/document/core/appendix/properties.rst +++ b/document/core/appendix/properties.rst @@ -675,21 +675,25 @@ To that end, all previous typing judgements :math:`C \vdash \X{prop}` are genera .. index:: caught, throw context -:math:`\CAUGHTadm\{\tagaddr~\val^\ast\}~\instr^\ast~\END` -......................................................... +:math:`\CAUGHTadm_n\{\tagaddr~\val^\ast\}~\instr^\ast~\END` +........................................................... * The :ref:`external tag value ` :math:`\EVTAG~\tagaddr` must be :ref:`valid ` with some :ref:`external tag type ` :math:`\ETTAG~[t_0^\ast] \to []`. * The :ref:`values ` :math:`\val^\ast` must be of type :math:`[t_0^\ast]`. -* Let :math:`C'` be the same :ref:`context ` as :math:`C`, but with the label :math:`(\LCATCH~[t^\ast])` prepended to the |CLABELS| vector. +* The label :math:`C.\CLABELS[0]` must be defined in the context. -* Under context :math:`C'`, - the instruction sequence :math:`\instr^\ast` must be :ref:`valid ` with type :math:`[] \to [t^\ast]`. +* Let :math:`(\LCATCH^?~[t^n])` be the :ref:`label type ` :math:`C.\CLABELS[0]`. + +* The |LCATCH| must not be present in the label type :math:`C.\CLABELS[0]`. -* Let :math:`C''` be the same :ref:`context ` as :math:`C`, but with the label :math:`[t^\ast]` prepended to the |CLABELS| vector. +* Let :math:`C''` be the same :ref:`context ` as :math:`C`, but with the label type :math:`(\LCATCH~[t^n])` replacing the first element of the |CLABELS| vector. -* Then the compound instruction is valid under context :math:`C''` with type :math:`[] \to [t^\ast]`. +* Under context :math:`C''`, + the instruction sequence :math:`\instr^\ast` must be :ref:`valid ` with type :math:`[] \to [t^n]`. + +* Then the compound instruction is valid with type :math:`[] \to [t^n]`. .. math:: \frac{ @@ -697,9 +701,9 @@ To that end, all previous typing judgements :math:`C \vdash \X{prop}` are genera \qquad (val : t_0)^\ast \qquad - S; C,\CLABELS\,(\LCATCH~[t^\ast]) \vdashinstrseq \instr^\ast : [] \to [t^\ast] + S; C',\CLABELS\,(\LCATCH~[t^n]) \vdashinstrseq \instr^\ast : [] \to [t^n] }{ - S; C,\CLABELS\,[t^\ast] \vdashadmininstr \CAUGHTadm\{\tagaddr~\val^\ast\}~\instr^\ast~\END : [] \to [t^\ast] + S; C',\CLABELS\,[t^n] \vdashadmininstr \CAUGHTadm_n\{\tagaddr~\val^\ast\}~\instr^\ast~\END : [] \to [t^n] }