Transformation of Applicative Specifications into Imperative ...

Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...

26.09.2013 Views

APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1 end, typesMap( TRValueExpr( first(ve), tedom(et), func, trans, types))))))), typesMap( TROptRestriction( or, Known(TypeLiteral(BOOL)), func, trans, typesMap( TRValueExpr( second(ve), terange(et), func, trans, typesMap( TRValueExpr( first(ve), tedom(et), func, trans, types))))))) TROptValueExprList : OptionalValueExprList × ExpType × FUNC × TRANS × TYPES → OVEL_TYPES TROptValueExprList(ovel, et, func, trans, types) ≡ case ovel of ValueExprList(vel) → mk_OVEL_TYPES( ValueExprList( valueExprList( TRValueExprListOpt( vel, et, func, trans, types))), typesMap( TRValueExprListOpt( vel, et, func, trans, types))), NoValueExprList → mk_OVEL_TYPES(ovel, types) end, TROptValueExprPairList : OptionalValueExprPairList × MapType × FUNC × TRANS × TYPES → OVEPL_TYPES TROptValueExprPairList(ovel, et, func, trans, types) ≡ case ovel of ValueExprPairList(vel) → mk_OVEPL_TYPES( 388

D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 ValueExprPairList( valueExprPairList( TRValueExprPairListOpt( vel, et, func, trans, types))), typesMap( TRValueExprPairListOpt( vel, et, func, trans, types))), NoValueExprPairList → mk_OVEPL_TYPES(ovel, types) end, TRValueExprListOpt : ValueExpr ∗ × ExpType × FUNC × TRANS × TYPES → VEL_TYPES TRValueExprListOpt(vel, et, func, trans, types) ≡ if vel = 〈〉 then mk_VEL_TYPES(〈〉, types) else mk_VEL_TYPES( 〈getValueExpr( TRValueExpr(hd vel, et, func, trans, types) )〉 valueExprList( TRValueExprList( tl vel, et, func, trans, typesMap( TRValueExpr( hd vel, et, func, trans, types)))), typesMap( TRValueExprList( tl vel, et, func, trans, typesMap( TRValueExpr( hd vel, et, func, trans, types))))) end, TRValueExprPairListOpt : ValueExprPair ∗ × MapType × FUNC × TRANS × TYPES → VEPL_TYPES TRValueExprPairListOpt(vel, et, func, trans, types) ≡ if vel = 〈〉 then mk_VEPL_TYPES(〈〉, types) else mk_VEPL_TYPES( 〈mk_ValueExprPair( valueExpr( 389

APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1<br />

end,<br />

typesMap(<br />

TRValueExpr(<br />

first(ve), tedom(et),<br />

func, trans, types))))))),<br />

typesMap(<br />

TROptRestriction(<br />

or, Known(TypeLiteral(BOOL)), func,<br />

trans,<br />

typesMap(<br />

TRValueExpr(<br />

second(ve), terange(et), func,<br />

trans,<br />

typesMap(<br />

TRValueExpr(<br />

first(ve), tedom(et), func,<br />

trans, types)))))))<br />

TROptValueExprList :<br />

OptionalValueExprList × ExpType × FUNC × TRANS ×<br />

TYPES →<br />

OVEL_TYPES<br />

TROptValueExprList(ovel, et, func, trans, types) ≡<br />

case ovel <strong>of</strong><br />

ValueExprList(vel) →<br />

mk_OVEL_TYPES(<br />

ValueExprList(<br />

valueExprList(<br />

TRValueExprListOpt(<br />

vel, et, func, trans, types))),<br />

typesMap(<br />

TRValueExprListOpt(<br />

vel, et, func, trans, types))),<br />

NoValueExprList → mk_OVEL_TYPES(ovel, types)<br />

end,<br />

TROptValueExprPairList :<br />

OptionalValueExprPairList × MapType × FUNC ×<br />

TRANS × TYPES →<br />

OVEPL_TYPES<br />

TROptValueExprPairList(ovel, et, func, trans, types) ≡<br />

case ovel <strong>of</strong><br />

ValueExprPairList(vel) →<br />

mk_OVEPL_TYPES(<br />

388

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!