diff --git a/document/core/appendix/properties.rst b/document/core/appendix/properties.rst index 2c2c3eea..31eb3be4 100644 --- a/document/core/appendix/properties.rst +++ b/document/core/appendix/properties.rst @@ -58,8 +58,27 @@ Results S \vdashresult \TRAP : [t^\ast] } -.. todo:: - Add validation for exception results. + +:ref:`Results ` :math:`\val^\ast~(\THROWadm~\tagaddr)` +..................................................................... + +* The :ref:`external tag value ` :math:`\EVTAG~\tagaddr` must be :ref:`valid ` with :ref:`external tag type ` :math:`\ETTAG~[t^\ast]\to[]`. + +* For each :ref:`value ` :math:`\val_i` in :math:`\val^\ast` and corresponding :ref:`value type ` :math:`t_i` in :math:`t_i`: + + * The value :math:`\val_i` must be :ref:`valid ` with :ref:`value type ` :math:`t_i`. + +* Then the result is valid with :ref:`result type ` :math:`[{t'}^\ast]`, for any sequence :math:`{t'}^\ast` of :ref:`value types `. + + +.. math:: + \frac{ + S \vdashexternval \EVTAG~\tagaddr : \ETTAG~[t^\ast] \to [] + \qquad + (S \vdashval \val : t)^\ast + }{ + S \vdashresult \val^\ast~(\THROWadm~\tagaddr) : [{t'}^\ast] + } .. _module-context: