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 TRIfExpr : IfExpr × ExpType × FUNC × TRANS × TYPES → VE_TYPES TRIfExpr(ie, et, func, trans, types) ≡ mk_VE_TYPES( Make_IfExpr( mk_IfExpr( valueExpr( TRValueExpr( condition(ie), Known(TypeLiteral(BOOL)), func, trans, types)), valueExpr( TRValueExpr( if_case(ie), et, func, trans, typesMap( TRValueExpr( condition(ie), Known(TypeLiteral(BOOL)), func, trans, types)))), elsIfList( TRElsif( elsif_list(ie), et, func, trans, typesMap( TRValueExpr( if_case(ie), et, func, trans, typesMap( TRValueExpr( condition(ie), Known(TypeLiteral(BOOL)), func, trans, types)))))), valueExpr( TRValueExpr( else_case(ie), et, func, trans, typesMap( TRElsif( elsif_list(ie), et, func, trans, typesMap( TRValueExpr( if_case(ie), et, func, trans, typesMap( TRValueExpr( 400

D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 ), condition(ie), Known( TypeLiteral(BOOL) ), func, trans, types)))))))))), typesMap( TRValueExpr( else_case(ie), et, func, trans, typesMap( TRElsif( elsif_list(ie), et, func, trans, typesMap( TRValueExpr( if_case(ie), et, func, trans, typesMap( TRValueExpr( condition(ie), Known(TypeLiteral(BOOL)), func, trans, types)))))))) TRElsif : Elsif ∗ × ExpType × FUNC × TRANS × TYPES → EIL_TYPES TRElsif(eil, et, func, trans, types) ≡ if eil = 〈〉 then mk_EIL_TYPES(〈〉, types) else mk_EIL_TYPES( 〈mk_Elsif( valueExpr( TRValueExpr( condition(hd eil), Known(TypeLiteral(BOOL)), func, trans, types)), valueExpr( TRValueExpr( elsif_case(hd eil), et, func, trans, typesMap( TRValueExpr( condition(hd eil), Known(TypeLiteral(BOOL)), func, trans, types)))))〉 elsIfList( TRElsif( 401

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

TRIfExpr :<br />

IfExpr × ExpType × FUNC × TRANS × TYPES →<br />

VE_TYPES<br />

TRIfExpr(ie, et, func, trans, types) ≡<br />

mk_VE_TYPES(<br />

Make_IfExpr(<br />

mk_IfExpr(<br />

valueExpr(<br />

TRValueExpr(<br />

condition(ie),<br />

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

trans, types)),<br />

valueExpr(<br />

TRValueExpr(<br />

if_case(ie), et, func, trans,<br />

typesMap(<br />

TRValueExpr(<br />

condition(ie),<br />

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

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

elsIfList(<br />

TRElsif(<br />

elsif_list(ie), et, func, trans,<br />

typesMap(<br />

TRValueExpr(<br />

if_case(ie), et, func, trans,<br />

typesMap(<br />

TRValueExpr(<br />

condition(ie),<br />

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

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

valueExpr(<br />

TRValueExpr(<br />

else_case(ie), et, func, trans,<br />

typesMap(<br />

TRElsif(<br />

elsif_list(ie), et, func,<br />

trans,<br />

typesMap(<br />

TRValueExpr(<br />

if_case(ie), et, func,<br />

trans,<br />

typesMap(<br />

TRValueExpr(<br />

400

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

Saved successfully!

Ooh no, something went wrong!