warm fusion in stratego a case study in the generation of program transformation systems

102

Upload: others

Post on 11-Sep-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ����� ������ �� ��� ��������������

� ��� �"!$#�%'&�(�)+*-,.%'/0!213!4,0!65'�7%'*-89,+8 :; 5<8 =95'� > ?�5'� ,��":@8 5<>A�7%'*B89,+#�)��"%<!C>D�

EGF�H4IKJMLNJOFQPSR�TUF�VWVXZYN[MLNR]\^J`_C_CY I

acbed$fgbeh2ikj

lnmpo�qsrBout�r-v@w�m�x�vyo-zB{|m�}W~<� �'�����

���s�����������������s�7���y���W���M�����@�������<�` �¡¢`��£y�O���O¤4�¥�U��¦§¢`�4¦¨���y©��'�O�ª���G�'��«¬����©��4¤4�¥����­��C�s���s���p�s£

������®��s�y£O���O�s�¯�����¥�y�s���K�

° ¤4­�¤�£y�±�������

Page 2: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� F�I�� ���±_6JMR�V J`V���H4I4F�H4Y� R° � ��£O� �6�O¤�«�G���G�O��� �U�p���s�O�'�¥�������¦���O��­��¥��© �§�O����£y¦¨���O©��'�¥�����Z��6£y�O�s© £

; �7%<5'*��C*-���989/S� ,�,� �'�O�s£W�������ª�s­������ ������£y�O������3������������� °���y����������� � �'�O�s£�!��p«�¤

" !$#%�68'&c*-�n�"!C5¢`��£@�¥���O¤4�¥�U��¦§¢`�4¦¨���y©��<�¥�ª�������«3����© ��¤4�¥����­��C�s���s���p�s£�W�4��®��p�O£y���¥�p�������¥�O�p���K�(�7���O�O�s���K�)�7���4�+*��p�¥�4�s�O�ª����«�£®6�ª£y£O�s�,� ���s©-!����O­

.0/ w / z r21 ~p~�~

3 m�4(5so-{|w76sr 38 �:979�9<;=1 ~p~�~?> t�rBo-{ 3 { tA@pm76<t�}n}B;<C7vED 3 m?F�{ zBzBv@oG m�}srut 3 r .2H<H o-vyz-zEIJ }<z rB{�r / r-v�mLKMJ }=K m�o%N�t�r-{�mp}±t�} H G m�NO4 / rB{|}nw�q 3 {�vy} 3 vOzP�}<{�xpv@ouz {�rBvy{ r0P r-oBv 3 6sr>��RQ � S m,TVU�~p~7U�9W�X ~7U?YZS[P r-oBv 3 6srvEN�t�{\D]I x�{|z-z vyo_^�t 3 N�� m�o-w6sr r%4BIa`�`,bZbZb�� 3 zy� /c/ � }cDd`�e§xs{ z-z vyo_`

Page 3: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

����� � ����

qsr-o-t rBv@wpm�{|zNt H m�N t�{�}� z�4'v 3 { � 3 D t }nw / t wpv K m�o r%6nv§z�4�v 3 { � 3 t�rB{|m�}�m7K 4noBmpw�outLN�r-o-t�}<z K m�o�N�t�r-{�mp}Uz 5"z rBvEN�zy�0Y�6nv H vyzB{�wp} mLK7qsrBout�r-v@wpm�{|z��<t�zBv H mp}�r�6nvA4<t out H {�w�NgmLK o-vEb o-{ r-{�}<wz rBout�rBvyw�{|vyz:I / z vyo� H v��<}<t��cD�v 4no-m�wpo-t7N z�{|}t D�{�r r%D�v D t }nw / t wpv�mLK�z¨r-o-t rBv@w�5 m74�v@out�r-m�ouzH v@rBv@o%N {�}<v bZ6nv@o-v t } H {�} bZ6<t r�m�o H v@o�rBout }'z K mpo�N�t�r-{�mp} o / D|vyz�t o-v��¯t / rBm�N t rB{ 3 t7D\D 5��tL4c4<D�{|v H rBm t 4noBmpw�outLN���Y�6nv�z v:4<t out�r-{�mp} mLK�o / D�vOz7t�} H z rBout�rBvyw�{|vyz z / 4<4�m�oBr-zN m H</ D|t�o�{�r 5Wm7K z�4�v 3 { � 3 t�rB{|m�}'z@��qsr-o-t rBv@wpm�tLD z m 4<oBm�x�{ H vyz wpv@}nvyoB{ 3 K vyt r / o-vyz0K m�o�z 4�v 3 {�� 3 t�r-{�mp}±m7K4no-m�wpo-t7N$rBout¥x�v@ouz-tLD z@�J }�r%6n{ z�4<tL4�v@o�b v24no-vyzBv@}sr t 3 t�zBv�z r / H 5�mLK�qsrBout�r-v@w�m t�z tL4c4<D�{|v H rBm t�}nm�}��r-oB{|x�{|t7D4no-m��<D|vEN {|} 4no-m�w�outLN r-o-t�}<z K mpo�N�t rB{|m�}�����v H vEN mp}<z¨r-o-t rBvWr�6nv / z v�mLK0qsrBout�r-v@w�m�{|}

vED|{ N�{|}<t rB{|}nwS{|}pr-v@o%N v H { t�r-v H t r-tSz rBo / 3 r / o-vyzMK o-m7N��¯t7D|zBm���}nm b }�t�z��� "!$#&%� $')("*,+.-/��K / } 3 rB{|m�}'tLD 4no-m�w�outLN�z�xs{ t r%6nv1032&%)45!76.')*8#�+ tLD|w�m�o-{�r�6<N mLK:96t / } 3 6.� / o%5 t�} H q=6nvyt�o H �Y�6n{ z t7D�wpm�o-{ r%6<N 6<t�z;�'vyv@} z�4�v 3 { �<v H {|}�qsrBout�r-v@wpm t } H vEN<��v HcH v H {|}�t K / D D\5 t / rBm�N�t�r-{ 3 rBout }'z K mpo�N�t�r-{�mp} z�5�z rBv:N K m�o��vyoB}<vED>=�tpz��pvED D�� Y�6<v vy}pr-{�o-v z 5"z rBvEN 3 m�}'z { z¨ruz�m7Kt���m / r 1�?p~�~OD|{�}nvOz�m7K z�4�v 3 { � 3 t�rB{|m�} 3 m H v7;�bZ6n{ 3 6@�noBvOt��"z H m b } {|}srBmU� U X ~OD�{|}nvyz0K m�o�tw�vy}nv@outLDcK o-t7N vEb m�oA� K mpoB=§t�z���v:D\D'rBout }<z K m�o%N�t�r-{�mp}�t } H � X ~ D�{|}nvyz H vyx�m�rBv H rBm t 6n{|w76cD\5N m H=/ D t o ;4vOt�zB{\D 5�v T�rBvy}<z {C�<D|vWz�4'v 3 { � 3 t rB{|m�}�m7K r�6nv b t�o�N K / zB{�mp} rBout }'z K mpo�N v@o { ruz v:D K¨�J r-z§z / 3E3 vOzBz K / D H vyzB{�wp}Ut } H 3 m�}<z rBo / 3 rB{|m�} 4no-m�xs{ H vOz K / o r%6nv@o§v@x�{ H v@} 3 v�r�6't�r24<oBmpw�outLN�zw�vy}nv@out�r-v H K o-m7Ngq�rBout�rBvyw�m�z 4�v 3 {�� 3 t�r-{�mp}<z9t o-v§z / { rut��<D|v2K m�o9{�}sr-v@w�out�r-{�mp}�{|}pr-m o-vyt7D�z�5"zDrBv:N�zE;�t } H r%6<t�rNoBv:b oB{�rB{|}nwSz rBout�rBvyw�{|vyz t�oBv�t�wpm�m H 4<t�o-t H {|w7N K mpo r�6<v�{\NO4<D|vEN vy}prut�r-{�mp}mLK z / 3 6±z�5"z¨r-vEN�zy�Y�6n{ z�o-vE4�m�oBr 3 mp}prut {|}<z9r%6nv 3 m�NO4<D�v@rBv q�rBout�rBvyw�m�z�4'v 3 { � 3 t rB{|m�} m7K4r%6nv�r-o-t�}<z K mpo�N�t�rB{|m�}6�$Y�6nv>�'o-z r 3 6<t74"rBvyo:; bZ6n{ 3 6 b {\D Dpt74<4'vOt o6tpz�t�zBvED\K 3 mp}prut {|}nv H 4 / �<D�{ 3 t rB{|m�}B;¥vET(4cD|t�{�}<zr�6<v { H vytpz�mLK r%6nvSr-o-t�}<z K m�o%N t rB{|m�}B;<w�{|x�vyz§t } m�xpv@o-xs{|vEb¬mLK r%6nv z�4'v 3 { � 3 t rB{|m�}Ut�} H H { zD3 / zBzBvyz zBv@x�vyo-t7D rBv 3 6<}n{CE / vOz / zBv H {�}�r�6nvUz�4�v 3 { � 3 t�rB{|m�}6� Y�6nvUz / �<zBvFE / vy}sr 3 6<t74"rBvyo-z4no-vyzBv@}sr r%6nv�z�4�v 3 { � 3 t�rB{|m�}�m7K6z 5�}sr-tLT�m7KKr�6nv2D|t�}nw / t w�v�;��<tpz { 3 m�4'vyo-t rB{|m�}<z:; r 5(4�v 3 6nv 3 �G{|}nwc;4z { NO4<D�{ � 3 t�rB{|m�} t�} H r�6nv�t 3 r / tLD�r-o-t�}<z K mpo�N�t rB{|m�}�� J } t HcH { r-{�mp}�rBm�r�6<v�t��<z rBout 3 rz�5s}srut T ;nt 3 mp} 3 o-vMr-v0z�5�}sr-t T H v$�<}<{ r-{�mp}±{|}Uq/H�lM1�{|z wp{�xpv@}�t�z t�}±vETntLNO4<D|v�m7K 3 m�}n}<v 3 rB{|m�}�m7K4t?4<t ouzBv@o K oBmp}srBv@} H r-m�rBout }<z K m�o%N�t�rB{|m�}±z 5"z rBv:N zB� / {\D�r b {�r�6Uqsr-o-t rBv@wpm<�

Page 4: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� �����������

� �����������������������! #"$����"�%'&�� (���|� J }srBo-m H=/ 3 rB{|m�}U�0���0���0���������0���0�����0���0���������0���0���0�����0� �

�p���p��� YCo-t�}<z K m�o%N�{|}nwO> o-m�wpo-t7N z b {�r�6*) vEb o-{�rB{|}nw�qsrBout�r-v@w�{|vyz �����0� ��p���p� 1 . 4<4<D 5s{|}nw�qsr-o-t rBvyw�{|vyz {�}@H§v K mpoBvOz¨r-{�}nw�l / } 3 r-{�mp}<tLD$> o-m�w�outLN�z � U�p���p� W Q / r%D�{|}nv �0���0���������0���0�����0���0���������0���0���0�����0� 9

���a1 � t o%Ngl / z {|m�} ���0���0���������0���0�����0���0���������0���0���0�����0� �O~�p� 1n��� H§v K mpoBvOz¨rut�rB{|m�}+���������0���0�����0���0���������0���0���0�����0� �p��p� 1n� 1 . } C�TntLNO4<D|v�m7K G t r-t� S / { D H l / zB{|m�} ���������0���0���0�����0� �,1�p� 1n� W � t o%Ngl / z {|m�}BI . / rBm�N�t�rB{ 3 t7D\D 5 H§v@o-{|xs{|}nw G t�rut& S / {\D H l<m�o%N�z �y��p� 1n� � � t o%Ngl / z {|m�} �(5VC�Tnt7N?4cD�v �����0���0���������0���0���0�����0� �y�

��� W qsr-o-t rBvyw�m �����0���0���0���������0���0�����0���0���������0���0���0�����0� � U�p� W ��� q(5"z rBv:N q ���0���������0���0�����0���0���������0���0���0�����0� � U�p� W � 1 q(4�v 3 {�� 3 t�r-{�mp}<z����������0���0�����0���0���������0���0���0�����0� 1�~�p� W � W H§v@o-{�xpv H J H {|m7N�z3�������0���0�����0���0���������0���0���0�����0� 1�1�p� W � � J NO4<D|vEN v@}srut�rB{|m�} �������0���0�����0���0���������0���0���0�����0� 1�1

��� � . o 3 6n{�rBv 3 r / oBv �0���0���0���������0���0�����0���0���������0���0���0�����0� 1 W��� X . �<z¨r-o-t 3 r�q(5�}sr-tLT ���0���������0���0�����0���0���������0���0���0�����0� 1 X

�p� X ��� l<m�o%N t r G 6nv 3 ��{|}nwc�����0���0�����0���0���������0���0���0�����0� 1 X�p� X � 1 F t�oB{ t��<D|v+) v@}'tLN {�}<w t�} H q / �<z rB{�r / rB{|m�} �������0���0���0�����0� 1s�

��� ? YCo-t�}<z K m�o%N�vyo:I�S {�w > { 3 r / o-v ���0���0�����0���0���������0���0���0�����0� 1s��p� ?<��� YCo-t�}<z K m�o%N�{|}nw tO> o-m�w�outLND�0�����0���0���������0���0���0�����0� 17U�p� ?<� 1 YCo-t�}<z K m�o%N�{|}nw t H�v��<}n{�rB{|m�}A�����0���0���������0���0���0�����0� 179

��� � YCo-t�}<z K m�o%N�vyo:I H�v@r-t�{\D z����������0���0�����0���0���������0���0���0�����0� W ~�p� �"��� q�{ NO4<D|{�� 3 t�r-{�mp}����������0���0�����0���0���������0���0���0�����0� W ~�p� �"� 1 S / { D H G t r-t?J }srBo-m H</ 3 r-{�mp} �0�����0���0���������0���0���0�����0� W ��p� �"� W q(4cD�{�r r-{�}nw�l / } 3 rB{|m�} H§v$�<}n{�rB{|m�}'zU�0���0���������0���0���0�����0� W 1�p� �"� � P�}=K m7D H {|}nwA���0���������0���0�����0���0���������0���0���0�����0� W�W�p� �"� X G t r-tO> o-m7N m r-{�mp} �����0���0�����0���0���������0���0���0�����0� W�W

��� U ) v:D|t rBv H ��m�oA� ���0���0���������0���0�����0���0���������0���0���0�����0� W ���� 9 l / r / o-v� mpo�� ���0���0���������0���0�����0���0���������0���0���0�����0� W)X���|�y~ G mp} 3 D / zB{�mp} �0���0���0���������0���0�����0���0���������0���0���0�����0� W)X

,.-0/#�1�3254�%6� 7�(1"�|� 96{|z r-z���0�����0���0���0���������0���0�����0���0���������0���0���0�����0� W �

1n���p��� J }<4 / r ���0���0���������0���0�����0���0���������0���0���0�����0� W �1n���p� 1 Q / r%4 / r �0���0���������0���0�����0���0���������0���0���0�����0� W U1n���p� W Q / r%4 / r<��l / D D\5 Y 5)4�v H � ���0�����0���0���������0���0���0�����0� W 9

1"�a1 > t�{�ouz����0�����0���0���0���������0���0�����0���0���������0���0���0�����0� �'�

1

Page 5: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

1n� 1n��� J }<4 / r ���0���0���������0���0�����0���0���������0���0���0�����0� �'�1n� 1n� 1 Q / r%4 / r �0���0���������0���0�����0���0���������0���0���0�����0� �(11n� 1n� W Q / r%4 / r<��l / D D\5 Y 5)4�v H � ���0�����0���0���������0���0���0�����0� � W

7 � � ��� ��%'" % ��#� "���/ ���W �|� q(5�}sr-tLT H§v$�<}n{�rB{|m�}�{|}Uq/H§l�1����0���0�����0���0���������0���0���0�����0� � ?W �a1 =§t�z���vED D�{�}Uq/H�l�1 ���0���������0���0�����0���0���������0���0���0�����0� � ?W � W 96{|z r-z�b {�r�6Uq�v:4<t out�r-m�ouz0���������0���0�����0���0���������0���0���0�����0� �"�W � � 96v T"{ 3 tLD�q(5�}sr-tLT �0���0���������0���0�����0���0���������0���0���0�����0� �"�W � X� m H=/ D�vOz �����0���0���0���������0���0�����0���0���������0���0���0�����0� X 1W � ? H§v 3 D|t�o-t rB{|m�}<z0�0���0���0���������0���0�����0���0���������0���0���0�����0� X7WW � � C�T(4<oBvOzBzB{�mp}<z��0���0���0���������0���0�����0���0���������0���0���0�����0� X �

���5� "$��� � " ��#� " �1/ � (�<�|� q / N?N�t�o�5 ���0���0���0���������0���0�����0���0���������0���0���0�����0� X ��<�a1 =§t�z���vED D�q�{|w�}<t r / o-v ���0���������0���0�����0���0���������0���0���0�����0� X U

�'� 1n��� � ������������������� ����� �����0���0�����0���0���������0���0���0�����0� X U�<� W 96{ r-v@outLD z �����0���0���0���������0���0�����0���0���������0���0���0�����0� X U

�'� W ��� � ��������������!#"�����$&%#'�%(��� ��)�*(��$��Q�0���0���������0���0���0�����0� X U�'� W � 1 � ��������������!#"�����$&%#'�%(���+�����0�����0���0���������0���0���0�����0� X U�'� W � W � ��������������,+%#$ ��� ��� �����0���0�����0���0���������0���0���0�����0� X 9

�<� � � m H=/ D�vOz �����0���0���0���������0���0�����0���0���������0���0���0�����0� X 9�'� �'��� � ��������������-�* "�.+� � � ���0���0�����0���0���������0���0���0�����0� X 9

�<� X H§v 3 D|t�o-t rB{|m�}<z0�0���0���0���������0���0�����0���0���������0���0���0�����0� X 9�'� X ��� � ��������������/ 0 1���� �������0���0�����0���0���������0���0���0�����0� X 9�'� X � 1 � ��������������/ 0 1�����2���3���������$+%(*���� �0���0���������0���0���0�����0� ?p~�'� X � W � ������������� )�%#4 ����$�.�� ���(2���3(� ������$�%(*��+�]�������0���0���0�����0� ?p~�'� X � � � ��������������5����(.����(2 � '+%6�&%#$+%(*���� �0���0���������0���0���0�����0� ?p~

�<� ? C�T(4<oBvOzBzB{�mp}<z��0���0���0���������0���0�����0���0���������0���0���0�����0� ?p~�'� ?<��� � ��������������7 8 1�� ��� ��%(*(�������0�����0���0���������0���0���0�����0� ?p~�'� ?<� 1 � ��������������9���������: ��$ ����� ��$+%#; � � �0���0���������0���0���0�����0� ?<��'� ?<� W � ��������������!6� '�%#8 �������0���0�����0���0���������0���0���0�����0� ?<��'� ?<� � � �������������(< .�%���" ��9���$�� ���0�����0���0���������0���0���0�����0� ?)1

�>= ��%'"$"?�&@A= ����� "���� & � 7X �|� >7oBv@r r 5 >7oB{|}srB{|}nw;=§t�z���v:D\D �����0���0�����0���0���������0���0���0�����0� ? W

X ���p��� B�B���������� ��� ����� ���������$�0���0�����0���0���������0���0���0�����0� ? WX �a1 96{ r-v@outLD z �����0���0���0���������0���0�����0���0���������0���0���0�����0� ?��

X � 1n��� B�B���������� ��� ����!�"��(��$&%#'+%������ )�*�� $+� �0���������0���0���0�����0� ?��X � 1n� 1 B�B���������� ��� ����!�"��(��$&%#'+%������ �����0���0���������0���0���0�����0� ?��X � 1n� W B�B���������� ��� ����,�%#$���� ���������0�����0���0���������0���0���0�����0� ?��

X � W � m H=/ D�vOz �����0���0���0���������0���0�����0���0���������0���0���0�����0� ?��X � W ��� B�B���������� ��� ����- * "�.+� � � ���0�����0���0���������0���0���0�����0� ?��

X � � H§v 3 D|t�o-t rB{|m�}<z0�0���0���0���������0���0�����0���0���������0���0���0�����0� ? XX � �'��� B�B���������� ��� ��� )+%#4�����$�.�������2 ��3������ ��$+%(*(��� ���0���0���0�����0� ? XX � �'� 1 B�B���������� ��� ����/�0 1 ����2�� 3�� �(� ��$�%�*(�&�S�0���������0���0���0�����0� ? XX � �'� W B�B���������� ��� ����/�0 1 �������0���0�����0���0���������0���0���0�����0� ? XX � �'� � B�B���������� ��� ����5 ����.����(2���'�%C��%#$�%�*(�&�S�0���������0���0���0�����0� ?G?

X � X C�T(4<oBvOzBzB{�mp}<z��0���0���0���������0���0�����0���0���������0���0���0�����0� ?��X � X ��� B�B���������� ��� ����9����(����: �($���������$�%D;����S�0���������0���0���0�����0� ?��

W

Page 6: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

X � X � 1 B�B���������� ��� ����7�8 1�� ��� ��%�*��+� �����0���0���������0���0���0�����0� ?��X � X � W B�B���������� ��� ����!D� '+%#8U���0���0�����0���0���������0���0���0�����0� ?�9

� � � "�% ��� %�� ����"�% � � � � ��" � (��?n�|� � )���9�����3�� ���0���0���0���������0���0�����0���0���������0���0���0�����0� � ~

?<���p��� l / D\D 5 Y 5(4'v H > o-m�w�outLN�z����0�����0���0���������0���0���0�����0� � ~?<���p� 1 > t�o r-{|t7D\D 5�Y5(4�v H > o-m�wpo-t7N zW�����0���0���������0���0���0�����0� �71?<���p� W Q / r%4 / r 9Ct }nw / t wpv������0���0�����0���0���������0���0���0�����0� � W?<���p� � G m�N?4�m�}<v@}sr-z ���������0���0�����0���0���������0���0���0�����0� � W

(�� �1� � � ���1� ��� � � � ��" � � �� " � 4�� "���%6� ( ����|� � ��������������,+%�� ���0���0���������0���0�����0���0���������0���0���0�����0� ������a1 � ��������������5����&%(���������A���������0���0�����0���0���������0���0���0�����0� ������ W � ��������������/ 0 1�����B ��*�����3�$�%�*(�.�0���0�����0���0���������0���0���0�����0� � X

�"� W ��� Y 5(4'v C�Tsr-o-t 3 r-{�mp} �����0���0�����0���0���������0���0���0�����0� ��?�"� W � 1 Y 5(4'v qsr-oB{ 4<4n{|}nw �������0���0�����0���0���������0���0���0�����0� ��?�"� W � W Y 5(4'v � t�}n{ 4 / D t�rB{|m�} ���0���0�����0���0���������0���0���0�����0� �p�

��� � � ��������������2���$ ����2���'�%C��%#$�%�*(�&�e���0�����0���0���������0���0���0�����0� �p��"� �'��� qsr-m�o-{�}<w H�t�rutOY5(4�v�H�v��<}n{�rB{|m�}<ze���0���������0���0���0�����0� �p��"� �'� 1 ) v@rBo-{�vyx�{�}nw G mp}<z¨r-o / 3 rBmpo H�v 3 D t out�rB{|m�}'z$�������0���0���0�����0� �LU

���*� � � �14���� ��"������ (��Un�|� � ����������������*����&��� %����.���������0���0�����0���0���������0���0���0�����0� �L9

�� � 2 %���� %����#��� & �#�9n�|� � ��������������/ 0 1���3�� � 3�� ���������0���0�����0���0���������0���0���0�����0� U<�

��� ���3254��! �� ��" � � � ����y~<���#"�$���:�.�8&%���%�����0����0���0���������0���0�����0���0���������0���0���0�����0� U���y~<� 1%"�$���&�.+� ���=I ) v H</ 3 r-{�mp} ) / D�vOz �0���0�����0���0���������0���0���0�����0� U X

�O~n�a1"�|� . �<z¨r-o-t 3 r-{�mp}±t�} H . 4<4<D|{ 3 t�r-{�mp} �0���0���������0���0���0�����0� U X�O~n�a1"�a1 Y 5(4'v . �<z¨r-o-t 3 r-{�mp}±t�} H Y 5(4'v . 4<4<D|{ 3 t�r-{�mp}3���0���0���0�����0� UG?�O~n�a1"� W G tpz v�0���0���0���������0���0�����0���0���������0���0���0�����0� UG?�O~n�a1"� � G t r-t t } H S / { D H �������0���0�����0���0���������0���0���0�����0� UG?

�y~<� W "�$�� )�%'��1+��%#' 0 ���0���0���������0���0�����0���0���������0���0���0�����0� U�����(� %*�������������������) ���1� ��� � ��� ��"������ �*�

���p���#"�$���-��+%D� I$YCo-t�}<z K m�o%N�{|}nw�tLD D H�v��<}n{�rB{|m�}<z+���0���������0���0���0�����0� U�U���p� 1%"�$���/ � ���&�=I�Y6out }'z K mpo�N {|}nw mp}nv H�v��<}n{�rB{|m�} �0���������0���0���0�����0� U�9���p� W "�$���9���$ �+!D��$�� * I J }pr-oBm H=/ 3 {|}nw G t�r-t7N m�o%4<6n{ z N�z �������0���0���0�����0� 9<����p� �+"�$�� )(1+��%#$ I . �<z rBout 3 rB{|}nw C�T=4no-vyz-z {|m�}'zS���0���0���������0���0���0�����0� 9<�

�p��� �<�|�3l / } 3 r-{�mp} > t outLN vMr-v@ouzW�0���0�����0���0���������0���0���0�����0� 9<��p��� �<�a1-,�m�}/ z¨rut�r-{ 3 l / } 3 r-{�mp} > t�o-t7N vMrBvyo-z7���0���������0���0���0�����0� 9)1�p��� �<� W . �<z¨r-o-t 3 r-{�mp}Wm7KMC�T(4<oBvOzBzB{�mp} �����0���0���������0���0���0�����0� 9)1�p��� �<� �$q(4cD�{�r ��o-t74<4'vyo9���������0���0�����0���0���������0���0���0�����0� 9)1�p��� �<� X ) vym�o H v@o-{|}nw r%6nv . o-w / N�vy}sr-z9�����0���0���������0���0���0�����0� 9 W�p��� �<� ?2q(4cD�{�r G m7N;�n{|}<t�r-{�mp}<z ���0���0�����0���0���������0���0���0�����0� 9 W

���p� X "�$���2 0 ����� %�3.& .+� � �(I J NO4<D�v:N v@}srB{|}nw r�6<v > o-m7N m r-{�mp} Y�6nvym�o-vEN �����0� 9���p��� X �|�0/�vy}nv@out�r-{�mp}Wm7K H25s}'tLN { 3 ) / D�vOz �0���0���������0���0���0�����0� 9���p��� X �a1 . 4<4<D|{ 3 t�rB{|m�}�m7K H25s}'tLN { 3 ) / D�vOz �0���0���������0���0���0�����0� 9��

Page 7: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

�p��� X � W G mp}<z¨r-o / 3 rB{|m�}±mLK l / } 3 r-{�mp} K mpo G m�}<z rBo / 3 rBm�o �0���0���0�����0� 9 X�p��� X � � G mp}<z¨r-o / 3 rB{|m�}±mLK G t�rutLN m�o%4<6n{ z�N ���0���������0���0���0�����0� 9 X

���p� ? "�$���-���1 � ��� I /�v@}nvyo-t rB{|m�}�m7K � tL4<z K o-m7N H�t�rut Y5(4�vyz ���0���0�����0� 9 X�p��� ?n�|�0/�vy}nv@out�r-{�}nw � t74±l / } 3 rB{|m�}<z ���0���0���������0���0���0�����0� 9G?

X

Page 8: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

?

Page 9: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� �

���� � � ��0��� �+� � � �� ����� �

qsr-o-t rBv@wpm�{|zNt H m�N t�{�}� z�4'v 3 { � 3 D t }nw / t wpv K m�o r%6nv§z�4�v 3 { � 3 t�rB{|m�}�m7K 4noBmpw�outLN�r-o-t�}<z K m�o�N�t�r-{�mp}Uz 5"z rBvEN�zy�0Y�6nv H vyzB{�wp} mLK7qsrBout�r-v@wpm�{|z��<t�zBv H mp}�r�6nvA4<t out H {�w�NgmLK o-vEb o-{ r-{�}<wz rBout�rBvyw�{|vyz:I / z vyo� H v��<}<t��cD�v 4no-m�wpo-t7N z�{|}t D�{�r r%D�v D t }nw / t wpv�mLK�z¨r-o-t rBv@w�5 m74�v@out�r-m�ouzH v@rBv@o%N {�}<v bZ6nv@o-v t } H {�} bZ6<t r�m�o H v@o�rBout }'z K mpo�N�t�r-{�mp} o / D|vyz�t o-v��¯t / rBm�N t rB{ 3 t7D\D 5��tL4c4<D�{|v H rBm t 4noBmpw�outLN���Y�6nv�z v:4<t out�r-{�mp} mLK�o / D�vOz7t�} H z rBout�rBvyw�{|vyz z / 4<4�m�oBr-zN m H</ D|t�o�{�r 5Wm7K z�4�v 3 { � 3 t�rB{|m�}'z@��qsr-o-t rBv@wpm�tLD z m 4<oBm�x�{ H vyz wpv@}nvyoB{ 3 K vyt r / o-vyz0K m�o�z 4�v 3 {�� 3 t�r-{�mp}±m7K4no-m�wpo-t7N$rBout¥x�v@ouz-tLD z@�J }�r%6n{ z�4<tL4�v@o�b v24no-vyzBv@}sr t 3 t�zBv�z r / H 5�mLK�qsrBout�r-v@w�m t�z tL4c4<D�{|v H rBm t�}nm�}��r-oB{|x�{|t7D4no-m��<D|vEN {|} 4no-m�w�outLN r-o-t�}<z K mpo�N�t rB{|m�}�����v H vEN mp}<z¨r-o-t rBvWr�6nv / z v�mLK0qsrBout�r-v@w�m�{|}

vED|{ N�{|}<t rB{|}nwS{|}pr-v@o%N v H { t�r-v H t r-tSz rBo / 3 r / o-vyzMK o-m7N��¯t7D|zBm���}nm b }�t�z��� "!$#&%� $')("*,+.-/��K / } 3 rB{|m�}'tLD 4no-m�w�outLN�z�xs{ t r%6nv1032&%)45!76.')*8#�+ tLD|w�m�o-{�r�6<N mLK:96t / } 3 6.� / o%5 t�} H q=6nvyt�o H �Y�6n{ z t7D�wpm�o-{ r%6<N 6<t�z;�'vyv@} z�4�v 3 { �<v H {|}�qsrBout�r-v@wpm t } H vEN<��v HcH v H {|}�t K / D D\5 t / rBm�N�t�r-{ 3 rBout }'z K mpo�N�t�r-{�mp} z�5�z rBv:N K m�o��vyoB}<vED>=�tpz��pvED D�� Y�6<v vy}pr-{�o-v z 5"z rBvEN 3 m�}'z { z¨ruz�m7Kt���m / r 1�?p~�~OD|{�}nvOz�m7K z�4�v 3 { � 3 t�rB{|m�} 3 m H v7;�bZ6n{ 3 6@�noBvOt��"z H m b } {|}srBmU� U X ~OD�{|}nvyz0K m�o�tw�vy}nv@outLDcK o-t7N vEb m�oA� K mpoB=§t�z���v:D\D'rBout }<z K m�o%N�t�r-{�mp}�t } H � X ~ D�{|}nvyz H vyx�m�rBv H rBm t 6n{|w76cD\5N m H=/ D t o ;4vOt�zB{\D 5�v T�rBvy}<z {C�<D|vWz�4'v 3 { � 3 t rB{|m�}�m7K r�6nv b t�o�N K / zB{�mp} rBout }'z K mpo�N v@o { ruz v:D K¨�J r-z§z / 3E3 vOzBz K / D H vyzB{�wp}Ut } H 3 m�}<z rBo / 3 rB{|m�} 4no-m�xs{ H vOz K / o r%6nv@o§v@x�{ H v@} 3 v�r�6't�r24<oBmpw�outLN�zw�vy}nv@out�r-v H K o-m7Ngq�rBout�rBvyw�m�z 4�v 3 {�� 3 t�r-{�mp}<z9t o-v§z / { rut��<D|v2K m�o9{�}sr-v@w�out�r-{�mp}�{|}pr-m o-vyt7D�z�5"zDrBv:N�zE;�t } H r%6<t�rNoBv:b oB{�rB{|}nwSz rBout�rBvyw�{|vyz t�oBv�t�wpm�m H 4<t�o-t H {|w7N K mpo r�6<v�{\NO4<D|vEN vy}prut�r-{�mp}mLK z / 3 6±z�5"z¨r-vEN�zy�

����� ��� �"!$#&%')(*�"+,#-�.0/ rBm7N�t rB{ 3 4no-m�wpo-t7Nkr-o-t�}<z K m�o%N t rB{|m�}{ z�tL4<4<D|{|v H {|} N�t�})51�nout } 3 6nvyz�mLK zBmLK r b9t o-vv@}<w�{|}nv@vyoB{|}nw/.]{|} 3 D /cH {|}nwSt74<4<D|{ 3 t�rB{|m�} wpv@}nvyo-t rB{|m�} t } H 3 m�NO4n{\D|v@o 3 m�}'z¨r-o / 3 rB{|m�}�.krBmrBout }'z D t�r-v 6n{�w�6/ D�vyx�vED]; � / r {|}nv10 3 {|v@}sr ;4z�4'v 3 { � 3 t rB{|m�} 3 m H v r-m D|m bNvyo� D�vyx�v:D�t�} H N m�o-vv10 3 {�vy}pr4{\NO4<D|vEN vy}prut�r-{�mp} 3 m H vp��J r$4cD|t,5"z6t04<t oBrB{ 3 / D t o%D 5�{ N?4�m�oBr-t�}srCo-m7D|v {�} 3 m7NO4n{ D�vyo-zK m�o�K / } 3 r-{�mp}<tLDB4<oBmpw�outLNON {�}nwAD|t�}nw / t w�vOz32 9c; W ;K�y~c;c1 X ;�1LU54 �6$7869786 : ;=<$>/?A@CB9;ED�FG>IH�JK;=BLH9;=<$DM?ONPFRQ=SUTWVXNY;ZF[Q\FG>IHM]*Q\;=<^Q_V`HLF[V`?. }�{ NO4'mpo rut }srZ4<t out H {|w7N K mpo9r�6nv H vyz 3 o-{\4"r-{�mp}�m7K�4no-m�wpo-t7N2rBout }<z K m�o%N�t�rB{|m�}±z 5"z rBv:N z{ z6r%6<t�r�mLK'oBv:b oB{�rBvNo / D|vyzy� .2H 6nm 3 { NO4<D�v:N v@}sr-t rB{|m�} m7KnrBout }'z K mpo�N�t�r-{�mp}Sz 5"z rBv:N z �<tpz v Hm�} oBv:b oB{�rBv o / D|vyz 3 t }<�'v H {a0 3 / D�r:; 6nm b v@xpv@o ;���v 3 t / zBv r�6<vNo / D|vyzBN / z r ��vNv:N<��v H<H v H {|}

Page 10: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

tLD|w�mpoB{�r�6cN zCr%6<t�r H v@rBv@o%N {�}<v9z rBout�r-v@wp{�vOzBK mpo tL4<4<D 5�{�}<w�r%6nvEN�� qsrBout�r-v@wpm 2��¥�); W)X ; W ?<; W 1 4{ z�t H m7N�t�{�}/ z�4'v 3 { � 3 D t }nw / t wpv K m�o r�6<v±z�4'v 3 { � 3 t rB{|m�}�mLK04no-m�wpo-t7N+r-o-t�}<z K mpo�N�t rB{|m�}z�5�z rBv:N�z@�MJ r-z H vyzB{�wp}�{ zB�<t�zBv H m�}Wr�6<v 4't out H {|w7N m7KCo-vEb o-{ r-{�}nw z rBout�rBvyw�{|vyzy� ) vEb o-{ r-{�}<wz rBout�rBvyw�{|vyz 3 m7N;�n{�}<v / zBv@o� H v��<}<t��<D�v oBv:b oB{�rB{|}nw� �<tpz v H 4no-m�wpo-t7N�zOb { r%6¬t D|{ rBr�D|v D t }/w / t w�v§mLK4{�} H vE4�v@} H vy}sr�z¨r-o-t rBv@w�5 m74�v@out�rBmpo-z7r�6't�r 3 t�} ��v / z v H r-m�z�4�v 3 {\K 5�bZ6nvyoBv�t�} H{|} bZ6't�r m�o H v@o9r-o-t�}<z K m�o%N t rB{|m�}Wo / D|vyz t�oBv0tL4c4<D�{|v H r-m t?4no-m�wpo-t7N��

qsr-o-t rBv@wpm � z zBvE4<t�o-t rB{|m�}�mLK�o-vEb o-{�rBv�o / D|vyzK oBm�N2r�6nv�z¨r-o-t rBv@wp{�vOz�bZ6n{ 3 6 3 m�}srBo-m7D<r�6nvy{�otL4c4<D�{ 3 t rB{|m�} K¯t 3 { D�{�r-t rBvOzN m H=/ D t o z 4�v 3 {�� 3 t�r-{�mp}�mLKB4no-m�wpo-t7N r-o-t�}<z K m�o%N t rB{|m�}<z:IKr-o-t�}<zDK m�o%N�t�r-{�mp}Wo / D|vyz t o-v0z 4�v 3 {��<v H {�} H vE4�v@} H vy}sr�D 5Wm7K6r�6<vStL4<4<D|{ 3 t�r-{�mp}±z rBout�r-v@w�5�t } H 3 t�}��v o-v / zBv H {|} N mpoBv�r%6<t } m�}nv�z¨r-o-t rBvyw75���qsrBout�r-v@w�mWtLD z m�m���vyo-z���m r�6 �<}nv�t } H 3 mpt�o-zBvw�out {|} 3 m�}sr-oBm�D"m�x�v@o�r%6nv�t74<4<D|{ 3 t�rB{|m�} m7K'r-o-t�}<z K mpo�N�t rB{|m�}�o / D|vyzy�MY�6n{|z 3 m�}sr-oBm�D<N�t���vOz�{ r4�mpz-z {C�<D|v§r-m�z 4�v 3 { K 5�r�6nv�vET"t 3 r K m�o%N�z r�6<t r04noBmpw�outLN�z 3 t }�t�z-z / N v�t r9x�t�oB{|m / z z r-t�w�vOzmLK 4no-m 3 vOzBzB{�}<w<��J rNtLD z m tLD D�m b�z�r%6nv04no-m�wpo-t7NON�vyo�rBmSwpm�x�vyoB}�r�6<v�{�}sr-v@out 3 r-{�mp}<z>��vMr b v@vy}{|} H {|xs{ H=/ t7D<r-o-t�}<z K m�o%N t rB{|m�}�o / D�vOz@��Y�6nv§q�rBout�rBvyw�m 3 m7NO4n{ D�vyo rBout }'z D t�r-vyz z�4'v 3 { � 3 t rB{|m�}<zrBm G 4no-m�w�outLN�z7r�6<t r rBout }<z K m�o%Ngt��<z¨r-o-t 3 r z 5�}sr-tLT�rBo-v@vOz rBm�t��'z¨r-o-t 3 r�z 5�}sr-tLT�rBo-v@vOz@�J }2 W ?54�{ r {|z z�6nm b } 6nm b oBv:b oB{�rB{|}nwSz rBout�r-v@w�{|vyz 3 t�} �'v / z v H rBm N�m H=/ D|t�o�D 5�z�4�v 3 {\K 5t } H {\NO4<D|vEN v@}sr±m74"r-{\N {��@v@ouzOK mpo K / } 3 rB{|m�}<t7D24no-m�wpo-t7N�z@� . z v@r�mLK0r-o-t�}<z K mpo�N�t rB{|m�}o / D�vOz0{|z 3 m7N;�n{|}nv H {|}pr-m t 3 m H v�zB{\NO4<D|{�� 3 t�r-{�mp}�t7D�wpm�o-{ r%6<N �(5 N vOt }<z0m7K9t z rBout�r-v@w75r�6't�r�r-o-t¥xpv@ouz vOz 4noBmpw�outLN�z t } H tL4<4<D|{|vyz�o / D|vyz bZ6nv@o-v tL4c4noBm�4no-{|t rBv���Y�6nvSv:NO4<6<t�zB{ z�{|}2 W ?549{|z m�} o / D|vyzSr�6<t r�t o-v�{|} H v:4'vy} H v@}sr%D\5 tL4c4<D�{ 3 t��<D|v�� . z H v:N m�}<z rBout�r-v H r�6<v@o-v7;�{ r{ z4<t�o r-{ 3 / D t o%D\5 vyt�z�5 rBm 3 m7N;�n{�}<v rBout }<z K m�o%N�t�r-{�mp}�o / D|vyz7{�}sr-m H {���vyoBvy}sr zB{\NO4<D|{�� 3 t�r-{�mp}z rBout�rBvyw�{|vyz �(5 t H<H {|}nwSmpo m7N {�r r-{�}nw o / D|vyzy�MS / r7{�} N�t�})5�z v@r r-{�}nwsz r%6nv 3 mp}<z rBo / 3 r-{�mp}�m7K{|}pr-v@o-oBv:D|t rBv H rBout }<z K m�o%N�t�r-{�mp}�o / D|vyzK o-m7N z vyx�vyo-t7DcN m�o-v 4no-{ N�{�rB{|x�v§o / D�vOz7{ z }nv 3 vyz-zBt�o�5p�

6$78697�� ����� FG>IH ]*Q\;=<^Q_V`HLF[V`? FG>�� V`@ BL;=V`?AQ=F8>IH���� >�� Q\F8BL>I<�� JK;=B��HL;=<$D�?J }�r%6n{ z 4'tL4�v@o bNv 4no-vyzBv@}sr t 3 t�zBv§z r / H 5�{\D D / z¨r-o-t rB{|}nwSr%6nv / zBv�mLKCoBv:b oB{�rB{|}nw z rBout�r-v@wp{�vOzrBmWvED|{\N {|}<t�r-v {|}srBv@o%N v H { t�r-v H t r-t�z rBo / 3 r / o-vyz K oBm�N � H v K mpoBvOz¨r)��K / } 3 rB{|m�}'tLDM4no-m�w�outLN�zy�H§v K m�o-vyz r-t rB{|m�} tLD|w�mpoB{�r�6<N�z4r 5(4n{ 3 t7D\D 5 4�v@o�K m�o%N t0} / N<��v@o m7K�z�N�tLD D�vyo�rBout }<z K m�o%N�t�rB{|m�}'z��v K m�o-v H vMr-v@o%N {�}n{|}nw+bZ6nvMr%6nv@o�mpo }nm r r�6<v H v K m�o-vyz r-t rB{|m�}�{|z 3 m�}<zB{ H v@o-v H z / 3:3 vyz-z K / D��G m7N;�n{|}n{�}<w 4noB{ N { r-{�xpv�o / D�vOz {|}pr-m 3 m�N?4cD�vETA4no-m�wpo-t7N�rBout }<z K m�o%N�t�r-{�mp}<z�mLK r-v@}�o-vFE / {|oBvOzr�6<vNvET 3 6't }nwpv mLK<N m�o-v7{|}=K mpo�N�t�r-{�mp} �'v@r bNvyv@} r�6nvy{�o4o / D�vOz�r%6<t }S{ z 3 m�}srut {|}nv H {|}Sr%6nv7{|}/H {|x�{ H=/ tLD�4noBmpw�outLN K out w�N v@}sr-z r�6nv:5 r-o-t�}<z K mpo�N��MY�6nv 4't outLN vMr-v@o-{��Ot�rB{|m�}�mLK6z rBout�r-v@wp{�vOzz / 4<4�m�oBrBv H �(5 qsrBout�r-v@wpm 4no-m�x�{ H vyz�t N vOt }<z�mLK9z 4�v 3 { K 5�{|}nw t } H { N?4cD�v:N�vy}srB{|}nw�o / D|vyzbZ6n{ 3 6 4<t�z-z�z / 3 6 {|}=K m�o%N�t�r-{�mp} ��vMr b v@vy} r%6nvEN���J }�r%6nv 3 tpz v�z r /cH 5 4no-vyzBv@}srBv H 6<v@o-v{|}=K m�o%N�t�rB{|m�}�v T 3 6<t�}nw�v H �'v@r bNvyv@}�rBout }<z K m�o%N�t�rB{|m�}'z�r-t���vOzSr%6nv K m�o%N ;�K m�o v TntLNO4<D|v7;mLK t�z-z / NO4"r-{�mp}<z�t���m / r�n{|} H {|}nwpz:; H 5�}<tLN { 3 o-vEb o-{ r-v o / D|vyz§r�6<t r�o-v 3 m�wp}n{��yvSo-v 3 / o-zB{�xpvK / } 3 rB{|m�} 3 tLD D|z:;<t } H r-v@o%N�z�w�vy}nv@out�r-v H �(5Wz�4<D�{�r r-{�}<w K / } 3 rB{|m�}<z�rBmOK¯t 3 {\D|{�r-t�r-v 4no-m�w�outLNrBout }'z K mpo�N�t�r-{�mp}��$> t�o-t7N vMrBvyoB{��@v H z rBout�rBvyw�{|vyz�6<t¥xpvN}nm�r �'vyv@} / zBv H v T�rBvy}<zB{�xpvED 5S{�}O4no-v$x�{�m / z�qsr-o-t rBv@wpm�z�4�v 3 { � 3 t�rB{|m�}'z@�

��vZ6<t¥x�v�z�4'v 3 { �<v H r%6nv0b9t o%N K / zB{�mp}�tLD|w�mpoB{�r�6<N mLK 96t / } 3 6.� / o%5 t } H q=6nvyt�o H 2��F?54{|} q�rBout�rBvyw�m'�VY�6n{ z0rBv 3 6n}n{ E / v 3 m7N;�n{|}nvyz�r%6nv 3 6nvOtL4 H v K mpoBvOz¨rut�rB{|m�} �<tpz v H mp}+K m7D H o�� / { D H K / z {|m�} m7K /�{ D\D'vMr7t7D�� 2 �p�L;<�O~54cb {�r�6 r%6nv�K m7D H 4no-m7N m r-{�mp} m7KKq(6<vyt o H t } H lnvywpt�o-tpz2 1�?54�t } H tSwpv@}nvyo-t7D�{��yt rB{|m�}�m7K�r�6nv§rBv 3 6n}n{ E / v§m7K$>�vE5sr-m�}V@pm�}nvOzNt�} H 9Ct / } 3 6 � / o�5)2 1�� 4K m�o�z 4cD�{�r r-{�}nw t K / } 3 rB{|m�} {�}srBm�t b m�oA��v@o t } H t b o-t74<4'vyoy� Y�6nv�K m�D H o� � / { D H K / zB{|m�}B;bZ6n{ 3 6V6<tpz �'vyv@}�{ NO4<D|vEN v@}srBv H {|}�r%6nv(/ D|tpz wpm b =�t�z���v:D\D G m7NO4n{ D|v@o ��/= G �_;"o-vFE / {|oBvOzr�6<v N�t } / t7DKrBout }<z K m�o%N�t�r-{�mp}±m7KMK / } 3 r-{�mp}<z�rBm � / {\D H ]K m7D H o0K mpo�NDt } H { z�mp}<D 5 H v��<}nv HK m�oMD|{|z r-zy�$Y�6<v b9t o%N K / zB{�mp} tLD|w�mpoB{�r�6cN3wpv@}nvyo-t7D�{��@vOz 3 6<vytL4 H v K mpoBvOz¨rut�rB{|m�}SrBm0t oA�n{ r-o-t�o�5o-v@w / D|t�o H t�r-t r 5(4�vyz t } H t / rBm�N�t�rB{ 3 t7D\D 5 H vyoB{|x�vOz�N�mpoBv0wpv@}nvyo-t7D � / {\D H 3 t r-tAK m�o%N�z@�

U

Page 11: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

. z�t 3 t�zBv z r / H 57;6r�6nv b9t o%N K / zB{�mp}�t7D�wpm�o-{ r%6<N^{ z�t }�{�}sr-v@o-vyz rB{|}nw�v TntLNO4<D|v mLK t}nmp}/�r-oB{|x�{|t7D�4no-m�wpo-t7NArBout }<z K m�o%N�t�r-{�mp}B;Ct�} H { ruz z�4�v 3 { � 3 t�rB{|m�} 4<oBm�x�{ H vyz0vyxs{ H vy} 3 v�m7Kr�6<vK vOt�zB{ �n{ D|{ r 5�m7K<{\NO4<D|vEN vy}pr-{�}<w�z / 3 6�r-o-t�}<z K mpo�N�t rB{|m�}<z6{�} qsrBout�r-v@w�m'��Y�6nv 3 tpz v z¨r /cH 5z / 4<4<D|{�vOz7vET=4'vyoB{|v@} 3 v b {�r�6�r�6nv H vyzB{�wp}�t } H {\NO4<D|vEN vy}prut�r-{�mp}�mLK6t 3 m�N?4cD�v@rBv�r-o-t�}<z K m�o�N�t�r-{�mp}Uz 5"z rBvEN ;�{�} 3 D /cH {|}nw�{|}srBv@o�K¯t 3 vyz b { r%6 t 4<t�o-zB{�}<w�t } H r 5(4�v 3 6nv 3 �s{|}nw K o-m�}sr�ªvy} Ht } H t 4no-vMrBr 5 ]4no-{|}pr-{�}<w��<t 3 � v@} H K m�oB=�t�z���v:D\Dª�MY�6nv§t74<4<D|{ 3 t�rB{|m�}�rBm;=§t�z���v:D\D�4no-m�xs{ H vOzt }�vy}�xs{|o-m�}<N v@}sr�{|} bZ6n{ 3 6�rBm�tpzBzBvyz-z�r�6<v7v ��v 3 rB{|x�vy}nvyz-zKmLK=b9t o%N[K / zB{|m�} K mpo H v K mpoBvOz¨r-{�}<wN m�o-v0oBvOtLD|{|z rB{ 3 4noBmpw�outLN�zNr�6<t�} bNm / D H m r%6nv@o%b { z v��v 4'mszBzB{C�<D�vp��Y�6nv 3 tpz v�z r /cH 5WtLD zBmH v:N�mp}<z rBout�rBvOz�qsrBout�r-v@wpm � z�z / 4<4�m�oBr K m�o r%6nv 3 m�}<z rBo / 3 r-{�mp}�m7K§r-o-t�}<z K m�o%N t rB{|m�}�o / D|vyzr�6't�r 3 m7N;�n{�}<v �<t�zB{ 3 rBout }<z K m�o%N�t�rB{|m�} z rBv:4<zS{|}�x�t o-{�m / z b9t,5"zE;Cr�6nv H vyz 3 o-{ 4"rB{|m�}�t�} H3 6nv 3 �s{|}nw�mLK {|}srBv@o%N v H { t�r-v�oBv:4no-vyzBv@}sr-t rB{|m�} K mpo�N�t r-z:;�D t }nw / t wpv�{|} H v:4'vy} H vy}pr H v$�<}<{�rB{|m�} m7K z / �'z¨r-{ r / rB{|m�} t�} H r�6<vSoBvy}<tLN {|}nw�mLK>��m / } H x�t o-{|t��<D�vOzE;'t } H r%6nv H { z 3 m�x�vyo�5�m7K}nv:b 4noBmpw�outLNON {�}<w�{ H {|m7N�zNoBvOz / D r-{�}nw K oBm�N r%6nv§z rBout�r-v@w�5G {|} H=/ 3 v H z�6n{ K r9t,b t,5 K oBm�N t4 / o-vED 5 K / } 3 rB{|m�}'tLD�{ NO4<D�v:N v@}sr-t rB{|m�} z¨r 5(D|v��

� t o%N K / zB{|m�} { z§t7D|zBm�t } {|}srBv@o-vyz rB{|}nw�4<oBmG�<D�v:N {|}U{�r-z�m b } oB{|w76sry�0Y�6<v��<ouz¨r K / D\D 5t / rBm7N�t rB{ 3 {\NO4<D|vEN v@}srut�rB{|m�} m7K b9t o%N K / z {|m�} b9t�z 6<t�} H 3 m H v H {�}�=§t�z���vED D {|}�:979��2��@� 4 � Y�6nvUt7D�wpm�o-{ r%6<N 6<t H 4noBvyx�{�m / z D 5���v@vy}�{ NO4<D|vEN v@}srBv H m�}<D 5�tpz � t�r-m�m7DC�'m,T m7Km74�v@out�r-{�mp}<z � 2��F? 4ª��Y�6n{ z9{ z�4'vyo�6<t74<zB��v 3 t / zBv§r%6nv H vyz 3 o-{ 4"rB{|m�}±mLK�b t�o�N K / zB{|m�}�{�}O2��F?54vED|{ H vyz N / 3 6 m7K7r�6<v H vMr-t�{\D�o-vFE / {|oBv H r-m�r / oB} r�6<v r%6nv@mpo�5 {|}srBm 4nout 3 r-{ 3 v��?Y�6nv r 5(4�v$H o-{�xpv@}W}<t�r / oBv§mLKCr�6nv0tLD|w�mpoB{�r�6<N ;�{|} 4<t�o r-{ 3 / D t o ;p{ z K / } H t7N�vy}sr-tLD�r-m�{�r-z9t / rBm�N t rB{|m�}B;t�z bNv:D\D�t�z�rBm�{�r-z§v T�r-v@}<zB{�mp} rBm�}nm�}/ D|{|z r H t r-t�z rBo / 3 r / o-vyzy� Y�6nv 3 o-{ r-{ 3 tLD H vE4�v@} H vy} 3 vmLKMb9t o%N K / z {|m�}�mp}�r 5(4�v�{�}=K mpo�N�t rB{|m�}±{|z9o-v��<v 3 r-v H {�}±{�r-z�qsr-o-t rBvyw�m�z 4�v 3 {�� 3 t�r-{�mp}��Y�6nv 4no-m H=/ 3 r mLK m / o 3 tpz v�z r /cH 5 { zSt K / D D 5�t / rBm�N t rB{ 3 {\NO4<D|vEN vy}prut�r-{�mp} mLK9r�6nvb9t o%N-K / zB{|m�} t7D�wpm�o-{ r%6<N���Y�6n{ z4{\NO4<D|vEN v@}srut�rB{|m�} 3 m / D H ��v9t }S{ NO4'mpo rut }sr4z rBv:4SrBm b9t o Hr�6<v / zBv�m7KBb t�o�N K / zB{|m�}�{|} 3 m7NO4n{ D�vyo-z7m�o9t�z7t 4no-vE4no-m 3 vyz-zBm�o�K mpo�� D�{C�nout o%5/��4no-m�w�outLN�zy�J r 3 t }�t7D|zBm zBv@o-x�v�t�zNt �<tpz { z�K mpo�K / oBr�6nvyo7vET(4�v@o-{ N�vy}sr-t�r-{�mp} b { r%6�vETsr-v@}<zB{|m�}<z m7K 3 6nvyt74H vEK m�o-vyz r-t�r-{�mp}��sq�rBout�rBvyw�m N�t��pvyz�{�r7vytpz 5�;LK m�o7v TntLNO4<D|v7;�rBm N m H { K 5 r�6<v�z v@r mLK 4no-m�w�outLNrBout }'z K mpo�N�t�r-{�mp} o / D|vyz�t�} H r-m v T=4�v@o-{\N v@}sr�b {�r�6t x�t o-{�v@r 5�mLK�tL4c4<D�{ 3 t rB{|m�}�m�o H v@ouzy�C�T=4�v@o-{�vy} 3 v2b { r%6Wt bNmpo���{|}nw z�5�z rBv:N mLK r-v@}�wp{�xpvyz7oB{ z v�rBm t H vyvE4�v@o / } H vyo-z r-t�} H {|}nw m7K{�r-z / } H v@o%D\5�{|}nw tLD|w�mpoB{�r�6<N��OJ r b9t�z�z / 3 6 vET=4'vyoB{|v@} 3 v r�6<t r D�v H ;BK mpo�{�}'z¨rut } 3 v rBm�m / o� H m / �<D|v�z 4<D|{�r rB{|}nw�� b outL4<4�v@o� bNmpo��pv@o�r-v 3 6n}n{ E / v K m�o oBv 3 mpw�}n{��@{|}nw 3 v@oBr-t�{�}�x¥t�oB{ t��cD�vOzt�z�z¨rut�rB{ 3 4<t�o-t7N vMrBvyo-z�mLK�4no-m�w�outLN�z / } H v@o-w�mp{�}nwOb9t o%N'K / zB{|m�}���� Y�6n{|z§z¨r-vE4 6<t74<4�v@}<z� t / rBm�N�t w�{ 3 t7D\D 5���{|} 2��F?54 �`�?Y�6n{ z�rBv 3 6<}n{CE / vO6<tpz0z {|} 3 v:��v@v@}�{|} 3 mpo�4�m�out�r-v H {|}srBmWr�6nv=�tpz��pvED DK{\NO4<D|vEN vy}prut�r-{�mp}Wm7K�b9t o%N�K / zB{�mp} H vMr-t�{\D|v H {|} 2 �y� 4ª�6$78697 � �IQ �GF8> VJ }�r%6nv§}<v T�r zBv 3 rB{|m�}�b v �no-{|v��c5�oBvyx�{�v:bGz m�N�v �<t 3 ��w�o-m / } H m�} H vEK m�o-vyz r-t rB{|m�}B; H { z 3 / zBzr�6<v?4<oB{|} 3 { 4<D|vyz0m7K 3 t r-t� � / {\D H K / zB{|m�}B;4t } H {\D D / z¨r-o-t rBv�r�6nvOb9t o%N K / zB{�mp} r-o-t�}<z K mpo�N�t�rB{|m�}UrBv 3 6<}n{CE / v;�(5 N vOt }<z�mLK7t } v TntLNO4<D|v��2J } q�v 3 rB{|m�}��p� W bNv w�{|x�v t�} m�x�v@o-x�{�v:b¬m7Kr�6<v�m74�v@out�rBmpo-zNmLK q(5"z¨r-vENDq ;nt 3 tLD 3 / D / z K mpo9r�6nv H v��<}n{�rB{|m�}�mLKCrBo-v@v�rBout }'z K mpo�N�t�r-{�mp}<z:;t�z b vED D t�z�mLKNr�6nv�z�5�}prut 3 rB{ 3 t��<z rBout 3 r-{�mp}<z�� / { D rSmp} q(5"z rBv:N.q r%6<t�r K mpo�N.q�rBout�rBvyw�m'�J }�q"v 3 r-{�mp}���� �Vb v 4<oBvOz vy}pr§r�6nv�m�x�vyo-t7D\D4t o 3 6n{�rBv 3 r / o-vSm7K r�6nv?b9t o%N K / zB{|m�}Ur-o-t�}<z K m�o�N�t�r-{�mp}�rBm�m�D � / {\D�r�b { r%6�qsr-o-t rBvyw�m<��J }±q"v 3 r-{�mp}<z���� X ;���� ?<;"t } H ��� � b v H {|z 3 / zBz z vyx�vyo-t7D6n{|w76<D|{|w76sr-z K o-m7N$r%6nvSz 4�v 3 {�� 3 t�r-{�mp}B;(K m 3 / zB{|}nwO4<t oBrB{ 3 / D t o%D 5�mp}±zBm7N v0mLKCr�6nv0}nv:b-4no-m�w�outLNON {|}nw { H {|m7N�z r�6<t rZ6<t¥x�v§vEN v@o-w�v HVH=/ o-{|}nw r%6nv 4no-m 3 vyz-z mLK4z�4�v 3 {\K 5�{�}<w r%6nv b t�o�NK / zB{�mp}UtLD|w�mpoB{�r�6<Ng{�} qsr-o-t rBvyw�m<� Y�6nv K / D D�r-v T�r�mLK�r%6nv z�4'v 3 { � 3 t rB{|m�} 3 t�} ��v K m / } H {|}r�6<v�}nv T�r 3 6<t74"rBvyo-zy�

9

Page 12: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

������������ ��������������������������������������� ������"!��$#��%�'&(�����)�*+�, ��-/.. &0��12�34*512�����$�)�%125������%36�, ��-��%7�8)� 12

9 �������%��8%: ���� 12� ����;�!��$#���<�<���12�!��$#��=&>8%<�*?& , ��-)8 <��*�@=�

8������/..A3�12B&0��12C3D1�2�34*C1�2����������12�3E�8���������7�# 9 <��12

9 �����<����8): ���� 12C#6�!���#���F�F� 12 9 FG&>8������%# 9 F��*$@;�

�-����G..IH$#�)12%HJ#��)12������DH$#�E��-������%7����K�L���M�L)12

9 ����)���K�2�L���M�L)��8):�������N1�2� ����;����������1�2�!���#�� ���K/&(��-����;&0����KDOQP�*?&RL���M�L4*�*�@;�

�$� , ..S�������TH$#��%12�H$#�����$� , � 8������)UB&VO*?������'..WH$#�)12�H$#�)12�H$#�E��������%7��CL���12��$� , & , ��-6&X��Y��������*+&(�-����T���L���**

l4{|w / o-v ���|�7I ) v 3 / ouz {|x�v2K / } 3 rB{|m�}<z�m�} D�{ z r-z���JZ [ \ !^] _ 'a`"+1#-�� m H=/ D t o-{�r 5�{|} K / } 3 r-{�mp}<tLD 4no-m�w�outLNON {|}nwU{ z t 3 6n{�vyx�v H �(5 H {�x�{ H {�}<w 4no-m�wpo-t7N z {�}sr-mz�N t7D\D];�w�vy}nv@outLD D 5GtL4<4<D|{ 3 t��cD�v+K / } 3 rB{|m�}<zUr�6<t r 3 m�N?N / }n{ 3 t rBv x�{|t H t r-t z rBo / 3 r / oBvOz@�q / 3 6[K / } 3 r-{�mp}<z±t o-v 3 m�N?N mp}<D\5 H v��<}nv H t�zWoBv 3 / ouzB{�xpv m74�v@out�rB{|m�}'z�r�6't�r 3 m�}<z rBo / 3 rt } H H v 3 mp}<z¨r-o / 3 r H t r-t z¨r-o / 3 r / oBvOz@��Y�6nv H v��<}n{�rB{|m�}<z9{|} l4{�w / oBv �p����t o-v 3 m�N?N mp}WvET tLNO4<D|vyz mLK�z / 3 6?K / } 3 rB{|m�}<z �+�D.���t�} H '�*���" � 3 mp}<z / N v D|{ z¨ruzE;�. 1�$ * 4no-m H=/ 3 vOz�D|{|z r-z:;pt�} H�&��1 H m�vyz ��m r%6�� P�zB{�}nw�r%6nvyzBv K / } 3 rB{|m�}'z bNv 3 t }B;$K m�o {�}<z r-t�} 3 v�; H v��<}nv�r%6nv�z / N+m7Kr�6<vSz�E / t�oBvOzNm7KCr%6nv�} / N<��v@ouz � *�rBm ��% tpz

��*��cb4b !D��$ �4d !D��$ �4d !D��$��*��QeGf���*)�&% �4d �#.��hg �&��1ig ��j�.������=kEg . 1�$ * � *)��%4k4k

bZ6nvyoBv�r�6<v K / } 3 r-{�mp} ��j�.���� � { z H v��<}nv H tpz��j�.������lb4b !6��$ �4d !6��$��j�.������meGf�8 �4dng 8/o 8�k

Y�6n{ z�{\NO4<D|vEN v@}srut�rB{|m�} mLK r%6nv�z / N; mLK, zAE / t o-vyzZK / } 3 r-{�mp} { z�z rBout {|w76sr�K m�o%b t�o H t�} HN m H=/ D t oO��J ruz H {|z-t H x�t�}prut wpv {|z7r�6<t r {�r 3 m�}'z¨r-o / 3 r-z:;�r-o-t¥xpv@ouz vOzE;pt } H�H v 3 mp}<z rBo / 3 ruz r b m{|}pr-v@o%N v H { t�r-v D|{ z¨ruz^. v@xpv@} r�6nm / w76:��m r�6 r%6nv {|}<4 / r7t�} H m / r%4 / r mLK�r�6<v 3 m7NO4 / r-t�r-{�mp}t o-v�{|}srBv@wpv@ouz@� Y�6n{ z {|z 3 m7NO4 / r-t�r-{�mp}<tLD D 5 vET(4�v@}'z {|x�v�; ��m r%6 z D|m b {|}nwUv T"v 3 / r-{�mp} rB{ N�vt } H {|} 3 o-vytpz {|}nwO6nvOtL4�z 4<t 3 v0o-vFE / {|oBv:N�vy}sr-zy�J r { z m7K rBvy} 4'mszBzB{ �cD�v�r-m t¥xpm�{ H N�t�}n{\4 / D|t rB{|}nwU{|}srBv@o%N v H { t�r-v H t r-tUz rBo / 3 r / o-vyz��(5/ zB{�}<wUt N m�o-v�v:D|t��'mpo-t rBv�z r 5(D�v�m7K 4no-m�wpo-t7NON�{|}nw�{|} bZ6n{ 3 6 4<t�o ruz K o-m7N 3 m7NO4�m�}nvy}srK / } 3 rB{|m�}<z t o-v {|}srBv@o%N {�}<w7D|v H �OJ } r�6n{ z N m�}nm�D�{�r�6<{ 3 z r 5)D|v mLK�4no-m�w�outLNON {|}nw�r%6nv�z / N;mLK, zAE / t o-vyz K / } 3 rB{|m�}�{|z H v$�<}nv H t�z��*��qp'b4b !D��$ �4d !D��$ �4d !D��$

�O~

Page 13: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

��*��qpaeBf�� *)��% �4d� ��$ � ��*��qp p b4b !D��$ �4d !6��$��

��*�� p4paeGf�% �4d 3����(� % d)�&% *�' �/ � .�� �4d����$���� ��� �4d ��j�. ��� � g6% k�� �(*��qp4p gC%���k�� �

%D� �(*��qp4p g?� *=k

,�m�rBv�r�6't�r }nm {�}sr-v@o%N�v H { t�rBv H t r-t�z¨r-o / 3 r / oBvOz t�r tLD D�t o-v24no-m 3 vOzBzBv H �)5 �(*��qp@�$J }Wr�6<{|z3 tpz v�;Cv:D�{ N {�}'t�rB{|}nw r%6nv�N�t }<{\4 / D|t rB{|m�} mLK {|}srBv@o%N v H { t�r-v�D|{|z r-z oBvOz / D�r-z {�}�t�} m�o H v@o�m7KN�t wp}n{ r /cH v�wst {|}�{|} 4<oBmpw�outLN�4�v@o�K m�o%N t�} 3 vp�C�T=4�v@o-{�vy} 3 v H 4no-m�wpo-t7NON�vyo-z�b oB{�rB{|}nw�t0z�E / t�oBv9z / NON�{|}nw K / } 3 rB{|m�}Ob m / D H {|}<z rB{|} 3 rB{|x�v:D\5 4no-m H</ 3 v ��*��qp§o-t r�6nvyo0r�6<t�} ��*����4z�N�tLD D�K / } 3 rB{|m�}<z D�{C��v ��*��Wt o-v vytpz { D\5 m74"r-{�N {��yv H t r�r�6nv;��v:5 ��mpt�o H � S / r2bZ6<v@} 4no-m�wpo-t7N z t�oBv�vy{ r%6nv@o§x�vyo�5�D t o-w�v�mpo�x�vyo�5 3 m�N;4<D|v T ;�vyx�v@}Zv T=4'vyoB{|v@} 3 v H 4noBmpw�outLNON v@ouz N�t,5 �'} H r%6<t�r�vED|{\N {|}<t�r-{�}<w {|}pr-v@o%N v H { t�r-vH t r-t�z rBo / 3 r / oBvOz>�(5 6<t�} H {|z7}nm r7t0xpv@o%5 t�rBrBout 3 rB{|x�v�tLD�rBvyoB}'t�rB{|x�v r-m0r�6nv0N m H=/ D t oNz¨r 5(D|vmLK 4no-m�w�outLNON {|}nw<� J }�z / 3 6 zB{ r / t�r-{�mp}<z0t�r-msm�D�K m�oSt / rBm7N�t rB{ 3 tLD D 5±v:D�{ N {�}'t�rB{|}nw±r�6<vEN{ z9}nv@v H v H �

6$7�� 786 � V�@CB9;=V`?AQ\<^Q\F8BL>.0/ rBm7N�t rB{ 3 vED|{\N {|}<t�r-{�mp}�mLK�{�}srBvyo�N v H {|t rBv H t r-t�z rBo / 3 r / o-vyz �(5�r-o-t�}<z K m�o%N t rB{|m�} 3 m�N;�n{|}nvyzNr%6nv 3 D|t�oB{�r 5�t } H N t�{�}srut {|}<t��n{ D|{ r 5 mLK6r�6nv N m H</ D|t�o z r 5(D�v�mLKB4<oBmpw�outLNON {�}nw b { r%6r�6<v�v,0 3 {|v@} 3 5 mLK7r%6nvON m�}nm�D�{�r�6n{ 3 z¨r 5(D|v�� Y�6nvO4no-m 3 vOzBz§mLK7v:D�{ N {�}'t�rB{|}nw�{|}pr-v@o%N v H { t�r-vH t r-tSz rBo / 3 r / o-vyz�K o-m7N 4no-m�wpo-t7N�z�{|zNmLK r-v@} 3 tLD D�v H �� "!$#&%� $')( 2�("*8#�+Ut K rBvyoNt�}�vyt�o�D 5Sr-o-t�}<zDK m�o%N�t�r-{�mp} r-v 3 6n}n{ E / v mLK � t H D|v@oI2 W ��4�bZ6n{ 3 6 o-vEN m�x�vOzCrBo-v@v$ D|{ �pv H t�r-t�z rBo / 3 r / o-vyz�K o-m7N�<ouz¨r�ªmpo H v@o�4no-m�w�outLN�zy�J } � t H D�vyo � z H v K mpoBvOz¨rut�rB{|m�}�; 3 m7NO4�mpzB{ r-{�mp}<z�mLKNrBo-v@vED|vyz-z§v T=4no-vyz-z {|m�}<z:�¯t�z�5�}prut 3 rB{ 3o-vyz rBo-{ 3 rB{|m�}�mLK9}nm�o%N�tLD vET(4<oBvOzBzB{�mp}<z§r�6<t r tLD D|m b�z§}<m {�}srBvyo�N v H {|t rBv H t r-t z rBo / 3 r / o-vyz7�t o-v�rBout }<z K m�o%N v H {�}srBm }nv:bZr-oBvyvED|vyz-z9v T=4no-vyz-z {|m�}'z@�MY�6nv�rBv 3 6n}n{ E / v / z vOz K / } 3 rB{|m�} / }/K m7D H {|}nw�rBm vET=4'msz v 3 mp}<z / NO4"rB{|m�} mLK 3 mp}<z rBo / 3 r-m�ouz�)5 3 t�zBv�zBvED|v 3 r-{�mp}<zy��q / �<zBvFE / vy}prK m7D H {|}nw 3 oBvOt�rBvOz�}nv:bcoBv 3 / ouz {|x�v K / } 3 r-{�mp}<z@�2Y6m�4<oBvyx�v@}sr�}nmp}/ªrBv@o%N {�}'t�rB{|m�} m7K / }=K m7D H {|}nwc;nw�D�mG�<tLD 4no-m�wpo-t7N�4<t�rBrBvyoB}<z�N / z r �'v N mp}n{ r-m�o-v H ��S v 3 t / zBv�r�6n{ z { z 3 m�NO4 / r-t rB{|m�}/tLD D 5 v T=4�v@}<zB{|x�v7;���t H D�vyo � z H vEK m�o-vyz r-t rB{|m�}?6<t�z�}nm�r �'vyv@}�{|} 3 mpo�4�m�out�r-v H {�}srBm K / } 3 r-{�mp}<tLDD t }nw / t wpv 3 m7NO4n{ D�vyo-zy�/�{ D\D�vMr tLDª� 2��y~<;§�p�140{�}srBo-m H=/ 3 v t D|vyz-zWw�v@}<v@outLD]; � / r 3 6nvyt74'vyo:;�x�t�oB{ t }sr�m7K H v$K m�o-vyz r-t rB{|m�} K mpo D|{|z r� 4no-m H</ 3 {|}nw t�} H 3 m�}<z / N {|}nw K / } 3 rB{|m�}<zy� Y�6nv ��v:5 mG�<z vyoBx�t rB{|m�}/ } H v@o%D\5�{|}nwSr%6nv@{|o�'�� #&%)(���6/( r-m H vEK m�o-vyz r-t�r-{�mp}�{ z r%6<t�r�N�t }(5OD�{ z¨r�]N�t�}n{\4 / D|t rB{|}nw K / } 3 rB{|m�}'z 3 t } ��v2b o-{�r rBvy}�{|}�rBvyo�N�zNmLK�r%6nv / }n{ K mpo�N�D|{ z¨r� 3 m�}<z / N {�}<w K / } 3 rB{|m�} '�*���" ��t�} H

r�6<v / }n{\K m�o%N D�{ z¨r�]4<oBm H=/ 3 {�}<w K / } 3 r-{�mp} ��.&%���"��4q�{|} 3 v '�*���" �S{ z7t�}nm r%6nv@oN}<tLN v�K m�o7r�6nvz r-t } H t o H 3 t r-tLN mpo�4<6<{|z�N K mpo D|{|z r-z:;)bNv H v@}nm�rBv�{�r �(5 3���$�������% �#$�{|}�r%6n{|z 4<t74'vyoy� . } HzB{�} 3 v�r%6nv� .�%���" K / } 3 rB{|m�}�mLK /�{\D D9vMr�tLDª��{ z r�6nv�{|}<z¨rut }srB{ t�r-{�mp} rBm D�{ z r-z�mLK§t N m�o-vw�vy}nv@outLD ��.�%���" K / } 3 r-{�mp} t74<4<D 5�{�}nwWrBmUt�o��<{ r-o-t�o�5�o-v@w / D|t�o H t�r-tWr 5(4�vyz:;BbNv H v@}nm�rBv { r�(5 ��.�%(��" ����%���$:�'v:D�m b��Q24�v@out�rB{|m�}'tLD D\5�; 3���$�������% �#$Sr-t��pvyz t�zN{�}c4 / r9r 5(4'vOz � t�} H � ;"tSo-vE4<D t 3 vEN v@}srK / } 3 rB{|m�} '� b4b � �4d+� � d)� K mpo 9�*(�&��� ��� ;Mt9o-vE4cD|t 3 vEN vy}pr K / } 3 r-{�mp} ' � b b� K mpo �&%(��� ����;

t } H t D|{|z r ���§mLK<r 5(4�v ,+% ��$ �'�B� Y�6nvZD|{|z r 3 mp}<z¨r-o / 3 rBmpo-z�9�*�����t�} H ��%��26<t¥xpv7r%6nvZ4�m7D 5GN m�o%4<6n{ 3 r 5)4�vyz '�*�� ����� ��� � �4d ,�% ��$ � �4d ,+% ��$ �t�} H '�*�� ����� ��� ,�% �#$ �c;o-vyz�4'v 3 rB{|x�v:D\5�;�t } H z m N / z¨r ��v {|}<z r-t }sr-{|t rBv H K m�o0vOt 3 6 4<t�o r-{ 3 / D t o D�{ z r§r 5(4�v ��r%6nv }nm�r-t rB{|m�} ��� $ �U{�}<z r-t�}srB{ t�rBvOz0r�6<v�4'm�D\5(N m�o%4<6n{ 3 v T=4no-vyz-zB{�mp} � rBm r 5(4�v $�� � J r oBv:4<D|t 3 vOz�(5 '��t�} H ' � ;"o-vyz�4'v 3 r-{�xpvED 57;ntLD D�m 3E3 / o-oBvy} 3 vOzNm7K 9�*��&��� ����t�} H �&%���� ��� {|} � � bZ6n{ 3 6

�p�

Page 14: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

, ��-/.. &0��12�34*512�����$�)�%125������%36�, ��-��%7�8)� 12

3������� � ��������3��E&��7��)12%7;&R#�.. � *m& 9 .. &(3)12���12 ��**�129 ����� � �������T��� � ����&(#�� 7;&>F ..S34*C12 9 &>8�F **C��*?�

8������/..A3�12B&0��12C3D1�2�34*C1�2����������12�3E�8���������7�# 9 12 9 ����� � ������T��� � 3��E&(#�� 9 *?�

�-����G..IH$#�)12%HJ#��)12������DH$#�E��-������%7��� L�� 1�2

3������ � �����QH$#����&��7���12�7;&R#�.. � * & 9 ..W�$#��)12���12 ��*C12������:��-�����.. H$#���12��E�

�-����W��7���12 9 �����)��2CL����8):�������125#6�����������12 9 &X��*?&R�-������&X�%OTP�**$@@

�$#��-������&0��**+�

�$� , ..S�������TH$#��%12�H$#�����$� , � 9 ����� � ����$�TH$#���� � H$#����E&>U��)&VO�**

l4{�w / oBv �p� 1<I l / } 3 rB{|m�}<z9{|} � / { D H 3 t�r-tAK mpo�N

t 3 r / t7D\D 5 3 m�}srBo-{C� / rBv�r-m�r�6nv�o-vyz / D�rSmLK r�6nv 3 m7NO4 / rut�r-{�mp}�� Y�6nv�o-vyz / D�rS{|z tWx�t7D / v�m7Kr 5(4'v �K��Y�6nv K / } 3 r-{�mp} ��.�%���" ����% �#$ ; mp}�r%6nv§m�r�6nvyo�6<t } H ;prut��pvyz9t�zN{�}c4 / r�t K / } 3 r-{�mp}4�4no-m�x�{ H {�}nw t r 5(4'v�ª{|} H v:4'vy} H v@}sr r-vENO4<D t�rBv K mpo 3 m�}'z¨r-o / 3 rB{|}nwOD�{ z r-z t } H {|}<z r-t }sr-{|t rBvyz{�r-z � t��<z¨r-o-t 3 r � D�{ z¨r 3 mp}<z rBo / 3 r-m�ouz�b {�r�6Wt74<4no-m74no-{ t�rBv {|}<z r-t�} 3 vOz7m7K�r�6nv � 3 m�} 3 oBv@rBv � D�{ z¨r3 mp}<z rBo / 3 r-m�ouz�9�*(�&�9t } H �&%��<�BJ }Sm r%6nv@o$bNmpo H zE;O{ K 4�{ z6t }(52K / } 3 rB{|m�} b {�r�6 4�m7D 5(N m�o%4<6n{ 3r 5(4'v '�*�� ��� �%� � � � dcg?� �4d+� � d)�Ek �4d+� ;�r�6nvy}��.�%���"�����% ��$ � ��� g 4;k e 4 � ,+% ��$ ���lg �&%���� ���;k/g 9�*��&��� ���;k

G m7NO4�mpzB{ r-{�mp}<z�m7K�D|{ z¨r� 3 m�}<z / N {�}<wUt } H 4no-m H</ 3 {|}nw K / } 3 rB{|m�}<z H v��<}nv H {|} r-v@o%N zmLK 3���$ ������%���$±t } H ��.&%���" ��� % ��$ 3 t }��'v�zB{\NO4<D|{��'v H � H vEK m�o-vyz rBv H � �(5 N vOt }<z�mLKNr�6nvz�6nm�oBr 3 / rZK / zB{|m�}±o / D|v K m�oZD|{ z¨ruzEI3���$ ��� ��% ��$ � ��� � $ � gA' � ' � k6g ��.�%(��" ����%���$ � � � g 4�k k e 4 � $ � ' ' �

Y�6nv�z�6nm�oBr 3 / r H vyz 3 o-{C�'vOzNmp}nv 4noBv 3 { z v b9t,5�{�} bZ6n{ 3 6 3 m7NO4n{ D�vyo-z 3 t�}�rut���v0t H x¥t�}sr-t wpvmLK / }n{\K m�o%N { r 5W{�}�r%6nv 4no-m H=/ 3 r-{�mp} t } H 3 mp}<z / NO4"rB{|m�}�mLKMD|{|z r-z9r-m�m74"r-{\N {��@v 4<oBmpw�outLN�zbZ6n{ 3 6�N�t }n{ 4 / D t�r-v�r%6nvEN��MJ r N�t��pvyzNz vy}<z v�{�}sr / { r-{�xpvED 5�I4r%6nv�o-vyz / D�r7mLK6t 3 m7NO4 / r-t�r-{�mp}{ z r�6<v§z-tLN v�o-v@wpt�o H D�vOzBz�m7K bZ6<vMr�6<v@oNr�6nvZK / } 3 r-{�mp}�4 { z3�<o-z rNt74<4<D|{�v H rBm 9�*��&��t } H �&%(�t } H m 3E3 / o-oBvy} 3 vOz�m7K 9�*�����t�} H ��%���{|} r%6nv oBvOz / D r-{�}nw D|{|z r t o-v r%6nv@}�o-vE4<D t 3 v H �(5 '�t } H ' � ;KoBvOz 4�v 3 rB{|x�v:D\5�;Km�o�r�6nv�t��<z¨r-o-t 3 r 3 mp}<z¨r-o / 3 rBmpo-z§{|} 4 t�oBv�o-vE4<D t 3 v H �(5 '��t�} H' � ;4o-vyz�4�v 3 r-{�xpvED 57; H {|oBv 3 r�D 5�� Y�6<v�K¯t 3 rSr�6't�r 4�{ z 4�m7D 5(N�mpo�4c6n{ 3 {|}�{�r-z oBvOz / D rSr 5(4�v $v@}'z / o-vyz r%6nv 3 mpoBo-v 3 rB}nvOzBzNmLK4r�6<{|z�K / z {|m�}�o / D�vp�

6$7�� 7�� � >���� <$D ��[V B9@�� < Q\< ��� �/F ��� � � ?_F[BL>l4{�w / o-v �p� 1 z 6nm b�zNr%6nv� / { D H 3 t r-t K m�o%N�z7m7K6r�6<v2K / } 3 r-{�mp}<z {�}�l4{�w / oBv����|����Y�6nv�}nm�r-t&rB{|m�}�� f � �4d � H v@}nm�rBvyz7r�6<v§t��'z¨r-o-t 3 rB{|m�}�m7KKr 5(4'v§x¥t�oB{ t��cD�v � K o-m7N2r�6<v�v T=4no-vyz-zB{�mp} �<�q / 3 6�t }Wv T=4no-vyz-z {|m�}V6<t�zNr 5(4'v '�*�� ����� � � $ ;=bZ6nv@o-v $�{|z r%6nv�r 5)4�v0mLK��'��Y 5)4�v�t��/z rBout 3 r-{�mp}�{ z9}nm�o%N�tLD D\5�{ NO4<D|{ 3 { r�{|} H v$�<}n{�rB{|m�}'z {�} =�tpz��pvED D �'v 3 t / z v0{�r�m�}<D 5�m 3E3 / o-z9t�r

�,1

Page 15: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

r�6<v rBm�4SmLK<t H v$�'}n{ r-{�mp}B;�{ª� vp�\;�t =§t�z���v:D\D H v$�<}<{ r-{�mp} ''eGf�8 �4d ��r�6<t rC{ z�4�m7D 5(N m�o%4<6n{ 3{|}Wr 5(4�v�x�t o-{|t��<D�v ��t����no-v@x�{|t rBvOz r�6nv H v��<}n{�rB{|m�} ' e �4f�� � d'f�8 �4d �'�Y�6nv H vEK m�o-vyz rBv H K / } 3 r-{�mp} �(*��qp 3 t } ��v H v@o-{|x�v H K o-m7N �(*�� �(5 {�}<D|{|}n{�}<w�r�6nv H v$�<}<{�

rB{|m�}'z7{|}Wl4{|w / o-v �p� 1�t�} H t74<4<D 5s{|}nw r�6nv0z 6<m�oBr 3 / rN{|} 3 mp} � / } 3 rB{|m�} b { r%6�r�6<v§z r-t } H t o H4no-m�wpo-t7N]zB{\NO4<D|{ � 3 t rB{|m�}Zo / D|vyzW{�}cq�v 3 rB{|m�} ��� ����J }<D|{�}<{�}nw�r�6<v � r 5)4�v$ {|}<z¨rut }srB{ t�r-v H �K / } 3 rB{|m�} H v��<}n{�rB{|m�}<z�K mpo �#.��$;��&��1Wt } H ��j�. ��� ��w�{|x�vOz��*��TeGf�� *+��% �4d �#.�� g ����1igC��j�.���� �=kEg . 1�$�* ��*)�&%4k4k

eGf�� *+��% �4d3���$ ��� ,�% ��$ !D��$ � �A!D��$ � g � Tg �=k4kg4gJf�' � �4d ��.�%���"�� ,�% ��$ !D��$ �

g �4f�$ �4d f g � b4b $�k gC3cb4b !D��$ �4d $ � d $�k �4d3���$���� ,�% �#$ !D��$ � � $ � g � af g 0 b4b !D��$;k � d 3 g ' 0;k4k � k4k

gJf�8 �4d 8/o 8�k g .�1�$ * � *��&%4k4k

q�{ NO4<D�{\K 5�{�}<w r�6nvSt74<4<D|{ 3 t�rB{|m�}±mLK �&��1�rBm ��j�. ��� ��t } H .�1�$�* ��*���% 4no-m H</ 3 vOzeGf�� *+��% �4d

3���$ ��� ,�% ��$ !D��$ � �A!D��$ � g � Tg �=k4kg ��.�%���" � ,�% �#$ !D��$ �g �4f($ � d'f g � b b $�k g 3lb4b !D��$ �4d $ �4d $;k �4d3���$ ��� ,�%���$ !D��$ � � $ � g � f g 0 b b !D��$�k �4d 36g 0;o�0�k k6g .�1�$�* � *)��%4k k

. 4c4<D\5�{|}nw r�6<vSz 6nmpo r 3 / r�o / D�v�rBm�r%6nv 3���$ ������.&%���"A4<t {|o�t } H zB{\NO4<D|{ K 5�{|}nw 5�{�v:D H zeGf�� *+��% �4d

3���$ ��� ,�% ��$ !D��$ � �A!D��$ � g � f g 0 b b !D��$�k �4dcg �;k6g 0;o#0�k4k6g . 1�$ * � *+��%4k

J }<D|{�}<{�}nw r%6nv H v��<}n{�rB{|m�} K m�o .�1�$ *�w�{|x�vyzeGf�� *+��% �4d

3���$ ��� ,�% ��$ !D��$ � �A!D��$ � g � f g 0 b b !D��$�k �4dcg �;k6g 0;o#0�k4kg ��.�%���" � ,�% �#$ !D��$ �g �4f($ � d'fng � b4b $�k g 3lb4b !D��$ �4d $ �4d $;k �4d� ��$ � .�1�$ * p+b4b !D��$ �4d $��

.�1�$ * p eBf�% �4d 3������ %md)��% * ' �/���.�� �4d ���$ ��� ��� �4d 3 g6%4kEg .�1�$ * p g6% ��k4k ���

%D� . 1�$ * p g?� *=k4k4k

P�zB{|}nw�r�6nvSz�6nm�oBr 3 / r�t�} H z { NO4<D|{ K 5�{|}nw m�} 3 v N�mpoBv�w�{|x�vOz��* �QeBf�� *+��% �4d

� ��$ � . 1�$ * p?b b !D��$ �4d !6��$��. 1�$ * paeBf�% �4d 3(����� % d)��% * ' �

/�� . � � d ���$ ������� �4dcgC% o�%4k��lg .�1�$�* p g6% � �k4k � �

%D� .�1�$ * p g ��*=k

P04�rBm o-v@}'tLN {�}<w t } H {|}<D|{�}<{�}nw mLK6zAE / t o-v {�}�r�6nv2D�m 3 t7DcK / } 3 r-{�mp}B;�r%6n{ zN{ z�4<oBv 3 { z v:D\5 r�6nvH v��<}n{�rB{|m�}�mLK ��* �qp@�

� W

Page 16: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

6$7�� 7 � <";ZD ���/?_F[BL>�� � �IQ\BLD�< Q=F � < � � � V`;ZF��IF8> H � < Q\< ��� �/F ����IB9;ZDM?

Y�6nv z�6nm�oBr 3 / r�K / zB{|m�}�o / D|v 3 t7D 3 / D t�rBvOz�4noBmpw�outLNc{ N?4<oBm�xpvEN v@}sr>�<t�zBv H m�}�t 4no-m�w�outLN � zv T=4<D|{ 3 {�r D�m 3 tLD6z rBo / 3 r / o-v�� YCm H m r%6n{ zE;'{ r�o-vFE / {|o-vyz r�6't�r0K / } 3 rB{|m�}'z ��v b oB{�r r-v@} {|}�r�6nv6n{|w76<D 5�z¨r 5(D|{��yv H � / {\D H 3 t r-t K mpo�N ;so-t r�6nvyo7r%6<t } / z {|}nw v T=4<D|{ 3 { r9oBv 3 / ouzB{�mp}��$S / r r�6n{ zN{|zmLK r-v@}±}nm r r�6<v N msz¨r }<t r / outLD�b t,5 r-m H v@x�v:D�m�4V4no-m�wpo-t7N�z@� � m�o-v@m�xpv@o ;���v 3 t / zBv ��.�%���"H m�vyz7}nm r 6<t¥x�v�t<=�{|} H D|vE5 � {\D|}nv@oNr 5(4'v . t�} H zBm 3 t }�m�}<D 5;��v / z v H {�} 3 v@oBr-t�{�} b vED D�H v��<}nv H b9t,5"zI. 4noBm�x�{ H {|}nwW{�r K m�o 4<oBmpw�outLNON v@ouz � H {|oBv 3 r / zBv {|z 4<oBmG�<D�v:N�t�rB{ 3 � Y�6nvb9t o%N K / z {|m�}�tLD|w�m�o-{�r�6<N3mLK 9Ct / } 3 6 � / o�50t } H q(6nvOt o H 2��F?54=b9t�z H vyzB{�wp}nv H rBm0t / r-m7N�t�r-vr�6<v�zBtLK v�{|}pr-oBm H=/ 3 rB{|m�}�m7K � .�%���"�{|}pr-mSo-v 3 / o-zB{�xpv�D�{ z¨r�]4<oBm 3 vOzBzB{|}nw K / } 3 rB{|m�}<z:;stpz�b vED D't�zr�6<v�rBout }<z K m�o%N�t�r-{�mp}Wm7KCr%6nvSo-vyz / D r-{�}<wOK / } 3 r-{�mp}<z�{|}srBm�v E / {�x�tLD|v@}sr�mp}nvyz {|}@� / { D H 3 t�rutK m�o%N��Y�6nv vET�{ z rBv@} 3 v�m7K�t 3 t�rutLN m�o%4<6n{ z N t } H t ��.�%���" K / } 3 r-{�mp}OK m�o vOt 3 6 o-v@w / D|t�o H t�rutr 5(4'v N�t��pvyzC{ r�4�mpz-z {C�<D|v7r-m§wpv@}nvyo-t7D�{��@v7r�6nv b t�o�N K / zB{|m�} N v@r�6nm H rBm0t oA�n{ r-o-t�o�5�o-v@w / D|t�o

H t r-t�r 5)4�vyzy��J K*$�{ z4t K / } 3 rBmpo H v$�<}<{�}nw0t§oBvyw / D t o H t�rut�r 5(4�v7;�r%6nv@} r�6<v 3 t�rutLN m�o%4<6n{ z N3���$���� $ � ��� � ��� ��� $ � gA' � ����� '��;k o-vE4<D t 3 vyzCr�6<v 3 m�}'z¨r-o / 3 rBmpo-zCmLK�t H t�r-t0z rBo / 3 r / o-vmLK r 5)4�v#$ � ��� � ��� b {�r�6¬r�6nv K / } 3 rB{|m�}<z '�%��'Y�6nv�oBvOz / D�rWm7KSr�6<v 3 t�rutLN m�o%4<6n{ z N6<tpz r 5(4'v $��ZY�6nv H t�rut�z¨r-o / 3 r / o-v$ 4no-m H=/ 3 {|}nwOK / } 3 rB{|m�} ��.�%���"�� $ � � ��� ��� ��;smp}�r�6nvm r%6nv@oZ6't } H ;�rut��pvyz t�z {|}<4 / r�tA4�m7D 5(N m�o%4<6n{ 3 K / } 3 rB{|m�} 4�bZ6<{ 3 6 3 mp}<z rBo / 3 ruz7r%6nv ��{�} HmLK H t�rutWz rBo / 3 r / o-vyz0t�z-zBm 3 {|t rBv H b { r%6 r%6nvOK / } 3 rBmpo $�� J r�o-vE4<D t 3 vyz�r�6nv�t��'z¨r-o-t 3 r H t�rut3 mp}<z rBo / 3 r-m�ouz�mLK 4 �)5�r%6nv 3 mp} 3 o-vMr-v H t r-t 3 m�}<z rBo / 3 r-m�ouz 3�% r-m 4no-m H=/ 3 vUr�6nv H t�rutz rBo / 3 r / oBv0m7KCr 5(4�v $ �ObZ6nmsz v H vOz 3 oB{ 4"r-{�mp} 4�v:N<��m H {�vOz@��Y�6't�r {|z:;��.�%���"�� $ � � ��� ��� � g 4�k%e 4 � $ � ��� � ��� � 3 ��� � 3D� �

,�m�rBv�r�6<t r 3���$ ������% ��$ � ��� � $ �W{ z � / z r 3(��$ ��� ,+% ��$ ����� $ � t�} H ��.�%���" ����% �#$ � ���±{|z4no-v 3 {|zBvED 5 ��.�%���" � ,�% �#$ ����; bZ6<v@o-v ,+% ��$ { z�r�6<v K / } 3 rBm�oWt�z-z m 3 { t�r-v H b { r%6 r�6nv D�{ z¨rH t r-t�r 5(4'vp��Y�6nv�z�6nm�oBr 3 / rK / z {|m�}�o / D|v�K m�o 3(��$ ����� % ��$�t } H ��.�%���" ����% �#$0wpv@}nvyo-t7D�{��@vOzrBm I3���$ ��� $ � � � � ��� � � $ � g '�� ��� � '(�Ek6g ��.&%���"�� $ � ��� � ��� � g 4�k4k e 4 � $ � '� � � � '��

6$7�� 7�� � <";ZD ���/? F8BL>�� ��� <"D �[VYCm�{\D D / z¨r-o-t rBv�r%6nv 4no-m 3 vyz-z9mLK�b9t o%N�K / zB{�mp} bNv b { D D6v Tnt7N�{|}nv0r%6nv�rBout }'z K mpo�N�t�r-{�mp}Wm7Kr�6<v 3 mp}<z / N v@o�]4no-m H=/ 3 v@o �&��1K� ��v�o-v K vyo r�6<v§o-vyt H v@o r-m 2��F?54�K m�o7r�6nvym�o-vMr-{ 3 tLD � / z¨r-{�� 3 t&rB{|m�}�mLK'r�6nv�N vMr%6nm H �MJ } r%6nv K m7D D�m b {|}nw�v TntLNO4<D|vyz�b v�b {\D D"m7N {�r4r%6nv r 5(4'v H v 3 D t out�rB{|m�}'zK m�o�x�t o-{ t��<D|vyz4t } H 3 mp}<z¨r-o / 3 rBmpo-z�bZ6nv@} r�6<vyzBv t�oBv 3 D|vyt o$K o-m7Ncr�6<v 3 m�}srBvET�r4mpo�K o-m7N 4no-v$x�{�m / z H v 3 D t out�rB{|m�}'z@���5� "$��� � "���� & � � ��� � ����� "$����� "�� ��� Y�6nv7w�mpt7D�mLK�r�6<v�4no-vE4no-m 3 vyz-zB{�}nw z rBv:4�mLK(b t�o�NK / zB{�mp}�{ zNrBm rBout }<z K m�o%N t o-v 3 / o-zB{|x�v H v$�<}n{�rB{|m�}W{�}sr-m�t H v$�'}n{ r-{�mp}W{|} � / {\D H 3 t r-t K m�o%N I' e � f � � � � ��� �4d f�8 � � � �4d

� .�%���" � $ � � � � ��� � g � f�$ � d'f 3 � � �?3D� �4d3���$ ��� $ � � � � ��� � � $ � g � � ��� � ��� k 8�k

Y�6nv K / } 3 r-{�mp}<tLD4t o-w / N v@}sr mLK ��.�%���"�{|z�t 3 t�rutLN m�o%4<6n{ z�N r�6<t r 3 mp}<z / N vyz9r%6nv {|}<4 / rH t r-tSz rBo / 3 r / o-v 8�t�} H � / { D H z / 4WtSz¨r-o / 3 r / oBv9r%6<t�r {|z 3 m�}'z¨r-o / 3 rBv H b { r%6�r�6nv§t��<z rBout 3 r3 mp}<z rBo / 3 r-m�ouz 3�%s��Y�6n{ z7rBout }<z K m�o%N�t�rB{|m�}�z�6n{\K r-zNr�6nv§oBv 3 / ouzB{�mp} �'m / } H t�o�5�mLK�r%6nv0K / } 3 rB{|m�} K o-m7Nkr�6nv z {�rBv m7K 3 m�}<z rBo / 3 rB{|m�} mLK�r�6nv oBvOz / D�r H t r-t z rBo / 3 r / oBv�r-m r�6<v z {�rBv m7K

�y�

Page 17: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

3 mp}<z / NO4"rB{|m�} mLK r�6<v�{�}c4 / r H t r-t�z rBo / 3 r / oBvp� . D D7o-v 3 / ouz {|m�}�{�} � / {\D H 3 t�rut K m�o%N�z0{|zv T=4no-vyz-zBv H x�{ t 3 t r-tLN mpo�4<6<{|z�N�z@�Y�6nv �<o-z r�4<6<t�zBv�m7K�r�6<v�r-o-t�}<z K mpo�N�t rB{|m�}�t��'z¨r-o-t 3 r-z t,b9t,5 K o-m7N2r�6<v 3 m�} 3 oBv@rBv 3 m�}/z rBo / 3 r-m�ouzN{|}Wr�6nv��m H 5�mLKCr�6nv K / } 3 rB{|m�}���Y�6<{|z 3 t }n}nm�r ��v H mp}nv�zB{ N?4cD\5 �(5�o-vE4cD|t 3 {|}nwtLD D 3 m�}<z rBo / 3 rBm�ouz9{|}�r�6nv���m H 5 �)5±x�t o-{|t��<D|vyz:;<6nm b v@x�vyo:;/��v 3 t / zBv�}nm�r§tLD D6m 3E3 / o-oBvy} 3 vOzmLK 3 m�}<z rBo / 3 rBm�ouz�}<v 3 vOzBz-t o-{ D\5 3 m�}sr-oB{C� / r-vUrBm r�6nv�o-vyz / D r±mLK�r%6nv 3 m7NO4 / rut�r-{�mp}�� S 5tL4c4<D\5�{|}nw 3���$ ��� $ � � � � ��� � � $ � g 3 � ��� � 36�Ek rBm�r%6nv �'m H 5�m7K�r%6nv K / } 3 rB{|m�}B;Nr�6nvo-vyz / D r�]4<oBm H=/ 3 {�}<w 3 mp}<z rBo / 3 r-m�ouz§t�oBv rBout }<z K m�o%N v H {|}srBmWr�6nv 3 m�o-oBvOz 4�m�} H {�}nwWt��<z rBout 3 r3 mp}<z rBo / 3 r-m�ouz 3�%��Y�6nv0{ H v@}srB{�r 58Be ��.�%���"�� $+� ��� ��� � g �4f $ �4d'f�3 � � � 3#� �4d

3���$ ��� $)� � � ��� ��� $ � gC3 � ��� � 3#�Ek 8�k

{ z / z v H rBm�{|}pr-oBm H=/ 3 v�r�6n{ z 3 t�r-t7N m�o%4<6n{ z N$r-m r%6nv ��m H 5��7l<m�o �&��1�r�6n{ z ��v 3 m�N vyz�&��1Be �4f��)� �4d f�' � �4d��.�%���"�� ,�% ��$ � � g �4f($ �4d f g � b4b $;k gC3lb b � �4d $ �4d $�k �4d3���$ ��� ,�% ��$+� � � $ � g � 3+k6g

3�� ��� � * ' ��&%�� �4d)�&%�� �9�*��&� 8 8�� �4d 9�*��&� gA' 8;k6g �&��1 � ��� � � � ' 8��+k4k4k��

H§{|z rBo-{ � / rB{|m�}�mLK4r�6<v 3 t�rutLN m�o%4<6n{ z�N m�x�v@o r%6nv 3 tpz v�v T=4no-vyz-z {|m�}±w�{|x�vOz�&��1Be �4f��)� �4d f�' � �4d+��.�%(��" � ,�%���$ � � g �4f�$ �4d f(� 3 � d3������ � * ' ��&%(� �4d 3���$ ��� ,�%���$+� � � $ � g � 34k%��%�� �9�*(�&� 8 8�� �4d 3���$ ��� ,�% ��$ � � � $ � g � 3+kEgA9�*��&�6gA' 8�k6g �&��1 � ��� � � � ' 8��4k4k4k �

q(4�v 3 {|t7D�{��yt rB{|m�}mLK�r%6nv 3 t�r-t7N m�o%4<6n{ z N rBm r%6nv 3 m�}<z rBo / 3 rBm�ouz r%6<t�r±{ r±{|zWtL4<4<D|{|v H rBm4no-m H=/ 3 vOzEI�&��1Be �4f��)� �4d f�' � �4d+��.�%(��" � ,�%���$ � � g �4f�$ �4d f(� 3 � d3������ � * ' ��&%(� �4d ���9�*(�&� 8 8�� �4d 3 gA' 8�k6g 3���$ ��� ,�% ��$%� � � $ � g � 3+kEg �&��1 � ��� � � � ' 8+�+k4k4k �

,�m�rBv§r�6<t r9r�6nv 3 t r-t7N�mpo�4c6n{|z�N${|z9t74<4<D|{�v H r-m r%6nv0oBv 3 / ouz {|x�v§z v 3 m�} H t o-w / N�vy}sr m7K�r�6nvt��'z¨r-o-t 3 r oBv:4<D t 3 v:N v@}sr K / } 3 r-{�mp} K m�o 9�*����"� #2 4 � "$"���� & � � "�� %�� % � � ��������% � ��������� % � ��v 6<t¥x�vN}nm b t��'z¨r-o-t 3 rBv H t,b9t,5 K o-m7Nr�6<v�oBvOz / D r�]4no-m H=/ 3 {�}nw 3 m�}<z rBo / 3 r-m�ouz0mLK �&��1 t } H b o-{�r rBvy} { r {�} r%6nv K m�o%N+m7K�t } t��/z rBout 3 r-v H 3 t7D\D�rBm ��.�%���"'� ,�vETsr bNv H v@o-{�xpvUt 3 t r-tLN mpo�4<6<{|z�N r-m�oBv:4<D t 3 v�r%6nv 3 t�zBvt }'tLD 5�zB{ z9{�} �&��1 � zB��m H 5��Y�6n{ z { z�t 3:3 m�N?4cD�{ z 6<v H t 3E3 m�o H {|}nw�rBm�r�6nv z¨r-vE4<z m / r�D|{|}nv H {|}r�6<v�oBv:N t�{�} H v@o m7K6r�6<{|z�zBv 3 rB{|m�}��l4{�ouz r7r�6<v2K / } 3 r-{�mp} ��m H 5�{|z9z�4<D�{�r9{�}srBm r b m }nv:b H v$�'}n{ r-{�mp}<zy� lnm�o �&��1Ob v�wpvMr r�6nv� b o-t74<4'vyo � �&�(1�t } H r�6nv � bNmpo��pv@o � �&�(1�� �¯t w�v@}<v@outLD D\5�tL4<4<D|{ 3 t��cD�v§{ H vOt �<ouz r 4no-vyzBv@}srBv H{|}O2 1�� 4,� I�&��1Be �4f��)� �4d f�' � �4d

��.&%���" � ,+% ��$ � � g �4f�$ � d'f(� 3 �4d%����1�� � � $ � � 3+k�&��1�� eBf�� � d �4f($ � d'f(� 3 �4d

� X

Page 18: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

3������ � * ' ��&%(� �4d ���9�*(�&� 8 8�� �4d 3 gA' 8�k6g 3���$ ��� ,�% ��$%� � � $ � g � 3+kEg �&��1 � ��� � � � ' 8+�+k4k �

Y�6nv7z�4<D|{ rBrB{|}nw 6't�zKr%6nv v ��v 3 rCm7K"{|zBm7D t�r-{�}nw�t�oBv 3 / ouz {|x�v H v$�<}n{�rB{|m�}�}<m r6{|}�x�m7D|x�{�}<w � .�%���"��,�m�rBv r�6<t r0r�6nvAK / } 3 rB{|m�} ' t } H r�6nv r 5(4'v x�t o-{ t��<D|vyz ��t } H � t o-v }<m r 4<t�z-z v H rBm

�&��1 ���4lno-m7N�r%6nv H v$�<}<{ r-{�mp}�m7K��&��1<��v K m�o-v z 4cD�{�r r-{�}nw0{�r {|z 3 D�vOt o�r%6<t�r�r�6<vyzBv�t o-w / N v@}sruzt o-v 4<tpzBzBv H / } 3 6<t }<w�v H r-m r�6<v o-v 3 / o-zB{|x�v 3 t7D\D§mLK �&��1K� Y�6<t�r±{|z:;9r�6nv:5t o-v�')( 2�("* �� 2&%�2�4 �( �%7'�mLK �&��1���q�{|} 3 vZb v H m�}nm�r7t��<z rBout 3 r�m�xpv@o4r�6<vEN ;�r%6nv�z r-t�r-{ 3 4't outLN vMr-v@ouzCm7Kt K / } 3 r-{�mp}�oBv:N�t {|} K oBvyv�{|}�r�6<v H v��<}n{�rB{|m�}�m7K�{ ruz bNmpo��pv@oO�$Y�6n{ zN vOt }<z r�6<t r '�;��c;"t�} H� o-vEN�t�{�}?K o-v@v�{|} �&�(1���� � 6<v@}B;�t�r r%6nv�v@} H mLK�r�6nv�rBout }<z K m�o%N�t�rB{|m�}�;¥r�6nv r-o-t�}<z K m�o%N�v Hx�vyo-zB{|m�} mLK�r�6<v0K / } 3 rB{|m�} � z bNmpo��pv@o { z�K m7D H v H �<t 3 ��{�}sr-m�r�6nv H v$�'}n{ r-{�mp}�mLK�{�r-zb o-t74<4'vyo:;{�r-z�z r-t rB{ 3 4't outLN vMr-v@ouz b { D D �'v 3 m�N�v��m / } H t�wpt�{�}��S 5 / }=K m7D H {|}nw�r%6nv b outL4c4'vyo§{|} r�6<vAb m�oA��vyo0bNv m��"rut {|}Ut�o-v 3 / o-zB{|x�v H v��<}n{�rB{|m�}Um7Kr�6<v bNmpo��pv@oO�4l<m�o �&��1�bNv0w�v@r�&��1�� eBf�� � d �4f($ � d'f(� 3 �4d3������ � * ' ��&%(� �4d ���9�*(�&� 8 8�� �4d

3 gA' 8�k6gC3(��$ ��� ,+% ��$ � � � $ � g � 3+kg g �4f � p �ip �4d f�'^p � p �4d��.�%(��" � ,�%���$+� � g �4f�$ip � d'f(�ip 3 p �4d �&��1 � � p � $^p � � p 3qp�k4k� ��� � � � ' 8��4k4k �

S vMrut& oBv H=/ 3 r-{�mp}Wt�} H z 6nmpo r 3 / rZK / zB{�mp}Wo-v H=/ 3 vyz r%6n{ z9rBm�&��1�� eBf�� � d �4f($ � d'f(� 3 �4d

3������ � * ' ��&%(� �4d ���9�*(�&� 8 8�� �4d 3 gA' 8�k6g �&��1�� 8�� � $ � � 3+k �

Q��<zBv@o-x�v§}nm br�6't�r�tLD DKt o-w / N v@}sruz7vET 3 vE4"r�K mpo ��t�oBv0z r-t�r-{ 3 4<t�o-t7N�v@rBvyo-zNmLK ����1�����S 5o-vE4�vyt�r-{�}<w r%6nvSz�4<D�{�r r-{�}<w�t } H / }=K m�D H {|}nw 4no-m 3 v H=/ o-v�mp} 3 v N m�o-v bNv�wpvMr�&��1�� eBf�� �4d �4f�$ �4d f(� 3 �4d �&��1�� � ��&��1�� � eBf�� �4d 3������ � * ' �

��%�� �4d ���9�*��&� 8 8+� �4d 3 gA' 8�kEg �&��1�� � 8��+k �

Y�6nv 4<t�o-t7N�v@rBvyo-z $ ;�� ;nt } H 3 mLK �&�(1���t�oBv�}nm b¬t7D|zBm�oBv 3 m�wp}n{��@v H t�z z r-t rB{ 3 {|} ����1�� ���Y�6nv K o-v@v0x�t o-{|t��<D�v '�{|} �&��1�� ��{ z9{�}c6nv@o-{ r-v H K oBm�N-�&�(1K�MJ }O2 � ?54];=N v 3 6<t }n{ 3 t7D�oBv 3 m�wp}n{ rB{|m�} mLK r�6<v�t��<z¨r-o-t 3 r-v H 3 mp}<z rBo / 3 r-m�ouz�t�z�z¨rut�r-{ 3 4<t outLN vMr-v@ouz�� bZ6<v@} r%6nvE5Ut�oBv �_;�6<tL4/4�v@}<zZN�t�w�{ 3 tLD D 5��� %�� � ��������� " � � ��"��1� � � 2 � ����� l4{�}'tLD D\5�;6r%6nv�o-v 3 / o-zB{�xpv H v$�<}n{�rB{|m�} m7K �&��1�� ��{|zr / oB}nv H {|}srBm t 3 t�rutLN m�o%4<6n{ z N �(5 N vyt�}<z�mLK0K m�D H 4no-m7N m r-{�mp}���lnm�D H 4noBm�N m rB{|m�} {|z�<tpz v H mp}�t§wpv@}nvyoB{ 3 4no-m7N m r-{�mp} r%6nv@mpoBv:N {|}pr-oBm H=/ 3 v H �(5 � tLD 3 m7D NU2��:U 4ª�MY�6nv04no-m7N m�rB{|m�}Wr�6<v@m�o-vEN ;=bZ6n{ 3 6V6't�z9{�r-z9m�o-{|w�{|}<z7{|}�t 3 t�r-v@w�mpoB{ 3 t7D H vOz 3 oB{ 4"r-{�mp}Wm7K$4no-m�wpo-t7N?N {|}nw2�� 1 4 ; H vyz 3 o-{C�'vOz 3 m�} H { r-{�mp}<z / } H v@o bZ6n{ 3 6Ur%6nv 3 m�N?4�mpzB{�rB{|m�}Um7KNt }�t oA�n{ r-o-t�o�5 �¯z rBo-{ 3 r7�K / } 3 rB{|m�} t } H t 3 t�r-t7N m�o%4<6n{ z NDm�x�vyo�t�oBvyw / D t o H t r-t�r 5(4�vON t,5 ��v?K / z v H r-m±t�oBo-{�xpvt�r0t�}nv:b 3 t r-t7N�mpo�4c6n{|z�N vFE / {|x¥t7D�vy}sr�rBmWr�6<v mpoB{|w�{|}<tLD 3 m�N?4�mpzB{�rB{|m�}��0lnmpo �&��1 � ��r�6nv4no-m7N m r-{�mp}�r%6nv@mpoBv:N r-t���vOz7r%6nv K m�o%N

� ?

Page 19: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

�&��1�� ���&%(� e�� � �&��1�� � gA9�*��&�6g 0 � 0 �=k4kDe�� � g 0�� �&��1�� � 0 �=k��������� ��������� ��������� ��� ������� � ��� ������������� ��� � ������� ����&��1�� � gC3���$ ��� ,�% ��$ ��� � ,�% ��$ ��� g �&%�� 9�*��&�+k 8+�+ke 3���$ ��� ,�% ��$ ��� � $ � g � � � �=k 8+�

Y�6n{ z N vyt�}<z�r�6't�r�b v 3 t�}��'} H � t } H � �B�(5�tL4<4<D 5�{�}<w ����1�� � rBm �&%��9t�} H 9�*��&� 0 0 � ;o-vyz�4'v 3 rB{|x�v:D\5�;pt�} H t��<z rBout 3 rB{|}nw K o-m7N r%6nv�o-v 3 / ouz {|x�v 3 t7D\DnrBm �&��1�� ���4lnm�o ��%��0r�6n{ zNzB{ N;4<D 5V4no-m H=/ 3 vyz r�6<vSt��<z rBout 3 rBv H 3 mp}<z¨r-o / 3 rBmpo ��� l<m�o 9�*��&� bNv0w�v@r� � eBf�0 0 � �4dngJf�� �4d 3������ � * ' �

�&%�� �4d ���9�*��&� 8 8�� � d 36gA' 8;k6g �&��1 � � 8��+k�� k

gA9�*����%��%� �=k

bZ6nvyoBv�r�6<v(�+% t o-v0z�4�v 3 { tLD 3 m�}<z r-t�}sr-zy�MY�6<{|z9o-v H=/ 3 vyz r-mf�0 0 � �4d 3 gA' ���k6g �&��1�� �+� �=k

,�m b b v / z v�z 4�v 3 {|t7D�oBv:b oB{�rBv§o / D|vyz wpv@}nvyo-t rBv H K o-m7N$r%6nv§r 5)4�v0mLK�r%6nv 3 m�}'z¨r-o / 3 rBmporBm�oBv:b oB{�rBvUr�6nv H=/ NON 5 x�t o-{ t��<D|vyz�+% rBm r�6nv oBvOtLD�x�t o-{|t��<D�vOz 0&%�� Y�6n{ zVN�t���vyz�{ r4�mpz-z {C�<D|vNr-m H {|z 3 m�xpv@oCr�6nv o-v 3 / ouz {|x�v {�}�xpm 3 t�r-{�mp} mLK'r�6nv �&��1�� � K / } 3 r-{�mp} t�} H oBv:4<D|t 3 v { r�(5 r�6nv0{|} H=/ 3 rB{|m�}±x�t o-{|t��<D�vp�4l<m�o r�6<v 9�*��&� 3 m�}<z rBo / 3 rBm�oNr�6<v�o-vEb o-{�rBv�o / D|vyz �� �4d 0 t } H �&��1�� ��� � �4d 0 � t o-v�w�vy}nv@out�r-v H �-Y�6<v �<o-z r 3 mpoBo-vyz�4�m�} H z r-m�t } m 3E3 / oBo-v@} 3 vmLK r�6<v r 5)4�v 4<t�o-t7N�v@rBvyo �Ut } H r�6<v�z v 3 m�} H r-mUtWo-v 3 / ouz {|x�v�m 3E3 / oBo-v@} 3 v m7KNr%6nv r 5(4'v,�% �#$ �<�S 5UtL4<4cD�{ 3 t rB{|m�}�mLK7r%6nv�o-vEb o-{ r-v o / D|vyz �� �4d 0 t�} H �&��1�� � � � �4d 0 �±r�6<v�o-v$

3 / o-zB{�xpv 3 tLD D�{ z9oBv 3 m�wp}n{��@v H t } H b v0w�vMr� � eGf�0� 0 � �4d 3 gA' 0 k6g 0 �=k

> / r rB{|}nw r%6n{|z r-m�wpvMr�6<v@o w�{|x�vOz r�6nv�}<m�}/ oBv 3 / ouzB{�xpv H v��<}n{�rB{|m�}�&��1�� � eBf�� �4d 3���$ ��� ,�% ��$ ��� � $ � g � 5f�0 0 � �4d 3 gA' 0 �k6g 0 �=k4k �

� ��4!� ��� & S 5 / }<K m7D H {�}<wUr�6<v�bNmpo��pv@o K / } 3 rB{|m�}'z �&��1 � �Ut�} H �&��1 � �<t 3 ��{�}sr-m�r�6nvy{�oz / �<zBvFE / v@}srZb outL4<4�v@ouz�bNv0mG�"r-t�{�}Wr�6nv � / {\D H 3 t r-tAK m�o%N mLK �&��1 I�&��1Be �4f��)� �4d f�' � �4d+��.�%(��" � ,�%���$ � � g �4f�$ �4d f(� 3 � d

3���$ ��� ,�%���$ ��� � $ � g � f�0 0 � �4d 36gA' 0 �k6g 0 �=k4k � k

� � ����� � ��� � ��& = ����& ���1� � Y�6<v rBout }<z K m�o%N�t�r-{�mp}A4no-m 3 v H=/ o-v {\D D / z¨r-o-t rBv H t��'m�xpv9{|zt�rBrBv:N?4nrBv H � {�r N�t,5 K¯t { D,� K m�o�tLD D�K / } 3 rB{|m�}<zy� G m7NO4'msz {�rB{|m�}'z�mLK�K / } 3 rB{|m�}<z {�}�� / {\D H 3 t r-t K m�o%N 3 t } ��v H v K mpoBvOz¨r-v H �(5 / }=K m�D H {|}nw r%6nv@{|o H v��<}n{�rB{|m�}<z t } H tL4c4<D\5�{|}nw z 6<m�oBr3 / r$K / zB{|m�} t�z$4<t oBrCm7K'z¨rut } H t o H zB{\NO4<D|{�� 3 t�r-{�mp} �¯zBv@v q�v 3 rB{|m�}W��� ���M��Y�6nv / }=K m�D H {�}nw 3 t�}��v H m�}nvZb {�r�6<m / r7o-{ z��Sm7K�}<m�}/ªrBvyo�N {|}<t�r-{�mp};��v 3 t / zBv r�6nvZK / } 3 r-{�mp}<z t o-v9}nm r vET=4<D�{ 3 {�r�D 5o-v 3 / o-zB{�xpv��Y�6nv � / { D H 3 t r-t0K m�o%N z6{�}�l4{�w / oBv§���a1 t o-v7t7D\Dsm��"rut {|}nv H / z {|}nw�r�6n{ zCrBout }<z K m�o%N�t�rB{|m�}6�,�m�rBv§r�6<t r }nm r tLD D�mLK�r%6nvyzBv K / } 3 r-{�mp}<z H m:�'m�r�6V4<oBm H=/ 3 v�t�} H 3 m�}<z / N v0t D|{|z r � '�*���"��m�}cD\5 3 m�}<z / N vyz t D�{ z¨r�t�} H .�1�$ * mp}<D 5 4noBm H=/ 3 vyz t D�{ z ry� Y�6<v@{|o 3 t�rut& t } H m�o� � / { D HK m�o%N�zCt�oBvNm��"rut {|}nv H / zB{�}nw§x�t o-{|t�}pruz6m7Knr�6<v7r-o-t�}<z K mpo�N�t rB{|m�} 4no-m 3 vyz-z H vyz 3 o-{ ��v H t���m�x�vp�Y�6nvOz v0x�t o-{|t�}sr-z t o-v H {|z 3 / zBzBv H {�}Uq�v 3 r-{�mp}��p� �<��vED|m b��

���

Page 20: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

��v 6't¥x�v�z 4�v 3 {��<v H r�6nv b9t o%N K / zB{�mp} r-o-t�}<z K mpo�N�t rB{|m�}�t7D�wpm�o-{ r%6<N {|}q�rBout�rBvyw�m'�J }±r�6nv oBv:N t�{�} H v@o m7KCr%6n{|z 4<tL4�v@o bNv b { D\DCw�{|x�v�t }�m�x�vyoBx�{|vEbGm7KCr%6nv z�4'v 3 { � 3 t rB{|m�}��J }4<t�o r-{ 3 / D|t�o:;,b v b { D D H {|z 3 / zBz6r�6nvB�<tpz { 3 z¨r-vE4<z4mLK<r�6nv rBout }'z K mpo�N�t�r-{�mp}Sz / 3 6 t�z�z�4<D|{ rBrB{|}nwc;/ }=K m�D H {�}nw ; K m7D H {|}nwWt�} H H vyoB{|x�{�}<w�t 3 t�rutLN m�o%4<6n{ z NDt } H 6nm bcr�6<vyzBv 3 t } ��v / z v H {|}x�t o-{�m / z 3 m7N;�n{�}'t�rB{|m�}'z t } H m�o H v@ouz0r-m m��nr-t {|} H {���vyoBvy}sr�o-vyz / D�r-zy� l4{�ouz¨r?bNvWw�{|x�v�t�}m�x�vyoBx�{|vEbGm7K�qsr-o-t rBvyw�m�{ ruz v:D K¨�

����� � �"! \ �����-#J } r%6n{|z zBv 3 rB{|m�} b v �no-{|v��c5�{�}sr-oBm H=/ 3 v±q(5"z rBv:Nkq ;4t 3 t7D 3 / D / z K mpoSr�6<v H v��<}n{�rB{|m�}�m7KrBo-v@v�rBout }<z K m�o%N�t�rB{|m�}'zE;st } H q�rBout�rBvyw�m ;ptSz�4'v 3 { � 3 t rB{|m�} D t }nw / t wpv04no-m�x�{ H {|}nwSz�5�}prut 3 rB{ 3t��'z¨r-o-t 3 rB{|m�}'z K mpo q(5"z rBvEN q v T=4no-vyz-z {|m�}<zy��lnmpoSt H vMr-t�{\D|v H H vOz 3 oB{ 4"r-{�mp}�m7K q�rBout�rBvyw�m ;{�r-zNm74�v@out�rB{|m�}'tLD<zBvEN�t }sr-{ 3 zE;st } H t H<H {�rB{|m�}<t7D<vET"t7NO4<D�vOz mLK�{�r-z / zBv0b v�oBvEK v@o7r�6nv§oBvOt H vyorBmO2��7;��¥�); W)X ; W ?=; W 1(; W � 4 � l4{|w / o-vW�p� W z 6<m b�z§t�qsrBout�r-v@wpmVN m H=/ D|v H v$�<}n{|}nw�z vyx�vyo-t7Dw�vy}nv@o-{ 3 rBout }'z K mpo�N�t�r-{�mp}Um74�v@out�r-m�ouz@� Q�r%6nv@o0v Tnt7N?4cD�v z 4�v 3 {�� 3 t�r-{�mp}<z§r�6<t r / z v r�6nvOz vm74�v@out�r-m�ouz b {\D D �'v H {|z 3 / z-zBv H {�}Wr�6<v�oBvOz¨r�m7K6r�6<v 4<tL4�v@oO�

6$7 786 ] I? Q\V`D ]q(5"z rBvEN^q±{ z§t�6n{�vyo-t�o 3 6(5�m7K m74�v@out�r-m�ouz K m�o�vET=4noBvOzBzB{|}nw rBvyo�N rBout }'z K mpo�N�t�r-{�mp}<zy� Y�6nv�<ouz¨r�D|v@x�v:D 4noBm�x�{ H vyz 3 mp}srBo-m7D 3 m�}'z¨r-o / 3 r-z K m�o zBvFE / vy}pr-{|t7D�}nm�}/ H v@rBv@o%N {�}<{|z rB{ 3 4<oBmpw�outLN:N {�}<wc;nr%6nv zBv 3 m�} H D|v@x�v:D�{|}pr-oBm H=/ 3 vyz 3 m�N<�n{|}<t�r-m�ouz K m�o r-v@o%N r-o-t¥xpv@ouzBt7D�t�} H r�6<v�r�6n{|o HD|v@x�v:D H v��<}nvyz6m74�v@out�r-m�ouz�K m�o �n{|} H {|}nw�x�t�oB{ t��<D|vyzKt�} H K m�o�N t r 3 6n{|}nw�t�} H � / { D H {�}nw�rBv@o%N�z@�YCo-t�}<z K mpo�N�t rB{|m�}<z�{�}cq(5"z¨r-vEN q¬t o-v tL4c4<D�{|v H rBm �<ouz¨r�ªmpo H vyo�r-v@o%N z:; bZ6<{ 3 63t o-vv T=4no-vyz-zB{�mp}<z m�x�v@o r%6nv�w�outLNON�t o$ bXe 8���9 g $ � � � � $ �Ek� � $ � � � � $ � ��Dg $ � � � � $ �Ek

bZ6nvyoBv 8§o-t�}nw�vOz�m�x�v@o�x�t o-{ t��<D|vyzKt�} H 9�m�xpv@o 3 mp}<z¨r-o / 3 rBmpo-zy�BY�6nv }<m r-t rB{|m�} � $�� � � � $ � �t�� �noBvyx�{|t rBvyz r%6nv D�{ z r 9�*��&� g $ � � ��� 9�*���� g $ � ��%(� k k�� J } t H<H { r-{�mp}B;7r%6nv }nm�r-t�r-{�mp}� $ � � � $�����$ � H v@}nm�rBvOz 9�*��&� g $�� � � � 9�*��&�6g $ � $;k4ks�� % ��%'4 �� %�� � %6� " � �14 �*����@ ��%'"�% ��� � ��� �$"�� � = ��� & ���1� � � ��& � ( %�2&( -�*8 $' t o-v4no-m�wpo-t7N z r%6<t�r�t�r r-vENO4"r�r-m�rBout }'z K mpo�N r-v@o%N�z�{|}pr-m rBvyo�N�z:;'t�r2bZ6n{ 3 6�r%6nvE5 N�t,5Wz / 3 3 vyv H m�o2K¯t { D��?J } 3 t�zBv m7K z / 3E3 vyz-z§r�6nv o-vyz / D r0mLK9z / 3 6 t }�t�rBrBvENO4"rS{ z0t�r-o-t�}<z K m�o%N�v HrBvyo�N��$J } 3 tpz v7mLK=K¯t { D / oBv r�6nvyoBvN{|zC}nm�o-vyz / D�r6mLK"r%6nvNrBout }<z K m�o%N�t�rB{|m�}6�6qsrBout�r-v@w�{|vyz 3 t�}��'v3 m�N<�n{|}nv H {|}pr-m }nv:bZz rBout�rBvyw�{|vyz �(5?N vOt }<zNmLK�r%6nv K m7D D�m b {|}nwSm�4'vyo-t rBmpo-zy��Y�6<v;*8�G $+ ("*,(��z rBout�rBvyw75�%�" D�vOt¥x�vyzCr%6nv�z / � � v 3 r rBvyo�N / } 3 6<t�}nw�v H t�} H tLD b9t,5�z�z / 3E3 v@v H z@�MY�6nv !$2�*�� 6/%� z rBout�rBvyw75 '���%�� tLD b t,5"z K¯t { D|zy�+Y�6<v '� ��$6 �+ ( *82�� �7#&4 � #&')*,("*8#�+ � � � � mLK§z rBout�r-v@wp{�vOz� �t } H � �:�'o-z r�t�rBrBvENO4"ruz9rBm�t74<4<D 5 � �r-m r�6nvSz / � � v 3 r rBvyo�N t } H ;n{ K�r%6<t�r�z / 3E3 v@v H zE;tL4c4<D�{|vyz � � rBm r�6<v§o-vyz / D�ry��Y�6nv:+ #�+����� �( $%)4:*,+ * ')( * � � ��#&* �7 � � � ��mLK4z¨r-o-t rBv@wp{�vOz � t } H ��� t�rBrBv:N?4nr-z�r-m tL4c4<D\5�v@{�r�6<v@o � �m�o � �'� J r z / 3E3 v@v H zS{\K�v@{�r�6nvyo z / 3E3 v@v H z t�} H{�r2K¯t�{\D z�{ K �'m�r�6 K¯t�{\D �Kr%6nv m�o H v@o§{�} bZ6n{ 3 6 � t } H ���±t�oBv rBo-{�v H { z / }<z 4�v 3 {��'v H � Y�6nv�� �( $%)4:*,+ * ')( * � � ��#�* �A � ���� � � mLK�z¨r-o-t rBv@wp{�vOz � �t } H � ��t�rBrBvENO4"ruz rBm tL4<4cD\5�vy{ r%6nv@o� �m�o � � ;K{�}�r%6<t�r�m�o H vyoy�?Y�6nv@%� �$6/%7')*��& ��� # ')6/%� �� � 3 8 gC�+k mLK r�6nv�z rBout�r-v@w75 �±t�r�rBv:NO4"r-z7rBm�tL4<4<D 5 �§r-mSr�6<v�v@}sr-{�o-v�z / � � v 3 r7r-v@o%N2t�} H r�6<v§z rBout�rBvyw75 ����3 8 gC�+k�r-mSvyt 3 6m 3E3 / oBo-v@} 3 v0mLK4r�6nv x¥t�oB{ t��cD�v 8±{�} �"� Y�6nv ( $'7( z rBout�r-v@w75 $�����$^gC�4k0r-oB{|vyz rBm�tL4c4<D\5�r�6nvz rBout�rBvyw75 �"��J r7z / 3:3 vyv H z4{\K �§z / 3:3 v@v H z:;�t } H o-v@x�vyo ruzCr�6nv�z / � � v 3 r rBvyo�N rBm�r�6nv mpoB{|w�{|}<t7DrBvyo�N��?J r tLD z m K¯t { D z0{ K ��K¯t { D|zy�OY�6nv@+ - 2&( *8#&+ ��*�$^g �+k z / 3E3 vyv H z � b { r%6�r�6nv { H v@}srB{�r 5rBout }'z K mpo�N�t�r-{�mp} ��{\K � K¯t { D z�t�} H K¯t�{\D z�{ K � z / 3:3 vyv H zy� Y�bNm v TntLNO4<D|vyz mLK§z rBout�r-v@wp{�vOz

� U

Page 21: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

, ������������� � ���������� , -������%�������������������M��������FE&X��* ������O)������-�������&X��* � ��� 9 <E&>���FE&X�=�W< *�*, ��-6&X��* � ��� 9 <E&( ����%O�!���#�=&X��W< *�*8�����������&X��* � ��� 9 <E&( ����%O�!���#�=&X��W< *���O ���=� < *����-�����K�#6&X��* � ��� 9 <E&X�=�W���;&><�**3������� , �-6&X��* � ��� 9 <E&0����;&>< *?� ��*����K#�-E&X��* � ��� 9 <E&X�=�W���;&><�*?� ��*����K#�-��;&X�P � ����*C� ��� 9 <E&X�P4� ���;&><�*?� ���*�������E&0��* � ��� 9 <E&X����O����;&(< **�$# 9 �����&X��* � ��� 9 <E&X����O���#���&(< **��� , �����&X��* � ��� 9 <E&X����O)��� , �;&>< **, ��#�F���&X��* � ��� 9 <E&X�=�W���;&>���FE&>< *�*���O)��� , �;&>< **�$#���3�6&0��* � ��� 9 <E&0��#���&>< *���O���*��� , ��3�E&X��* � ��� 9 <E&X��� , ��&>< *���O%��*

lC{|w / oBv ��� W I q(4�v 3 {�� 3 t�r-{�mp}�mLK z vyx�v@outLD�w�vy}nv@o-{ 3 r-v@o%N rBout¥x�vyo-z-tLD�z rBout�rBvyw�{|vyzy�

r�6't�r 3 t }@��v H v$�<}<v H b {�r�6Ur�6nvOz v m74�v@out�rBmpo-z§t o-v�r�6<v $���0�t�} H � ��1�� ��$�z rBout�r-v@wp{�vOz�{|}l4{�w / o-v��p� W �� % ��%'4 , %'��� ��� � %'��� � 4 Y�6nv 3 m7N;�n{|}<t�r-m�ouz H { z 3 / zBzBv H t���m�x�v 3 m7N<�<{�}nv§z¨r-o-t rBv$w�{|vyz r�6<t r§tL4<4cD\5�rBout }<z K m�o%N�t�rB{|m�}'z rBm r�6<vSoBm�m�r�mLK t�rBv@o%N�� J } mpo H v@o9rBm�t74<4<D 5�r-o-t�}<zDK m�o%N�t�r-{�mp}<z§r�6no-m / w�6nm / r�tWr-v@o%N^{ rS{ z�}nv 3 vOzBz-t o%5±rBm±rBout¥x�vyo-zBv {�ry��l<m�o0r�6<{|z 4 / o�4�mpzBv7;q(5"z rBvEN q 4<oBm�x�{ H vyzCt �7#&+ -�%)6 �+ �7 Nm74�v@out�rBmpo 9 gC� � � � � �#�Ek�K m�oCvyt 3 6 �. t o%5 3 m�}<z rBo / 3 rBmpo 9���J r0t74<4<D|{�vOz rBm�rBvyo�N�z§mLK r�6<v K m�o%N 9 g $ � � ��� $ �Ek0t�} H t74<4<D|{�vOz ��%�rBm $&%�� . }v Tnt7N?4cD�v0mLK4r�6<v / z v0m7K 3 m�}nwpo / vy} 3 vOz {|z r%6nv�m74�v@out�r-m�o �&�(1igC�+k H v$�<}<v H {�} l4{|w / o-v ��� Wr�6't�r�tL4c4<D�{|vyz t z rBout�r-v@w75 �SrBm vyt 3 6Wv:D�v:N v@}sr�mLK�tOD�{ z¨rO�G m�}<w�o / v@} 3 vyz 3 t�} ��v / zBv H rBm H v$�'}nv�rBout¥x�v@ouz-tLD z�m�xpv@o0z 4�v 3 {�� 3 H t r-t�z rBo / 3 r / oBvOz@�q(4�v 3 {�� 3 t�r-{�mp} mLK�w�v@}<v@o-{ 3 rBout¥x�vyo-z-tLD z� vp� w'�\; 4noBv� m�o04�mpz r� m�o H vyo m�x�v@o�t�o��<{ r-o-t�o�5�z rBo / 3 r / oBvOzA�0o-vFE / {|o-vyz N mpoBv�wpv@}nvyoB{ 3 m74�v@out�r-m�ouz@� Y�6nvWm74�v@out�rBmpo �����qgC�+k�t74<4<D|{�vOz �±rBm t7D\D3 6n{ D H oBvy}SmLK't 3 mp}<z¨r-o / 3 rBmpoCt74<4<D|{ 3 t�rB{|m�} 9 g $ � � � � $��Ek���J } 4<t�o r-{ 3 / D|t�o:;������qgC�+k {|z6r�6nv{ H v@}srB{�r 5�m�} 3 mp}<z¨rut }sr-z�� 3 m�}<z rBo / 3 rBm�o tL4<4cD�{ 3 t rB{|m�}<z b { r%6nm / r 3 6<{\D H o-v@} �M�MY�6<v�z rBout�r-v@w75*���� gC�+k t74<4<D|{�vOz ��rBmWm�}nv 3 6n{\D H mLK7t 3 mp}<z¨r-o / 3 rBmpo�tL4c4<D�{ 3 t rB{|m�} 9 g $ � � � � $ �Ek ��{ r�{|z4no-v 3 {|zBvED 5±r�6nvAK¯t { D / oBv z¨r-o-t rBvyw75±m�} 3 m�}<z r-t�}sr-zy� Y�6nv z rBout�rBvyw75 ��*���� gC�+k t74<4<D|{�vOz � rBmzBm7N v�m7KKr�6nv 3 6n{\D H o-v@}�m7K6t 3 mp}<z rBo / 3 r-m�oNt74<4<D|{ 3 t�r-{�mp}�9 g $ � ��� � $ ��k(;¥{ª� vp�\;srBm�t�r D�vOt�z rm�}<v0t�} H t�z�N�t }(5�tpz�4'mszBzB{C�<D�vp�>9�{C��v *�� � gC�+k(;���*��&� gC�+k K¯t { D|z�m�} 3 m�}'z¨rut }sr-zy�l4{�w / o-v ��� W H v$�<}<vyz x�t o-{�m / z r-o-t¥xpv@ouzBt7D|z �<t�zBv H m�}�r%6nvyzBv�m74�v@out�rBmpo-zy��lnm�o9{|}<z r-t } 3 v7;*��&3(��$�" gC�4k�rBo-{�vOz rBm:�<} H #�+ �t74<4<D|{ 3 t�rB{|m�}±mLK � zBm7N vEbZ6nvyoBv§{�}±r%6nv�rBv@o%Ngz r-t�o r-{�}nw t�rr�6<v o-msm�r0bNmpo���{|}nw { ruz b9t,5 H m b }���� � � *�� � g 8�k �<ouz¨r�t�r r-vENO4"ruz rBmWtL4<4<D 5 �(;'{ K r%6<t�rK¯t { D z t } tL4<4cD�{ 3 t rB{|m�}±mLK ��{|z �¯oBv 3 / ouzB{�xpvED 5/� t r rBv:NO4"rBv H t r m�}nv�m7K6r�6<v 3 6n{\D H o-v@}±mLK4r�6nvz / � � v 3 rNr-v@o%N���J KC}nm�t74<4<D|{ 3 t�r-{�mp}�{|zK m / } H r%6nv§rBout¥x�v@ouz-tLD=K¯t�{\D z@� G m�N?4't o-v r�6n{ zNrBm r�6nvrBout¥x�vyo-z-tLD&��� ��$�" gC�4k(;�bZ6n{ 3 6 �<} H z�2����6m / rBvyo�N msz¨r tL4<4cD�{ 3 t rB{|m�}<z mLK � t } H }nvyx�v@o K¯t { D z@�� % ��%'4 7 ��"6����� � � ��4�� �1� �� +���������54�% � � � � ��� & Y�6nv�m74�v@out�r-m�ouz?bNv 6<t¥xpv{|}pr-oBm H=/ 3 v H r%6 / z K¯t�o t�oBv / z vEK / D K mpo o-vE4�vyt rBv H D\5ctL4<4cD\5�{|}nwrBout }'z K mpo�N�t�r-{�mp}co / D|vyzr�6<oBm / w76nm / r t±rBvyo�N�� . 3 r / t7D rBout }'z K mpo�N�t�r-{�mp} o / D|vyzSt�oBv 3 m�}<z rBo / 3 rBv H �(5 N vOt }<z�m7K4<t r rBvyoB} N�t�r 3 6n{�}<w�t } H � / { D H {�}nw�m7K$4<t r r-v@o-}±{|}<z r-t�}pr-{|t rB{|m�}<zy�

� 9

Page 22: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

. 4 2&( � � � $ z / 3:3 v@v H z�{\K'r%6nv�z / � � v 3 r rBv@o%N N�t r 3 6nvOzMb { r%6 r%6nv9rBvyo�N $�� . z t0z { H v$v ��v 3 r:;�t�}(5�x¥t�oB{ t��cD�vOzC{|} $St o-v ��m / } H r-m§r%6nv 3 mpoBo-vyz�4'mp} H {|}nw§z / �"r-v@o%N�zCm7K<r%6nv z / � � v 3 rrBvyo�N���J K t x�t o-{ t��<D|v b tpz tLD|oBvOt H 5 ��m / } H �'vEK m�o-v0r�6nv N�t�r 3 6B;"r%6nv@}�r%6nv �n{|} H {|}nw�m�}cD\5z / 3E3 v@v H z�{\K r�6nv rBvyo�N�z�t o-v�r�6<v z-tLN v�� Y�6n{|z§v@}'t��<D|vyz§}nm�}�]D|{�}<vyt o24<t�rBrBvyoB} N�t r 3 6n{|}nwc;zBm�r%6<t�r t N�t�r 3 6 z / 3 6�tpz � $^g 8 8�k�z / 3E3 vyv H z�mp}<D\5 { KNr�6nv r b m±t�oBw / N v@}sr-z§mLK $U{|}r�6<v�z / � � v 3 r7r-v@o%N t o-v�vFE / t7D���Y�6n{ zN}nm�}/ D|{�}nvOt o �'v:6<t¥x�{�mpo 3 t�}�tLD zBm t o-{|zBv§t 3 o-mpz-z m r%6nv@om74�v@out�r-{�mp}<zy��lnmpo v TntLNO4<D|v7;7r�6nv±r b m 3 m�}<zBv 3 / rB{|x�v N�t�r 3 6<vyz � $^g 8 0�k � � $^g 0 8�kz / 3E3 v@v H v Tnt 3 r�D 5 bZ6<v@}�r�6nv�r b m t o-w / N vy}pruz�mLK $ t o-v�vFE / tLDª� Q§} 3 v�t x�t�oB{ t��<D|v±{|z��m / } H {�r 3 t�}n}nm r ��v / }.�'m / } H �.�� 6/*�� ��� $ oBv:4<D t 3 vOzNr�6nv�z / � � v 3 rNr-v@o%N'b {�r�6Wr�6nv0{|}<z¨rut }srB{ t�r-{�mp}�m7K�r�6nv 4<t r r-v@o-} $/ zB{�}<w r%6nv 3 / o-oBvy}sr �n{|} H {|}nwpz9m7K�rBvyo�N�zNrBm�x�t o-{|t��<D|vyz {�} $�� . z 3 m�4'v � 8�� � � � 8 � b ���N�t��pvyz�r%6nv±x¥t�oB{ t��cD�vOz 8&% D�m 3 t7D7r-mUr%6nv±z rBout�r-v@w�5 �"� Y�6n{|zAN vyt�}<zSr%6<t�r �n{|} H {|}nwpz rBmr�6<vyzBv�x�t�oB{ t��<D|vyz§m / r-zB{ H v r�6<v z 3 m�4'v t o-v / } H mp}nvAbZ6<v@}�v@}srBvyoB{|}nwWr�6nv�z 3 m74�v t } H t o-vo-vyz rBm�o-v H t K r-v@o0D|vyt¥x�{|}nw { rO�Y�6nv�m74�v@out�r-{�mp}�������� � gC�+k0tL4<4<D|{|vyz9r%6nvSz¨r-o-t rBvyw75 �Sr-m r�6nvz / � � v 3 r�rBvyo�N��OJ K9z / 3:3 vyz-z K / D ;6{ rSo-vyz rBmpoBvOz�r%6nv�m�o-{�wp{�}'tLD z / � � v 3 r�rBv@o%N ; ��vyvE4n{|}nw�m�}cD\5r�6<v�}nvEbZD 5�mG�"r-t�{�}nv H �<{�} H {�}nwsz rBm�x�t o-{ t��<D|vyzy�� ��� 4 " @ ����� ��" � "A� 2 %'� Y�6nv@o-v§t�oBv r b m 4no-v H v$�<}nv H zBm�oBr-z�b {�r�6Wt }�{|}/�<}n{�rBv�} / N<��v@omLK 3 m�}<z rBo / 3 r-m�ouzEI {|}srBvyw�v@ouz t } H z¨r-oB{|}nwpzy� q"v@x�vyo-t7DKm74�v@out�r-m�ouz�4noBm�x�{ H vSz r-t } H t o H m�4'vyo�t�r-{�mp}<zSmp} r�6nvOz v H t�rut�r 5(4'vOz@� Q K04<t�o r-{ 3 / D t oS{ NO4'mpo rut } 3 v K m�o m / o 4 / o�4�mpzBvyz {|zSr�6nvm74�v@out�r-m�o ���� r%6<t�r � / { D H zNt�}nv:b z rBo-{|}nw�r�6't�r H m�vOz }nm�r7m 3E3 / oNt }(5(bZ6nvyoBv9{|}�r�6nv�rBv@o%N��v@{|}nw rBout }<z K m�o%N v H �

6$7 7�� ] V �XF� � <^Q\F8BL> ?Y�6nv z 4�v 3 {�� 3 t�r-{�mp} D|t�}nw / t w�v qsrBout�r-v@w�m 4noBm�x�{ H vyzCz 5�}sr-t 3 r-{ 3 t��<z rBout 3 r-{�mp}<z K mpo�q=5�z rBv:N qv T=4no-vyz-zB{�mp}<z@� . z�4'v 3 { � 3 t rB{|m�} 3 m�}<zB{|z r-z�mLK7t 3 m7D D|v 3 r-{�mp} mLK�N m H=/ D|vyz§r�6't�r H v$�<}nv�z {|w�}<t r / o-vyz:;�rBout }<z K m�o%N�t�r-{�mp}�o / D�vOzE;nt�} H z¨r-o-t rBv@w�5 H v��<}n{�rB{|m�}<zy�. z {|w�}'t�r / oBv H v 3 D|t�oBvOz�r%6nv�z mpo ruz§t�} H m74�v@out�rB{|m�}'z;� 3 m�}'z¨r-o / 3 rBmpo-z7� r%6<t�r N�t��pv / 4r�6<vWz rBo / 3 r / oBv�mLK r�6<vVD t }nw / t wpvG�¯z7���v@{|}nwUr-o-t�}<z K m�o%N�v H � . } v TntLNO4<D|vWzB{�wp}<t�r / o-v�{|zz�6nm b }{�}3l4{�w / oBv���� �<� . z rBout�rBvyw75 H v$�'}n{ r-{�mp} ' g 8 � � � � 8 �Ek e � {�}srBo-m H=/ 3 vyz±t}nv:b3z rBout�r-v@w75�m�4'vyo-t rBmpo '�4<t outLN vMr-v@o-{��yv H b { r%6Uz¨r-o-t rBv@wp{�vOz 8�0r�6no-m / w�6 8 �Wt�} H b { r%6

��m H 5 �"�±q / 3 6 H v$�<}<{ r-{�mp}<z 3 t }n}nm�r��'v�oBv 3 / ouz {|x�v�;�{ª� vp�\;Cr�6nv:5 3 t }n}<m rSo-v K v@o � H {|oBv 3 r�D 5m�o {�} H {�o-v 3 r�D 5/�0rBm r%6nv�m74�v@out�r-m�o ��v@{|}nw H v��<}nv H � . D DNo-v 3 / o-zB{|m�}+N / z r<��v�v T=4no-vyz-zBv Hv T=4<D|{ 3 {�r�D 5;�(5?N�vOt }<z mLK�r�6nv§oBv 3 / ouzB{�mp} m�4'vyo-t rBm�o � ��3"� 9Ct���vED|v H r-o-t�}<z K mpo�N�t rB{|m�}�o / D|vyzt o-v�t�� �noBvyx�{|t rB{|m�}<z�m7KKt 4't oBrB{ 3 / D t oMK mpo�N2mLKKz¨r-o-t rBvyw75 H v$�<}n{�rB{|m�}'z@� . 3 m�} H {�rB{|m�}'tLDno / D|v, b � �4d ����� ��� � � b {�r�6�D t���vED&,�;�D|v K r�]6<t�} H zB{ H v �c;so-{|w76sr� 6<t } H zB{ H v � ;�t } H 3 m�}/H {�rB{|m�} � H v@}nm�rBvyz�t z rBout�r-v@w�5 H v$�'}n{ r-{�mp} , e � 8 � ��� � 8 �hb � � � ������� � gC�+k ��� � �n�=�vyoBv�;�r%6nv ��m H 5 mLK9r%6nv�o / D�v �<ouz r N t r 3 6nvOz0r�6<v D�vEK r� 6<t } H zB{ H v � t�wpt {|}<z r0r�6nv�z / �/

� v 3 r rBv@o%N ;Nt�} H r%6nv@} t�rBrBvENO4"ruz rBm zBt rB{ z K 5 r%6nv 3 m�} H { r-{�mp} �"� J K§r�6<t r�z / 3:3 v@v H z:; { r� / { D H z r%6nv�o-{�w�6pr�]6't } H zB{ H v ���MY�6nv�o / D|v {|z7v@} 3 D�msz v H {|}�t�z 3 m74�v9r�6't�rN�t��pvyz t7D\DnrBv@o%Nx�t o-{|t��<D|vyz 8�%�m 3:3 / o-oB{|}nwVK oBvyvED 5 {�} �<; ��t�} H � D|m 3 t7DCr-m�r%6nv o / D�vp� J K N m�o-vSr%6<t }�m�}<vH v��<}n{�rB{|m�} { z24noBm�x�{ H v H b {�r�6Ur�6nv zBt7N vS}<tLN v�;�vp� w'�\;&' g 8+�+kDe � t�} H ' g 8+�+kDe � �c;r�6<{|z�{ z�v E / {�x�tLD|v@}sr�r-mUt±zB{|}nw7D|v H v$�'}n{ r-{�mp} b { r%6 r�6nv�z / N+m7KNr%6nv�m�o-{|w�{|}<tLD>��m H {�vOzSt�z��m H 57;n{ª� vp�\;+' g 8��+k)e � �� � �<�

qsr-o-t rBv@w�5�m�4'vyo-t rBmpo-z 3 t }¬m�}<D 5 6<t¥x�v�z¨r-o-t rBvyw�{|vyz�tpzWt�oBw / N v@}sr-zy� H§t r-t 3 t } �'v4<tpzBzBv H r-m z rBout�rBvyw75�m74�v@out�r-m�ouz �(5+b outL4c4n{�}<w r�6nv:N {�} � / { D H v T=4no-vyz-z {|m�}<zy� l<m�o {|}/z r-t } 3 v7;pr�6<v�z¨r-o-t rBvyw75 �&��1ig�� :�k0b { D D<o-vE4<D t 3 v v@x�vyo�5 vED|vEN v@}sr mLK�t D|{|z r3�(5 r%6nv 3 m�}<z r-t�}srrBvyo�N :��$> t�o-t7N vMrBvyoB{��@v H z¨r-o-t rBv@wp{�vOz 6<t¥xpv�}nm r�mLK rBvy}���v@v@} / z v H {|} 4no-v@x�{�m / z q�rBout�r�v@wpm�z 4�v 3 {�� 3 t�r-{�mp}<zy��Y�6<vE5Wt�oBv�}<v@x�vyo r%6nvED|vyz-z 3 oB{�rB{ 3 t7D6{|}Uz 4�v 3 { K 5�{|}nw�r�6<v b t�o�N K / zB{�mp}

1�~

Page 23: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

, �������� ��� �������������M�#������������������� 9 ��!���#����%�F�-�����<�- � ����$-�������������#�������M��� , .S������E&��� 9 �* 12������M��� ,

������ .A�F�-����a�������&V!���#��$�� * ��������� � �$#�M 12���� 9 �!���#���������� 9 � .���-�����$#6&>���������* ����-�����#6&>!���#�����<� *

��������$#�M��5�����E&>��F�-���* 12�!���#����

����M�#���� 9 � .������ �5�F�-�� 12���� 9 ���������8 .���<�-�����<�- 12���� 9 �

��!���# .������$#M 12 �F�-�������� .������$#M 12 �F�-��� � -- .A�F�-����a�������&>�F�-��* 12 �F�-������# .S������E&(�F�-���*��C�F�-�� 12 �F�-������������ .S������E&������$#M * �C�F�-�� 12 �F�-��

�F�-���� .���<�-��5�F�-�� 12���<�-���� .������$#M 12���<�-!���#������ .������$#M 12���<�-����� .S������������ 12���<�-� 3�� .S������E&��<�-4*�����-�����$#6&>�F�-���* ����<�- 12���<�-� -- .���<�-��a������E&��<�-4* 12���<�-����� .S������E&��� 9 �*�����<�- 12���<�-!������ .���<�-��a������E& � ��� * 12���<�-� ��� .���<�-�����-�����$#6&>�F�-���* ����<�- 12 � ���� � 3�� .S������E&������$#M * ����<�- 12���<�-�H$#���� .���<�-��a������E&(�F�-���* 12���<�-

�������� .A�F�-�������<�- 12���<�-!������ .A�F�-����5�F�-����C�������&���<�-4* 12���<�-

lC{|w / oBv ��� �cI q�{|w�}'t�r / oBv K m�o �pv@o-}nvED =§t�z���v:D\Dª�

1n�

Page 24: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

rBout }'z K mpo�N v@o t } H {|}�m�r�6nvyo zB{ r / t�r-{�mp}<zS{|} bZ6n{ 3 6�{|}=K m�o%N�t�rB{|m�} N / z r;��vV4<tpzBzBv H ��v$r b v@v@}�z rBout�rBvyw�{|vyzy�Y�6nvOK m�D\D|m b {�}<w H v$�<}<{ r-{�mp}<z 4no-m�x�{ H v�t / z vEK / DNz�6nmpo r%6<t } H � Y�6nv�}nm rut�rB{|m�} � ��d $

H vy}nm r-vyz � $�� �=;n{ª� vp�\;"r%6nv z rBout�r-v@w75 bZ6<{ 3 6 � / { D H z r%6nv0rBvyo�N $Wt } H r%6nv@} t74<4<D|{�vOz �SrBm{�ry� Y�6nv�}nm�r-t rB{|m�} �Qe?d $ H v@}nm�rBvyz�� � � $ ;4{ª� v�� ;�r�6nv�z¨r-o-t rBvyw75 bZ6<{ 3 6 t74<4<D|{�vOz��±rBmr�6<v 3 / o-oBvy}sr9z / � � v 3 r9rBvyo�Ngt�} H r�6nvy} N�t r 3 6nvOz r�6nv0o-vyz / D r�t�wpt {|}<z r $���Y�6nv 3 m7N<�<{�}nv H}nm�r-t�r-{�mp} ����d $Be?d $ipNr�6 / z H v@}<m rBvOz � $�� � � � $ipM��Y�6<v � �d $�}nm�r-t�r-{�mp} 3 t }�tLD zBm��v / zBv H {�}<zB{ H v t�rBvyo�Nc{|} t � / {\D H vET=4noBvOzBzB{|m�}��6l<m�o4v TntLNO4<D|v7;¥r%6nv9z¨r-o-t rBv@w�5§vET=4noBvOzBzB{|m�}� $^g�� ��d $ $ip�k 3 mpoBo-vyz�4�m�} H zCr-m � 8hb ����d $Be?d 8�� � $^g 8 $ip�k �<; bZ6nvyoBv 8S{ z7t�}nv:bx�t o-{|t��<D|v��

6$7 7 � V�;ZF�� V � � � F8BLDM?qsr-o-t rBv@wpm � z0z 5�}sr-t 3 rB{ 3 t��<z rBout 3 rB{|m�}<z§w�{|x�v o-{|zBv r-m t�} / N;�'vyo�mLK / z vEK / D�4no-m�wpo-t7N?N {|}nw{ H {�m�N�z@� l<m�o-vEN mpz r9t7N m�}nw�r�6<vyzBv0t�oBv %� ��6/%7')*�� � 2�("( �%)+�'�t } H �&* ')( %)* � 6/( 7� � 2&( ( �%)+�'`�) v 3 / ouz {|x�vO4<t r r-v@o-}<zSt o-v�z rBout�rBvyw75UvET=4noBvOzBzB{|m�}<z§r�6't�r H vOz 3 oB{C��v rBv@o%N K m�o%N t r-z �(5N vyt�}<z�mLK 3 m�}nwpo / vy} 3 vOz§t�} H oBv 3 / ouz {|m�}6�(,�vyz rBv H 3 m�}nwpo / vy} 3 vOz�{|} qsrBout�r-v@w�m±t o-v�zB{ N;{ D|t�o�rBm 4<t�rBrBvyoB} N�t r 3 6n{|}nw�{|} K / } 3 rB{|m�}'tLD�D|t�}nw / t�w�vOzE;�t } H q�rBout�rBvyw�m � z o-v 3 / ouz {|x�v 4't�r�rBvyoB}'z {�}�xpm7D|xs{|}nw�}nvyz rBv H 4<t�rBrBv@o-}<z�t�oBv0t���{|}±rBm�o-v 3 / o-zB{�xpv K / } 3 r-{�mp}<zZbZ6n{ 3 6�x�v@o-{\K 5�r�6nvz rBo / 3 r / oBv�m7KNr-v@o%N�z@� 96{ �pv 4<t�rBrBvyoB} N�t�r 3 6n{�}<w±{|} K / } 3 rB{|m�}<t7D�D t }nw / t wpvyz:;CqsrBout�r-v@wpm � zo-v 3 / o-zB{�xpv24't�r r-v@o-}<z�t�oBv 3 m�NO4<D�v@rBv:D\5Ww�v@}<v@outLDª� lnm�o vETntLNO4<D|v7;"r%6nv K m7D D�m b {|}nw o-v 3 / o-zB{�xpv4<t r rBvyoB} H vyz 3 o-{ ��vyz r�6nv�z / �'z v@rNmLK =§t�z���vED D<vET=4noBvOzBzB{|m�}<z4r%6<t�r 3 m�o-o-vyz�4'mp} H z�r-m / }sr 5(4'v H� 3 tLD 3 / D / z rBvyo�N�z:I

� ����� "���� ��8 1 e� � 3 8^g 5 ���^g6%#";k�� : 1�1ig 8 8�k � : �&�6g � 5 ��� g6%�";k � � *(��� 8�k4k

Y�6nvy{�o / zBv {|z K / oBr�6<v@o H vEN mp}<z¨r-o-t rBv H {|} r%6nv�rBvyo�N K mpo�N�t�r 3 6nv 3 ��{�}nwW{�} q�v 3 rB{|m�}���� X �Y�6nv:5 3 t }�tLD z m��v / zBv H r-m 3 6<t out 3 rBvyoB{��@v N m�o-v 3 m7NO4<D|{ 3 t�r-v H K m�o%N�t�ruz z / 3 6 tpz }nmpo�N�tLDK m�o%N�z�mpo�v T=4no-vyz-zB{�mp}<z�{|}Zt 3 m�o-v D|t�}nw / t�w�vp� � m�o-vUw�vy}nv@outLD D 57; o-v 3 / o-zB{�xpv 4<t�rBrBvyoB}<z3 t�} �'v / zBv H bZ6nvy}nv@xpv@o�vET(4<oBvOzBzB{�mp}<z0{|} t z / �<D t }<w / t�w�v�mLK t D|t�oBwpv@o0oBv:4no-vyzBv@}sr-t rB{|m�}D t }nw / t wpv2N / z¨r ��v�o-v 3 mpw�}n{��@v H mpo N�t�}n{\4 / D|t rBv H �

H§{|z rBo-{ � / rBv H 4<t r rBvyoB}'z 3 m�N<�n{|}nv r�6nv+4<t�rBrBvyoB}[N�t r 3 6n{|}nw m7KSoBv 3 / ouzB{�xpv 4<t�rBrBvyoB}<zb {�r�6�r�6nv±rBout¥x�vyo-z-tLD 3 t74<t��n{ D|{ r-{�vOz m7K�z rBout�r-v@w75 m�4'vyo-t rBm�ouzy� Y�6nvE5 zBv@o-x�v±t�z � 4't�r r-v@o-}rBv:NO4<D|t rBvOz ��r�6<t r 3 t�} ��v / zBv H rBmVN�t r 3 6 t�wpt {|}<z r�v T=4no-vyz-zB{�mp}<z 3 m�}sr-t�{�}n{|}nw�z�4�v 3 { �<v Hz / �'vET=4noBvOzBzB{|m�}<z§t�r0x¥t�oB{ t��cD�v H vE4"r%6<z b { r%6n{�} r�6nv:N��Slnm�o�v Tnt7N?4cD�v�;'r%6nv?b t�o�N K / zB{�mp}rBout }'z K mpo�N v@o / zBvyz�r�6nv H { z¨r-oB{C� / r-v H 4<t�rBrBv@o-} .�� "���� ���&��$ ��rBm H vMr-v@o%N�{|}nv?bZ6nvMr%6nv@o�m�o}nm�r�t rBvyo�N {�} r%6nvUv T=4no-vyz-zB{�mp} D t }nw / t wpvWm7KSlC{|w / oBv �p� � 3 mp}sr-t {|}<z�t�}tL4<4<D|{ 3 t�r-{�mp}bZ6nmsz v�t�oBw / N v@}sr�rBvyo�N { z t }�t��<z rBout 3 r-{�mp} {�} bZ6<{ 3 6 r%6nv�x�t o-{ t��<D|v � H v@rBvyo�N {|}nv H �(5r�6<vSz¨r-o-t rBv@w�5�� ��tL4<4�vyt�o-z:I.�� "��������&��$�� gC�+k e *��&3(��$�" g :�1�1ig6%�" : �&� g6%�" C%�" A*(�&3���$�" g 5 �(�^gC�4k k k4k4k

,�m�rBv7r�6<t r6r�6<v t�oBw / N v@}sr�rBvyo�N3r-m�r�6<vNt��'z¨r-o-t 3 rB{|m�}�}<v@v H }nm r�t 3 r / tLD D 5 � Nr�6<v7x�t o-{|t��<D|vH v@rBv@o%N {�}<v H �(5 ����tLD D r%6<t�r�{ z�o-vFE / {|oBv H { z r�6't�r�r%6nv x�t o-{|t��<D�v t74<4'vOt o�zBm7N v:bZ6nv@o-vb {�r�6n{|}�r�6nv�t o-w / N�vy}sr§r-v@o%N±� � mpoBv�w�vy}nv@outLD H { z¨r-oB{C� / r-v H 4<t�rBrBv@o-}<z�t�oBv 3 mp}<z¨r-o / 3 rBv Hb {�r�6±r�6nvSz-tLN v0vytpz vp�

6$7 7�� � D ��[V D V >LQ\<^Q=F[BL>Y�6nvWq�rBout�rBvyw�m 3 m�NO4n{\D|v@oSrBout }<z�D|t rBvOzSt z 4�v 3 {�� 3 t�r-{�mp}�rBm t G 4no-m�wpo-t7NDr�6<t r oBvOt H z trBvyo�N t�} H tL4<4<D|{|vyzCr�6nv9z�4'v 3 { �<v H rBout }<z K m�o%N�t�r-{�mp}�rBm�{ rO��Y�6<v 3 m7NO4n{ D�vyo �'o-z r�rBout }<z�D|t rBvOz

1�1

Page 25: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

t z�4'v 3 { � 3 t rB{|m�} rBmUtUq=5�z rBv:N q�vET=4noBvOzBzB{|m�}B;$bZ6n{ 3 6 { z�r%6nv@} r-o-t�}<z D t�r-v H rBmUt D�{ z¨rSm7Kt��'z¨r-o-t 3 rMN t 3 6n{|}nvN{|}<z rBo / 3 r-{�mp}<zy��Y�6nv {|}<z¨r-o / 3 rB{|m�}'z t o-vN{ NO4<D�v:N v@}srBv H {|} G �LY�6<v o / }/rB{ N v�z�5�z rBv:N { z �<tpz v H m�}�r�6nv . Y6vyo�N D�{C�nout o%5 2 � 4];)bZ6n{ 3 6�z / 4c4'mpo ruz 3 m�N?4cD�v@rBv�z�6<t o-{|}nwmLK�z / �"r-v@o%N z�� 6<tpz 6� 3 m�}<zB{�}<w �`� . YCv@o%N zNt o-v�tLD z m / z v H K m�o vET 3 6<t }nwpv mLK H t r-t��vMr b v@vy}3 m�NO4'mp}nv@}sr-z mLK�tUrBout }<z K m�o%N�t�rB{|m�} z�5"z¨r-vEN�z@�+Y�6nv 3 m7NO4n{ D�vyo { z���m�m ruz¨r-o-t74<4'v H ; {ª� vp�\;{ N?4cD�v:N�vy}srBv H {|}�qsr-o-t rBv@wpm {�r-zBvED\K¨� Y�6nv qsr-o-t rBv@wpm D|{ �<o-t�o�5 2 W7W 404no-m�x�{ H vyz�t D t o-w�v�m7K} / N<��v@o wpv@}nvyoB{ 3 ;=D t }<w / t�w�v�{�} H vE4�v@} H vy}sr�o / D|vyz t�} H z¨r-o-t rBvyw�{|vyzy�

��� � � !$(�� +C� �I(*�"')! �Y�6nv�t�o 3 6<{ r-v 3 r / o-v mLK�r�6nv b t�o�N K / z {|m�} 4<oBmpw�outLN�r-o-t�}<z K mpo�N�t rB{|m�} z 5"z rBvEN2{ z H v:4n{ 3 rBv H{|}�lC{|w / oBv �p� X � Y�6nv�z�5"z¨r-vEN 3 mp}<z { z r-z�m7K K m / o N�t {|} 3 m�NO4'mp}nv@}sr-z:I t 4't ouz vyo:;Kr 5(4�v$3 6nv 3 ��v@o ;�r�6<vSt 3 r / tLD�b t�o�N�K / z {|m�}±rBout }'z K mpo�N v@o ;nt } H tO4<oBv@r r 5 ]4<oB{|}srBv@oO��Y�6nv z�5"z¨r-vEN3 m / D H 6<t¥x�v �'vyv@} H v$�<}nv H tpz t z {|}nw7D|v 3 m7NO4'mp}nv@}sr ; � / r H {|xs{ H {|}nw {�r {�}srBm�z v:4<t out�r-v3 m�NO4'mp}nv@}sr-z§v@} 3 m / o-t�w�vyz§z v:4<t out�r-{�mp} mLK 3 m�} 3 v@o-}<z H</ oB{|}nw H v@xpvED|m74<N v@}sr0t } H N�t���vyzK / r / oBv�t74<4<D|{ 3 t�rB{|m�}�mLK�r%6nv�rBout }<z K m�o%N�t�rB{|m�} r-m�m7D�{�}±t }nm�r�6nvyo z v@r rB{|}nw�.Qv�� w<� ; 3 m�}n}<v 3 rB{|m�}±r-m t 3 m7NO4n{ D�vyo�K oBmp}pr�ªvy} H . vytpz {|v@oO�Y�6nv 4<t ouz vyo { z�w�v@}<v@out�rBv H K oBm�N t z�4'v 3 { � 3 t rB{|m�}�m7K�r�6<vVK / D D�� =§t�z���vED D 97UUz�5�}prut T2 1 W 4<{|} r�6<v�z 5�}sr-tLT H v$�'}n{ r-{�mp}OK m�o%N�tLD|{|z�N q/H�l�1 2 W � 4ª� . D r%6nm / w�6�r�6nvZ4<t�o-zBv@o z / 4<4�m�oBr-z

r�6<v K / D D4z�5�}prut T ; 3 / o-oBvy}pr%D\5Wm�}<D 5�r%6nv<�pv@o-}nvEDCz / �'z v@r�mLK =�tpz��pvED D�{ z�z / 4<4�m�oBrBv H �(5Wr�6nvz / �<zBvFE / v@}sr 3 m7NO4'mp}nv@}sruz@� . =�t�z���v:D\D H vyz / wpt�oB{|}nw 3 m�N?4�m�}<v@}sr 3 t�} ��v t H<H v H {|}�r�6nvK / r / oBv0r-m v T�rBvy} H r�6nv0r-o-t�}<z K mpo�N vyoNr-mOK / D D =�tpz��pvED D��,�m�rBv0r%6<t�r§q/H�l�1:�<t�zBv H 4<t�o-zBv@ouz9t o-v0}nm r�o-vFE / {|oBv H K m�o�qsr-o-t rBv@wpm<��> t�o-zB{�}<w K o-m�}sr�

v@} H z 3 t�}±t7D|zBm �'v b o-{ rBrBvy} / zB{|}nw�� . GZG mpo�t }(5�m r%6nv@oZ4<t�o-zBv@o9wpv@}nvyo-t rBm�o ;"t�z D|m�}nw�t�zr�6<v wpv@}nvyo-t rBv H 4<t ouz vyo-z�m / r%4 / rSt��<z rBout 3 r§z�5s}srut T�rBo-v@vOz�{|}Ur%6nv . YCv@o%N K m�o%N�t�rO� Y�6nvq/H�l�1V4't ouz vyo�r%6<t�r bNv / zBv t 3 r / tLD D 5 m / r%4 / r-z 4<t�o-zBv rBo-v@vyzy� Y�6nvOz v t o-vSr-o-t�}<z K m�o%N�v HrBm t��'z¨r-o-t 3 r±z�5�}sr-t T r-oBvyvyz �)5Gt w�vy}nv@o-{ 3 . {�� v�� ;§wpo-t7NON t�o�{|} H v:4'vy} H v@}sr . rBm�m7D� { NO4<D|m H v$ t�z��<T �b o-{�r rBvy}�{�}Uqsr-o-t rBv@wpm<�Y�6nv 3 / o-o-v@}sr7r 5(4�v 3 6nv 3 ��v@oN{|z �<tpz { 3 t7D\D 5�t 4no-vE4<oBm 3 vOzBzBm�o7r�6<t r H {|z rBo-{ � / rBvOz7r 5(4�v§{|}/K m�o%N�t�r-{�mp} K oBm�N z {|w�}<t r / o-v H v 3 D t out�r-{�mp}<z r-m x�t�oB{ t��<D|v / zBvyzy��Y�6n{ z 3 m / D H ��v0v@}<6<t�} 3 v HrBm�t�rBm�m7Dsr%6<t�r H m�vyz�K / D\D�r 5(4�v {|}=K vyoBvy} 3 v�;�� / rMK m�o4r%6nv�4 / o%4'msz vOzCm7K'm / o 3 t�zBv z r / H 5�r�6<{|zb9t�z9}nm�r�}nv 3 vyz-zBt�o�5 �sr 5(4'vOz mLK�x�t o-{|t��<D�vOz9t o-v H v 3 D t o-v H v T=4<D|{ 3 {�r�D 5�{|}±{|}<4 / r 4no-m�w�outLN�zy�

,�m�rBv r%6<t�rSr%6n{ z�{|zS}nm r�r-msm N / 3 6 mLK t±oBvOz¨r-oB{ 3 r-{�mp}���J }�=�tpz��pvED D { r { z 3 / z¨r-m7N�t o%5�rBmH v 3 D t o-v§r%6nv0r 5(4'vOz9mLK�K / } 3 rB{|m�}<z�t�}(5)b9t,5��Y�6nv {|}pr-v@o%N v H { t�r-v H t�r-t�z rBo / 3 r / o-vyz�r�6't�r t o-v�v T 3 6<t }<w�v H �'v@r bNvyv@} 3 m�NO4'mp}nv@}sr-zt o-v�o-vE4<oBvOz vy}pr-v H {|}�r%6nv§wpv@}nvyoB{ 3 . YCv@o%N K m�o%N�t�r32 � 4 � l / o r%6nv@o%N m�o-v7;svyt 3 6 3 m7NO4�m�}nvy}sr3 mp}<z / N vyz�t�} H 4noBm H=/ 3 vyz�t H { ��v@o-v@}sr�z / �<zBvMr�m7KCr%6nvSwpv@}nvyo-t7D�t��<z rBout 3 r z�5�}sr-t T±mLK4r�6nvD t }nw / t wpv�� Y�6nvOz v K m�o%N�t�r-z�t o-v t7D|zBm H vOz 3 oB{C�'v H {|}�qsr-o-t rBv@wpm �(5 N�vOt }<z§mLK7z rBout�r-v@wp{�vOzr�6't�r 3 6nv 3 � r%6nv�z rBo / 3 r / o-v�mLK�t0r-v@o%N±�MY�6nvOz v�z rBout�r-v@wp{�vOz 3 t�}:��v / z v H �)5 3 m�NO4'mp}nv@}sr-zrBm xpv@o-{ K 5�r%6nv@{|o�{|}<4 / rO�Y�6nv b9t o%N K / z {|m�}±r-o-t�}<z K mpo�N vyo 4<oBm 3 vOzBzBvyz vOt 3 6�m7KCr%6nv K / } 3 rB{|m�} H v$�'}n{ r-{�mp}<z {|} t4no-m�wpo-t7N t } H rBo-{�vOz�rBm�r-o-t�}<z K mpo�N { r {|}srBm � / { D H 3 t�rut K mpo�N���J r7tLD z m0{|}<D|{�}nvOz�4no-v@x�{|m / z�D\5rBout }'z K mpo�N v H K / } 3 r-{�mp}<z7{|}�r%6nv H v$�<}n{�rB{|m�}'zN{�rN{ z 4noBm 3 vyz-z {|}nw�r-m t 3 6<{�vyx�v H vEK m�o-vyz r-t�r-{�mp}

�(5�r�6<vSz 6nmpo r 3 / ry�Y�6nv 4no-vMrBr 5 ]4no-{|}pr-v@o { z�t?K m�o%N�t�rBrBv@o9r%6<t�r�rBout }<z�D|t rBvOz t��<z rBout 3 r z�5�}sr-t T�rBm�z rBo-{�}nwsz@�. qsr-o-t rBvyw�mSz�4'v 3 { � 3 t rB{|m�} � > >> =�tpz��pvED D � H v��<}nvOz r�6<v rBout }<z�D t�rB{|m�}?K o-m7N$t��<z rBout 3 r7z 5�}/r-tLT�rBm S m,T rBvyo�N�zy� Y�6nvyzBv t o-v�r-o-t�}<z D t�r-v H rBm+K m�o%N�t�rBrBv H rBvET�r �(5 t�wpv@}nvyoB{ 3 S m,TK m�o%N�t�rBrBv@o 2 X ;�� X 4 ����� ��������������� ����� ���! "���!��# "$&%�'! (�� *)�%+�� &',��- ")��/.

1 W

Page 26: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

rBvET�r

4't ouz v

6'zD {�}c4 / r

r 5(4�v$ 3 6nv 3 �

6<z�ªr 5)4�v H

b9t o%N�K / zB{�mp}

6'zD m / r%4 / r

4no-vMr r 5 4no-{�}sr

rBvET�r

zBw7D|o 4<w�v@} =�t�z���v:D\D q(5�}prut TK� z H K

� / z vOz��z 3 {\NO4<D|m H v$

tpzD�cT�� o

z 3 =�q ]J }c4 / ry� o

z 3 Y5(4�v 3 6nv 3 ��� o

z 3 =§q. Y 5(4'v H � o

z 3 �Gl � t {|}�� o

z 3 =§q m / r�4 / rO� o

z 3 >>> =�tpz��pvED D�� o

�'m,Tc1¥r-v T�r� / z vOz��

l4{�w / o-v���� X I . o 3 6n{�rBv 3 r / oBvSm7K r�6nvAb t�o�N K / zB{�mp} rBout }'z K mpo�N�t�r-{�mp}±rBm�m7Dª� S m,T"vyz�o-vE4<oBv�zBv@}sr H t�rut<; v:D\D|{\4'z vOz�oBv:4noBvOz vy}sr 3 m7NO4'mp}nv@}sruz@� H§tpz 6<v H t o-oBm b�zCoBv:4no-vyzBv@}sr4wpv@}nvyo-t rB{|m�}Sm7K3 m�NO4'mp}nv@}sr-z�K oBm�N z 4�v 3 {�� 3 t�r-{�mp}<z x�{ t�r�6<v�qsr-o-t rBv@wpm 3 m�N?4<{\D|v@o�¯z 3 � ;�r%6nv0q�H§l�1 4't ouz vyow�vy}nv@out�r-m�o � 4nw�vy} �St�} H t G 3 m�N?4<{\D|v@o � w 3:3 �M� Y�6nv�{|}srBv@o%N v H { t�r-v H t r-t&]K m�o%N�t�ruz�t o-vtLD zBm H vOz 3 oB{C�'v H {|}±qsr-o-t rBvyw�m t�} H K mpo�N�t r 3 6nv 3 ��v@ouz7t�oBv§w�vy}nv@out�r-v H K o-m7N2r�6<v@{|o9z�4�v 3 { ��3 t rB{|m�}<zy�

1 �

Page 27: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

J }�r�6nv�}nv T�r7zBv 3 r-{�mp}<z�b vZb {\D D H {|z 3 / z-z x�t o-{|m / z tpz 4�v 3 r-z m7K'r%6nv�z�4'v 3 { � 3 t rB{|m�} mLK�r�6nvb9t o%N�K / zB{�mp}Wr-o-t�}<z K m�o%N t rB{|m�}±z 5"z rBvEN���J }Uq�v 3 rB{|m�} �p� X b v H {|z 3 / z-z9r%6nvSz 4�v 3 {�� 3 t�r-{�mp}mLK9r%6nvWt��<z¨r-o-t 3 r z�5�}prut T ; 3 6nv 3 ��{|}nwUz / �<z v@r-z mLK�t }�t��<z rBout 3 r z�5�}sr-t T ;�t } H r%6nvWz�4�v 3 { � 3 t rB{|m�}�mLK ��m / } H x�t�oB{ t��<D|v�oBvy}<tLN {|}nw±t�} H z / �'z¨r-{ r / rB{|m�}��(5U{�}'z¨rut }srB{ t�r-{�}nw±w�vy}nv@o-{ 3D t }nw / t wpv {|} H vE4�v@} H v@}srStLD|w�mpoB{�r�6<N�zy� J } q�v 3 rB{|m�} �p� ? b v?4<oBvOz vy}pr�r�6<v�m�xpv@outLD DCz rBo / 3 r / oBvWmLK r�6<v�r-o-t�}<z K mpo�N vyoy� J }�q�v 3 rB{|m�}G�p� � b v H {|z 3 / z-z r�6nv H vMrut { D|z mLK�zBm7N v�m7K r�6nvrBout }'z K mpo�N�t�r-{�mp}<zy�

����� ��� `��"! \ (*����� � � \��Y�6nv b9t o%N'K / z {|m�}�r-o-t�}<z K mpo�N�t rB{|m�}�{|z 4'vyo K mpo�N v H m�}±r�6nv�t��<z rBout 3 r�z 5�}sr-tLTWm7K �pv@o-}nvED=�tpz��pvED D ;�mpo :�� � ��� �����n� Y�6nv±z {|w�}'t�r / oBv�m7K r�6nv D|t�}nw / t�w�v�{ z�z 6nm b } {|} l4{|w / o-vU��� �<�J r�{|z t�z¨rut } H t o H K / } 3 rB{|m�}<t7D�D|t�}nw / t�w�v b { r%6�t��<z¨r-o-t 3 r-{�mp}B; tL4<4cD�{ 3 t rB{|m�}B; H t�r-t r 5(4'vH v 3 m�}'z¨r-o / 3 rB{|m�} �(5 N vyt�}<z�m7K 3 tpz v v T=4no-vyz-z {|m�}<z:;'t�} H t�oBv 3 / ouz {|x�v D�v@r��n{|} H {|}nw'� Y�6nvD t }nw / t wpv7{ zCvET=4<D�{ 3 {�r�D 5�r 5(4�v H ;LbZ6<{ 3 6�v@}sr-t�{\D zCr�6<t rCr 5(4�vyz�m7K<x�t o-{|t��<D�vOz6{|}:�n{�} H {�}<wpz 3 t�}��v H v 3 D t o-v H ; t } H r�6<t r t�rBm�N { 3 v T=4no-vyz-z {|m�}'z �¯x¥t�oB{ t��cD�vOzE; 3 m�}<z rBo / 3 r-m�ouzCt�} H 3 m�}<z r-t�}sr-z7�3 t�} ��v§t }<}nm rut�rBv H b { r%6�r%6nv@{|o r 5(4�vyzy�M>�m�D\5(N m�o%4<6n{ 3 v T=4no-vyz-zB{�mp}<z t o-v 3 m�}<z rBo / 3 r-v H �(5N vyt�}<z m7K r 5(4'v±t��<z rBout 3 rB{|m�}�t } H {�}'z¨rut }srB{ t�r-v H �(5 N vyt }'z m7K r 5)4�v�tL4<4<D|{ 3 t�r-{�mp}�� .4no-m�wpo-t7N 3 m�}'z { z¨ruz mLK tAD|{ z¨r�m7K6r 5(4'vSt�} H K / } 3 rB{|m�} H v$�'}n{ r-{�mp}<zy�

6$7� 786 �IB9;ZD�<^Q � SIV �� F8> HJ }0r�6<v 3 m / ouz v m7Ksr%6nv r-o-t�}<z K mpo�N�t rB{|m�} bNv7v@} 3 m / }srBvyoKr�6<oBvyv {�}sr-v@o%N�v H { t�rBv�K m�o%N t r-z�r%6<t�rt o-v9z / �'z v@r-z�mLK�:�������� ��� �<�¯l4{|w / o-v0��� � �M��Y�6nv9{|}<4 / r�K mpo�N�t r �&����%D� 1�.�$0tLD D�m b�z�t�r-m7N { 3v T=4no-vyz-zB{�mp}<z�b { r%6nm / r r 5(4�v�t }n}<m r-t rB{|m�}<z ��v 3 t / zBv o-vFE / {|oB{|}nw0t }n}nm�r-t rB{|m�}<zMb m / D H 3 D / r�rBvyo�r�6nv z m / o 3 v 3 m H v�� J r�tLD z m±tLD D�m b�z�{�}/�cTUm74�v@out�rBmpo-z§t�z�z 5�}sr-t 3 r-{ 3 z / wst o2K m�o 4no-v$�<TtL4c4<D�{ 3 t rB{|m�}�� J }�r�6<v±{|}srBvyo�N v H {|t rBv K m�o%N t r �&����$�0�1�� " t7D\D t rBm7N { 3 vET=4noBvOzBzB{|m�}<z t o-vt }<}nm rut�rBv H b { r%6�r�6nvy{�o�r 5(4'vOz�t } H t o-v0r 5)4�v 3 m�o-oBv 3 ry� J }Ut HcH { r-{�mp}B;�tLD D�m74�v@out�r-m�ouz t o-v{|} 4<oBv��<TVK mpo�N�� 9�{C��v �&����$ 0 1�� "�;�r%6nv�m / r%4 / r0K mpo�N�t r �&��� *�.�$ 1�.�$ o-vFE / {|o-vyz K / D D\5±t }/}nm�r-t�r-v H t rBm7N�z:; � / r§{�r�t7D|zBm�tLD D|m b�z v T=4no-vyz-z {|m�}'z 3 mp}<z¨r-o / 3 rBv H / zB{�}nw�r�6nv < .�%���"�t�} H9���$���m�4'vyo-t rBmpo-zy��Y�6<v D|t r rBvyo�t o-v§}<m r�tLD D|m bNv H {|}Wr%6nv�{|}<4 / r r-m r�6nv0r-o-t�}<z K mpo�N�t rB{|m�}��Y�6nvOz v r%6no-v@v�vET(4<oBvOzBzB{�mp}?K m�o%N t r-z 3 m / D H ��v H vOz 3 oB{C�'v H �(5 {|}srBo-m H=/ 3 {|}nw�r%6no-v@v�zBvE4/t out�r-v�zB{�wp}<t�r / oBvOz�b {�r�6 H {���v@o-v@}sr 3 m�}<z rBo / 3 r-m�ouz@��Y�6n{ zb m / D H ;)6nm b v@x�vyo:;�oBv E / {�o-v r�6<oBvyvzBvMr-z0m7K }'tLN vyz K mpo0r�6nv�z-tLN v 3 mp}<z¨r-o / 3 r-z0t�} H rBo-{�x�{ tLD�rBout }'z D t�r-{�mp}<z2K oBm�N^m�}nv�zBvMr0rBm

r�6<v }nv T�ry��J }<z rBvOt H ;Lb v / zBv m�}nv zB{�wp}<t�r / oBv9t } H r%6nv oBv 3 / ouzB{�xpv 4<t r r-v@o-}<z4mLK�q�v 3 rB{|m�}±��� WrBm 3 6<t out 3 rBv@o-{��@v�r�6nv�r�6no-v@v�o-vyz rBo-{ 3 rB{|m�}'z@� Y�6nvOz v�o-v 3 / ouz {|x�vO4<t r rBvyoB}'z H m 3 / N�vy}srSr�6nvK m�o%N�t�ruz t } H 3 t } ��v / zBv H r-m 3 6nv 3 �Sr%6nv�{|}<4 / ruz r-mSr�6<v rBout }<z K m�o%N�t�r-{�mp} 3 m7NO4�m�}nvy}pruz@���v }nm b 3 mp}<zB{ H vyo�{|} r / oB} r%6nvAK m�o%N z�mLK vET(4<oBvOzBzB{�mp}<z {|}Uvyt 3 6UmLK r%6nvSr%6no-v@v z / �/K m�o%N�t�ruz m7K :�� � ��� �����n� . r-m7N { 3 vET(4<oBvOzBzB{�mp}<z {�}�r�6nv �&����$ 0 1�� " K mpo�N�t�r 3 mp}<zB{|z r�m7Kt x�t o-{ t��<D|v7; 3 mp}<z rBo / 3 r-m�o�mpo�D�{�rBvyo-t7D§t�} H t r 5(4'v t }n}nm�r-t rB{|m�}t�z H vyz 3 o-{ ��v H �(5�r�6nv4<t r rBvyoB}'z:�7�8 1'e 5 ���^g6%#";k�� 9�*��&��$�� g6%�";k�� ,�%#$ g6%�";k��$ *�� g $�k)e / 0 1�� " g :�7�8 1 $�k/�0 1�� "�5 ��� e /�0 1�� " g 5 ���^gC%�";k /�0 1��?k/�0 1�� "�:�$ *��Be ��$ *�� g /�0 1 �=k

bZ6nvyoBv /�0�1���{|z0t�oBv 3 / ouz {|x�vA4<t�rBrBvyoB} bZ6n{ 3 6 H vyz 3 o-{C�'vOz�r%6nv�z rBo / 3 r / o-v m7K :�� � ��� ����� � zr 5(4'vOz@� Y 5(4'v�t�}n}nm�r-t�r-{�mp}<zSt�oBv�o-vE4<oBvOz vy}pr-v H �(5 N vyt�}<zSm7K9r�6nv 3 m�}'z¨r-o / 3 rBmpo / 0 1�� "�;bZ6n{ 3 6 o-vE4no-vyzBv@}sruz�r�6<v �ib4b $ }<m r-t rB{|m�}�{|}1=�t�z���v:D\Dª� ,�m�rBvWr�6<t r r%6nvyzBv 4't�r r-v@o-}<z�t o-v

1 X

Page 28: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

4<t�o-t7N�v@rBvyoB{��@v H b {�r�6�r�6<v K m�o%N�t�rOK m�o�r 5(4�vyz $��-Y�6<v@�<t�zB{ 3 z�6<t74'v m7K0t#�&����$ 0 1�� "v T=4no-vyz-zB{�mp}�{ z H vyz 3 o-{C�'v H �(5�r%6nv 4<t�rBrBvyoB}<z��8 1ig?� $ 1 ��$ ; ����kDe: ��� g ��% �#$^g ; ���;k *(1�$&%(*��^g $�k � k �9�� ��� g?� � % ��$^g?����$^g?� $ 1���$�k4k k��,���$^g ��% �#$^gA"���3�� g?� $�k4k� � k �: 1 1ig?� ��%���$^g?�=k k��/�: �&� g ��%���$^g /�5����^g6%�" k4k� ��=k �/&!6�&��$^g?� ��% ��$^g $�k4k

����$^g?� $ 1 ��$�kDe:��($^g 1���$ *�1�$&%(*(�ig $�k �=k

��%'��1+�����(1���$ $ ��� �ig ; ����k�e9�*(�&��$��^gC%�";k��: 1 1igA9�*�����$��^g6%#";k ��% ��$^g ; ����k4k

/�0 1�� "�B ��$ e��% ��1+� ����1���$�$ ��� �ig /�0�1���"�5 ����k

t } H t�r 5(4�v H v T=4no-vyz-z {|m�}W{|z 3 6't out 3 r-v@o-{��yv H �)5�r�6nv�o-v 3 / o-zB{|x�v 4<t�rBrBv@o-}/�0 1�� "�7�8 1 e

� � 3 � g /�0 1�� "�:�$ *�� � ��8�1ig?� /�0�1�� /�0 1���" B ��$ /�0 1���" 5 ����k k

J }Gr%6nv ������%D��1 .�$ K m�o%N t r:;�t rBm�N�{ 3 v T=4no-vyz-z {|m�}<z � x�t o-{ t��<D|vyz:; 3 mp}<z rBo / 3 r-m�ouzWt�} HD|{ r-v@outLD zA� 3 t�} ��v / }sr 5(4'v H ��l / oBr�6<v@o%N�mpoBv�;�{|}/�<T m�4'vyo-t rBmpo�t74<4<D|{ 3 t�rB{|m�}'z0{�} t H<H { r-{�mp}rBm 4noBv��<T tL4<4<D|{ 3 t�r-{�mp}�t } H �<{�}<t�o�5�{|} t H<H { r-{�mp} rBmU}/ t o%5 t74<4<D|{ 3 t�r-{�mp}�t o-v�tLD D�m b v H �Y�6n{ z { z H vyz 3 o-{ ��v H �(5B�� ��5 ��� e

5 ���^g6%�";k��/�0�1�� " g 5����^g6%�"=k B � ��/�0 1 �=k

B�� ��B ��$ e��% ��1+� ����1���$�$ ��� �ig B�����5�����k� � ��3 8^g : 1 1�<�%D�ig 8 �B�����5 ����k�� 9�*�����$��^g6%#";k4k

1�� ��� ��8 1ig?�=k%e� 1�: 1�1ig?� %�" �=k �: 1 1�<�%D�igA� �=k �� ��4 ��$&%(*(�ig?�=k �!�' g?� � �=k

B�� ��7�8�1 e� � 3 � g :�7�8 1 � ��$ *��hg B�� ��/ 0 1��=k � 1�� ��� ��8�1ig?�=k��

��8 1igA� B�� ��/ 0 1�� B � ��B ��$ B�� ��5 ����k4k

Y�6nv0r 5(4�v 3 6nv 3 ��v@o }<m�o%N t7D�{��@vOz9{�}��<T�t�} H �n{|}<t o%5�tL4c4<D�{ 3 t rB{|m�}<z rBm�}/ t o%5�tL4c4<D�{ 3 t rB{|m�}<zt } H t�}n}nm rut�r-vyz tLD D�t�r-m7N { 3 v T=4no-vyz-z {|m�}<z b {�r�6�r�6<v@{|o9r 5)4�vyzy�l4{�}'tLD D\5�;'r%6nv v T=4no-vyz-z {|m�}'z�{|}Ur�6<v�m / r�4 / r2K mpo�N�t r �&��� *(.�$ 1�.�$�t o-vSr 5(4�v H v T=4no-vyz�zB{�mp}<z9v T�rBvy} H v H b {�r�6 <�.�%���" t�} H 9���$ ��m74�v@out�r-m�ouzEI

1�?

Page 29: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

��8�$�� ��8 1ig?� �$�kDe9���$ � g $ $ ��%���$^g?�=k k��<�.&%���" g $ �=k

7�8�$�7�8�1 e� � 3 � g /�0 1�� "�:�$ *�� � ��8�1ig?� /�0�1�� /�0 1���" B ��$ /�0 1���" 5 ����k �

��8�$�����8 1ig?� �/�0 1 �=k4k

6$7� 7�� � <^;EF[< ���8V TWV`> <"DMFG>IH <$> � ] � �/?AQ=FRQ � Q=F[B >. =§t�z���v:D\D�6<tpz0x�t o-{|t��<D�v �n{|} H {|}nw 3 m�}<z rBo / 3 ruz@� Y�6nv�q�rBout�rBvyw�m D�{C�nout o%5 H v��<}nvyz � / zB{�}nwz r-t } H t o H q�rBout�rBvyw�m.� r%6nvSwpv@}nvyoB{ 3 ;=D t }nw / t wpv0{�} H vE4�v@} H vy}sr§z¨r-o-t rBvyw�{|vyz � ��� ���&�AK m�o o-v$}<t7N�{|}nw���m / } H x�t o-{|t��<D|vyz:;��#. �&��$&%#$�.�$ � K m�o 4<t outLD D�v:D<z / �<z rB{�r / r-{�mp}�mLKKv T=4no-vyz-zB{�mp}<zMK m�ox�t o-{|t��<D|vyz:;�t�} H ' � � ����; ���+�VK m�oSr%6nv�vET�rBout 3 r-{�mp} mLK r%6nv�K o-v@vWx¥t�oB{ t��cD�vOz K o-m7N t }�vET 4no-vyz-z {|m�}6��Y�6nvOz v�m74�v@out�r-{�mp}<z t o-v§{|}<z r-t }sr-{|t rBv H �(5 H v 3 D|t�oB{|}nwSr%6nv�z 6'tL4�v§m7KCx�t o-{|t��<D|vyz:;{|} H { 3 t�r-{�}<w r%6nv �n{�} H {�}<w 3 m�}<z rBo / 3 r-z:;7t } H { H v@}srB{\K 5�{�}nw�r%6nv �<{�} H {�}nw 4�mpzB{ r-{�mp}<zy��� v{ D\D / z rBout�rBv r�6<v@{|o�{|}<z r-t�}pr-{|t rB{|m�} K mpo :�� �����������<�2Y�6nv�{ N?4cD�v:N�vy}sr-t�r-{�mp} m7K r�6nv�w�vy}nv@o-{ 3tLD|w�mpoB{�r�6cN z { zZ4no-vyzBv@}srBv H {|} 2 W � 4 �Y�6nv K m7D D|m b {�}nw o / D|vyz t o-v / z v H rBm H vyz 3 o-{C�'v0r%6nvSz 6'tL4�v�m7K4x�t�oB{ t��<D|vyzy�! ��5 ��� gC�+k b 5 ��� g 8�k �4d 5 ���^g�� ��d 5 ��� g 8�k4k7�8 1�5 ��� b /�0 1 � " g 5 ���^g 8�k �� k � d 5����^g 8�k7�8 1�5 ��� b 5 ��� g 8�k �4d 5 ���^g 8�k7�8 1�5 ����� b 5 ��� g 8�k �4d � 5 ��� g 8�k �

Y�6nv �n{|} H {|}nw 3 m�}<z rBo / 3 ruz�mLK�v T=4no-vyz-z {|m�}'z4t�oBv�D tLN;� H t0t��<z¨r-o-t 3 r-{�mp}B; 3 tpz v t7D r-v@o-}<t�r-{�xpvyz:;t } H D�v@r��<{�} H {�}nw'� Y�6<v o / D|vyz 7�8 1�<���" H v$�'}nv r%6nv 4<oBm � v 3 r-{�mp} K o-m7N r�6nvOz v 3 mp}<z¨r-o / 3 r-zrBm�r%6nv D�{ z r�mLK�x¥t�oB{ t��cD�vOz7r%6<t�r r%6nvE5 �n{|} H �7�8 1�<���" b : �&� g 8�� �� �� k � d ������1ig 7�8�1�5 ����k�d 8��7�8 1�<���" b : ��$^g : 1 1igC3 8��+k $ �=k �4d ���&��1ig 7 8 1�5 ���;kd 8+�7�8 1�<���" b ,���$^gA"�� 3�� � �=k � d ��'+%���$ ��� g 2 ��3��(5 ����k�d "�� 3�� �2 ��3���5���� b 5�����"�� ' g 5 ���^g 8�k ��=k � d 5����^g 8�k

P�zB{|}nw�r�6nv9o / D�vOz�t���m�x�v r%6nv9{�}'z¨rut }srB{ t�r-{�mp}<z4mLK�' � �����(; �����=;(�#.�����$&%#$ .�$ � ;yt�} H ���������&�K m�o vET=4noBvOzBzB{|m�}<z9t o-v

��8 1�; ����� e ' � � ����; ���+� g 7�8 1�5 ������ 7 8 1�<�� "=k��8 1�� �(�����&�Qe � ��� ���&� g6!���5 ��� 7�8 1 <�� ";k��8 1&�#. �&��$ e �#.�����$&%#$ .�$ � g /�0�1�� " g 5 ���^gC%#";k� C%#";k � 5 ���^gC%�";k ��$ � ���������=k

> o-m74�v@o�z / �<z¨r-{ r / rB{|m�}�v@}sr-t�{\D z r�6<t r;��m / } H r 5(4'vWx¥t�oB{ t��cD�vOzS{|} v T=4no-vyz-zB{�mp}<z�r%6<t�r t o-vz / �<z rB{�r / r-v H K m�o�rBv@o%N3x¥t�oB{ t��cD�vOzKt o-v�t7D|zBm9oBvy}<tLN v H ;Ot�} H z m�t�}0v T"v@o 3 { z v zB{\N { D|t�oKrBm9r%6<t�rt���m�x�v�N / z r ��v 3 t�oBo-{�v H m / r$K m�o�r 5(4�v x�t o-{|t��<D|vyzy��Y�6n{ z�w�{|x�vOz�o-{|zBv�rBm�r�6nv 3 m�o-o-vyz�4'mp} H {|}nwm74�v@out�r-m�ouz $ 1�; �����=;�$ 1&�#.�����$ ;pt�} H $ 1�� ��� ���&� K mpo r 5)4�vyzy��Y�6nv�z¨r-o-t rBvyw75 ��$�� �������&�S{|zr�6<vSz v E / v@}srB{ tLD 3 m7NO4'msz {�rB{|m�}±mLK ��8�1�� �������&� t } H $ 1�� �(�����&�'�

����� �P! \ �a`� #�!^] � !� ��+�����+1(*�"')! �J } r�6n{ z0z v 3 rB{|m�} bNv H { z 3 / z-z�r%6nv�z 4�v 3 {�� 3 t�r-{�mp} m7K7r�6<v r-m74/ D�vyx�v:D4m7K r�6<v?b9t o%N K / zB{�mp}rBout }'z K mpo�N v@oO� Y�6nv�o-vyt H v@o0{|z H {�o-v 3 rBv H r-m�r�6nv�}<v T�r 3 6<tL4nrBv@ouz:; K oBm�N bZ6n{ 3 6 r�6nv K m�D�D|m b {�}nw 3 m H v�{ z vET 3 v@o%4"rBv H ;(K m�o�t 3 m7NO4<D|vMrBv 3 m H v D�{ z¨r-{�}<w<�

1s�

Page 30: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

6$7�� 786 : ;=<$>/?A@CB9;ED�FG>IH�< J ;=B9H9;=<$DY�6nvZN�t {|} z¨r-o-t rBv@w�5�r-t���vOz4t 4no-m�wpo-t7N ;�{�� v�� ;pt D|{|z r mLK'r 5)4�v�t } H K / } 3 r-{�mp} H v 3 D t out�r-{�mp}<z:;t } H r-o-t�}<z K m�o%N z�vOt 3 6�{�} r / oB}6�-Y�6n{ z�{|z�t 3 6n{|v@x�v H �(5�t r-o-t�}<zB{ r-{�mp} z rBv:4 K m�o�vyt 3 6H v 3 D t out�rB{|m�}�I- �+%D�'e ��$�� ��� ���&���

������� � gC3�*�������3�$���"���$����("�� ' �+k �!D��%#$ "�$��� ��1�����$^g /�� �(�&�('�*��.�+2���3(��� � ��*����+2�k �7�8&%#$ "�$

,�m�rBv7r�6<t r4tLD D �'m / } H x�t o-{ t��<D|vyz6{�}�r%6nv7vy}srB{|oBv�4<oBmpw�outLN¬t�oBv �<o-z rCo-v@}'tLN v H r-m�vyz r-t��<D|{|z�6r�6<v / }n{ E / v�x¥t�oB{ t��cD�v {|}sx�t�oB{ t }sry��l / oBr�6nvyo�N m�o-v7;�r�6nv�z rBout�r-v@w�5 3(*���� ��3#$���"���$�����"�� '���<} H z�r�6nv H t�r-t§r 5(4�v H v$�<}<{ r-{�mp}<z {|} r%6nvZ4no-m�wpo-t7N t } H z rBm�o-vyzCr%6nvEN2{�}�t0z�5)N;�'m�D�r-t��<D�vK m�o�D t�r-v@o o-v K vyoBvy} 3 vp�$Y�6nv9{|}n{ r-{|t7D 3 mp}/�<w / o-t rB{|m�} {|z 3 oBvOt�rBv H K o-m7N t2D|{ z¨r m7K H v 3 D t out�rB{|m�}'zt } H r%6nv�<}<t7D 3 mp}/�<w / o-t rB{|m�} H v@o-{�xpvyz9t�rBout }<z K m�o%N v H D�{ z¨r�m7K H v 3 D t out�r-{�mp}<zEI

!D��%#$ "�$ b"+� �4dng � � � � "��+k

7�8&%#$ "�$ bgA"�� � "+� � � �=k � d ������; �����(�+d "+� �

Y�6nv �'o-z r t 3:3 / N / D|t rBmpo D�{ z¨r�z¨r-m�o-vyz0r%6nv K / } 3 rB{|m�}<zSr�6<t r 6<t¥xpv �'vyv@} rBout }'z K mpo�N v H rBm� / { D H 3 t�rut K mpo�N�� Y�6nvOz v�t o-v / z v H K mpo�{|}<D|{�}<{�}nw {|}�m�r�6nvyo?K / } 3 r-{�mp}<zy� Y�6nv z v 3 mp} Ht 3:3 / N / D t�rBmpo�D�{ z¨r�z rBmpoBvOz9tLD D K / } 3 rB{|m�}<z:;n{|} 3 D /cH {|}nw�r�6nv�}<m�}/ªrBout }<z K m�o%N v H m�}nvOz@�. H v$�<}<{ r-{�mp}�{ z r-o-t�}<z K mpo�N v H �)5 �'o-z rN{|}<D|{�}n{|}nwAK / } 3 rB{|m�}<zNr�6't�r�bNvyoBv r-o-t�}<z K m�o%N�v Hvyt�o�D|{|v@o �¯{�}�r%6nv D|{ z¨r "+� � t } H r�6nvy}�tL4<4cD\5�{|}nw�r�6<v b9t o%N K / zB{�mp}�rBout }'z K mpo�N�t�r-{�mp}�rBmS{�ry�

/�� ���&��'�*����+2���3�� bgA"�� � "+� � � " ��"+�����;k � dcg � "^p � "+� � � "^p ��"+� ��� "+���=k��� ��� � ��%(*�� g6%D�+��%6��� g�� "�� k /������&�('�*����qkd "'e?d "^p

J }<D|{�}<{�}nw�t } H rBout }<z K m�o%N�t�rB{|m�} 3 t } K¯t�{\Dª� J K�t�rAD|vytpz¨r m�}nv±z / 3:3 vyv H zSr�6nvy}�r�6<vWo-vyz / D�r{ z 3 m�}'z { H v@o-v H rBm �'v�r-o-t�}<z K mpo�N v H t } H { z�t H<H v H r-m ��m r%6�t 3E3 / N / D t�r-m�o D�{ z¨ruz@� � Y�6nvo / D�v %�*�� 3 m7NO4 / rBvyz�r�6nvW{�} 3 D / z {|x�v�mpo mLK r b m z¨r-o-t rBvyw�{|vyz:;6{ª� vp�\; %(*�� gC� � ���=k�tL4c4<D�{|vyz� �; � � m�o ��m r%6�� � J K��m r%6 K¯t { D�r%6nv@}Gr�6nv K / } 3 r-{�mp}{|zWt H<H v H m�}cD\5�rBm r%6nv D|{ z¨r�m7K}nmp}/�r-o-t�}<z K m�o%N�v H K / } 3 rB{|m�}'z / zB{�}nw�r%6nv�o / D�v� *����+2 bgA"�� � "+� � � " ��"������;k �4d gA"+� � � " � "+� ��� "����=kJ }<D|{�}<{�}nw { z t 3 6n{|v@xpv H �(5�oBv:4<D t 3 {|}nw 3 t7D\D z rBm?K / } 3 rB{|m�}<z�{�}�t�w�{|x�v@} D|{|z r�mLK H v 3 D|t�o-t�rB{|m�}'z �(5 � o-v@}'tLN {�}<wpz m7KA� r�6<v@{|o �'m H {|vyz§t } H r%6nv@}UzB{\NO4<D|{\K 5s{|}nw r%6nvSo-vyz / D r-{�}<w�v T=4no-vyz�

zB{�mp}<z / zB{�}nw r%6nv�o / D�vOz mLK q�v 3 rB{|m�} �p� �"��J }<D�{|}n{|}nw�o-vE4<D t 3 vyz t�z�N�t�})5 3 t7D\D z t�zZ4�mpz-zB{ �<D|v7;� / r�t r0D�vOt�z r m�}nv 3 t7D\D N / z r �'v�o-vE4<D t 3 v H {�}�mpo H vyo K m�o {�r rBm�z / 3E3 vyv H I

%D�+��%D� � g �+� �(��;�k e)�&����0�$�" g6!6�+��%D��� g ��� �(��;�k�k � ��%'��1+� %�' 0

Y�6nv K / } 3 rB{|m�}±r-m �'v�{|}<D|{�}nv H {|zZD|m�m��pv H�/ 4 {�}±r�6<v D�{ z¨r�m7K H v 3 D t out�r-{�mp}<z 4<t�z-z v H r-m r�6nvo / D�v !D�+� %D���'� Y�6nv�z rBout�r-v@w�5 �(��*�$^gC%D�Ekd 3 6nv 3 �"z0K mpo�o-v 3 / ouz {|m�}U{|} r�6nv H v��<}n{�rB{|m�} m7Kr�6<v K / } 3 r-{�mp}�� ) v 3 / ouz {|x�v K / } 3 rB{|m�}'z�t o-v§}<m r�{|}<D�{|}nv H �!D�+��%D� � g �+� �(��;�k/b/�0�1�� " g 5����^g 8�k� �$�k �4d ��$ 1&�D.��&��$�� ��$�� ��� ���&�+d g ���&� �=k��� ��� � �+� ����;�� '���$�3��ig � 5 ����"�� ' g 5 ���^g 8;k �=k4k � ����*�$^g6%6�Ekd g 5����^g 8�k� �=k �

��$ 1�. ��%�' 0 d ��g ��$�0�1��+d � $�k � e?d ���&�

17U

Page 31: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

6$7�� 7�� : ;=<$>/?A@CB9;ED�FG>IH�< � V > F[Q=F[BL>Y�6nv �<tpz { 3 t7D�wpm�o-{ r%6<N K m�o0r-o-t�}<z K mpo�N {|}nwWtWo-v 3 / o-zB{�xpv H v��<}n{�rB{|m�} rBm � / { D H 3 t�rut�K mpo�N. tpz H v$�<}<v H {�}O2��F? 46t�} H {\D D / z¨r-o-t rBv H {|}Uq�v 3 rB{|m�} ���a13. {|z r%6nv K m7D D�m b {|}nw I/�� ���&��'�*����Be

!D��$�� *�<�.&%���"�9���$ �����% ��1+��%�'�0��)�1���%#$ <�*�" 0�9 B��

� ��'�*���"��%D� ����?%#" ��%'��1+� %�' 0��

- ��� � 9���$ ��<�*�" 0 ���� ��'�*���" ��%D� ����% ��1+��%�'�0

Y�6n{ z9z¨r-o-t rBv@w�5�{�}sr-oBm H=/ 3 vyz7r�6nv� / {\D H 3 t�rut { H vy}pr-{ r 5�;nz 4cD�{�r-z r%6nv���m H 5�{|}srBm t b outL4<4�v@ot } H t bNmpo��pv@o ; / }=K m�D H z�r�6<vVb outL4<4�v@oS{|} r%6nv�b m�oA��v@o ;�r-o-t�}<z K m�o%N z�r%6nvVb m�oA��vyo�{�}sr-mt 3 t�r-t7N m�o%4<6n{ z N ;�t } H / }<K m7D H zSr%6nvVb m�oA��vyo �<t 3 � {�}�r�6nv b o-t74<4'vyoy� J }���vMr b v@vy} { rzB{\NO4<D|{��'vyz9r%6nv H v$�'}n{ r-{�mp}<zy�. z b v0oBv:N t�o��pv H {|} q�v 3 rB{|m�}����a1�r%6n{|z�4<oBm 3 v H=/ o-v�t74<4<D|{�vOz m�}<D 5 rBm?K / } 3 rB{|m�}<z r%6<t�r

��m r�6 3 mp}<z / N�v±t } H 4noBm H=/ 3 v H t�rut z rBo / 3 r / oBvOz@� YCm t 3:3 m�N?N m H t rBv K / } 3 rB{|m�}'z r%6<t�rv@{�r�6<v@o m�}<D 5 3 mp}<z / N�vWm�o�m�}<D 5 4no-m H</ 3 v H t�rut z rBo / 3 r / o-vyzAbNvWoBv��<}nv�r%6nv tLD|w�mpoB{�r�6<N/ zB{�}<w r%6nvSz-tLN v� / { D H {|}nw �<D|m 3 �"z rBm�r�6nv K m�D\D|m b {|}nwcI/�� ���&��'�*����Beg4gC!D��$�� *(<�.�%���" 9���$ �����%'��1+� %�' 0��gA9�*��&�D.��&����B � * "�.&3������� B�� * "�.&3������� � *���&���3#.�����%#; ��B���* "�.&3�����k�k

� � 9�*(�&�#.��&����k ���% ��1+��%�'�0

Y�6nv±z¨r-o-t rBv@wp{�vOz 9�*����#.��&��� B�� * "�.�3���� ;�9�*��&�#.��&��� ; B�� * "�.&3���� ;6t } H ��*���& ��3D.�����%#;����B�� *�"�.&3���� o-vE4no-vyzBv@}sr7r%6nv H {���vyoBvy}prZ4�mpz-z {C�<D|v2b9t,5"z7m7K�rBout }'z K mpo�N {|}nw t K / } 3 rB{|m�}���Y�6nvz rBout�rBvyw75 9�*��&�#.��&����{|z tL4<4cD�{|v H bZ6nvy} {�}srBo-m H=/ 3 rB{|m�} mLK r�6nv�m / r-v@o ��.�%���" t } H 3���$��K¯t { D z@�+J }�r%6n{|z 3 tpz v�r�6nv±m / r�4 / r�r 5(4'vWmLK�r%6nv K / } 3 r-{�mp} { z }<m r�t H t�rut r 5(4�v±t�} H zBmr�6<v K / } 3 r-{�mp} H m�vyz }nm�r�4noBm H=/ 3 v t H t�rut�z rBo / 3 r / o-v�� J r N�t,57; 6nm b v@x�vyo:;Nz¨r-{\D D ��vUt3 mp}<z / N v@oO��J K ;<m�}Wr�6nv0m r%6nv@oZ6't } H ;�r%6nv�{|}pr-oBm H=/ 3 rB{|m�}±mLKCr�6nv�m / rBvyo ��.&%���" t } H 3���$��z / 3E3 v@v H zE;¥r%6nv@} 9�*��&�#.�������B�� *�"�.&3���� z�4<D|{ ruz6r%6nv �'m H 5�m7K"r�6nv K / } 3 rB{|m�}�{�}srBm�t0b outL4<4�v@ot } H t�b m�oA��vyo�t } H rBo-{�vOz�r-m H vyoB{|x�v�t 3 t r-tLN mpo�4<6<{|z�N K mpo�r%6nv?bNmpo��pv@oO�0J K H v@o-{|xs{|}nw±t3 t r-t7N�mpo�4c6n{|z�N K o-m7N r%6nv b m�oA��v@o K¯t { D zE;�r%6nv@}±r�6<v K / } 3 r-{�mp} {|z9mp}<D 5�t?4noBm H=/ 3 v@oO�. D�r�6<m / w�6�{�r�{ z�}nm r�t74<4<t o-v@}sr�t�r�r%6n{ z D�vyx�v:D mLK�t��<z rBout 3 rB{|m�}B;7r�6nvU{|}srBo-m H=/ 3 r-{�mp}mLK�r%6nv m / rBvyo ��.�%(��"�t�} H 3���$���{|z�w�m�xpv@o-}nv H �(5Wr%6nvS{|}<4 / r0t } H m / r%4 / r�r 5(4�vyz§mLK�r�6nvK / } 3 rB{|m�};�'vy{�}nw§rBout }'z K mpo�N v H � � v 3 mp}<zB{ H vyo6r%6nv H vMrut { D|zCmLKnr%6nv9t���m�x�v r-o-t�}<z K mpo�N�t rB{|m�}{|} q"v 3 r-{�mp} �p� �"�Y�6nv H vyoB{|x�t�rB{|m�}�mLK t 3 t r-tLN mpo�4<6<{|z�N K m�o0r%6nv b m�oA��v@o0t } H / }=K m7D H {|}nw�{ r��<t 3 �U{|}r�6<v b o-t74<4'vyo {|z H v$�<}nv H {�}±r�6<vSz¨r-o-t rBv@w�5 <�*�" 0�/ * 9���$ � I<�* " 0�/�* 9���$ �Te

� ��'�*���"��%D� ����?%#" ��%'��1+� %�' 0��

179

Page 32: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

)�1+��%#$�<�* " 0�B��� � '�*���"��%D� � ��?%�" ��%'� 1+��%�' 0��

- ����� 9���$ �(<�* " 0 ���� � '�*���" �+%D� ���

� � '�*���" �+%D�

P�}cD�{C��v /�� �(�&�('�*��.�$;�r�6n{ z z¨r-o-t rBvyw75�z�4<D�{�r-z t�} H / }=K m7D H z r%6nv bNmpo��pv@o7r b { 3 v�{|}�m�o H v@oNrBmo-v 3 mpw�}n{��@v§r�6<vSt��<z rBout 3 rBv H 3 mp}<z rBo / 3 r-m�ouzNtpz z¨rut�rB{ 3 4<t�o-t7N�v@rBvyo-zy�

��� � �P! \ �a`� #�!^] � !��� � � \ +��$`J }±r�6n{ z�zBv 3 rB{|m�} bNv0w�m�{|}pr-m r�6nv H vMr-t�{\D z9mLK�z m�N v�m7KCr%6nv0rBout }'z K mpo�N�t�r-{�mp}<z N�vy}srB{|m�}nv Ht���m�x�vp�

6$7��*786 ] F8D ��GF� � < Q=F8BL>Y�6nv z { NO4<D�{ �<vyo 3 m�}<zB{|z r-zCmLK<t�} / N<��v@o4mLK<z r-t�} H t o H zB{\NO4<D|{ � 3 t rB{|m�}So / D|vyz K mpo�K / } 3 r-{�mp}<tLD4no-m�wpo-t7N z z / 3 6 t�zB��vMr-t�o-v H=/ 3 rB{|m�}�I<���$ � � ���lb

: 1 1ig : �&�6g � 8�� 8+��� $ �=k � � � ��� �;k �4d: 1 1ig : �&�6g 8�� $ ����8 1&�#. �&��$ d g � 8 � � ��� �=k4k ���+k��� ��� � ��; ����.��+d ��� ��� %D�������?d g 8 �=k

=�vyoBv�;�; ���(.���t } H ��%D� ������t o-v�z rBout�r-v@wp{�vOz7r%6<t�rZ4no-v@xpv@}sr H=/ 4<D|{ 3 t�r-{�mp}Wm7K$b m�oA� H=/ o-{�}<wo-v H=/ 3 rB{|m�}�� . } v T=4no-vyz-z {|m�} { z0t�x�tLD / v { K7{�r0oBv:4noBvOz vy}sr-z�vy{ r%6nv@o�t�K / } 3 r-{�mp} mpo�t H t�rutm�� � v 3 r � t�x¥t�oB{ t��cD�v ;�tL4<4�vyt�o-z D|{�}<vyt o%D 5 {|} r�6nv�vET=4noBvOzBzB{|m�} � {\K9o-v H</ 3 r-{�mp}�m7K � 3 t�}}nvyx�v@o 3 t / zBv H=/ 4cD�{ 3 t rB{|m�}�mLK t }(5�r-v@o%N z / �<z rB{�r / r-v H K mpo ;�� Y6vyo�N�z�bZ6n{ 3 6 H m�}nm�r�v@}/3 m H v 3 m�N?4 / r-t rB{|m�}Wt�oBv D�{�rBvyo-t7D\D 5 3 m74<{�v H o-v@wpt�o H D�vOzBz m7K�bZ6nv@r�6nvyoNmpoN}nm�rNr%6nv�x¥t�oB{ t��cD�vOzr�6<vE5�{|}<z r-t�}pr-{|t rBv0m 3E3 / oZD�{|}nvOt o%D\5�{|}±r�6nvy{�oZ6<mpz r rBv@o%N�z@�Y�6nv��vMr-t�o-v H=/ 3 rB{|m�}±o / D�v <���$ � � ��� oBv H=/ 3 vOz t }�tL4<4cD�{ 3 t rB{|m�}�m7K�t K / } 3 rB{|m�}±rBm {�r-z�<ouz¨r t�oBw / N v@}sry��Y�6nv K m7D D�m b {|}nw�o / D|v9oBv H=/ 3 vOz�z / 3 6 t }�tL4<4cD�{ 3 t rB{|m�} t�z$K¯t o t�zM4�mpz-zB{ �<D|v7;v@{�r�6<v@o v T=6<t / z rB{|}nw�tLD D K m�o%N�tLD�m�o�t7D\D6t 3 r / tLD 4<t�o-t7N vMrBvyo-zy�<���$ � b

: 1 1ig : �&�6g 8�� $ � k ���+k �4d: 1 1ig : �&�6g 0�� $ ����8 1&�#. �&��$ d g ���&� �=k k �&�+k��� ��� � ��� ���#$�� ��%D1^g6%�";kd/g 8�� � �+kDe?dcg 0�� �&� ���&�4k �

g ��� �+%D1ig4g6%#" ; ����.�� k � g $���$ C%#";k � � %D�������;kd gC���&� �=k4k

Q�r�6<v@o9z { NO4<D�{ � 3 t�rB{|m�}±o / D�vOz {�} 3 D / H v§v:D�{ N {�}'t�rB{|m�}±mLK H vyt H � ��$:�<{�} H {�}nwszE;"{|}<D|{�}<{�}nwmLK0D|vMr;�n{�} H {�}<wpz:; 3 t�zBv�z�4'v 3 { tLD|{��Ot�r-{�mp}B; H {|z rBo-{ � / rB{|m�}�m7K�tL4<4<D|{ 3 t�r-{�mp} m�x�vyo 3 tpz vOzE; / }/3 / oBo%5�{�}nw mLK6vET=4noBvOzBzB{|m�}�t�} H r 5(4�v�t74<4<D|{ 3 t�rB{|m�}'z �"zBv@v§r�6nv H v$�'}n{ r-{�mp}Wm7K ������% 3���� .�� �����vED|m b�� . 4<t oBrB{ 3 / D t o%D 5�{\NO4�m�oBr-t�}pr§o / D|v K m�o�r�6nv b t�o�N K / z {|m�}�r-o-t�}<z K m�o%N t rB{|m�}±{|z:;<m7K3 m / ouz v�; 3 t�rut& � / { D H K / zB{�mp}BI

9���$ ��< .�%���"lb: 1 1igA9���$�� g $ � $ � '+�+k� � <�.�%���" g $ � 4;k �;k �4d: 1 1ig /&!D����$^g 4 � $ ���=k '+�+k

W ~

Page 33: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

=�vyoBv $ �{ z r�6nv�{|}<4 / r r 5(4�v K m�o9r�6<v 3 t�rutLN m�o%4<6n{ z N t�} H $ ��{ z9{�r-z o-vMr / oB}�r 5(4'vp�7q�{\N:{ D|t�o�D 57;�$ 0{ z r�6nv0r 5(4�v�mLK ��.&%���" � zNm / r�4 / rO�Y�6nvOz v;�<t�zB{ 3 o / D|vyz 3 t�} ��v 3 m7N<�<{�}nv H {|}Ux�t o-{�m / z0b9t,5"z rBm � / { D H z { NO4<D|{��<vyo-z:; H v$4�v@} H {|}nwWm�} r%6nv H vOz {|o-v H v ��v 3 ry��� v / zBvSr�6<v K m�D\D|m b {�}<w 3 mp}/�<w / o-t rB{|m�}�{�}Ur�6nvAb t�o�NK / zB{�mp}±rBout }<z K m�o%N v@oO�������% 3 ��� .+� � ��e

<���$ � � 7�$�� �lg6!D�+� � 2 ��� ";k � /�7�$ � � / <���$����9�� ��� 9�*�����$�� � 9�������2&% ��$�, � 9�� ����2&% �#$�& � � �&3#.�� ��0

������% 3�� 3���$ �Te 9���$ � 9�*�����$�� � 9���$���<�.�%���" � � ����% 3 �(� .+� ���

��%'��1+� %�' 0 e %D�������.�&*���$^g ������% 3(� 3��($ � k

Y�6nvSz rBout�r-v@w75 %D�������.�&*���$ { z H v��<}nv H �(5%D�������.�&*���$^g �+k%e � ��3 8^g?����� g 8�k �QgC� � 8 � � %#";k4k

. D�r�6<m / w�6 r�6nv H v$�<}<{ r-{�mp}UmLK ��%'��1���%�' 0 6nv@o-v / zBvyz�{�}<}nv@o%N mpz r�oBv H=/ 3 rB{|m�}B;KqsrBout�r-v@wpm � zzBvE4<t�o-t rB{|m�}Um7K D|m�w�{ 3 K oBm�N 3 mp}pr-oBm�D$N�t���v�{ r 4<t�o r-{ 3 / D|t�o�D 5 3 mp}�x�v@}<{�vy}pr�rBm 3 6<t�}nw�v r�6nvrBvyo�N oBv H=/ 3 rB{|m�}�z¨r-o-t rBv@w�5 / zBv H {�}Wr�6<vSz { NO4<D�{ �<vyoy�

6$7��*7�� � �/F ��� � � < Q\< � > Q_;ZB ��� � Q=F[B >Y�6nvU{|}n{�rB{ tLD ��.&%���" � 3(��$ � { H v@}srB{�r 5�{ zW{�}srBo-m H=/ 3 v H {|}pr-m r�6<v �'m H 5 m7K�r%6nv K / } 3 r-{�mp}H v��<}n{�rB{|m�} / } H vyo { ruzZD|vyt H {�}nw�t��<z¨r-o-t 3 r-{�mp}<zEI

!D��$�� *(<�.�%���" 9���$ �)e 5�����"�� ' g6%�" �. � "����������&� g - � <�.�%���"�9���$��=k�k

bZ6nvyoBv r%6nv�}<m rB{|m�} � / } H v@o { ruzD|vyt H {�}<w t��<z rBout 3 rB{|m�}<z � 3 t } ��v�v T=4no-vyz-zBv H �(5 r%6nv�o-v 3 / o�zB{�xpv 4't�r r-v@o-}.�� "���� � ���&� g �+k%e � ��3 8^g4g : �&� g6%#" %�" 8�k � /�: �&� gC%�" 8�k k ��� �+k

J } 3 mp} 3 o-vMr-v0z�5�}sr-t T�r%6nv ��.�%(��" � 3���$ � { H v@}srB{�r 5�6<tpz r�6nv K mpo�N��.�%���"�� $ � g �4f�$ � �4d f�'+�nb4b $ � � dng 3���$ ��� $ � � $ ��� gA'+�4k � k4k

bZ6nvyoBv $ {|z4r%6nv r 5)4�v9mLK'r�6nv9v T=4no-vyz-zB{�mp} � ;�$ �0{|z�t�}nv:b�r 5(4'v9x�t o-{ t��<D|vNt�} H r%6nv '+��t o-vr�6<vWt��'z¨r-o-t 3 r 3 mp}<z rBo / 3 r-m�ouz 3 mpoBo-vyz�4'mp} H {|}nw±rBm r%6nv 3 m�}<z rBo / 3 rBm�ouz0mLK r%6nv H t r-t�r 5(4�v��/�v@}<v@out�rB{|m�}±mLKCr�6n{ z�K mpo�N { z H v��<}nv H �(5�r%6nv K m7D D|m b {�}nw o / D|v7I-�� <�.�%(��"�9���$��nb

� �4d <�.�%���" g $ � / : �&� g � $ ��� : �&� gA'+� )�*��&� g $ �=k : 1�1igA9���$ � g $�� �$ � '��+k � ���;k k4k4k

��� ��� � ����+�($�; ��� e+d $ � � �($�0 1��+d � e?d $ ����4 ��$ � 3�*��&�#$�� .&3�$�*��+��d $ )e?d 3("���3�� � ���� ��%61ig : �&��9�*��&��$ ��k�d gC3("���3�� � mg $ � $ �=k4kDe?d '+�

Y 5)4�v�{|}=K m�o%N�t�r-{�mp} 4<D|t,5"z t 3 o / 3 { tLDNoBm�D�v�{|} ��.�%���" � 3���$��W{|}srBo-m H</ 3 r-{�mp} t } H z / �<zBv$E / v@}sr 4<oBm 3 vOzBzB{|}nw<��J r§{|z / z v H }<m r�mp}<D\5�rBm H vMrBvyo�N {|}nv bZ6n{ 3 6 {�}'z¨rut } 3 vyz m7KCr%6nv 9���$��t } H <�.&%���" K / } 3 r-{�mp}<zNrBm {�}srBo-m H=/ 3 v7;.� / r tLD z mSrBm�w�v@}<v@out�rBv§t o-w / N v@}sruz mLK6r�6nv0tL4<4<oBm�4no-{|t rBv�r 5(4�vyz K m�o�r%6nvyzBv�{|}<z¨rut } 3 vyzy� Y�6nvWz rBout�r-v@w75 $ 0 1�� H v@o-{�xpvyz0r%6nv�r 5(4�v K oBm�N t�}v T=4no-vyz-zB{�mp}�� Y�6nvWz¨r-o-t rBv@w�5 4 ��$ � 3�*��&�#$�� .&3�$�*���� mG�"r-t�{�}<zSr�6nv 3 m�}'z¨r-o / 3 rBmpo H v 3 D|t�o-t�rB{|m�}'z 3 mpoBo-vyz�4�m�} H {|}nw�rBm�r�6nv�r 5(4�vSmLK �'� lnmpo�vyt 3 6 3 m�}<z rBo / 3 rBm�o�mLK�r�6nv H t�rut�r 5)4�v t�}t��'z¨r-o-t 3 r 3 m�}<z rBo / 3 r-m�o �¯x�t o-{|t��<D�v ��b {�r�6�r%6nv0tL4<4no-m74<oB{ t�r-v9r 5)4�v�{ z 3 m�}'z¨r-o / 3 rBv H �)5 o / D|v: �&��9�*��&��$ � I

W �

Page 34: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

: �&�(9�*(�&��$�� bgA9�*��&��$�� 2 ��3�� g�� � 3 $��+k� g $ � $ �=k4k � d/�0�1�� " g 5����^gA';k� �/�$ . �ig $��qp �$ �=k k��� ��� � ����'e?d '�� ���&��1ig $���0^g � $ �� � $ � k4k�d $+�me?d $��qp

Y�6nv�o / D|v 3 o-vyt rBvyz�t�x�t�oB{ t��<D|v v T=4no-vyz-z {|m�}+b {�r�6 }nv:b2x�t�oB{ t��<D|v ' t�} H { ruz�r 5(4'vp� Y�6nvK / } 3 rB{|m�} 6<tpz0r�6<vWz-tLN v�} / N<��v@oSm7K�t o-w / N v@}sruz�t�z0r%6nv�m�o-{|w�{|}<tLD 3 m�}<z rBo / 3 rBm�oO�VY�6nvm / r�4 / r�m7K�r�6<vVK / } 3 rB{|m�}�{ z mLK�r 5(4�v $ �'��� 6nvyoBvWr�6<v 3 m�}<z rBo / 3 rBm�o?6<tpz�t o-v 3 / o-zB{�xpvt o-w / N�vy}sr:;¥{�} H { 3 t�r-v H �(5�r�6nv o-v 3 / o-zB{�mp}0r 5(4'v $��;¥r%6nv7m / r�4 / rCr 5(4�v $ ��{|zC{�}'z¨rut }srB{ t�r-v H �Y�6nv�m�r�6nvyo�t o-w / N v@}sruzNo-vEN�t�{�}Wr�6nvSz-tLN v�r 5(4'vp�

6$7��*7 ] ��GFRQ_Q=F8>IH ��� >�� Q\F8BL> � V 3> FRQ=F8BL> ?q(4<D|{�r rB{|}nw�t K / } 3 r-{�mp}�{|}srBm t b outL4<4�v@o9t } H t b m�oA��vyo7{|}�x�m7D|x�vOz H vMrBvyo�N {|}n{|}nwAbZ6<v@o-v�{|}r�6<v<��m H 5�r%6nv z�4<D|{ r�{|z 4'vyo K mpo�N v H ;cbZ6n{ 3 6Ux�t o-{|t��<D|vyz9r%6nv b m�oA��v@o�{|z§t��<z rBout 3 rBv H m�xpv@o ;3 o-vyt rB{|}nw§r�6nv H v��<}n{�rB{|m�}�mLKnr%6nv�bNmpo��pv@oCt�} H oBv:4<D|t 3 {|}nw�r%6nv9v T=4no-vyz-z {|m�} {�} r�6nv�b outL4<4�v@o��m H 5:�(5�t 3 tLD D<r-mSr�6<v b m�oA��v@oO�$Y�6<v@o-v�t o-v�zBv@x�vyo-t7Dcb9t,5"z�rBm H mSr%6n{|zy� � v H { z 3 / zBzNm�}<vmLK4r�6<vEN��Y�6nv�z rBout�r-v@w75 )(1+��%#$ < * " 0�B �'o-z r 3 m�NO4 / rBvOz�r�6<v�}nm�}� z r-t rB{ 3 4't outLN vMr-v@ouz ;+��mLK�r�6nvK / } 3 rB{|m�} H v$�<}<{ r-{�mp}�t�} H r�6<v@} z�4<D|{ ruz§r�6nv ��m H 5�� Y�6n{ z§{ z0t 3 6n{|v@xpv H �(5 {|}<z¨rut }srB{ t�r-{�}<w

)�1+� %#$ <�* "�0?b {�r�6 t z¨r-o-t rBv@w�5 K m�o�z�4<D|{ rBrB{|}nw�v T=4no-vyz-zB{�mp}<zEI)�1+��%#$�<�* " 0�Bme��� ��� � g ��*���)�$ ��$&% 3�B �(� ������e+d ;��4k �)�1���%#$ <�*�" 0^g?)�1���%#$�7�8�1�� g � ;+�+k�k

� *�����$ ��$&%�3�B ��� ��� �9v T�rBout 3 r-z r�6nv§}nm�}<z r-t rB{ 3 4<t�o-t7N�v@rBvyo-z�K oBm�N2t K / } 3 r-{�mp} H v��<}n{�rB{|m�}��r�6<v K / } 3 rB{|m�} � z 3 tpz v�z v:D�v 3 rBmpoN / z¨rB��v�r�6<v26nvOt H m7K�r�6<v D|{|z r m7K�}nm�}'z¨rut�rB{ 3 4't outLN vMr-v@ouz{|} m�o H v@o9r-m�zBt rB{ z K 5�r�6nv z rBo-{ 3 rB}<vyz-z oBv E / {�o-vEN vy}pr�m7KCr%6nv 4no-m7N m�rB{|m�}Wr�6nvym�o-vEN�� /�{|x�vy}t }(52D�{ z¨r�8��NmLKnx�t7D / vNt } H r 5(4�v x�t o-{|t��<D�vOzE;yr�6<v7o / D�v )(1+��%#$�7 8 1�� 3 o-vyt rBvyz6t H v$�'}n{ r-{�mp} K m�ot K / } 3 r-{�mp}�b { r%6�tS}<vEb}<t7N�v 'Sr%6<t�r 6<t�z7r�6<v�v T=4no-vyz-zB{�mp} tpz7{�r-z ��m H 5 t�} H t��<z¨r-o-t 3 ruzm�x�vyo 8��"� J r�tLD z m 3 o-vyt�r-vyz�t 3 tLD DNr-m ' b {�r�6 8��Ut�z�t o-w / N v@}sruz@� Y�6nv H v��<}n{�rB{|m�} m7K)�1+� %#$�7�8 1�� t�z-z / N vyz r�6't�r9r�6nv0r 5(4�v 4<t outLN v@rBv@ouzNrBm�tAK / } 3 rB{|m�} t o-v�tLD b t,5"z z¨rut�r-{ 3 �)�1+��%#$ 7�8 1��^g �+��8��+k/b

� �4d g : 1�1ig /�0 1�� " g 5 ���^g ';k� $�k 8��+k� 5�����"�� ' g 5 ���^g ';k ��* " 0;k4k��� ��� � �+��8��Te?d 8�� � ��� �Be+d '��

� ��$����������&�4d : �&�6g 8�� )�*��&� g ��$ 0 1��+d �=k �=kTe?d)� * " 0����$�0 1 �+d%��* " 0 e?d $

/�{|x�v@}�t z rBout�r-v@w�5 �D1+��%#$+K m�o�z 4cD�{�r r-{�}nw t�} v T=4no-vyz-zB{�mp}B; o / D�v )�1+� %#$ <�* "�0�z 4cD�{�r-zr�6<v���m H 5 mLKCt K / } 3 r-{�mp} H v��<}n{�rB{|m�} �(5 3 o-v@v:4n{|}nw / } H v@o9{ ruzD|vyt H {|}nw t��<z¨r-o-t 3 r-{�mp}<z7t�} Hz�4<D�{�r r-{�}<w r�6nv�vET(4<oBvOzBzB{�mp}�{�r�v@} 3 m / }sr-v@ouz r�6nvyoBvp�

)�1+��%#$�<�* " 0^g �#1+��%#$;k/b5 ����"�� ' g 5 ���^g 8;k � * " 0�k �4d � 5 ����"�� ' g 5 ���^g 8;k � * " 0ip�k� "�� ' ���� ��� � �(.�� "������ ����������.�%(��" gC�61+��%6$Te+dcg?� "�� ';k � � �=k�d+� * " 0 e?d+��* " 0ip

Y�6nv z�4<D�{�r oBvOz / D ruzC{|} t } vET=4noBvOzBzB{|m�} � r�6nv 3 tLD D �Ct } H t§}nvEb H v$�<}<{ r-{�mp}���Y�6<v vET=4noBvOzBzB{|m�}�#1+� %#$ e?d g?� "�� ';k ��� � N�t�r 3 6nvyzWr%6nv o-vyz / D�rWm7K z 4cD�{�r r-{�}nwt�wpt {|}<z r�r�6<v+4't�r r-v@o-}g?� "���';k±t } H r%6nv@}�o-vE4cD|t 3 vyzS{ r<�(5 � / z r r�6<v�v T=4no-vyz-zB{�mp}�� Y�6<v �n{|} H {|}nw rBm "�� ' {|z/ zBv H {|}�r%6nv§o-{|w76sr� 6<t } H z { H v�m7KKr�6nv§o / D�v�;�bZ6nvyoBv�t D|{|z r m7KKr bNm H v$�<}<{ r-{�mp}<z7{ z 3 o-vyt�r-v H �q�{|} 3 v b v b t�}sr rBm�z�4<D�{�r�m � r�6nv b m�oA��vyo / } H vyo9r�6nv�� / {\D H v T=4no-vyz-zB{�mp}B;�{ K�4no-vyzBv@}sr:;b v / z vSt�x�t o-{|t�}sr m7KCr%6nv .���"������ ���&� 4<t�rBrBvyoB}Wr�6<t r0bNv�z-t,b ��v K mpoBvp�

W 1

Page 35: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

.�� "���� � ���&���.��.�%���" gC�D1+��%#$;k e� � 3 8^g g : �&� gC%�" C%�" 8�k � / : �&� g6%#" 8�k�� <�.�%(��" g6%�" �#1+��%D$�k4k ��� �#1+��%#$;k

q�{ N {\D t oZ4<t r r-v@o-}<z 3 t�} ��v / zBv H rBm H vOz 3 oB{C��v�m�r�6nvyo 3 mp}srBv T�ruz9{�} bZ6n{ 3 6�t r-o-t�}<z K mpo�N�t�rB{|m�} 6<tpz rBm�r-t���v 4<D t 3 v��> t outLN v@rBv@o-{��@{|}nw§m�xpv@o .�� "������ ���&������.�%���"�t�z�b vED D<tpz �#1���%#$ b m / D H N�t��pv )(1+��%#$��<�* "�0 t 3 m�N?4cD�v@rBvED 5 w�vy}nv@o-{ 3 z�4<D|{ rBrB{|}nw z¨r-o-t rBv@w�5���=�m bNvyx�v@o ; v@xpv@}�t�z H v$�'}nv H 6nv@o-v7;)�1+� %#$ <�* "�0�{ z t wpv@}nvyo-t7DKz¨r-o-t rBv@w�5 K m�o�z�4<D|{ rBrB{|}nw / } H vyo�t }(5�r 5(4�v�t } H rBvyo�N t��<z rBout 3 rB{|m�}'z§t�} H t }(5��.&%���"�z {|} t K / } 3 r-{�mp} H v$�'}n{ r-{�mp}�� Q / o�z�4<D|{ rBrB{|}nwVN v 3 6<t }n{ z�N r%6nv@o-v$K m�o-v w�vy}nv@outLD|{��yvyz§r�6't�r K o-m7N 2 1�� 4 / 4'mp} bZ6n{ 3 6�r%6nv b o-t74<4�v@o�]b m�oA��vyo H v 3 m7NO4�mpzB{ r-{�mp}{|} 2��F?540{|z �<tpz v H � Y�6nv vETsr-o-t w�vy}nv@outLD|{ r 5�{ z / zBv K / D I z�4<D|{ rBrB{|}nw t K / } 3 rB{|m�} H v$�<}<{�rB{|m�}�{�}sr-m�t b o-t74<4'vyo�t�} H t b m�oA��v@o z m�N�v@rB{ N vyz�oBv E / {�o-vyz z 4cD�{�r r-{�}nw / } H v@o�t K / } 3 rB{|m�} � zZD|vyt H {|}nw ��.&%���"�;(bZ6n{\D|vSt�r�m�r�6nvyo rB{ N vyz }<m � .�%���"�z t�oBv 4no-vyzBv@}srO�Y�6nv z rBout�r-v@w75.�� "������ ����������.�%(��"Nw�{|x�vy} 6nv@o-v7{ zCw�v@}<v@outLD�vy}nm / w76�r-m§t 3:3 m�N?N m H t rBv ��m r%6 zB{ r / t�r-{�mp}<z@�

6$7��*7�� � >I@CB � �/F8> HP�}<K m7D H {�}<w {|z H v��<}nv H �(5 r%6nvOK m7D D�m b {|}nw 3 mp}pr-v T�r / tLD o / D�vOz 2 W ?54 r�6't�rSo-vE4<D t 3 v�t7D\D m 3 3 / oBvy} 3 vOz9mLK4t rBm�N z�b {�r�6±r%6nv�}<tLN v�m7K6r�6<v K / } 3 r-{�mp} �'vy{�}nw / }=K m7D H v H �(5�{�r-z ��m H 5��

� � '�*���"��%D� �nb� 5 ����"���' g 5 ��� g 8�k ��* "�0��k� 5 ����"�� ' g 5����^g 0�k� ��* "�0 ��� / 0�1���" g 5���� g 8�k� ��?k �;k �

�4d � 5 ����"���' g 5 ��� g 8�k ��* "�0��k� 5 ����"�� ' g 5����^g 0�k� ��* "�0 ����� *�" 0 Ep � gA������$ ";k k �� ����� � � ��8 1�� ��� ���&�+d ��* " 0 �e?d+��* "�0 Ep

� � '�*���" �+%D� /b� 5 ����"���' g 5 ��� g 8�k ��* "�0� � /�0�1�� " g 5���� g 0�k� ��?k �=k� 5 ����"�� ' g 5 ���^g 0�k ��* "�0 �=k �

�4d 5�����"�� ' g 5 ���^g 8�k ��*�" 0� � � * "�0 � p � gA��� �($�" k4k� ����� � �(� *�$^g6%D��kd g 5 ���^g 0�k � * " 0 �=k � � ��8 1�� ���������+d ��*�" 0 � e?d+��* " 0 � p

6$7��*7� � < Q\< JK;=BLD�B$Q=F8BL>J }�q"v 3 r-{�mp}����a1Ob v H { z 3 / z-z v H 6nm b t 3 t�rutLN m�o%4<6n{ z�N 3 t } ��v H v@o-{�xpv H K o-m7NAt�o-v 3 / o�zB{�xpv H v$�'}n{ r-{�mp} / zB{|}nw�r�6<v 4no-m7N m r-{�mp}�r�6nvym�o-vEN�� Y�6nv 3 mpoBvSm7K r�6nvA4no-m7N m r-{�mp} {|z�r�6nv3 o-vyt rB{|m�}WmLK t K / } 3 r-{�mp}�GeGf ��� � ���� �4d � gC3 g 0��k � � ��g 0 �Ek4k

K m�o�vOt 3 6 3 m�}<z rBo / 3 r-m�o 3 b { r%6 �Zt�oBw / N v@}sr-zy�'Y�6nv K / } 3 rB{|m�} ��{|zWr�6<v@} / }=K m7D H v Hv Tnt 3 r�D 5 mp} 3 v�;pt�} H r�6nv�oBvOz / D�r { z7zB{\NO4<D|{��'v HO/ zB{�}<w0r�6nv�z r-t�} H t�o H o / D�vOzE;�rBmpw�vMr%6nv@ob { r%6t H 5s}'tLN { 3 tLD D\50wpv@}nvyo-t rBv H zBvMr�mLK'o / D|vyz6r�6't�rCo-vEb o-{�rBv7o-v 3 / ouz {|x�v7t74<4<D|{ 3 t�r-{�mp}<z6{|}�x�m�D�x�{|}nwr�6<v 0&%�z7rBm r�6nv�tL4c4noBm�4no-{|t rBv�x�t o-{ t��<D|vyz ��%s��Y�6nv�t��<z¨r-o-t 3 r9z 5�}sr-tLT m7K�r�6<v�{|}n{�rB{ tLD K mpo�NmLK4r�6<v K / } 3 r-{�mp} ��{|z

: �&� g ��� : 1�1igA� � : 1�1^g /�0 1���" gA9�*�����$ �^g 34k /�$ . �ig $�� �$�k4k 0��+k �;k4k

Y�6nvNo / D|v 2�0 ��& .�� ��� 3 oBvOt�rBvOz K mpoCt�z�4�v 3 { � 3 3 m�}'z¨r-o / 3 rBmpo:;yr�6nv D|{|z r-zCmLK 0�t } H ��x¥t�oB{ t��cD�vOzt } H r�6<v 3 m�o-oBvOz 4�m�} H {�}<w H 5�}<t7N�{ 3 oBv:b oB{�rBv§o / D�vOz@��Y�6nv�z rBout�rBvyw75 "+��% ��1+��%�'�0 v T�rBvy} H zr�6<v�}nm�o%N�tLD�zB{\NO4<D|{�� 3 t�r-{�mp} b {�r�6±r%6nvStL4<4cD�{ 3 t rB{|m�}±mLK4r�6nvOz v H 5�}<t7N�{ 3 o / D�vOz@�"+��%'��1���%�' 0^g �+����� �4k e %D��� �����&*��#$^g : 1�1�2�0 ��&�.+��� g ������� �+k ���)������%�3 ��� .+�����+k

> / r rB{|}nw�r%6n{ z r-m�w�v@r�6nvyo r%6nv�o / D|v -�� � 3 o-vyt rBvyz r�6nv§oBv:4<D t 3 v:N v@}sr�K / } 3 rB{|m�} 3 m�o-oBvOz 4�m�} H {|}nw�rBm�t 3 mp}<z¨r-o / 3 rBmpo9mLK4r�6nv�mpoB{|w�{|}<tLD�K / } 3 rB{|m�} � z {|}<4 / r H t�rut r 5(4�v��

W�W

Page 36: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

-���� bgA9�*��&��$�� 2 ��3�� g�� � 3 $��+k� g 4 � $;k4k �4d)���� ��� ���2�0 ��&�.+� ����d�g $ 4 3+kTe?dcg 0�� �+� ��� �4k �� /�0 1���" gA9�*�����$��^gC3 k /�$ .��^g $�� $;k4kQe+d 3#$����"+��%'� 1+��%�' 0 g�� ��� � kd

: �&� g ��� � *���� : 1�1ig ����$�� ��� ���&�+d � � :�1�1igC3�$ 0��+k �=k4k)e?d+����(��*�$^gA*��&3���$�" g � 0 b � 5 ���^g 0�k �

� ����� � g���'���$�3��ig /�0 1 ��" g 5 ���^g � 0�k� C%�"=k k�d 0��+k �?k4kd%�

,�m�rBv r%6<t�r�r%6nv ��m / } H x¥t�oB{ t��cD�vOz�{�}vET=4noBvOzBzB{|m�} ��t o-v�oBvy}<tLN v H r-m N�t {|}sr-t {|}�r�6nv/ }n{ E / v�x�t o-{|t��<D|v§{|}�x¥t�oB{ t }srO�Y�6nvOz v�o-vE4<D t 3 vEN v@}sr K / } 3 rB{|m�}'z t o-v r�6<v@} / zBv H �(5 - ��� � 9���$ ��<�*�" 0WrBm 3 m�}<z rBo / 3 rr�6<v 3 t�rutLN m�o%4<6n{ 3 x�v@ouzB{�mp}�mLKCr�6<t rZK / } 3 rB{|m�} � z�bNmpo��pv@oO��P�}=K m7D H {|}nw r�6<v b m�oA��vyoN{|}±r�6nvb outL4<4�v@o�5�{|vED H z�r%6nv � / { D H 3 t�rut K m�o%N mLK�r�6<vZK / } 3 rB{|m�} H v��<}n{�rB{|m�} ��v@{|}nw0rBout }<z K m�o%N v H �- ��� � 9���$ ��<�*�" 0lb

5 ����"�� ' g 5 ���^g 4;k � k �4d 5 ����"�� ' g 5����^g 4�k� 9���$ � g $�� $ � �&�+k k��� ��� � ��$�0 1 �+d � e+d $�4��

� �#1+� %#$^gA"�*�� �� �(��4 �=kd $ 4'e+dcg $�� $ �=k ���4 ��$ � 3�*��&�#$�� .&3�$�*��+��d $ )e?d 3("���3�� � ���� ��%61ig -����;kd gC3�"���3�� � Qg /�0 1 � " g 5 ���^g 4�k $�4�k� � $ k4kDe?d �&�

Y�6n{ z 3 m�} 3 D / H vyz m / o z-tLNO4<D|v�mLK�r�6nv�z 4�v 3 {�� 3 t�r-{�mp}�� Y�6nv 3 m7NO4<D|vMr-v�rBvET�r�m7K�r�6nvz�4'v 3 { � 3 t rB{|m�} 3 t } ��v K m / } H {|}±r�6nv�}nvET�r 3 6<tL4"r-v@ouz@�

����� � � ��\ ���I% [ #-!��Y�6nv �<ouz r { H vOt�z?K m�o�o-vEb o-{�rB{|}nw�z rBout�r-v@w�5 m74�v@out�rBmpo-z?b {�r�6 w�vy}nv@outLD r-o-t¥xpv@ouzBt7DNm�4'vyo-t�rBmpo-z�t o-v H vyz 3 o-{ ��v H {|} 2��¥� 4ª� J } 2 W ?549r�6nvOz vW{ H vOt�z t o-v K mpo�N�tLD|{��@v H �)5 N vOt }<z mLK§t�}m74�v@out�r-{�mp}<tLDNz v:N t�}srB{ 3 z t�} H t o-v�v T�r-v@} H v H rBmUr�6nvVK / D\D9zBvMr m7K�q(5"z¨r-vEN q�m74�v@out�r-m�ouz�(5±z�4<D|{ rBrB{|}nw�zB{\NO4<D|vSo-vEb o-{ r-v�o / D�vOz {�}sr-m N t r 3 6B; � / { D H t } H z 3 m74�v���Y�6n{ z�t7D\D|m b�z9vytpz 5v T=4no-vyz-zB{�mp}±m7K 3 m�}sr-v T�r / t7D�o / D�vOz@� . }UtL4<4<D|{ 3 t�r-{�mp}�rBm�r%6nv z�4'v 3 { �'t�r-{�mp} mLK m74nrB{ N�{��@vyo-z{ z H { z 3 / z-z v H �0J }Y2 W�X 44{�r�{ z�z�6nm b } 6nm b q=5�z rBv:N^q 3 t�}@�'v / z v H rBm H vyz 3 o-{C�'v x¥t�oB{|m / zK vyt r / o-vyz0t�} H vyx¥t7D / t�rB{|m�} z¨r-o-t rBv@wp{�vOz�m7K rBout H { r-{�mp}<tLD 3 mp} H {�rB{|m�}<t7D4o-vEb o-{�rB{|}nwWz�5"z¨r-vEN�z@�J } 2 W 1 4nr%6noBvyvZ4no-m�w�outLNON {|}nw§{ H {|m7N�zMK mpoB'7( %�2�( -�* � � 2&( ( $%)+ 4 2�( � �.*,+.- t�oBv z r /cH {�v H ICo-v$3 / o-zB{�xpv 4<t r r-v@o-}<zE; 3 mp}srBv T�r / tLD�o / D�vOzE;"t } H m�x�vyo�D t,5"z@�$Y�6nv§{ NO4<D|vEN v@}sr-t rB{|m�}WmLK�w�vy}nv@o-{ 3tLD|w�mpoB{�r�6cN z§z / 3 6 t�z / zBv H K mpo§x�t�oB{ t��<D|v o-v@}'tLN {�}<wWt } H z / �<z¨r-{ r / rB{|m�} {|z H { z 3 / z-z v H {|}2 W � 4 � lnmpoWt H { z 3 / z-z {|m�}m7K0o-vED t�r-v H b m�oA��m�}o-vEb o-{�rB{|}nw z rBout�rBvyw�{|vyz�zBv@vY2 W�X 4ª� Y�6nvo-vED t�rB{|m�}WrBm m�r�6nvyo�z 5"z rBvEN�z K mpoZ4noBmpw�outLN$r-o-t�}<z K mpo�N�t rB{|m�}�{ z H { z 3 / z-z v H {|} 2 W ?54ª�YCv 3 6n}n{ E / vyz K m�o 4no-m�wpo-t7N K / zB{�mp} 3 t } ��v 3 D t�z-z { �<v H {|}srBm�r b m@�no-mpt H 3 t rBvyw�m�o-{|vyz:I'� 72&% � � � � 2 '� 7�Ut�} H �72�� �$6 � 2�("*8#�+�� � 2 '� 7��� Y�6<v vOt o%D�{|vyz r�rBv 3 6n}n{ E / vyz K m�o 4no-m�w�outLN K / zB{�mp}2 ?<;=1L9=; W �);n��4 bNvyoBv§z vOt o 3 6/ �'t�zBv H ��Y�6<vyzBv�o-vED 5 mp}�t }<t7D\5"zBvyz m7KKr�6nv !$#�� � � 6/+F!$# � � r-o-t�}<zDK m�o%N�t�r-{�mp} 4noBm 3 vyz-z mLKS / ouz¨rutLD DCt�} H H§t�o�D|{|}nw r-m�}�rBmVK / zBv 3 m�NO4'msz {�rB{|m�}<z�mLK o-v 3 / o-zB{�xpvK / } 3 rB{|m�}<zy� J } z vOt o 3 6/ �<t�zBv H K / z {|m�}�{�rS{|z�}<v 3 vOzBz-t o%5�rBm �pv@vE4�r-o-t 3 �Ut�rSvyt 3 6�z rBv:4 m7Kr�6<v rBout }<z K m�o%N�t�r-{�mp}A4no-m 3 vOzBz m7K�t7D\DcK / } 3 rB{|m�} 3 t7D\D z�r%6<t�r6't¥x�v ��v@v@} N�t H v�� ,�v:b K / } 3 rB{|m�} H v��<}n{�rB{|m�}<z r-m �'v / z v H {|} / }=K m7D H {|}nw N / z¨r r%6nv@} ��v�{�}srBo-m H=/ 3 v H � q�vOt o 3 6/ �'t�zBv HK / zB{�mp}�{ z9z 5"z rBvEN�t rB{ 3 ;.� / r9oBv:D�{|vyz mp} 3 D|v@xpv@o 3 m�}sr-oBm�D N v 3 6't }n{ z N�z7rBm t¥x�mp{ H r%6nv 4'mszBzB{��n{ D�{�r 5�m7K6{�}��<}n{�rBv�z v E / v@} 3 vyz mLK6rBout }<z K m�o%N�t�rB{|m�}'z3�(5�o-vE4�vyt�r-v HV/ }=K m7D H {|}nw�mLK�K / } 3 r-{�mp}H v��<}n{�rB{|m�}<zy� . z t§oBvOz / D�r:;pw�m�m H { NO4<D�v:N v@}sr-t rB{|m�}<z�m7K�zBvyt�o 3 6/ �<tpz v H K / z {|m�}�r-v 3 6n}n{ E / vyz6<t¥xpv���v@vy}�zBm7N v:bZ6<t�r H {a0 3 / D�r�rBm�t 3 6n{�vyx�vp�

W �

Page 37: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

Y�6nvAb t�o�N K / zB{�mp} N vMr%6nm H t�} H r%6nv�z 6nmpo r 3 / r�rBm H vEK m�o-vyz r-t�r-{�mp} bZ6n{ 3 6U{�r K¯t 3 { D�{�r-t�r-vyz t o-v�{|} r�6<vVN m�o-v oBv 3 v@}srSr-o-t H {�rB{|m�} mLK 3 t7D 3 / D t�rB{|m�}� �<tpz v H K / z {|m�} 2 1�?=;N���L;M1p�);�F?<;4� W 4 � J } 3 tLD 3 / D t�r-{�mp}/ �<t�zBv H K / zB{|m�}Ur%6nv oBv 3 / ouzB{�xpv z¨r-o / 3 r / oBv�mLK7vOt 3 6 3 m7NO4�m�}nvy}sr4<t�o r-{ 3 {\4<t rB{|}nw {|}�r%6nv K / z {|m�}W{|z N�t H v�v T=4<D|{ 3 { rO��Y�6n{|z vy}<t��<D|vyzK / zB{�mp} �(5 H {�o-v 3 r9t74<4<D|{�3 t rB{|m�}Um7KNzB{\NO4<D|v r-o-t�}<z K m�o%N t rB{|m�} D t,b�z0D|{ �pv r%6nv 3 t�rut& � / { D H o / D|v t�} H r%6nv t 3 { H out {|}r�6<v@m�o-vEN 2 1s� 4 ��Y�6<v r�6nvym�o-vMr-{ 3 tLD��<tpz { z�K mpo 3 t7D 3 / D t�rB{|m�}� �<tpz v H K / z {|m�} D|{�vOz {|} r�6nv§z¨r /cH 5mLK �7#&+ '7( %)6 ��("*��& <2 � -G#�%)*,( �/4;* �$' 2 U=;�� 9=; 1 ~ 4ª������ _ ' �"')! � [ #-!��Y�6nv {\NO4<D|vEN vy}prut�r-{�mp} m7Kc4no-m�w�outLN K / zB{|m�} t7D�wpm�o-{ r%6<N�z6m���vyo-z�N�t }(5St H<H {�rB{|m�}<t7Dsm�4<4�m�o�r / }n{ r-{�vOzZK mpo {�}�x�vOz¨r-{�wst�r-{�mp}�� . N m�}nw r%6nv�{ zBz / vyz�4�v@oBr-t�{�}<{�}nw H {�o-v 3 r�D 5�rBm�r%6nv qsr-o-t rBv@wpm{ N?4cD�v:N�vy}sr-t�r-{�mp}Ut } H N vyoB{�rB{|}nw�t�rBrBvy}pr-{�mp}Ut o-v7I vET=4'vyoB{ N v@}srB{|}nw�b {�r�6 x�t o-{|m / z mpo H v@ouzt } H z rBout�r-v@w�{|vyz?K mpo�tL4<4cD\5�{|}nw�r�6nvUzB{\NO4<D|{ � 3 t rB{|m�}�rBout }<z K m�o%N�t�rB{|m�}'z �9v T=4�v@o-{\N vy}pr-{�}<wb {�r�6 N m�o-v / }<K m7D H {�}<w�mLK�K / } 3 r-{�mp} H v$�'}n{ r-{�mp}<z2bZ6nv@} 3 m�}�x�vyo r-{�}<w�oBv 3 / ouz {|m�}±r-m 3 t r-t&N m�o%4<6n{ z N�zNx�{|t K m�D H 4no-m7N m r-{�mp}�z m r�6<t rK / zB{�mp}�{ zN}<m r / }n}nv 3 vyz-zBt�oB{ D 5;�<D|m 3 ��v H ��N�t��G{|}nw {|}<D|{�}<{�}nw N m�o-v 3 m�}srBvET�r zBv@}<zB{�rB{|x�v7;Nz m r�6<t r � / { D H 3 t r-t K m�o%N�z t�oBv±{�}cD�{|}nv H m�}cD\5bZ6nvy}r�6nvyoBv {|z�r�6nv 4'mszBzB{ �<{\D|{ r 5 m7K K / z {|m�}Gx�{ t r�6<v z 6<m�oBr 3 / r ��t } H vET�rBv@} H {�}<w r�6nvrBout }'z K mpo�N�t�r-{�mp}<z0b {�r�6 /�{\D D � z ��.�4.�&����$�� S v@} 3 6<N�t�o���{|}nw�rBm H v@rBv@o%N {�}<vSr�6<v zBv@}'z v �¯z7�{|} bZ6n{ 3 6 H vEK m�o-vyz rBv H 4<oBmpw�outLN�z t o-v � ��vMr r-v@o ��r�6<t�} r�6nvy{�oN�mp}nm7D|{�r�6n{ 303 m / }srBvyo�4<t�o ruz4{|ztLD zBm tL4c4noBm�4no-{|t rBvZK mpoNr%6nv 3 / o-oBvy}sr b9t o%N K / z {|m�}W{\NO4<D|vEN v@}srut�rB{|m�}6�7q�m { z 3 m7NO4<t�oB{ zBm�}mLK4r�6<v qsrBout�r-v@w�m z�4'v 3 { � 3 t rB{|m�} b { r%6±m�r�6nvyo {\NO4<D|vEN vy}prut�r-{�mp}<z mLK�b t�o�N'K / z {|m�}6�Q�r�6<v@o0D|{�}<vyz�m7K {�} E / {|o%5�{|}sxpm7D|x�v�r�6<v {|}pr-v@wpo-t rB{|m�}±mLK t / r-m7N�t�r-{ 3 K / z {|m�}�r-msm�D|z�{�}sr-mv T"{ z¨r-{�}<w�z�5"z¨r-vEN�z@� G t } H { H t�rBv9z�5�z rBv:N�z�{�} 3 D / H v r�6nv9m74nrB{ N�{��@vyo�mLK<r%6nv ) � 9 3 m�NO4n{\D|v@oH { z 3 / z-z v H {|} 2 1LU<; W ?54 ;6t�z b vED D t�z�z r-t rBv$ mLK,ªr�6<v$ t oBr K / } 3 rB{|m�}<t7D�D|t�}nw / t w�v 3 m�N?4<{\D|v@ouz@�,�v:N vMr�6 2 1n� 4(6<t�z6oBv 3 v@}sr%D\5�{\NO4<D|vEN vy}pr-v H b9t o%N K / z {|m�} {�}�r%6nv / D t�zBw�m b =�tpz��pvED D G m�N;4n{ D�vyo�t } H o-vE4�m�oBrBv H ��v@} 3 6cN t�o��"z m�} 4no-m�wpo-t7N�z�K o-m7N r%6nv�}nm�� � z / {�rBv 2 171 4ª�

l4{�}'tLD D\5�;�out�r�6<v@oWr�6<t�} / zB{�}<w qsr-o-t rBvyw�m�tpzWt rBm�m�D§r-m 6<vED 4 H vyvE4�v@}3m / o / } H vyo�z r-t } H {�}<w mLK04<oBmpw�outLN K / z {|m�}�rBv 3 6<}n{CE / vOzE;�b v 3 t } r / o-}�r�6<vWo-vED t�r-{�mp}<z 6<{\4���vMr b v@vy}z rBout�rBvyw75 �<t�zBv H D|t�}nw / t w�vOz�t } H 4<oBmpw�outLN K / zB{|m�} m�} {�r-zA6nvOt H t } H t�z�� t���m / r 4'mszDzB{ �<D|v tL4<4<D|{ 3 t�r-{�mp}<z�m7K�K / zB{�mp} rBm�z rBout�rBvyw75 �<t�zBv H D t }nw / t wpvyzy� G t } bNv K m�o%N t7D�{��@v m / o{|}pr / {�rB{|m�} r�6't�r 3 v@oBr-t {|} 3 m�N<�n{|}<t�r-{�mp}<z m7K�z rBout�r-v@w�{|vyz z�6nm / D H r%6nvEN�zBvED|x�vOz>�'v§tLN v@}<t��<D|vrBm�z / { rut��<D|v0K mpo�N�z m7K6z¨r-o-t rBvyw75AK / z {|m�}�� J¨z7{�r 4�mpz-zB{ �<D|v7;�K m�o v Tnt7N?4cD�v�;�r-m N�t��pv04no-v 3 { zBvr�6<v�m��<zBv@o-x�t�rB{|m�}�r�6<t r� 9 g $ � � � � $ �Ek � � 9 g $�Ep � ��� $ � p$k e � $ �� � $ Ep � � � ��� � $���� � $ �ip

t�z-z / N {�}nw�r%6<t�r r%6nv0rBvyo�N r%6<t�r�{ zB� / { D�r�{|z9}<m r / zBv H t wst {|}��

������� ��# �)( �,'a`"+1#-���v 6<t¥xpv 4no-vyzBv@}srBv H t 3 tpz v z¨r /cH 5�mLK r%6nv t74<4<D|{ 3 t�rB{|m�} mLKNqsr-o-t rBv@wpm rBm � / { D H t 3 m�N;4<D|vMr-v7;�}nm�}/ªrBo-{|xs{ tLD$4no-m�w�outLN rBout }<z K m�o%N�t�rB{|m�} z�5"z¨r-vEN��0YCt��<D|v����|�Sz�6nm b�z r%6nv zB{��yvyz�m7Kr�6<v2N�t {|} 3 m7NO4'mp}nv@}sruz mLKKr%6nv§rBout }<z K m�o%N�t�rB{|m�}�z�5"z¨r-vEN${�}W} / N<��v@o mLKBN m H=/ D|vyz:;�D|{|}nvyzmLK 3 m H v@� r-v T�r�{�} 3 D /cH {|}nw 3 m7NON v@}sruzA� ;�} / N<��v@o�m7K7o / D�vOz�t } H } / N<��v@o�mLK9z¨r-o-t rBvyw�{|vyzy�,�m�rBv�r%6<t�r�r%6nvyzBv �<w / oBvOz H m }nm r�{|} 3 D /cH vUr�6nvUzB{�wp}<t�r / o-v�t�} H r�6nv 4no-vMrBr 5 ]4no-{|}pr-{�}<wN m H=/ D|vyzy�3H�{ z rBo-{ � / rBv H m�xpv@o9r-{\N v7;<{ r�r-m�m�� / z�t���m / r W ~ H t,5"z rBm H vyx�vED|m74Wr�6<vSv@}srB{|o-vrBout }'z K mpo�N�t�r-{�mp}�rBm�m7D$K o-m7NAz 3 o-t r 3 6U{|} 3 D /cH {�}nw±t�z�5�}prut T H v��<}n{�rB{|m�} K mpo K / D\D>=�tpz��pvED D��Y�6nv H v@xpvED|m74<N vy}pr�rB{ N v�{�} 3 D / H v H �<} H {|}nw�m / r 6nm b$r-m 4noBmpw�outLN {�} qsrBout�r-v@wpm�t�} H

W)X

Page 38: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

D|t�}nw / t w�v 3 m7NO4'mp}nv@}sr N m H 9�Q G 3 m�}<z o / D|vyz z¨r-o-t rq/H�l =§t�z���vED Dª� z H K ? X ~ W ~p~

�qsrBout�r-v@wpm � t o%N l / z {|m�} ��� � W 9 ~ ?p~ W �qsrBout�r-v@wpm l<m�o%N t r 3 6nv 3 ��{|}nw � 1�~�1 � � W 1qsrBout�r-v@wpm =§t�z���vED D 9�{C�nout o%5 � 1 �G? ~ W 1 1"�qsrBout�r-v@wpm =§t�z���vED D ,�mpo�N�t7D�{��@v � � X ~ ��� WqsrBout�r-v@wpm =§t�z���vED DBY 5)4�v 3 6<v 3 � � �,1 ~ � � W ?qsrBout�r-v@wpm q / �"rBm�r-tLD4q(4'v 3 { � 3 t rB{|m�} �:U � W U�1 1 � 1 W 9 WqsrBout�r-v@wpm q�{|w�}'t�r / oBv 1LU X ��� �y~ W ~ ~qsrBout�r-v@wpm >7oBv@r r 5 >7oB{|}srBvyo 1LU ?���� ~ 9p~ �qsrBout�r-v@wpm YCm rutLDCq(4�v 3 {�� 3 t�r-{�mp} �¥� 1 X 9s� �y~ X 1"� W �O~�~qsrBout�r-v@wpm qsr-o-t rBvyw�m 9�{C�nout o%5 ��U W ? W � ? X � W � W �¥�

Y4t��<D|v ���|�7IUq�{��@v N vMr-oB{ 3 z m7K2N�t {|} 3 m7NO4�m�}nvy}sr-z mLK§r�6nvUz�4�v 3 { � 3 t�rB{|m�}6� � vytpz / o-{|}nw} / N<��v@o9m7K�N m H</ D�vOz� N m H �_;=D|{�}<vyz9mLK 3 m H v �89�Q G �7{|} 3 D /cH {|}nw H m 3 / N v@}srut�rB{|m�}�;s} / N:��v@o�m7K 3 mp}<z rBo / 3 r-m�ouz�� 3 mp}<zA� ;no / D�vOz t } H z rBout�rBvyw�{|vyz�¯z rBout�r)�`�

H vyx�vED|m74<{�}nw 4no-m�w�outLNON {|}nwU{ H {�m�N�z@� Y�6<t r�{ z:;bZ6nvy} / } H v@oBr-t���{|}nwUr%6n{ z 3 t�zBvWz r / H 57;qsr-o-t rBv@wpm b9t�z t�}nv:b D t }nw / t wpv7; vyx�vy} K mpo�{ ruz�t / r%6nm�o ;Nt�} H H {|z 3 m�xpv@o-{�}nw { H {�m�N z m7K/ zBv �'v:5�mp} H r�6nv<�<t�zB{ 3 4't out H {|w7N rut��pvyz9r-{\N v���Y�6nv H v@x�v:D�m�4<N v@}sr0b9t�z t { H v H �)5�r�6nvb vytLD�r�6 m7K�wpv@}nvyoB{ 3 ; D|t�}nw / t w�v±{|} H vE4�v@} H v@}sr�o / D|vyz�t�} H z¨r-o-t rBv@wp{�vOz {�}�r%6nv qsr-o-t rBv@wpmD|{ �nout o%52 W7W 4 �Y�6n{ z 3 t�zBv�z¨r /cH 5 z¨r-oBvy}nw r%6nv@}'z�m / o x�{�v:b r%6<t�r�oBv:b oB{�rB{|}nwUz rBout�r-v@w�{|vyz t o-v�t w�m�m H

4<t�o-t H {�w�N K m�oCr�6nv9{ N?4cD�v:N�vy}sr-t�r-{�mp} m7Kc4no-m�w�outLN¬rBout }'z K mpo�N�t�r-{�mp}Sz 5"z rBv:N zy�MY�6nv z�4�v 3 { � 3 t rB{|m�} { z06n{|w76<D 5 N�m H=/ D|t�o§t�r�tLD D�D|v@x�v:D|z�t } H 3 t } vytpz { D 5 ��v N m H {��'v H mpo�v T�rBvy} H v Hb {�r�6 }nvEb rBout }<z K m�o%N�t�r-{�mp}<z@�?J r b {\D D7zBv@o-x�v t�z�r%6nv �<t�zB{ 3 {|}=K out�z rBo / 3 r / oBv?K mpo2K / o r%6nv@ov T=4�v@o-{\N vy}prut�r-{�mp} b {�r�6�rBout }<z K m�o%N�t�r-{�mp}<z�m�} K / D\D =§t�z���v:D\Dª� Y�6<vUz 4�v 3 {�� 3 t�r-{�mp}�tLD zBm4no-m�x�{ H vOz v Tnt7N?4cD�vOz mLK�zBv@xpv@outLD'qsr-o-t rBvyw�m�{ H {�m�N�z r�6't�r 3 t } ��v / zBv H {|}�r%6nv�{ NO4<D�v:N v@}/rB{|m�}�m7K4r-o-t�}<z K m�o%N t rB{|m�}�z 5"z rBv:N z K mpo�m r%6nv@o D|t�}nw / t�w�vOz@��J } 4<t�o r-{ 3 / D t o9r�6<v z 4�v 3 {�� 3 t&rB{|m�} z�6nm b�zNr�6nv / z v0m7K 3 m7NO4'm / } H o / D�vOzE;"o-v 3 / ouz {|x�v 4<t�rBrBvyoB}<z:; H { z rBo-{ � / rBv H 4<t r r-v@o-}<zE;v T 3 6<t�}nw�v�mLK�{|}=K m�o%N�t�rB{|m�}���vMr b v@vy} rBout }'z K mpo�N�t�r-{�mp} o / D�vOz�r�6<oBm / w76 4't outLN vMr-v@o-{��yv Hz rBout�rBvyw�{|vyz t�} H r�6<v 3 m�NO4<t 3 r7z 4�v 3 {�� 3 t�r-{�mp}�mLK�x�t o-{|t��<D|v oBvy}<tLN {|}nwc;sz / �'z¨r-{ r / rB{|m�}B;"t�} HK o-v@v0x�t o-{|t��<D�v 4no-m � v 3 r-{�mp}�� ���#� � � 4�%���&�%6� %6� " � Y�6nv t / r�6nmpo-z bNm / D H D�{C��v rBm r�6<t�}��x�t o-{�m / z±t }nmp})5(N m / zo-v K v@o-v@vOz K m�o r%6nv@{|o 3 m�N?N vy}pruz9m�}�vyt�o�D|{|v@o9x�vyo-zB{�mp}<z mLKCr�6n{ zZ4<t74'vyoy�

W ?

Page 39: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� �

� � � � � �

Y�6n{ z 3 6<tL4"r-v@o�4no-vyzBv@}sr-z7r�6<v�xpv@oA�<t�r-{\N {|}<4 / r t�} H m / r�4 / r mLK�r%6nv b t�o�N K / zB{�mp}�r-o-t�}<zDK m�o%N�t�r-{�mp}�rBm�m�D K m�o z vyx�vyo-t7D�z�N�tLD D 4noBmpw�outLN�zy��Y�6nv0m / r�4 / r9{ z9w�{|x�vy}W{|}Wr bNm�x�vyo-zB{�mp}<zy�J }Wr�6nv��<ouz¨r9r�6<v�r 5(4�v0t�}n}nm�r-t�r-{�mp}<z 6<t¥x�v��'vyv@}±z¨r-oB{ 4<4�v H mLKCvET=4noBvOzBzB{|m�}<z rBmO4no-m�xs{ H v�to-vyt H t��<D|v 4noBmpw�outLN��MY�6nvSz v 3 mp} H { z9r%6nv�oBvOz / D r�m7KCr%6nv0rBout }<z K m�o%N�t�r-{�mp}Vb {�r�6UtLD D�r 5(4'vt }<}nm rut�rB{|m�} 4no-vyzBv@}sry�

Z ��� �Y+�`�� `� 7869786 � >� � Q�&* "�.+� � ) � ) ��� ��� � �

��� <�*�*��������&�

"���$�� < *�*��me $���� ��� � /�� .����

��� !D��$ ��4 �����

g�o+k b b !D��$ � d !D��$ � d !D��$��g �;k b b !D��$ � d !D��$ � d !D��$��gJd k b b !D��$ � d !D��$ � d <�* *�� �g e4e=knb b !D��$ � d !D��$ � d <�* *�� �

��j�. ��� �lb4b !D��$ �4d !D��$����j�. ��� �meBf�8 � dcg 8/o 8�k �

��� ,�% ��$+�

"���$�� ,+% ��$ � e �&%�� ��9�*��&� �cgA,�% ��$ � k �

�&��1 b4bmg?� �4d+�Ek �4d ,+% ��$ � � d ,�%���$�����&��1'eGf�' � �4d

3������ � * '� �&%(� �4d+�&%��� 9�*(�&� 8 8�� �4d 9�*���� gA' 8�k6g �&��1 ' 8+�+k

W �

Page 40: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� �

'�*���" � b4b � �4dng?� �4d+� �4d+�Ek �4d ,�% ��$ � �4d+���'�*���" � eGf(� 3 8�� �4d

3�� ��� 8�� * '� �&%�� �4d �� 9�*��&� 0 0�� �4d 3 0 gA'�*���"�� � 3 0��+k� �

.�1�$�* b b !D��$ � d !D��$ � d ,�%���$ !D��$��.�1�$�* eBf�� * � �&%#4 � �4d

3����(� ��*�Gd���%#4 � * '� $ ��� ��� �4d 9�*���� � *� g .�1�$ * g � *��� �k6g ��%#4 �Ek k� /�� .�� �4d)�&%��� �

�#.�� b4b ,�% �#$ !6��$ �4d !6��$���#.�� e '�*���" � �cg �;k �

��*��nb4b !D��$ �4d !D��$ �4d !D��$����*��TeGf�� *+��% �4d

�#.�� g ����1igC��j�.���� �=k�g . 1�$ * � *��&%4k4k

� 78697�� � �IQ � Q�&* "�.+� � ) � ) ��� ��� � �

"���$�� < *�*��me $���� �����/ � .����

g�o+k b4bmg6!D��$�k �4d g6!D��$�k �4d !D��$��

g �;k b4bmg6!D��$�k �4d g6!D��$�k �4d !D��$��

gJd k b4bmg6!D��$�k �4d g6!D��$�k �4d <�*�*�� �

g e4e=knb b g6!6��$�k �4dng6!D��$;k �4d < *�*�� �

��j�. ��� �lb4bmg6!D��$;k �4d !6��$��

��j�. ��� �melgJf 3 ��� �4dgC3 ���Bo 3 ���=k k �

"���$�� ,+% ��$ � e �&%����9�*���� gA�=k gA,�% ��$ �=k �

�&��1 b4bmg4g?� k � d)�Ek �4d gA,�%���$ �=k � d ,+% ��$����

W U

Page 41: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

�&��1'e gJf�" ��� � ��� �4d��.�%(��" gA,�%���$+� ���

�4f�' � � dgJf � ��� ' ��� �4d3���$���� ,�% �#$ � ������� ' � � g?� ��� )gJf�4 ��� � ��� �4d

' ��� gA" ��� g 4 ��� k4k6g � ��� k4k4k�g?� ���=k k4k�k �

'�*���" � b4bQg �Ek �4d g4g?�=k �4dng �Ek �4d+�Ek �4dcg ,�% ��$ �=k �4d+���

'�*���" � e gJf � ��� � ��� � ��� �4d3���$ ��� ,�% ��$ 4 ����� � � ����� g � ��� � ���=k6g?� ���=k4k �

.�1�$�* b b g6!6��$�k �4dng6!D��$;k �4d ,+% ��$ !D��$��

.�1�$�* elgJf * ��� 1 ��� �4d��.&%���" gA,+% ��$ !6��$

�4f(� � � �4dgJf�% � � � � � �4d� ��$ � � � � elgJf�� � � � d

3����(�cg?� � � d 1 ���=k * '� $���� ��� �4d � � � g � � � kEg � � � g g � � � ��k4k4k� / � .�� �4d % � �� k �

%D� � � � g?* ���=k4k4k4k �

�#.�� b4bmgA,�%���$ !D��$�k �4d !D��$��

�#.�� e 3���$ ��� ,�% ��$ !D��$ � �A!D��$ � g � Tg �=k4k �

��*��nb4bmg6!D��$�k �4d g6!D��$�k �4d !D��$��

��*��Te gJf�j ��� � ��� �4d� ��$ � j ��� e g f�� ��� �4d

3������ng � ���'d � ��� k *�'� $ ��� ��� �4dngC��j�. ��� � g � ���=k � j ��� g4g � ��� ��k k4k� /���.�� �4d �� k �

%D�'j ��� g j ��� k4k

� 78697 � �IQ � Q�� � � � �� �: V ����&* "�.+� � ) � ) ��� ��� � �

"���$�� < *�*��me $���� �����/ � .����

g�o+k b4bmg6!D��$�k �4d g6!D��$�k �4d !D��$��

W 9

Page 42: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

g �;k b4bmg6!D��$�k �4d g6!D��$�k �4d !D��$��

gJd k b4bmg6!D��$�k �4d g6!D��$�k �4d <�*�*�� �

g e4e=knb b g6!6��$�k �4dng6!D��$;k �4d < *�*�� �

��j�. ��� �lb4bmg6!D��$;k �4d !6��$��

��j�. ��� �melgJf gC3 ���lb4b !6��$�k b4b !D��$ �4dg4g�o+k b4bmg6!D��$�k �4dng6!D��$�k � d !D��$�k6g4gC3 ���cb4b !D��$�k k6g4gC3 ���nb4b !D��$�k k4k �

"���$�� ,+% ��$ � e �&%����9�*���� gA�=k gA,�% ��$ �=k �

�&��1 b4bmg4g?� k � d)�Ek �4d gA,�%���$ �=k � d ,+% ��$����

�&��1'e gJf gA" ���lb4bQg?� ���=k �4d+� ��� k gA� ��� b4b ,�% ��$ � ���=k b4b ,+% ��$�� ��� �4d��.�%(��" gA,�%���$+� ���

�4f�' � � dgJf g?� ���lb4b ' � �k gA' ��� b b g � ���=k �4d gA' � k � d ' � �k b4b ' � �4d3���$���� ,�% �#$ � ������� ' � �g4g?� ��� b4b ' � k gJf g 4 ���lb4b � ���=k g � ��� b b ' � �k �4dgA' ���lb4b g � ���=k �4dngA' � k �4d ' � �kg4gA" ���lb b g?� ���=k �4d � ���=kEg4g 4 ���nb4b � ���=k4k4kg4g � ���lb b ' � �k4k4k4kEg4g?� ��� b4b ,�% ��$ � ���=k4k4k4k k �

'�*���" � b4bQg �Ek �4d g4g?�=k �4dng �Ek �4d+�Ek �4dcg ,�% ��$ �=k �4d+���

'�*���" � e gJfqg � ���lb4b � ��� k�g � ��� b4bmg 4 ��� k � dng � ���=k �4d+� ���=k g � ��� b4b ,�% ��$ 4 ��� knb b� ��� � d3���$ ��� ,�% ��$ 4 ����� � � ����� g4g � ��� b4b� ���=k mg � ��� b4b g 4 ���=k �4dng � ���=k �4d � ���=k4kg4g?� ��� b4b ,�% ��$ 4 ��� k4k4k �

.�1�$�* b b g6!6��$�k �4dng6!D��$;k �4d ,+% ��$ !D��$��

.�1�$�* elgJf gA* ���lb4b !D��$�k g 1 ��� b4b !6��$�k b4b ,�% ��$ !D��$ �4d��.&%���" gA,+% ��$ !6��$

�4f(� � � �4dgJf gC% � � b4b � � � k g � � � b4b gC!D��$�k �4dng � � � k �4d � � � k b4b � � � �4d� ��$ � � � � elgJf g � � � b4b !6��$�k b4b�� � � �4d

3����(�cg gJd k b4bmg6!D��$�k �4d g6!6��$�k �4d <�*�*�� kg4g � � � b4b !6��$�k4kg4g 1 ���lb4b !6��$�k4k * '

� $���� ���lb4b <�*�*��� dng � � � b4bmg6!D��$�k �4d g � � � k �4d � � � k

g4g � � � b4b !6��$�k4kg4g � � � b4b gC!D��$�k �4d � � � k

g4g4g �=knb b g6!6��$�k �4dng6!D��$;k �4d !6��$�kg4g � � � b4b !D��$�k4k

�s~

Page 43: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

g4g b4b !D��$�k4k k4k� / � .�� b4b�<�*�*�� �4dng6% � � b b � � � k� k �

%D� g � � � b4bmg6!D��$�k � d � � � kg4g?* ���lb4b !6��$�k4k4k k4k �

�#.�� b4bmgA,�%���$ !D��$�k �4d !D��$��

�#.�� e 3���$ ��� ,�% ��$ !D��$ � �A!D��$ � g g �nb4b !D��$;k mg4g �;k b4bmg6!D��$�k �4dng6!D��$�k �4d !D��$;k4k �

��*��nb4bmg6!D��$�k �4d g6!D��$�k �4d !D��$��

��*��Te gJf g j ���lb4b !D��$�k g � ��� b b !D��$�k b4b !6��$ �4d� ��$ � j ��� e g f g � ���lb b !D��$�k b4b !6��$ �4d

3������ng4gJd?knb bmgC!D��$�k �4dng6!D��$;k �4d < *�*�� kg4g � ���lb b !D��$�k4kg4g � ���lb b !D��$�k4k * '

� $ ��� ���lb4b <�*�*�� �4dng4g �=knb b g6!6��$�k �4dng6!D��$;k �4d !6��$�kg4gC��j�. ��� �cb4bmg6!D��$�k �4d !D��$�k

g g � ���lb4b !D��$;k4k4kg4g j ��� b4bQg6!6��$�k �4d !D��$�k

g g4g �;k b4bmg6!D��$�k �4d g6!D��$�k �4d !D��$;kg4g � ���lb4b !D��$�k kg4g b b !D��$�k4k4k4k

� /���.�� b4b < *�*�� �4d g � b4b !6��$�k� k �

%D� g j ��� b4b gC!D��$�k �4d !D��$;kg4g j ��� b4b !D��$;k4k4k

Z �JZ �B\ +1! `� 7�� 786 � >� � Q�&* "�.+� � B �+%D��� ������� � �

g �;k b4b !D��$ �4d !D��$ �4d !D��$��

"���$�� B��+%#� ���Be B �+%#� �)���

%�" b4b � �4d ���%�" eGf 8 �4d 8��

%D�&3nb4b !D��$ �4d !D��$��%D�&3TeGf 8 �4dng 8 � �k �

� ���(1 b b B ��%#� ��� �4d B �+%#��� ���

�'�

Page 44: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ���(1BeBf 1 �4d 3����(� 1 * ' � B��+%#� 8 0 �4d B �+%#� 0 8 � �

3�� * ���nb4bQg?� � d 3+k �4d g � �4d ";k � d B��+%#� ��� �4d B �+%#� 3 "��3�� * ���TeGf ' 4 1 �4d 3(����� 1 *�' � B �+%#� 8 0 � d B ��%#�lgA' 8;k g 4 0�k � �

�#1+� %#$ b4bQg?� � d)�Ek �4d g?� �4d 3+k � d � �4d B �+%#��� 3 ��#1+� %#$ eGf ' 4 8 �4d B��+%#�lgA' 8�k g 4 8;k �

� "�" b4b B �+%D� !6��$ !D��$ �4d !D��$��� "�" eGf 1 �4d 3������ 1 * ' � B �+%D� %+� �4d % � � � �

� ���(1�� "�" b4b B ��%#� !D��$ !D��$ �4d !D��$��� ���(1�� "�" eBf 1 �4d � "�" g � ����1ig 1Ek4k �

$ ���#$ b4b !D��$ �4d !D��$��$ ���#$ �eGf 8 � d � " " gC� ���(1igC�#1+� %#$ %6�&3 %D�&3 8�k4k �

� 7�� 7�� � �IQ � Q�&* "�.+� � B �+%D��� ������� � �

g �;k b4bmg6!D��$�k �4d g6!D��$�k �4d !D��$��

"���$�� B��+%#� ���Be B �+%#�lg?�=k g �Ek �

%�" b4bmg?�=k �4d ���

%�" e g f�" ��� �4d" ���=k �

%D�&3nb4bmg6!D��$�k �4d !D��$��

%D�&3Te gJf � ��� � dg?� ����� �k4k �

� ���(1 b b g B��+%#� �)�Ek � d B ��%#��� ���

� ���(1BelgJf � ��� �4d��.&%���" g B��+%#� � ��� 3 ���

�4f�j � �4dgJf�� ��� �4d3���$ ��� B ��%#� 3 ���+� ����� �0j � � g4gJf � ��� � ��� �4d

� ��� g � ���=k6g � ���=k4k4k6g � ���=k�k4k k �

3�� * ���nb4bQg4g?�=k �4d 3+k �4d g4g �Ek �4d ";k �4dcg B �+%#� �)�Ek �4d B��+%#� 3 "��

3�� * ���Te gJf�1 ���mj ��� � ��� �4d

�(1

Page 45: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

��.�%���" g B �+%#� � ��� % ��� �4f(8 ��� �4dgJf($ � � �4d3���$ ��� B �+%#� ' ��� 4 ����� � 8 ����� g4g f(. � � ; � � �4d

$ � � g 1 ��� g . � �=k4k6g j ��� g ; � � k k4k k6g � ��� k4k k4k��

�#1+� %#$ b4bQg4g?�=k �4d+�Ek �4d g4g?�=k �4d 3+k �4dcgA�=k �4d B��+%#��� 3 �

�#1+� %#$ e gJf�. ��� ; ��� � ��� �4d��.�%���" g B �+%#� � ��� � ���

�4f � � � �4dgJf(8 � � �4d8 � � g . ��� g � ���=k4k6g ; ��� g � ���=k�k4k k4k �

� "�" b4bmg B ��%#� !D��$ !D��$�k �4d !D��$��

� "�" e 3���$ ��� B �+%#� !D��$ !D��$ � �A!D��$ � g g �;k4k �

� ���(1�� "�" b4bQg B��+%#� !D��$ !D��$;k � d !D��$��

� ���(1�� "�" e 3���$ ��� B �+%#� !D��$ !D��$ ���?!D��$ � g4gJf�' ��� 4 ��� � dg 4 ��� � ' ���=k k4k �

$ ���#$ b4bQg6!D��$�k �4d !D��$��

$ ���#$ �e gJf.� � �4dg6%D�&3 g � � �k�� %D�&36g � � �k k4k

� 7�� 7 � �IQ � Q�� � � � �� �: V ����&* "�.+� � B �+%D��� ������� � �

g �;k b4bmg6!D��$�k �4d g6!D��$�k �4d !D��$��

"���$�� B��+%#� ���Be B �+%#�lg?�=k g �Ek �

%�" b4bmg?�=k �4d ���

%�" e g f gA" ���lb b � ���=k b4b � ��� �4dgA" ���lb4b � ��� k4k �

%D�&3nb4bmg6!D��$�k �4d !D��$��

%D�&3Te gJf g?� ���lb4b !D��$�k b4b !D��$ �4dg4g �=knb b g6!6��$�k �4dng6!D��$;k � d !6��$�k6g4gA� ���cb4b !D��$;k4k6g4g /b4b !6��$�k4k4k �

� ���(1 b b g B��+%#� �)�Ek � d B ��%#��� ���

� W

Page 46: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ���(1BelgJf g � ���lb4b B �+%#� 3 ���)� ���=k b4b B �+%#��� ��� 3 ��� �4d��.&%���" g B��+%#� � ��� 3 ���

�4f�j � �4dgJf g � ���lb4bmg � ��� k � dng 3 ���=k �4d j � �k b4b j � �4d3���$ ��� B ��%#� 3 ���+� ����� �0j � � g4gJfqg � ��� b4b 3 ���=k g � ��� b4b � ���=k �4d

g � ��� b4bmg � ���=k �4d gC3 ���=k �4d j � �kg4g � ���lb4b� ���=k4kg4g � ���lb4b 3 ���=k4k4k k

g4g � ���lb4b B��+%#� 3 ���)� ���=k k4k4k4k �

3�� * ���nb4bQg4g?�=k �4d 3+k �4d g4g �Ek �4d ";k �4dcg B �+%#� �)�Ek �4d B��+%#� 3 "��

3�� * ���Te gJfqg 1 ���lb4bmgA' ���=k �4d+� ���=k g j ��� b bmg 4 ���=k �4d % ���=k g � ��� b4b B �+%#� ' ��� 4 ��� knb b B��+%#��� ��� % ��� �4d��.�%���" g B �+%#� � ��� % ���

�4f(8 ��� �4dgJfqg $ � �lb4bmg � ���=k �4dng6% ���=k � d 8 ���=k b4b 8 ��� �4d3���$ ��� B �+%#� ' ��� 4 ����� � 8 �����g4gJfqg . � �cb b ' ���=k g ; � � b4b 4 ���=k �4dg $ � � b4bQg � ���=k �4dcgC% ���=k �4d 8 ��� kg4g 1 ���lb4bmgA' ��� k � d+� ���=k6g4g . � �cb4b ' ��� k4k4kg4g j ���lb4bmg 4 ��� k � d % ���=k6g4g ; � �cb4b 4 ��� k4k4k4k4k

g4g � ���lb4b B �+%#� ' ��� 4 ���=k4k4k4k k �

�#1+� %#$ b4bQg4g?�=k �4d+�Ek �4d g4g?�=k �4d 3+k �4dcgA�=k �4d B��+%#��� 3 �

�#1+� %#$ e gJfqg . ���lb4bmg � ���=k �4d � ���=k g ; ��� b bmg?� ���=k �4d � ���=k g � ��� b4b � ���=k b4b B �+%#� � ��� � ��� � d��.�%���" g B �+%#� � ��� � ���

�4f � � � �4dgJfqg 8 � �lb4bmg � ���=k �4dng � ���=k � d � � �=k b4b � � � �4dg 8 � � b4bmg � ��� k � dng � ���=k �4d � � �=kg4g . ���lb4bmg � ���=k � d%� ���=k6g4g � ���cb4b � ���=k k4kg4g ; ���lb4bmg � ���=k � d � ���=k6g4g � ���cb4b � ���=k k4k4k4k4k �

� "�" b4bmg B ��%#� !D��$ !D��$�k �4d !D��$��

� "�" e 3���$ ��� B �+%#� !D��$ !D��$ � �A!D��$ � g g4g �;k/b4bQg6!D��$;k � dcg6!6��$�k �4d !D��$�k k �

� ���(1�� "�" b4bQg B��+%#� !D��$ !D��$;k � d !D��$��

� ���(1�� "�" e 3���$ ��� B �+%#� !D��$ !D��$ ���?!D��$ � g4gJf gA' ��� b4b !6��$�k g 4 ��� b4b !D��$�k �4dg4g �;k b b g6!6��$�k �4d g6!D��$;k � d !D��$�kg g 4 ���lb4b !D��$;k4kg gA' ���lb4b !D��$;k4k4k4k �

$ ���#$ b4bQg6!D��$�k �4d !D��$��

$ ���#$ �e gJfqg � � b4b !D��$;k b4b !6��$ � dg4g �;k b4bmg6!D��$;k �4dcgC!D��$�k �4d !D��$�kg4gC%D�&3nb4bmg6!D��$�k � d !D��$�k6g4g � � �b4b !D��$�k k4k

�p�

Page 47: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

g4gC%D�&3nb4bmg6!D��$�k � d !D��$�k6g4g � � �b4b !D��$�k k4k4k

� X

Page 48: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� �

� ��� � � � ��� ��� ��� �

� ��� ��� � � \�� � ���K� + �"+1# � +,� � � _BZ

Y�6n{ z 3 6'tL4"r-v@o 4<oBvOz vy}pruz t H v$�<}<{ r-{�mp}�mLK r%6nvWz�5�}prut T mLK�t z / �'z v@r mLK r%6nv�K / } 3 r-{�mp}<tLD4no-m�wpo-t7N?N {|}nw D t }<w / t�w�v�=§t�z���v:D\DK{|}�q�H§l�1=;'t K mpo�N�tLD|{ z N�K mpo z 5�}sr-tLT H v$�'}n{ r-{�mp} 2 W �14ª�lno-m7N r%6nv±z�5�}sr-t T H v��<}n{�rB{|m�}�t w�vy}nv@outLD|{��yv H 9 ) 4<t�o-zBv@o {|z w�vy}nv@out�r-v H �(5�r�6nv 1�4 �(�4no-m�wpo-t7N 2 W ~54 � Y�6nvV4<t ouz vyo 4no-m H</ 3 vOz 4<t ouzBv r-oBvyvyz�{|} r�6<v . z-l4{ T+K m�o%N�t�r:;�bZ6n{ 3 6 {|zo-vE4no-vyzBv@}srBv H / zB{|}nw . Y6vyo�N�zy�[> t ouz v�rBo-v@vyz�t�oBvWrBout }'z K mpo�N v H {|}pr-m t��<z rBout 3 r z�5�}prut TrBo-v@vOzB�(5VN vyt�}<z9mLK4r�6nv w�v@}<v@o-{ 3 %'� 1+� * "���� ���('�%D8A4no-m�w�outLN���Y�6n{ zZ4no-m�wpo-t7N / z vOz9r�6nv3 mp}<z rBo / 3 r-m�o9t }n}nm�r-t rB{|m�}<z 3�*���� g�� � ������k�{|}Wr�6nv0w�outLNON�t o 4no-m H=/ 3 r-{�mp}<z rBm rBout }'z D t�r-v4<t�o-zBvSr-oBvyv }nm H vOz§{|}srBm±t��<z rBout 3 r�z�5s}srut T�rBo-v@v }nm H vyzy��lnm�o N m�o-v {|}=K m�o%N�t�r-{�mp} t���m / rq/H�l�1 z vyv 2 154 �� �JZ \"` � � ���W+,� � � _BZ

Y�6nv z / �<zBvMr r�6't�r {|z 3 m�x�vyoBv H �(5�r�6<v w�outLNON�t o 3 t }:��v 3 6<t out 3 rBv@o-{��@v H t�z G m�o-vB=�t�z���v:D\Db {�r�6�r 5(4�vyzy� . D D H vMrut { D|z6mLK"r%6nvD|v T"{ 3 tLDsz 5�}sr-tLT0t�oBv H v$�<}<v H t 3E3 mpo H {�}nw9r-m r�6<vNz r-t } H t o H2 1 W 4 ��q"m7N v�z 5�}sr-t 3 r-{ 3 z / wpt o �¯v�� w<� ;�%�'/�6{ z z / 4<4�m�oBrBv H ;�� / r�N msz¨r { z�}nm rO� ,�m r {|} 3 D /cH v H{|}�r%6nv�z / �<zBvMr�t�oBv§{\NO4�m�oBr� v T=4'mpo r H v 3 D t out�rB{|m�}'zE;)D�{ z r 3 m7NO4no-vE6nvy}<z {|m�}'zE;)N m�}<t H }nm�r-t&rB{|m�}�;<r 5(4�v 3 D t�z-zBvyz:;<o-v 3 mpo H zE;<t�} H bZ6nvyoBv 3 D t / zBvyzy�0Y�6nv z�5�}prut T H v$�'}n{ r-{�mp} 4no-vyzBv@}srBv H6nvyoBv�{|z 4<t�o r mLKCtAD t o-w�v@o H v$�'}n{ r-{�mp}�r%6<t�r 3 m�xpv@ouz r%6nv§vy}srB{|oBv H v$�'}n{ r-{�mp}�{|}�r%6nv=�t�z���v:D\Dz r-t } H t o H � q�{�} 3 v�r%6nmpzBv 4't oBr-z7t�oBv�}nm r / z v H {|}�r�6nv�z / �<z v E / v@}sr7r-o-t�}<z K m�o%N t rB{|m�}�r�6<vE5t o-v�}nm�r {|} 3 D /cH v H � Q§}nv�}nm�r-t��<D�v H { ��v@o-v@} 3 vVb {�r�6�r�6nv�z r-t�} H t�o H { z�r%6<t�r r�6nv�m���zBvMro / D�v0{ z9}nm r�z / 4<4�m�oBrBv H ��Y�6n{ z9v@}sr-t�{\D z r�6<t r�tLD D�z v:N�{ 3 m�D�mp}<z t } H 3 / o�D 5 �nout 3 vyz 6<t¥x�v§rBm��vSz / 4c4<D�{|v H {|}±r�6nv 4no-m�wpo-t7N���&* "�.+� � - �+%6�%'��1 *���$�� � � ��� ����� ��� ��� � �����8 1 *���$��

��*���$�� - *�"�.+� �

�&* "�.+� � � ���#� �������(� ��� �����%'��1 *���$�� � � ��� ����� ��,���0 *(.�$

� � ��� ����� ��!�"�����$&%�'+%����+�� � ��� ����� ��� ��0 � *���"��� � ��� ����� ��!�"�����$&%�'+%���� � )�*���$��

� ?

Page 49: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� � ��� ����� ��� .���� ������ � ��� ����� � )�$��&%6��4��� � ��� ����� ��,�%#$ ��� ������ � ��� ����� ��- * "�.�� ���� � ��� ����� ��/�0 1�� �� � ��� ����� ��/�0 1�����2 � 3�� ��� �($&%(*��&�� � ��� ����� � )+%#4 � ��$ .������(2 ��3�� �(� ��$&%�*(�&�� � ��� ����� ��7�8 1���������%�*����� � ��� ����� ��9���������:��($��������($&%#;����� � ��� ����� ��5 ���(. ����2���'�%6��%6$&%(*��&�� � ��� ����� ��!D� '�%D87�8 $�� ��)��(1 ,�% ��$+� 7�8 $�� ��)��(1 ,�% ��$+�7�8 $�� ��)��(1 ,�% ��$+� �

� ��� �Y+�`�� ` � +C��� � ���a\ ! \ �^#-! `=�tpz��pvED D tLD D�m b�z t�r�zBv@xpv@outLD 4'mp{�}sr-z o-v H</ } H t�}pr�zBvE4<t�o-t rBmpo-z {�} D|{|z r-zy� q / 3 6 D|{ z¨ruz�t o-vw�vy}nv@o-{ 3 tLD D 5 H v$�<}<v H {�}±r%6nv K m7D D�m b {|}nw?4<t outLN v@rBv@o-{��@v H N m H=/ D|vyzy��&* "�.+� � 7�8�$ � ��)���1�,�% ��$�� � 7��($ ) ��1 ,+% ��$ ���8 1 *���$��

3�*���$ ��8�$���' ����� ��0���$ ��87��($ �4d ,�% ��$ � 3�*(�&� g���!6�&� ��k �,�%���$ )���1 7���$ �4d ,�% ��$ � 3�*(�&� g��#)(��*�3 ��k��,�%���$ )���1 �4d ,�% ��$

�&* "�.+� � 7�8�$ � ��)���1�,�% ��$���� � 7 ��$ )���1 ,�% ��$ ���8 1 *���$��

3�*���$ ��8�$���' ����� ��0���$ ��87��($ �4d ,�% ��$ � 3�*(�&� g���!6�&� ��k �,�%���$ )���1 7���$ �4d ,�% ��$ � 3�*(�&� g��#)(��*�3 ��k��,�%���$ )���1 �4d ,�% ��$

�4d ,�% ��$ � 3�*(�&� g�����%�� ��k �

� � � � � � +1( \ � ��� � � \���&* "�.+� � � ���#� ��������,���0 *�.�$��8 1 *���$��

� ��8&% 3(��� ��0 ��$���8"��&%#$ � 9 � ��� �4d ,�:�� � � /9�*����&����$ �4d ,�:�� � � /��9�*����&����$ �4d ,�:�� � � /

� f f�$ f�� � �4d)" ��%#$ � 9������

��� � ��� � f(� � o � f(� � �4d 9�*����&����$

�"�

Page 50: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� � � � � , ��9 � ���;o ��9�*����&����$ �?o ����� � �4d���9�*����&�(��$

� �Xf��4f � � �4d ,���9 �������0�1������ �4d ,���9 �����9�.�����0 � 1 ��� �4d ,���9 ������ f ��� �4d � 0 1������� f � � �4d 9�.�����0 � 1����

� ��8&% 3(��� � ����$ �&% 3�$&%�*��&���0�1������ � ��� � f � �9�.�����0 � 1 ��� � ��� � f�� �

3�*���$ ��8�$���' ����� � � ��$��&% 3#$&%(*��&�, : � � � / � � ��� � f'f($ f(� ��� � f������ � f���� � � f � ��� � f�� �

�&* "�.+� � � ���#� ������� !�"�����$�%�'�%��������8 1 *���$��

� ��8&% 3(��� ��0 ��$���8� ��� � � � : � � ��� � �����+f p f � � o �4d 5�:�&&!D2� : � � � � : � � ��� � �����+f p f � � o �4d 9 � �&!D2

����� .�� ��$&%(*��hb .�� "�������3�*���� %D� %�"�����$&%�'�%(����� ��3 3�*���"�%6��4 $ * ��$ ����"�����" � � �

� f � f �?f�� f � f� f+o�f��?f��Xf � �f � � f � f�e?f4d4f � f�+f4f f���f �Vf�� f � � � d )�0�����*��)�0.����*�� g?)�0�����*��� � f^b �;k o � d 5 :�& ) ��-� f b �cg?)�0���� *�����Xf^b �;k o � d 9 � � ) ��-& � ������; ��" � 1 � d 5 :�& ) ��- � � ������3#$ �& � ������; ��" � 1 � d 9 � � ) ��- � � ������3#$ �

� ��8&% 3(��� � ����$ �&% 3�$&%�*��&�9 � �&!#2 5�:�&&!D2 � ��� � :�� � ��� � �������5�: & ) ��- � ��� � f � f �+f��4f � f � f?o�f��+f�� f ���Tf � �Xf �4f�e?f d4f � f�4f4f4f���f �0f � f � �

3�*���$���8�$���'�� ��� ��0 ��$ ��8- *�"�%�" � ��� 5�:�&�!#2 � d � 5�:�&&!#2 � 3�*��&�6g�� � 5 ���&!�" ��k��- *�"�%�" � ��� 9 � ��!#2 � d � 9 � �&!#2 � 3�*��&�6g�� � 9�*(��!�" ��k��- *�"�%�" � ��� 5�:�&�) ��- � d � 5�:�& ) � - � 3�*��&�6g�� � 5 ��� )�0�� �k��- *�"�%�" � ��� 9 � ��) ��- � d � 9 � � ) � - � 3�*��&�6g�� � 9�*(��)�0�� �k��

�&* "�.+� � � ���#� �������(� ��0 ��*���"+���8 1 *���$��

� ��8&% 3(��� ��0 ��$���8��3(����� � � ��3�������� � � �D"���$ � � ��D"�� '���.+�($ � � �D"����&%#;&%D��4 � � �D"�* � ��#��� ��� � � ��%�' � � ��%'��1�*���$ � ���%6� � � ��%D��'�%#8 � � ��%D� '�%D8�� � ���%6� '�%#8�� � � ��%D����$ ���&3(� � � ��� ��$ � �� ��* "�.+� � � � �C��� ��$�0 1�� � � �#* ' � �

�)U

Page 51: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

�6$ ����� � � �6$�0�1�� � � � ��������� � �� � � �4d�&���������;�� "�!�"�#� � � � � ��%#"�%D��4 � � ��j�.���� %�'�%(� " � ��#��8 1�*���$ � � ��� ������� � � �D" 0 ����� % 3 � �4d�&���������;�� "�!�" ��D'�*�� ����� � �4d�&���������;�� "�!�" �

� ����� � � b � � � b4b�� � ��e � � �f4f � � ��� � � ��� � � ���� d � � � � � � � � � ��e?d � ���� � � � � � � � ��� � ��� f4f � � � � � � � � � � � � � �� � � � ��g�� � ��k � � ��g � � � � �=k � � ��� � � �� � � ��� � �4d)& ������� ; � " � 1

�&* "�.+� � � ���#� ������� !�"�����$�%�'�%�������)�*(��$����8 1 *���$��

� ��8&% 3(��� ��0 ��$���85�: &&!#2 �4d 5 ���&%�"& � ������; ��"�!�" �4d 5 ���&%�" � � ������3#$ �

5�: &&!#2 �4d /�0�; ���& � ������; ��"�!�" �4d 5 ���&%�" � � ������3#$ �& � ������; ��"�!�" � �4d 5 ���&%�" � � ������3#$ �

3�*���$ ��8�$���' ����� ��0���$ ��85 ����� �� � 5 ��� �4d 5 ����� � 3�*��&� g �#)���*�3 ��k �� ;���� �4d 5 ����� � 3�*��&� g ��!D�&� �k �

3�*���$ ��8�$���' ����� ��0���$ ��8��g � ��k � �4d � 3�*�� � 3�*��&� g � � ��%#$ ��k �� � � � � � �4d � 3�*�� � 3�*��&� g �67���1�$ 0�,�% ��$ �k ���g � �� � � ��k � �4d � 3�*�� � 3�*��&� g �6B�� * "�.&3�$ ��k��� 3(*�� �4d � 3�*��

3�*���$ ��8�$���' ����� ��0���$ ��8

��� ; ����%(���+� � %�"�����$�%�'�%(���+�

5 ���&%�" �4d 5 ��� � 3�*��&� g �65 ���&!#" ��k �� ;����&%�" �4d � ; ���5 ���&%�" �4d � ; ���&%#"� 5 :�&&!#2 �4d � ; ���&%#"

��� 3�*�����$�� .&3#$ *�� %#"�����$&%#'�%(�����

9�*(��%�" �4d 9�*�� � 3�*��&� g �D9�*���!#" ��k �� 3(*���%�" �4d � 3�*��9�*(��%�" �4d � 3�*���%#"� 9 � �&!#2 �4d � 3�*���%#"9 � �&!#2 �4d 9�*���%�"

��� / ��� '�*���� * ��%D��4 1 *���$&%(*(� 3���� ��� 1�.�$ %D��$ * �&*�"�.+� � � � ��� ����� ��!D� '�%D8

�)9

Page 52: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

��� %6� *���"���� $ * '���3�$�*�� *�.�$ %D� '+%#8 *�1���� ��$ *���� '�� *�� $ ��� � ��������� � ����4 .���4 �

3�*���$ ��8�$���' ����� ��0���$ ��8

��� %D� '+%#8 *�1���� ��$ *����

5 ��� *�1 �4d � 1 � 3�*��&� g � � 1 ��k��9�*(��*�1 �4d � 1 � 3�*��&� g �D9�*�� � 1 ��k ���� ; ����%(���+� � *�1���� ��$ *����

5 ������0�� �4d 5 ��� *�1� ;�������0�� �4d � ; ��� *(1� ;�������0�� � �4d � ; ��� *(1��5 ������0�� �4d � ; �����#0��� ;�������0�� �4d � ; �����#0��5 ������0���� �4d � ; �����#0����� ;�������0�� �4d � ; �����#0����

��� 3�*�����$�� .&3#$ *�� *(1���� ��$�*����

9�*(�&��0�� �4d � 3�*��&�#0��� 9 � � ) ��- �4d � 3�*��&�#0��9 � � ) ��- �4d 9�*��&��0.�9�*(�&��0�� �4d 9�*���*�1� 3(*��&��0�� �4d � 3�*���*(1

� ;���� *�1 � d � *(1� 3(*���*�1 � d � *(1� ;���� *�1�� � d � *(1��� 3(*���*�1 � d � *(1��

��� �&����� 1�� � '�%#8 �#0�����*���� ' � *�� %D� '+%#8 ��0���� *�� �

��g � 5 ������0�� ��k � �4d 5 ��� � 3�*��&� g �C<�%D� � 1 ��k ���g � � ;�������0�� ��k � �4d � ; ��� � 3�*��&� g �C<�%D� � 1 ��k ���g � 9�*(�&��0�� ��k � �4d 9�*�� � 3�*��&� g �C<�%D� 9�*�� ��k ���g � � 3(*��&��0�� ��k � �4d � 3�*�� � 3�*��&� g �C<�%D� 9�*�� ��k ���� �&����� %6� '�%#8 ��0�� ��*�� � '�� *�� 1�� � '+%#8 ��0���� *�� �

��� � 5 ���&%�" ��� � �4d 5 ��� *�1 � 3�*��&� g �6B�� � ' � 1 ��k ���� � � ;����&%�" ��� � �4d � ; ��� *(1 � 3�*��&� g �6B�� � ' � 1 ��k ���� � � ;����&%�" ��� � �4d � ; ��� *(1�� � 3�*��&� g �6B�� � ' � 1 ��k ���� � 9�*(��%�" ��� � �4d 9�*���*�1 � 3�*��&� g �6B�� � ' 9�*�� ��k����� � � 3(*���%�" ��� � �4d � 3�*���*(1 � 3�*��&� g �6B�� � ' 9�*�� ��k��

3�*���$ ��8�$���' ����� ��0���$ ��85�: & ) ��- �4d 5 ������0.���� � �4d 5 ������0.� � 3�*��&� g �#)�.���$ � ��3�$&%�*(� ��k �

X ~

Page 53: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� � � �4d 5 ������0.�� � � �4d 5 ������0.�

5�: & ) ��- �4d 5 ������0.���� � � �4d 5 ������0.���� � � �4d 5 ������0.���

� 5 :�& ) ��- �4d � ; �����#0��

3�*���$ ��8�$���' ����� ��0���$ ��89 � �&!#2 �4d - * "�%�"9 � �&!#2 �4d /�0�3�*��/�0+3�*�� �4d � $�0�3�*(�� 9 � �&!#2 �4d � $�0�3�*(�� $ 0�3�*�� �4d � $�0�3����

�&* "�.+� � � ���#� ��������� .������������8 1 *���$��

� ��8&% 3(��� ��0 ��$���8� ������� �4d 2&%#4�%#$� ��� � � �4d � 3�$�%#$� ������:���$�����' � �4d � ��8�%#$

2&%D4&%#$ � �4d 2 ��3�%'�&���� 3#$&%#$ � �4d � 3�$����� ��8&%#$ � �4d � ��8�� "���3�% �&���

2 � 3�%'�&��� �4d !���/ 7 � 7�&� ��� � � *�� � 3�$ ��� �4d !���/ 7 � 7�&� ��� ��� 8 � � ��8 � "���3�%'�&��� �4d !���/ 7 � 7�&

� ��8&% 3(��� � ����$ �&% 3�$&%�*��&�!�� /�7 � 7�& � ��� � �������

� ��8&% 3(��� ��0 ��$���82 � 3�%'�&��� � ��� 2 ��3�%'����� g � ��7 � �Xf��4f�� � � 2 ��3�% �&��� k �4d+&�: /&! � ��:�,

� ��8&% 3(��� � ����$ �&% 3�$&%�*��&�&�: /&! � ��:�, � ��� � �������

� ��8&% 3(��� ��0 ��$���8� � �4d B�&&!#-�9 ��:�&� � �4d B�&&!#-�)�/�&&!�� �

� � �4d B�&&!#-�!���/�7 � 7�&� � �4d B�&&!#- $�, � :�/� � �4d B�&&!#- 2 � � < ,�7

� � �4d 9�,�!#/�,�!#/� � �4d � ����� � "��

�&* "�.+� � � ���#� ��������)�$��&%D��4��

X �

Page 54: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

��8 1 *���$��� ��8&% 3(��� ��0 ��$���8�Ep � 9 � ����9 ����� �Ep � �4d 9���:�&��f � � )�$��&%D��4�9 �����=o ��f � � �4d )�/�&&!�� �

� �Xf����4f � �f ��f4f � �4d )�$��&%D��4�9 �����7�� 3���1�� �4d )�$��&%D��4�9 ������ �(1 �4d )�$��&%D��4�9 �����

� f f�� � f'f($ f(� � � �Xf4f�� �4d � ��1

� f f��cgA9 ����� 7���3 � : ) 9�!�!��2 � 3�%'�&����Tg � *�� � 3�$ ���?k��� 8 � � ��8 � "���3�%'�&��� k �4d 7���3��(1��

� ��� '�����$ ; f4f4f �f p f� � �4d 9 ����� 7���3

� ��8&% 3(��� ��0 ��$���8��� � � : � � f�+f�� f��?f4f f���f � � � d : )�9�!�!

��� � , � � �D) � � � � �#)�/ � � � �67�/ � � � �67 � / � ��67 � � � � �C:�9 � � � �C<�7�, � � �C<�) � � �6� / � ��D, $ � � �C5�/ � � ��$�$ � � �D9 & � � �#) � � ��#)�! � � �C2�, 7 � � �62�9� � � �62�9 � � � �62�9 � � ��62�9 � � � � ��:�� � � �#) ��� � � �67�/�< � � �D9�:�� � ��67 - � � �D) � < � � �67 ) 9 � � ��$ ) � � � � ) � ���&�) � � � � ) � � �#)�B � � �62�7�, � � d : )�9�9�!

�&* "�.+� � � ���#� ��������,�%#$ ������� ���8 1 *���$��

3�*���$ ��8�$���' ����� ��0���$ ��8!�� /�7 � 7�& �4d ,�%#$ ������� � 3�*���� g���!D��$ ��k �9 � :�& �4d ,�%#$ ������� � 3�*���� g��D9 � ��� ��k �&�: /&! � ��:�, �4d ,�%#$ ������� � 3�*���� g���$���*���$ ��k��)�/ &&!�� � �4d ,�%#$ ������� � 3�*���� g��#)�$ �&%D��4 �k��B�&�!#-&!���/ 7 � 7�& �4d ,�%#$ ������� � 3�*���� g��6B���%'� !D��$ �k �B�&�!#-�9 ��: & �4d ,�%#$ ������� � 3�*���� g��6B���%'��9 ����� ��k �B�&�!#- )�/�&�!�� � �4d ,�%#$ ������� � 3�*���� g��6B���%'�&)�$���%6��4 ��k �B�&�!#-�$�, � :�/ �4d ,�%#$ ������� � 3�*���� g��6B���%'�*$�� * ��$ ��k �B�&�!#-�2 � � < , 7 �4d ,�%#$ ������� � 3�*���� g��6B���%'�+2 *�. ��� � ��k �9�,+!#/�,�!#/ �4d ,�%#$ ������� � 3�*���� g��D9�,+%#$�,�%#$ �k �

� ��� � #&%' � � `�&* "�.+� � � ���#� �������(- * "�.+�����%'��1 *���$�� 7�8 $�� ��)��(1 ,�% ��$+��� /�*(1 "���3(� � � � / *�1 "�� 3�� ���

X 1

Page 55: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

��8 1 *���$��3�*���$ ��8�$���' ����� ��0���$ ��8� ��* "�.+� � � - * "�%�" 7 8 1�*���$+� �

� ������� � � <�* " 0 �4d - * "�.�� � � 3�*��&�6g��6- * "�.+� � ��k��<�*�" 0 �4d - * "�.�� � � 3�*��&�6g��6B�� *�4�� ��� �k �� � � / *(1 � � � �4d <�* " 0/ *(1 "���3���� �4d / *�1 � 3�*��&�6g��6/ *�1�2 ��3�� � ��k��2 � 3�� �4d / *�1 "���3��

� ��� � �I( �$\ ! \ �$+1# �a`�&* "�.+� � � ���#� �������(/�0 1������8 1 *���$��

3�*���$ ��8�$���' ����� ��0���$ ��8g��6b4b�� /�0 1�� k � �4d � 1�$ )+%#4

3�*���$ ��8�$���' ����� ��0���$ ��8� $ 0�3�*�� �4d � $�0�3�*����g � ��� d � ��k � �4d � $�0�3�*�� � 3�*��&� g �6/�:�����*� ��k �

3�*���$ ��8�$���' ����� ��0���$ ��8� / 0 1�� �� � � � �4d / 0 1����/�0�1�� �� � � /�0 1�� �� � ��� �4d / 0 1���� � � 3�*��&� g �D9�*��&� ��k ��D'�*�� ����� � /�0�; ���=o � ��� �4d�$�*�� �����/�0�1�� ��e?d � �4d 9�*���$ ��8 $

3�*���$ ��8�$���' ����� ��0���$ ��8� $ 0�3�*�� �4d / 0 1�� � 3�*��&� g �6/�9�*�� ��k �/�0 ; ��� �4d / 0 1�� � 3�*��&� g �6/�5 ��� ��k �/�0�1�� /�0 1�� �4d / 0 1�� � 3�*��&� g �6/�: 1�1 <�%D� ��k� A� � '�$ �/�0�1�� ���4d � /�0 1 � �4d / 0 1�� � 3�*��&� g �6/�$ .�� <�%D� ��k� �&%#4���$ �$ *�� ����� /�0�1�� �4d / 0 1�� � 3�*��&� g ��$ *�� ����� ��k �$ *�� ����� 9�*(��$ ��8�$ / 0 1�� �4d / 0 1�� � 3�*��&� g ��$ *�� ������9�*���$���8�$ ��k����g � /�0�1�� ��k � �4d / 0 1�� � ��� ��3�����$ �

3�*���$ ��8�$���' ����� 1���%(*��&%#$�%(���/�0�1�� /�0 1�� �4d / 0 1��

d /�0�1�� ���4d � /�0 1 � �4d / 0 1��d � $�*�� ����� / 0 1�� �4d / 0 1��

$�*�� ����� 9�*���$ ��8 $ /�0 1�� �4d / 0 1�� �

��� / ��� '�*���� * ��%D��4 1�� * "�.&3#$&%(*��&� ��� � ��0 ��$���3�$&% 3 �#.�4 ��� '�*����� � � /�0�1�� ��� "cg $k /�0 1�� � � � /�0 1 �

3�*���$ ��8�$���' ����� ��0���$ ��8� � � /�0�1�� � � � �4d / 0 1�� � 3�*��&� g �6/�,�% �#$ ��k ���g � /�0�1���� � ��k � �4d / 0 1�� � 3�*��&� g �6/�B�� *�" ��k �

X7W

Page 56: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

��g � ��k � �4d � $�0�3�*�� � 3�*��&� g �6/ � ��%D$ ��k �� � � � � � �4d � $�0�3�*�� � 3�*��&� g �6/�,�% �#$ ��k ���g � �� � � ��k � �4d � $�0�3�*�� � 3�*��&� g �6/�B�� *�"�.&3�$ �k��

�&* "�.+� � � ���#� �������(/�0 1����(2 ��3���������$+%(*��+���8 1 *���$��

3�*���$ ��8�$���' ����� ��0���$ ��8�6$ 0 1�� � /�0+3�*�� /�0�; ���;o ��e � /�0 1 � �4d / *�1 "���3�� � 3�*(�&� g��6/ 0 1���2 � 3�� �k���D"���$ � � /�0�1�� ��e � 9�*��&��$ ��� 2 ����%#;&%D��4 �4d / *�1 "���3�� � 3�*(�&� g��62���$ � ��k���C� ���$�0 1 � � /�0 1 � ��e � � ��&3�*(�&��$�� 2����&%#;&%6��4 �4d / *�1 "���3�� � 3�*(�&� g��������/�0 1 ��2 � 3�� �k �

3�*���$ ��8�$���' ����� ��0���$ ��8�D"����&%#;&%6��4 � � $ 0�3�� � � d 2 ���&%#;&%D��4�D"����&%#;&%6��4 � ��g � �k � � d 2 ���&%#;&%D��4�D"����&%#;&%6��4 � ��g � ��� $�0�3���� �� � ��� �k � � d 2 ���&%#;&%D��4

� d 2 ���&%#;&%D��4 � 3�*���� g���� *�2 ���&%#;�%D��4 �k �3�*���$ ��8�$���' ����� ��0���$ ��8� 9�*��&��$�� ��� � ��� �4d 9�*��&��$��+�

$ *�� ����� � 9�*���$ ��8 $ � 9�*��&%�" )���$�0 1 � o �4d 9�*��&��$�� � 3�*��&� g �D9�*��&�#$���2 ��3(� �k��$ *�� ����� � 9�*���$ ��8 $ � )���$ 0 1�� 9�*�� *�1 )���$�0 1 � �4d 9�*��&��$�� � 3�*��&� g ��!D� '�%D8�9�*��&�D$�� �k �9�*(��%�" /�0 1�� �4d�����&3�*�����$��9�*(��%�" � � � 5 ��� � b4b � /�0 1�� � � � �4d�����&3�*�����$��

/�0�1�� �4d ) ��$�0 1��� � � /�0�1�� �4d ) ��$�0 1��/�0�1�� �4d )���$�0 1��� � � /�0�1�� �4d )���$�0 1��

3�*���$ ��8�$���' ����� 1���%(*��&%#$�%(���/�0�1�� �4d )���$�0�1��

d /�0�1�� /�0 1�� �4d /�0 1��

�&* "�.+� � � ���#� ��������)+%#4 ����$ .�������2���3(� ������$�%(*(�����8 1 *���$��

3�*���$ ��8�$���' ����� ��0���$ ��8)+%D4 � "���3�� � d 2 � 3��5 ����� � b4b�� /�0 1 � � d )+%D4 � "���3�� � 3�*���� g��#)+%D4 ��2 ��3�� ��k��

� � � � � �)! � ` `^+,#-�a`�&* "�.+� � � ���#� �������(7�8 1�� � ����%�*(�&���8 1 *���$��

3�*���$ ��8�$���' ����� ��0���$ ��87�8�1 �4d :���0�7�8 1

X �

Page 57: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ;���� �4d 7 8 1 � 3�*���� g��65 ��� ��k �� 3(*�� �4d 7 8 1 � 3�*���� g��D9�*(�&��$�� �k �,�%D$ ��� ��� �4d 7 8 1 � 3�*���� g��D,�%D$ ��k �� � � �4d 7 8 1 � 3�*���� g�� "�%(��"+3�����" �k ���g � 7�8�1&� � ��k � �4d 7 8 1 � 3�*���� g��6B���* "�.&3�$ ��k����g � � 7�8 1&� � �;k � �4d 7 8 1 � 3�*���� g�� � � ��*�8 � " � �k ���g � 7�8�1 �k � �4d 7 8 1 � ��� � 3�� ��$ �

� 7 8 1 �� � ��� �4d 7 8 1&�7�8�1 �� � � 7�8 1 �� � � � �4d 7 8 1&� � � 3�*���� g��D9�*(�&� ��k �: ��8 1 � �4d�$�����4��

3�*���$ ��8�$���' ����� 1���%(*��&%#$�%(���� � � 7�8�1 �4d 7�8 1 � 3�*���� g��6/&!#, 2�7 � �k �

d � ;���� � � 7�8 1 �4d 7�8 1 � 3�*���� g��6:�/ � ��k �d 7�8�1 �4d : ��8 1 d 7�8�1 � � � $ ��%D� "+� � � � �4d 7�8 1 � 3�*���� g��D,�������� � " ��k��d 7�8�1 �4d : ��8 1d 7�8�1 7�8�1 �4d 7�8 1 � 3�*���� g��6: 1 1�<�%D� �k A� ��' $ �d 7�8�1 �4d !D� '�%D8 ��8 1d 7�8�1 � b b�� /�0 1�� �4d 7�8 1 � 3�*���� g��6/�0�1�� " ��k��d � �f4f � $ ����4+� � 1�$ )+%D4 ���4d � 7�8 1 �4d 7�8 1 � 3�*���� g��6: ��� ��k �

�#� ��$ � 2 � 3�����%D��"+� ��%D� � 7 8 1 �4d 7�8 1 � 3�*���� g��D,���$ ��k ���%�' � : ��0�7 8 1 �6$ ���(� � : ��0�7 8 1 �#��� �(� � 7�8 1 �4d 7�8 1 � 3�*���� g���!�' ��k ��(3������ � :���0�7�8 1 �D* ' � :���$�����% ��$ �4d 7�8 1 � 3�*���� g��D9�� ��� ��k ��

d 7�8�1 �4d 7�8 1 �

��� � *�$ � � b��� : ��0�7 8 1 % � .&��� " $ * 1�� ��; ����$ 1���%(*��&%#$�%(��� '�� *�� '�*�� �&%�"�"�%D��4 ��8 1���������%(*(�&���� ��������� $ ��� "�* ��*�$ 3���.&��� ������%#4 .&%#$&%(��� ���� $ ����4+� % � .���� " %D�&��$���� " * ' : ��8�1 �)����3���.���� * ' � ��.�4 %6� $ � � )�2�$ ���� ��*���������%.��������� ��4 .+� ��� ��8 1�� � ����%(*�� ��8 1�������%(*�� "�*���� ��*�$ $ ����� %6��$ *��� ��3�3�*(.���$ ��0.����*�� � .���� " *��+��0 %D� 1��&%�*��&%#$�0 � .+� ��� �

�&* "�.+� � � ���#� ��������9��������(:���$���� � ��$+%#; ���%'��1 *���$�� 7�8 $�� ��)��(1 ,�% ��$+� ��� : ��$ ��� � :���$�� ���8 1 *���$��

3�*���$ ��8�$���' ����� ��0���$ ��8� � � :��($�� � � � � d :��($�����% �#$!D��'�%#8 ��8�1 � 1�$ )+%D4 ���4d � 7�8 1 � d :��($ � 3�*���� g��6:��($ ��k �!D��'�%#8 ��8�1 � 1�$ )+%D4 ���4d � 7�8 1 "�� ��� � � d :��($ � 3�*���� g��6:��($ " ��k �!D��'�%#8 ��8�1 � 1�$ )+%D4 � "�1���$ � "�� ��� � � � d :��($ � 3�*���� g�� � "�:���$ ��k��� � � � . ��� � ���4d � 7 8 1 � d � "�1���$ � 3�*���� g�� � "�B ��$ ��k��

�&* "�.+� � � ���#� ������� !D� '�%#8��8 1 *���$��

X�X

Page 58: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

3�*���$ ��8�$���' ����� ��0���$ ��8��%6� '�%#8 � � d !D��'�%#8 � 3�*��&� g ��!D� '�%D8 ��k ���%6� '�%#8�� � � d !D��'�%#8 � 3�*��&� g ��!D� '�%D8�, ��k ���%6� '�%#8�� � � d !D��'�%#8 � 3�*��&� g ��!D� '�%D8�& ��k �!�� /�7 � 7�& � � d B�����3� � 1 �� � ��� � d � 1��!D��'�%#8 B�� ��3 � 1�� � d�$&%D8�"���3�� � 3�*��&� g ��$&%#8�2���3�� ��k��$&%D8�"���3�� � d 2 � 3��

��g � !D��'�%#8 ��8�1 � *�1 ��k � � d 7�8�1 � 3�*��&� g �D,�)���3#$&%(*�� �k����g � � *(1�� !D� '�%#8���8 1 ��k � � d 7�8�1 � 3�*��&� g ��& )���3#$&%(*�� �k��

3�*���$ ��8�$���' ����� 1���%(*��&%#$�%(������ � 7�8�1 � d 7�8�1 � 3�*��&�6g���� ��4���$&%(*�� �k �

d � � � 7�8�1 � d 7�8�1 7�8�1 � d 7�8�1 �d 7�8�1 � *(1 7 8 1 � d 7�8�1 � 3�*��&�6g�� � 1�:�1�1 ��k A��� '�$ �

�&* "�.+� � � ���#� �������(5 ���(.�����2 ��'+%D�&%#$+%(*��+�%'��1 *���$�� 7�8 $�� ��)��(1 ,�% ��$+� ��� 2���3�� ��� � 2 ��3�� �����8 1 *���$��

3�*���$ ��8�$���' ����� ��0���$ ��85 ����"�� ' �4d 2���3��!D��'�%#8 ��8�1 ��e � 7�8 1 �4d 5�����"�� ' � 3�*��&� g �65 ����"�� ' ��k �!D��'�%#8 ��8�1 ��e � 7�8 1 "������ � �4d 5�����"�� ' � 3�*��&� g �65 ����"�� ' " ��k��!D��'�%#8 ��8�1 � " � � �+" ����� � � �4d 5�����"�� ' � 3�*��&� g � � " 5 ����"�� ' �k��� � � � . ��� � ��e � 7�8 1 �4d � " � � � 3�*��&� g � � .�����"�� " ��k��� � ����� � � 2���3�����%���$ �4d)" ����� � � 3�*��&� g � "�������� ��k �2 � 3�����% �#$ �4d 2���3�����%6� "+�� � � 2 � 3�� � � � � �4d 2���3�����%���$

X ?

Page 59: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� �

� � � �� � � ��� ��� �

� ��� � '5] ] \ ! �Y�6n{ z 3 6<tL4nrBv@oM4no-vyzBv@}sruz6r%6nv t��<z rBout 3 r�z�5�}sr-t TSm7K =§t�z���vED D(4no-m�w�outLN�z / zBv H {�} r�6nv r-o-t�}<zDK m�o%N�t�r-{�mp}<z@�MY�6nv 3 mp}<z rBo / 3 r-m�ouz7m7K4t��'z¨r-o-t 3 r z�5�}sr-t T�r-oBvyvyz9t o-v H v 3 D|t�oBv H �(5 N vyt }'zNm7KtLD|w�vF�nout { 3 z {|w�}'t�r / oBvOz@� � m H=/ D�v :�������� ��� � w�{|x�vOz t�z / N?N�t�o�5 mLK§r�6nv 3 mp}<z rBo / 3 r-m�ouzN mpz r / z v H {�}±r�6<v0rBout }<z K m�o%N�t�rB{|m�}'z@��&* "�.+� � :�� � ��� �������%#4�����$ .������*���$�� 2 � 3�� 9�*��&��$ � /�0 1�� 7�8 1 :��($g�o �D.��&��*�� $�� /�5 ��� � /�0 1 �Go4k3�*��&��$ � .&3�$ *����B���*�4�� ��� b ,�% ��$ g 2 ��3��?k �4d B � *�4�� ���

2 ��$ � b /�0 1��Bo ,�% ��$ gA9�*��&�#$���kTo 2 ����%#;&%D��4 �4d 2���3��9�*(�&��$���2���3��nb � 1�$&%�*��ig $ *�� ����� k)o � 1�$&%(*(�igA9�*���$ ��8�$�k

o )�$��&%D��4Go ,�% �#$^g /�0 1 �=k �4d 9�*��&��$��

)+%D4 ��2 ��3�� b 5 ����� o /�0 1�� �4d 2���3��5 ����"�� ' b 7�8 1/o 7�8 1 �4d 2���3��

/�5���� b )�$��&%6��4 �4d / 5 ���/�9�*�� b )�$��&%6��4 �4d / 0 1��/�:�1�1 b /�0 1��Bo ,�% ��$ g /�0 1�� k �4d / 0 1��/�$�.�� b ,�% ��$ g /�0 1�� kTo / 0 1�� �4d / 0 1��$ *�� ����� b ,�% ��$ g?)�$��&%6��4�kTo /�0 1 � �4d / 0 1��

/�0�1�� " b 7�8 1/o /�0 1�� �4d 7 8 15 ��� b )�$��&%6��4 �4d 7 8 19�*(�&��$�� b )�$��&%6��4 �4d 7 8 1,�%D$ b ,�%#$ ��� ��� �4d 7 8 1: ��� b ,�% ��$ g 7�8 1EkTo � 1�$&%(*��ig /�0 1��=kDo 7 8 1 �4d 7 8 1: 1 1 b 7�8 1/o ,�% ��$^g 7�8 1Ek �4d 7 8 1,���$ b ,�% ��$ g 2 ��3��?kTo 7 8 1 �4d 7 8 19�� ��� b 7�8 1/o ,�% ��$^g :���$�k �4d 7 8 1

X �

Page 60: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

:��($ b 7�8 1/o � 1�$&%(*(�ig /�0 1 �=kTo 7�8 1 �4d : ��$/�: �&� b ,�% ��$ g /�5 ���;kTo 7 8 1 �4d 7 8 1/&!6�&��$ b 7�8 1/o ,�% ��$^g /�0 1��=k �4d 7 8 1

<�.&%���" b /�0 1��Bo 7�8 1 �4d 7 8 19���$ � b /�0 1��Bo /�0 1��Bo ,�% ��$ g 7�8 1Ek �4d 7 8 1

� �JZ \"` � � ��� � + �-�a\ �$')! ��I7�� 786 �������������� ���������

�&* "�.+� � � ���#� �������(� ��� �����%'��1 *���$�� � � ��� ����� ��!�"�����$&%�'+%����+�

� � ��� ����� ��!�"�����$&%�'+%���� � )�*���$��� � ��� ����� ��,�%#$ ��� ������ � ��� ����� ��- * "�.�� ���� � ��� ����� ��/�0 1�� �� � ��� ����� ��/�0 1�����2 � 3�� ��� �($&%(*��&�� � ��� ����� � )+%#4 � ��$ .������(2 ��3�� �(� ��$&%�*(�&�� � ��� ����� ��7�8 1���������%�*����� � ��� ����� ��9���������:��($��������($&%#;����� � ��� ����� ��5 ���(. ����2���'�%6��%6$&%(*��&�� � ��� ����� ��!D� '�%D8� � ��� ����� �(<�.�%���" ��9���$ �

� ��� �Y+ ���I! \ ��`�I7 786 �����������������������������������������

�&* "�.+� � � ���#� ������� !�"�����$�%�'�%�������)�*(��$����%#4�����$ .����3�*��&��$ � .&3�$ *����<�%6� � 1 b � �4d �B���� ' � 1 b � �4d �

�I7 7�� ���������������������������������

�&* "�.+� � � ���#� ������� !�"�����$�%�'�%��������%#4�����$ .����3�*��&��$ � .&3�$ *����� 5����&!�" b - * "+%�"Go 5�: &&!#2 �4d � 5�:�&&!D2� 9�*���!�" b - * "+%�"Go 9 � �&!#2 �4d � 9 � �&!D2� 5���� )�0�� b - * "+%�"Go 5�: & ) ��- �4d � 5�:�& ) ��-� 9�*���)�0�� b - * "+%�"Go 9 � � ) ��- �4d � 9 � � ) ��-

X U

Page 61: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

�I7 7 ����������������� ��������

�&* "�.+� � � ���#� ��������,�%#$ ������� ���%#4�����$ .����3�*��&��$ � .&3�$ *����

!D��$ b )�$���%D��4 �4d ,�%#$���� ���9 � ��� b )�$���%D��4 �4d ,�%#$���� ���$���*���$ b )�$���%D��4 �4d ,�%#$���� ���)�$ �&%D��4 b )�$���%D��4 �4d ,�%#$���� ���B���%'� !D��$ b )�$���%D��4 �4d ,�%#$���� ���B���%'��9 ����� b )�$���%D��4 �4d ,�%#$���� ���B���%'�&)�$���%D��4 b )�$���%D��4 �4d ,�%#$���� ���B���%'�*$�� * ��$ b )�$���%D��4 �4d ,�%#$���� ���B���%'�+2 *�. �+� � b )�$���%D��4 �4d ,�%#$���� ���9�,+%#$�,�%#$ b )�$���%D��4 �4d ,�%#$���� ���

� � � � #&%' � � `�I7�� 786 ����������������� ���������

�&* "�.+� � � ���#� �������(- * "�.+�������%#4�����$ .����3�*��&��$ � .&3�$ *����B���*�4�� ��� b ,�%���$^g 2 � 3�� k �4d B � *�4�� ���- *�"�.+� � b - *�"�%�"Bo � 1�$^g 7 8 1�*���$;kQo ,+% ��$^g 2���3�� k �4d -�* "�.+� �<�*�" 0 b ,�%���$^g 2 � 3�� k �4d -�* "�.+� �/ *(1�2 ��3���� b ,�%���$^g 2 � 3�� k �4d -�* "�.+� �

� ��� � �I( �$\ ! \ �$+1# �a`�I7� 786 ���������������������

�&* "�.+� � � ���#� �������(/�0 1������%#4�����$ .������*���$�� /�5���� /�0 1��g�o �D.��&��*�� $�� /�5 ��� � /�0 1 �Go4k3�*��&��$ � .&3�$ *����/�: ��� *� b � $�0�3�*(�/ � ��%#$ b � $�0�3�*(�/�,+% ��$ b � $�0�3�*(�/�B � * "�.&3#$ b � $�0�3�*(�

/�5���� b )�$��&%D��4 � d /�5����/�9�*�� b )�$��&%D��4 � d /�0�1��/�:�1�1 b /�0 1��Bo ,�% ��$^g /�0 1��=k � d /�0�1��/�$�.�� b ,�% ��$^g /�0 1��=kDo / 0 1�� � d /�0�1��$ *�� ����� b ,�% ��$^g /�5 ����kDo / 0 1�� � d /�0�1��

$ *�� ������9�*���$ ��8 $lb ,�% ��$^g /�5 ����kDo 9�*���$ ��8 $Go /�0�1�� �4d / 0 1��

X 9

Page 62: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

/�,+% ��$ b /�0 1�� � d /�0�1��/�B � * " b ,�% ��$^g /�0 1��=k � d /�0�1��/�:�1�1�<�%D� b /�0 1��Bo /�0 1�� � d /�0�1��/�$�.���<�%D� b /�0 1��Bo /�0 1�� � d /�0�1��

�I7� 7�� ������������������������������������ ��� ���

�&* "�.+� � � ���#� �������(/�0 1����(2 ��3���������$+%(*��+���%#4�����$ .����3�*��&��$ � .&3�$ *����2 ��$ � b /�0 1 �'o ,�% �#$^gA9�*�����$���k)o 2����&%#;&%6��4 � d 2 � 3��

9�*(�&��$���2���3�� b � 1�$�%(*��ig $�*�� �����?k)o � 1�$&%�*��igA9�*(��$ ��8�$;ko 9�*���%�"Bo ,�% �#$^g /�0 1 �=k � d 9�*(�&��$��

/�0�1���2 ��3�� b /�0�3(*�� o ,+% ��$^g / 0�; ����kDo / 0 1�� �4d 2���3��� � ��/�0 1���2 ��3�� b /�0 1 �'o)� ���3�*��&��$ �Bo 2����&%#;&%6��4 �4d 2���3��

� *�2 ���&%#;�%D��4 b 2 ����%#;&%D��4

!D��'�%#8�9�*(�&��$��cb � 1�$�%(*��ig $�*�� �����?k)o � 1�$&%�*��igA9�*(��$ ��8�$;ko /�0 1��Bo 9�*���*�1 o /�0 1�� � d 9�*(�&��$��

�I7� 7 ����������������������������������������������������� �

�&* "�.+� � � ���#� ��������)+%#4 ����$ .�������2���3(� ������$�%(*(�����%#4�����$ .����3�*��&��$ � .&3�$ *����)+%D4 ��2 ��3��cb 5 ����� o /�0�1�� �4d /�*�1 "���3��

�I7� 7�� ������������������ ������������� � � � ��� ���

�&* "�.+� � � ���#� �������(5 ���(.�����2 ��'+%D�&%#$+%(*��+���%#4�����$ .����3�*��&��$ � .&3�$ *����5 ����"�� ' b 7�8�1�o 7�8 1 � d 2 � 3��5 ����"�� ' " b 7�8�1�o 7�8 1�o%"������ � � d 2 � 3��� "�5 ����"���' b 7�8�1�o ,�% �#$^g � " � �EkQo%"������ � � d 2 � 3��� . ����"�� " b � . ��� � o 7�8 1 � d � "�� �"�� ��� � b ,�%���$^g 2 � 3�� k � d)"�� ��� �

� ��� � � �)! � ` `^+,#-�a`�I7�� 786 �������������������������������

�&* "�.+� � � ���#� �������(7�8 1�� � ����%�*(�&���%#4�����$ .����3�*��&��$ � .&3�$ *����/�0�1�� " b 7�8 1/o / 0 1�� � d 7�8�1

?p~

Page 63: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

5 ��� b )�$��&%D��4 � d 7�8�19�*(�&��$�� b )�$��&%D��4 � d 7�8�1,�%D$ b ,�%#$ ������� � d 7�8�1

: ��� b ,�% ��$^g 7�8 1EkDo � 1�$�%(*��ig / 0 1��=k)o 7 8 1 � d 7�8�1: 1 1 b 7�8 1/o ,+% ��$^g 7 8 1Ek � d 7�8�1,���$ b ,�% ��$^g 2 ��3�� kDo 7 8 1 � d 7�8�19�� ��� b 7�8 1/o ,+% ��$^g : ��$�k � d 7�8�1

/�: �&� b ,�% ��$^g /�5 ����kDo 7 8 1 � d 7�8�1/&!6�&��$ b 7�8 1/o ,+% ��$^g / 0 1��=k � d 7�8�1

g�o �#.�4���� o+k

B���* "�.&3�$ b ,�% ��$^g 7�8 1Ek � d 7�8�1: 1 1�<�%D� b 7�8 1/o 7 8 1 � d 7�8�1!�' b 7�8 1/o 7 8 1/o 7�8 1 � d 7�8�1

"�%(��"+3�����" b 7�8�1� � ��*�8 � "ib ,�% ��$^g 7�8 1Ek � d 7�8�1/&!#, 2�7 b 7�8 1 � d 7�8�1:�/ b � ; ��� o 7�8 1 � d 7�8�1,�������� � "ib�7�8 1/o+$ ��%D� "+� � d 7�8�1

�I7�� 7�� ������������� � ����������� ����������� �������

�&* "�.+� � � ���#� ��������9��������(:���$���� � ��$+%#; �����%#4�����$ .����3�*��&��$ � .&3�$ *����:��($ b 7 8 1/o � 1�$�%(*��ig / 0 1��=k)o 7 8 1 �4d :���$

:��($ " b 7 8 1/o � 1�$�%(*��ig / 0 1��=k)o 7 8 1 o%"������ � �4d :���$� "�:���$ b 7 8 1/o � 1�$�%(*��ig / 0 1��=k)o ,+% ��$^g � "�1���$�kDo � 1�$&%(*��ig "������ � k �4d :���$� "�B ��$ b � .���� � o 7�8 1 �4d � "�1 ��$

�I7�� 7 ��������������� ������

�&* "�.+� � � ���#� ������� !D� '�%#8��%#4�����$ .����3�*��&��$ � .&3�$ *����

!D��'�%#8 b !D��'�%#8!D��'�%#8�, b !D��'�%#8!D��'�%#8�& b !D��'�%#8$&%D8�2 ��3�� b !D��'�%#8Go B�� ��3 o � 1&� �4d�$�%#8�"���3��

,�) ��3�$&%(*(� b !D��'�%#8 ��8�1Go � *�1 �4d 7 8 1& ) ��3�$&%(*(� b � *(1�� o !D��'�%#8 ��8�1 �4d 7 8 1� ��4 ��$&%(*(� b 7�8�1 �4d 7 8 1

� 1�: 1�1 b 7�8�1�o � *�1�o 7�8 1 �4d 7 8 1

?<�

Page 64: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

�I7�� 7�� ����������������� ��� �� � �����

�&* "�.+� � � ���#� ��������<�.�%���"���9���$��%'��1 *���$�� � � ��� ����� ��� ��� � �����%#4�����$ .����

3�*��&��$ � .&3�$ *����<�.&%���" b / 0 1��Bo 7 8 1 �4d 7�8 19���$ � b / 0 1��Bo / 0 1��Bo ,+% ��$^g 7 8 1Ek �4d 7�8 1

?)1

Page 65: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� �

� ����������� �� ����� �� �

����� ���������! �"#�$�&%�'(�)%�'+*-,/.�0213�54647�8:9<;2=>8#?A@CBED6FG@:FHDI;JD�KLBE;MBE8:D�;J@ND�=69PO#=�?QBE9SRTKURAVW?5@:FHD6BJBYXLZ[@:FH9\KLBHD�F]V^R_F�BH8:D�?A`#;YBEFE?T=aB2;HXbKTB>?QcRAV�d5?T;JeTD6f\fhgi7�8WD(@WFHD6BJBYXLZj@WFH9\KLBHD6Fk9<;k?mln?_@:@:9\K:opV^FER_lqBH8:Dn?A`#;YBEFE?T=aBr;HXbKLBE?QcsBEFHD�D�;tBHRuvRwcxDycC@:FED�;E;H9SRTKW;6z]?+f<?AKWo_{W?_o_D(9SKW|:D6@ND6KW|CD�KLBUV^R_FEln?QBkV^R_FU@WFHD6BJBYXLZj@WFH9\KLBH9\K:o~}S�I�w�jgpuvRwcDycC@:FED�;E;H9SRTKW;2=�?AK(`#DvV^RTFHln?QBHBHDI|�V^R_F&?t�Q?AFE9SD6BYX�RAVN@:FHDI;JD�KLBE?QBE9SRTK�BE?_FHoTDyB>;29\KW=6fS{W|:9SK:orBEDycbB�zd57��x��?AKW|����I7:�C�ig���J�&�J� ���G�N�G�G�W�G�2�]�!�!�G�!�!�)�G��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢_§:�_¨L©W�b�ª �W«:�T¨b¬N¥¡� ª�­ ¤ ­ �T®W¢L�_®b¬ b :¢_£:¤W¥Q¦C�C�b�b¢W¯w�C�_©b¬ ªQ°#ª �A¨N¥ b :¢_£:¤W¥Q¦C�C�b�b¢W¯w�C�_©b¬ ªQ°#ª �A¨W¢L±T�T¨L¬N¥ b :¢_£:¤W¥Q¦C�C�b�b¢T² ª ¬:�_¨C¤C�C¥ b :¢_£:¤W¥Q¦C�C�b�b¢_³C�L�T�W�T�W¥ b :¢_£:¤W¥Q¦C�C�b�b¢_´LµL«W�:¥ b :¢_£:¤W¥Q¦C�C�b�b¢_´LµL«W�b¢A¶:�:·T�_¤T¨:¤A¬ ª �_©N¥ b :¢_£:¤W¥Q¦C�C�b�b¢L± ªw¸ ©:¤_¬L�b¨:�L¢_¶:�C·T�T¤T¨C¤_¬ ª �_©N¥ b :¢_£:¤W¥Q¦C�C�b�b¢_¹L®L«C¨C�:¥b¥ ª �Q©!¥ b :¢_£:¤W¥Q¦C�C�b�b¢Tºb¤W¥_�b¢A»W�A¬:�A¨L©W¤A¬ ªI¼ �:¥ b :¢_£:¤W¥Q¦C�C�b�b¢_½C¤C�A�:�b¢_¶C� °Wª © ª ¬ ª �_©N¥ b :¢_£:¤W¥Q¦C�C�b�b¢W¯�© °Nª ® b :¢_£:¤W¥Q¦C�C�b�b¢b¾Q�W¤C� ªw°Nª �T¨W¥¥Q¬b¨C¤T¬:� ¸!ª �W¥�!¤ ª ©À¿ ª �_ÁC¨:¤A«ÃÂJ«b«#¢QÄW¤W¥Q¦:�b�b�:Å«b«#¢AÄW¤:¥Q¦:�C�b�ƿǬ:�A«:�C�_Áb©&ÂH¨:�_«W�L¤T¬&ÂH T W¢A£:±L��È_ÉÊ L W¢_£:±#ÅLÅ

¨L�#�T�W¥ b W¢_£:±ÌËmÍ:�_©W�Ç¢bιA�W«b¬bµLÏW�T®�Â�Å b W¢_£:±ÌË+±b�w�!�GÂH®!Å�¢bΡ®

ÐTÑ

Page 66: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

����� �Æ%a�G� ��.U460�������J� ���G�N�G�G�W�G�2�]�!�����2�#������#�!�G�� ��#���&��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢W¯Q�b�_©C¬ ªw°Nª �T¨C¢L±b�A¨b¬#¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢W¯Q�C�_©b¬ ªQ°#ª �T¨:¢L±T�T¨b¬W¥¨L�#�T�W¥ b W¢A£:±ÌËmÏ ª ©��A«ÃÂH®NÅ ¢bΡ :¤T¨C�_©!¥�Â>±GÂH®!ÅbÅ b W¢A£:±ÌË� b¨C� ° �A«ÃÂJ®!ÅÆ¢bΡ£��)Â��Y±)Â������TÅ��m±GÂH®!Å��s±)Â������TÅ��NÅ��������� ���G�N�G�G�W�G�2�]�!�����2�#������#�!�&��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢W¯Q�b�_©C¬ ªw°Nª �T¨W¥ª �W«:�T¨b¬N¥�¤ ­ �T®Ê£:¤W¥Q¦:�b�b�b¢W¯Q�b�_©C¬ ªQ°Wª �T¨W¥¨L�#�T�W¥ b W¢A£:±ÌË ¾_½C¤T¨!¯Q��Âj� � ¼ Å ¢bΣ&Â�� ±!�A«C¬&ÂJ£:±��"�#Å������^�#� ±GÂ���$%�TÅ�� ¼ �NÅ b W¢A£:±ÌË ¾Tºb�_©M¯Q��Âj� � ¼ Å ¢bΣ&Â�� ±!�A«C¬&ÂJ£:±��"�#Å������^�#� ±GÂ���$%�TÅ�� ¼ �NÅ b W¢A£:±ÌË ¾_½C¤T¨:±TµA�vÂ[� � ¼ Å ¢bΣ&Â�� ±!�A«C¬&ÂJ£:±��"�#Å������^�#� ±GÂ���$%�TÅ�� ¼ �NÅ b W¢A£:±ÌË ¾Tºb�_©W±TµA�vÂ[� � ¼ Å ¢bΣ&Â�� ±!�A«C¬&ÂJ£:±��"�#Å������^�#� ±GÂ���$%�TÅ�� ¼ �NÅ�������'& ���G�N�G�G�W�G�2�]�!��(�!�G�!�G�2����!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢T² ª ¬:�T¨C¤b�:¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢T² ª ¬:�_¨:¤C�C¥¨L�#�T�W¥ b W¢_£:±ÌË ¯I©C¬&ÂJ®!Å ¢bÎʱ)ÂH®!Å b W¢_£:±ÌË�ºTÄW¤T¨�ÂH®!Å ¢bÎʱ)ÂH®!Å b W¢_£:±ÌË*)W�L�b¤_¬&ÂH®!Å ¢bÎʱ)ÂH®!Å b W¢_£:±ÌË+±T¬b¨ ª © ¸ ÂH®!Å ¢bÎʱ)ÂH®!Å b W¢_£:±ÌËm b¨ ª ��¯I©C¬&ÂH®NÅ ¢bÎʱ)ÂH®!Å b W¢_£:±ÌËm b¨ ª �#ºTÄW¤T¨&ÂJ®!Å ¢bÎʱ)ÂH®!Å b W¢_£:±ÌËm b¨ ª �N±T¬b¨ ª © ¸ ÂH®!Å ¢bÎʱ)ÂH®!Å b W¢_£:±ÌËm b¨ ª ��)W�L�b¤T¬�ÂH®!Å ¢bÎʱ)ÂH®!Å b W¢_£:±ÌËm b¨ ª �W¶:�_� ­ �T�)ÂH®!Å ¢bÎʱ)ÂH®!Å b W¢_£:±ÌË�ºb² ª ¬b² ª ¬&ÂH®NÅ ¢bÎʱ)ÂH®!Å

���,+ - .0/21s4y�50���'&��J� ���G�N�G�G�W�G�2�]�!�43�����5&�M�G��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢_³:�T�T�#�T�:¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_³:�L�T�W�L�W¥¨L�#�T�W¥ b W¢A£:±ÌË�³:�T�T�#�L�)ÂJ®6�pÍ:�_©:��� ­ �L�LµNÅ¢Lν�7NÂ��[£�7!Â��Y±)Â��>�N�L�T�W�T���_Å��n±)ÂJ®!Å��s±)Â��6ÁLÄW�T¨:���_Å��m±)Â���84�TÅ��#Å��

Ð:9

Page 67: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

­ �L�Lµ6�±GÂ�� � �TÅ��NÅ b W¢A£:±ÌË� b¨C� ¸ ¨:¤w�v ­ �L�LµNÅ�¢bν�7NÂ��Y±)Â���84�TÅ�� ­ �L�Lµ6�+±GÂ�� � �TÅ��NÅ b W¢A£:±ÌËmÏW�T�Lµ&ÂE�#¥bÅ ¢bν�7!ÂaÈQÄb«W�W¥Q¬:¢:¥_�_«#¢L� ª ¥Q¬� ª � ���Y±GÂ������AÅbÅ_Î �#¥CÅ b W¢A£:±ÌË�´:�A«C¶:�W·T�C¥�ÂE�#¥CÅ ¢bν�7!ÂaÈQÄb«W�W¥Q¬:¢:¥_�_«#¢L� ª ¥Q¬� ª � ���Y±GÂ������AÅbÅ_Î �#¥CÅ����� ���� 4y.���.r��% .('+0����5�J� ���G�N�G�G�W�G�2�]�!�� � �)����52�2�]���G�� M�M�!�G�4���W�Ã��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢L± ªI¸ ©W¤_¬T�C¨C�C¢Q¶:�W·A�L¤_¨:¤_¬ ª �Q©!¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢L± ªw¸ ©:¤T¬L�b¨C�C¢A¶:�C·T�L¤A¨:¤_¬ ª �A©!¥¨L�#�T�W¥ b W¢A£:±ÌËs± ªI¸ ©C¶:�W·_�GÂH®N¥ ��¬L«MÅ¢bΣ�7NÂ��[£�7!Â>È:¥_�_«#¢L� ª ¥w¬�ÂH L W¢Q£:±ÆÈTÉʳb¦:±����������TÅ_Î�®N¥CÅ��s±)Â���ËbË%�TÅ��m¬L«��NÅ����5��� ���G�N�G�G�W�G�2�]�!�������)�]���G�� M�!�M�2���6��:� ��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢_´bµT«W�C¢A¶C�W·_�L¤A¨:¤T¬ ª �A©!¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_´bµL«W�b¢_¶:�:·_�L¤_¨:¤A¬ ª �Q©!¥~¤ ­ �T®¨L�#�T�W¥ b W¢A£:±ÌË�´bµT«W�)ÂH¬bµ#·_�_©�n¬bµ ¼ ¤T¨#¥ �p¬!Å¢bΣ�7NÂ��[§:�TµTÁW�T¨C��ÂE±)Â��6¬LµL«:���AÅbÅ��(¬bµN·A�_©�m£�7!ÂJ¬bµ ¼ ¤T¨#¥CÅ��m±GÂ��I¿��TÅ��m¬!�NÅ b W¢A£:±ÌË�¶:¤_¬:¤)ÂH¬6�s·b¥ �s�C�T¨!Å¡¢bΣ�7NÂ��[§:�TµTÁW�T¨C��ÂE±)Â����b¤T¬C¤��AÅbÅ��(¬6�½!�)Â��[½��GÂaÈA«C¨:� ­ ¤T¨N¥�Â��Y±)Â��I¿��TÅLÅAÎ�·b¥CÅ��+�C�_¨!�NÅ��NÅ b W¢A£:±ÌË�Í:�AÁC´bµL«W�GÂH¬L«��©!·_�_©!¥w¬b¨6�m�C�_¨!Å¡¢bΣ�7NÂ��[§:�TµTÁW�T¨C��ÂE±)Â��y©:�_Áb¬bµ_«W���AÅbÅ���¬L«�s±)Â���¿��TÅ��p©!·A�_©!¥Q¬b¨��m�C�T¨!�#Å b W¢A£:±ÌË�Í:�_¶:�T¨ ªw¼Nª © ¸ Â�Å ¢bιA�W«C¬LµLÏW�T®&Â6Å b W¢A£:±ÌË+ºC�A©!¥Q¬b¨b¶C�W·T�G ° �T¨:¤b�L� �m·_�_©C¬:�_®b¬6� ·_�A© ª ���m¬L«N¥CÅ¡¢bΣ�7NÂ�� ° �T¨C¤C�b� �+·_�_©C¬:�_®b¬6��±)Ây·_�_© ª �#Å��p£�7!Â>ÈI�!¤_«ÃÂJ³b¦b :¤T¨C�_©!¥bÅAÎA¬L«!¥LÅ��#Å b W¢A£:±ÌË~¯I© °Nª ®CºC�A©!¥Q¬b¨& ° �T¨C¤b�b���m·_�_©b¬:�T®b¬6�m¬T«� ·_�_©W�_«6�m¬L«MÅ¡¢bΣ�7NÂ�� ° �T¨C¤C�b� �+·_�_©C¬:�_®b¬6�p¬L«6� ±GÂ6·_�_©W�A«MÅ��p¬L«!�NÅ����5�'& ���G�N�G�G�W�G�2�]�!�������)�G��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢_´bµT«W�W¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_´bµL«W�:¥�¤ ­ �T®¨L�#�T�W¥

Ð �

Page 68: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

 b W¢A£:±ÌË�´b»L¨b¨:�_Á ¢bÎʱ)Â��NÂa¢bÎWÅ��_Å b W¢A£:±ÌË�´ � © ª ¬À¢bÎʱ)Â��!Â6Å��TÅ b W¢A£:±ÌË�´C² ª ¥Q¬À¢bÎʱ)Â�� � ���TÅ b W¢A£:±ÌË�´b L¨:�L�T�!·w¬Ç¢bÎʱ)Â��!Â������ «C¨:�T�T�!·Q¬ ¬bµT«W�������CÅ��_Å

��� Í:�_¬:�ÃËm�C�_«W�A©:�#¥��_© ·_�_©b¬:�T®b¬ b W¢A£:±ÌË�´Cºb�_©ÃÂH®!Å ¢bÎDZGÂH®!Å b W¢A£:±ÌË�´b½C¤T¨&ÂH®!Å ¢bÎDZGÂH®!Å b W¢A£:±ÌË�´b»T«b«bÏ ª ©&ÂH®6� µNÅ ¢bΣ�7!Â��[®6�mµ!�NÅ b W¢A£:±ÌË�´ )T�b©bÏ ª ©&ÂH®6� µNÅ ¢bΣ�7!Â��[ :¤T¨:�A©!¥�ÂH®!Å�� ±GÂ��Q¢bÎ4�_Å��mµ!�NÅ b W¢A£:±ÌË�´b»T«b«ÃÂH¬6� ¬N¥CÅ¢bΣ�7NÂ��[¬6�m£�7NÂH¬N¥CÅ��#Å b W¢A£:±ÌË�´ )T�b©ÃÂH¬N¥��p¬!Å¢bΣ�7NÂ��[£�7!Â>È:¥_�_«#¢L� ª ¥w¬�ÂH³L¦b b¤T¨:�Q©!¥������w¢bÎ��TÅAÎ ¬N¥CÅ��s±)Â��Q¢bÎ4�TÅ��p¬!�NÅ

 b W¢A£:±ÌË ):�_¨:¤C�b�GÂE¤W¥ � ¬NÅ ¢bΣ�7NÂ��Y±)Â�� ° �T¨:¤C�L�4�TÅ���£�7!Â>È:·_�w�b�N¤W¥TÎ�¤:¥CÅ��s±)Â���$ �TÅ��p¬!�#Å b W¢A£:±ÌË ):�_¨:¤C�b�Tºb�_©C¬:�T®L¬&Â>¤:¥���¬��s¬��yÅ¢LΣ�7NÂ��Y±)Â�� ° �T¨:¤C�L�4�TÅ���£�7!Â>È:·_�w�b�N¤W¥TÎ�¤:¥CÅ��s±)Â���$ �TÅ��p¬6� ±)Â���¿:Î4�TÅ�� ¬�� �NÅ b W¢A£:±ÌË�´C² ª ¥Q¬&ÂH¬NÅÆ¢bΣ�7!Â��Y±GÂ�� � �TÅ��J¬6�E±)Â������AÅ��#Å b W¢A£:±ÌË�´b L¨:�L��ÂH¬#¥CÅÆ¢bΡ :¤T¨C�_©!¥�ÂH£�7!ÂaÈ:·_�I�b�!¤W¥AÎ_¬#¥CÅLÅ����5�� ���G�N�G�G�W�G�2�]�!� � �2��5)��� �G����C���6��:� ��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢_½:¤b�A�W�b¢A¶:� °Nª © ª ¬ ª �A©!¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_½:¤C�A�:�C¢_¶C� °Nª © ª ¬ ª �Q©!¥¨L�#�T�W¥ b W¢A£:±ÌË�½:¤b�T�C� ° ÂE��7��m��#Å¡¢bΣ�7NÂ��Y��7��m±)Â��I¿��_Å��+�� �NÅ b W¢A£:±ÌË�½:¤b�T�C� °� Â>��7��p����mÁC¨!Å¡¢bΣ�7NÂ��Y��7��m±)Â��I¿��_Å��m½��)Â�� ����pÁC¨!�#Å��NÅ b W¢A£:±ÌË �b�T½:¤C�T�C� ° Â>��� ¸ ¥ �mÁC¨!Å¡¢bΣ�7NÂ��Y���m½��GÂ�� ¸ ¥ �nÁC¨!�NÅ��#Å b W¢A£:±ÌË �T�:¤T¨C�C�L�)Â��#¥ �p�#Å¡¢bΣ�7NÂ��Y±)Â����,�TÅ��n£�7!ÂaÈ:¥A�_«#¢b� ª ¥Q¬& ª ����� �4���_Å_Î��W¥CÅ��p� �#Å b W¢A£:±ÌË Ä:�T¨:�)Â�� �NÅÆ¢bιA�:«C¬bµLÏW�_®&Â�Å

ÐTÐ

Page 69: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

 b W¢A£:±ÌË Ä:�T¨:�)ÂE�W¥CÅÆ¢bΣ�7NÂ��Y±)Â��yÁbÄW�T¨:�4�TÅ��n±)Â���8��TÅ��m½��)Â>È:¥_�w� ª ·_�C�L�_©N¥TÎ �#¥CÅ��s±)Â�� � �TÅ��NÅÁbÄ:�T¨:�ÊÈA©W�_¬&Â�� �NÅAÎ��#¥����� ����� ��� 0G0G%%.3'+0���h���J� ���G�N�G�G�W�G�2�]�!� � �G�N�]���)���G�!�M�)���6��G�)��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢TºC¤:¥_�C¢A»:�_¬C�T¨_©W¤T¬ ªw¼ �W¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢TºC¤W¥_�b¢_»W�A¬C�T¨T©W¤A¬ ªw¼ �W¥¨L�#�T�W¥ b W¢A£:±ÌË�»W�A¬&Â>���x¥ ªI¸ �s��#Å¡¢bλC²T´&ÂH£�7!Â��[£�7!Â�� ��� È_ b W¢L±W¯ �:ÎÇ¥ ªw¸ �NÅ��m£�7!Â��Y±)Â��Q¢LÎ4�TÅ�� �� �NÅ��NÅ��½!�)Â��[£�7NÂ��Y���mÈ_ b W¢L±W¯ �:ÎÇ¥ ªw¸ �NÅ��m£�7!Â��Y±)Â��Q¢LÎ4�TÅ�� �� �NÅ��NÅbÅ b W¢A£:±ÌË�»W�A¬ Â>���s¥ ªw¸ �s�����ÁC¨!Å¡¢bν��GÂ��[£�7!Â��Y����ÈA b W¢L±#¯ �:ÎÊ¥ ªw¸ �NÅ���½��)Â��j£�7!Â��Y±GÂ��Q¢bÎ4�_Å��n�� �NÅ���Áb¨!�NÅ��NÅ b W¢A£:±ÌË �b�T»W�_¬&Â>� � ¥ ªw¸ �m«W¤_¬N¥ �pÁC¨!Å¢bν��GÂ��[£�7!Â��Y����ÈA b W¢L±#¯ �:ÎÊ¥ ªw¸ �+½!�)ÂJ«W¤T¬#¥CÅ��NÅ���ÁC¨!�NÅ b W¢A£:±ÌË �b�T :¤T¬&Â��_�W¤C�:¥ � �#Å¢bΣ�7NÂ��Y±)Â����,�TÅ��mÈ:¥_�_«#¢L� ª ¥Q¬& ª ����� �����TÅQÎ �_�W¤C�:¥ �s±)Â��Q¢bÎ4�TÅ���� �NÅ b W¢T±#¯ �ÌËmÍ:�_©W�Ç¢bÎÍ:�_©W� b W¢T±#¯ �ÌË+±b�w�!�)Ây¥ ªw¸ ÅÆ¢LÎ £�7NÂ��Y±)Â��]ËbË%�TÅ��+¥ ªw¸ �#Å���h����� ���G�N�G�G�W�G�2�]�!� �� �2�2�)�]����:� ��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢_¹b®T«C¨:�:¥L¥ ª �_©#¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_¹b®L«C¨C�W¥b¥ ª �_©N¥x£:¤W¥w¦:�C�b�b¢QÏb� ª �T�C¢TºC¤T¬b¤¨L�#�T�W¥ b W¢A£:±ÌË�½:¤_¨&ÂH®!Å�¢bÎʱ)ÂH®NÅÁbÄ:�T¨:�ÊÈ ª ¥_¢:¥Q¬b¨ ª © ¸ Î ® b W¢A£:±ÌË�½:¤_¨&ÂH®!Å�¢bήÁbÄ:�T¨:�ÊÈA©W�_¬& ª ¥T¢C¥Q¬b¨ ª © ¸ Å_Î~® b W¢A£:±ÌË+ºC�A©!¥Q¬b¨&ÂJ®!ÅÆ¢bÎ ±)ÂH®NÅÁbÄ:�T¨:�ÊÈ ª ¥_¢:¥Q¬b¨ ª © ¸ Î ® b W¢A£:±ÌË+ºC�A©!¥Q¬b¨&ÂJ®!ÅÆ¢bΡ®ÁbÄ:�T¨:�ÊÈA©W�_¬& ª ¥T¢C¥Q¬b¨ ª © ¸ Å_Î~® b W¢A£:±ÌË+² ª ¬&ÂH®!Å�¢bÎʱ)ÂH®NÅÁbÄ:�T¨:�ÊÈ ª ¥_¢:¥Q¬b¨ ª © ¸ Î ®

Ð

Page 70: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

 b W¢A£:±ÌË+² ª ¬&ÂH®!Å�¢bήÁbÄ:�T¨:�ÊÈA©W�_¬& ª ¥T¢C¥Q¬b¨ ª © ¸ Å_Î~® b W¢A£:±ÌË Mª �T�#·_¤T¨b�Ê¢bÎʱ)Â�� � �_Å b W¢A£:±ÌË� b¨C�L�T�!·Q¬�Â>�W¥CÅ�¢bΣ��GÂ��Y±)Â��NÂ��TÅ��n£�7!ÂaÈ:·A�w�b�!¤W¥_Î��W¥CÅ�� ±GÂ��TÅ��TÅ��NÅ b W¢A£:±ÌË � © ­ �T®:�L�)Â>�W¥CÅ�¢bΣ��GÂ��Y±)Â��N � �TÅ���£�7!Â>È:·_�w�b�N¤W¥TÎ��:¥CÅ��s±)Â�� � Å��TÅ��NÅ b W¢A£:±ÌË�´!¯w²L¶b¹&Â>�WÅÆ¢bΣ��)Â��Y±GÂ������TÅ��m� �NÅ b W¢A£:±ÌË�»b´�ÂH®6�+�#Å¢bΣ��)Â��[®��+±)Â������_Å��+� �NÅ b W¢A£:±ÌË+²C¤ ­ �C�L�L�)Â>��� °_­ ©:�#¥CÅ�¢LΣ��GÂ��Y���+±)Â���84�TÅ�� £�7!ÂaÈ:·A�w�b�!¤W¥_Î °T­ ©:�W¥CÅ���±)Â�� � �TÅ��#Å b W¢A£:±ÃË »L«b«LÏ ª ©ÃÂ>�47�����#Å¡¢bΣ��GÂ��Y��7��  :¤T¨:�_©N¥�Â>��#Å��NÅ b W¢A£:±b�ÃË »L«L«ÃÂH½:¤T¨�ÂJÏ ª ©��Q«ÃÂ>�A«!ÅbÅ�� �Y��7�� �� �NÅ¡¢bλC²T´&ÂH :¤T¨C�_©!¥�ÂH£�7!Â�� �47��n±)Â>�_«MÅ��+�� �NÅbÅ��»b²L´&ÂH£��GÂ��[½:¤T¨�ÂJÏ ª ©��w«ÃÂ>�Q«MÅLÅ�� ÈI�N¤_«ÃÂH³b¦L :¤T¨:�_©N¥CÅ_Î6�[��7��n�� � �#Å��½��)Â��[½C¤T¨&ÂJÏ ª ©��A«ÃÂ>�A«MÅLÅ��¯I©:�C�_©b¬&ÂH½��)Â>ÈI�!¤_«ÃÂJ³L¦b b¤T¨C�_©N¥bÅ_Î��Y��7��n�� �NÅbÅ��NÅLÅbÅ b W¢A£:±ÌË�»L«L«ÃÂ>���+�W¥bÅ¢LλC²T´&ÂH£��)Â��Y����È��!¤_«ÃÂH³L¦b :¤T¨:�A©!¥CÅ_ÎL�:¥��NÅ��½!�)Â��Y��� ¯�©:�C�_©C¬�ÂH½��)ÂaÈ��!¤_«ÃÂH³L¦L :¤A¨:�A©!¥bÅAÎL�C¥CÅbÅ��#ÅLÅ b W¢A£:±ÌË�´bµT«W�L��Â>� �p¬!Å¢bΠ:¤_¨:�_©!¥�ÂJ£�7!Â��Y� �p±)Â���ËbË%�TÅ��p¬!�NÅbÅ b W¢A£:±ÌË�» ­ ¥�Â>¤T¨ ¸ ¥ � ¥ ªw¸ �+�#Å ¢LΠ:¤_¨:�_©!¥�ÂJ½��)Â��[£�7!Â��j£!�)Â��Y±2Â���������4�_Å��(£�7!Â>¤_¨ ¸ ¥CÅ��#Å��È_ b W¢L±W¯ �:ÎÇ¥ ªw¸ � ±GÂ��Q¢bÎ4�_Å��NÅ��� �NÅbÅ b W¢A£:±ÌË�´b» ­ ¥�ÂH¬N¥����#Å¢bν��GÂ��[£�7!Â��[£��)Â�� ±)Â�� � ��������TÅ��(£�7!ÂJ¬N¥CÅ��NÅ���±)Â��Q¢LÎ4�TÅ��NÅ��m� �NÅ b W¢A£:±ÌË+²C�_¬&ÂE�C�W·_�:¥ �m�WÅ ¢bν��GÂ��[£�7!Â��Y±)Â��Q�T�T¬��_Å�� ±GÂ���84�TÅ��½��)ÂaÈ:¥A�w� ª ·_�b�L�_©!¥TÎ��C�W·_�:¥CÅ��±)Â�� � �_Å��NÅ��£�7!Â��Y±)Â�� ª ©��TÅ��+� �NÅ��NÅ b W¢A£:±ÌË~¯ ° Â>��7��+�� � �#Å¡¢bÎ

��

Page 71: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

½��GÂ��[£�7!Â��Y±)Â�� ªw° �TÅ�� ��7��s±)Â���¬LÄW�_©��TÅ��NÅ��¯�©:�C�_©C¬�Â>��#Å��p±)Â��w�b�:¥_���TÅ��x¯I©:�C�A©C¬&Â>��WÅ��NÅ b W¢A£:±ÌË+ºC¤:¥_�)Â>���m¤C�_¬N¥CÅ¡¢bν��GÂ��[£�7!Â��Y±)Â��_·A¤W¥_�4�_Å��n���x±GÂ��w� ° �_Å��NÅ��½!�)ÂaÈA«C¨C�W¥_�w� ª ·_�C�L�_©#¥� �[±)Â���8��_ÅbÅQÎ ¤b�_¬N¥CÅ��±GÂ�� � �TÅ��NÅ b W¢A£:±ÌË�´!¯�©!¥Q¬&Â>� �p¬!Å¢bΣ�7NÂ��Y���m£��GÂ��Y±)Â���� �TÅ��n¬6�x±GÂ������TÅ��NÅ��NÅ b W¢A£:±ÌËmÏb� ª �T��ÂH¬����#Å¢bΣ��GÂ��Y±)Â�� ­ � ª �T���TÅ��( :¤T¨:�A©!¥�ÂH½��GÂ��[£��)Â��[¬�� ±)Â������TÅ��NÅ��p� �NÅbÅ��NÅ b W¢A£:±ÌË+ºC¤_¬:¤)ÂH¬�7��p¬ ��s�W¥CÅ¢bλC²T´&ÂH£��)Â��Y±)Â��_·A¤T¬:¤4�_Å��n±)Â�� � �_Å��m¬�7��s±)Â������TÅ��+±)Â�� � �TÅ�� ¬ �� ±)Â������_Å�� :¤T¨:�_©N¥�ÂH£�7!Â>ÈA«W�W¥Q¬:¢:·A�w�L�N¤W¥AÎ �:¥CÅbÅ��NÅ��½!�)Â��[£��GÂ��Y±)Â��A·_¤T¬:¤��AÅ��n±)Â�� ���TÅ��m¬�7��s±)Â������TÅ��+±GÂ�� � �TÅ��m¬ ��s±)Â������TÅ��NÅ��¯I©:�C�_©b¬&ÂH :¤T¨C�_©!¥�ÂH½!�)Â>ÈA«:�:¥Q¬C¢:·A�w�L�N¤W¥AÎÆ�W¥bÅbÅbÅ��NÅLÅ���h���'& ���G�N�G�G�W�G�2�]�!���b� �� ��!�L�_�#�L�¡ b W¢A£:¤W¥Q¦:�b�b�b¢W¯I© °Nª ®ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢W¯I© °Nª ®¨L�#�T�W¥ b W¢A£:±ÌË~¯I© °Nª ® ¢bÎʱ)Â�� ª © °Nª ®��TÅ b W¢A£:±ÌË~¯I© °Nª ®C²Ç¢bÎʱ)Â�� ª © °Nª ®:�4�TÅ b W¢A£:±ÌË~¯I© °Nª ® � ¢bÎʱ)Â�� ª © °Nª ®L¨��TÅ b W¢A£:±ÌË ) ª ®b¶:�W·T�2 ª �n«6�x�_«N¥CÅ¡¢bΣ�7NÂ�� ª �p«�+£�7!Â>È:¥_�_«#¢L� ª ¥Q¬& ª �����������AÅ_Î��_«!¥CÅ��#Å b W¢A£:±ÌË+²C±L�W·Q¬ ª �A©ÃÂ>���p�_«MÅ¡¢bΠ:¤_¨:�_©!¥�ÂJ£�7!Â��Y� �p±)ÂE�_«MÅ��NÅLÅ b W¢A£:±ÌË � ±L�W·Q¬ ª �A©ÃÂ>�_«� �#Å¢bΠ:¤_¨:�_©!¥�ÂJ£�7!Â��Y±GÂ>�_«!Å�� � �NÅbÅ b W¢A£:±ÌË�Í:� ¸ ¤T¬ ª �A©ÃÂ>�#Å�¢bΣ��GÂ��Y±)Â��w¢4�TÅ��p� �NÅ b W¢A£:±ÌË2�A«b»L«b«ÃÂ>�47����_«�s��WÅ¢LΠ:¤_¨:�_©!¥�ÂJ£�7!Â��Y�47��n±)Â>�_«MÅ�� �� �NÅbÅ

��

Page 72: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� �

� ��� ��� ��� �� ��� � � ��� � ���

�n��� ���������! �"$#7�8:DiBHF>?AKW;JV^R_FEln?QBH9\R_Ks=6R_l�@#RTK:D6KLB>;5|CD6OWK:D�| 9SKsBE8:9<;5@W?_@#D�Ft?_fSf&% RTFHemR_Kxdt?_;He_D6f\f]@:FERAZo_F>?Aln;G9\K�?_`W;JBHF>?_=aB&;HXbKTB>?Qc�V^RTFHl+g)d R'%vD6�_D�F�zQl�RL;YB&=yRTl�@#RTK:D6KLBE;Ã?_=6=6D6@CB�RTK:fSX3?r;H{:`W;HDyBRAVMBE8:D5D�KLBH9\FHDtf\?_K:o_{W?_o_DTg)( K BE8:9<;Ãl�RC|C{:f\D BE8:D�;HDt;H{:`W;HDyB>; ?_FHD5=>8#?AF>?_=aBED6FE9���D�|(`bX�l(DI?AKW;RAV]FED�=6{:F>;J9\�_D�@W?ABJBHD�FHK#;t} Ñ+* �[g�7�8:D�;HD5;JBHF>?QBED6o_9\D�;Ã=6?AKn`ND5{#;JDI|�BHRi=>8WD�=>e�=yR_K:V^R_FEl�?_KW=yD�R_V9\KTBED6FEl�D�|C9<?QBEDrFED�;H{:fSBE;vBERnR_K:DkRAVGBH8WDU;J{:`#;JD6BE;�g�!�L�_�#�L�¡£:±C¢_ºTÄW�W·Q¦ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_§:�T¨L©:�C� � ªI­7�8:DU@#?QBJBED6FEKW;5?_FHDiDycbBHD�KW|CD�|�BER FED6@NR_FHB5�b9SRTf\?ABH9\R_KW;�R_V)BH8:DiV^R_FEl�?AB�g�7�8:D(=yR_K#;YBEFH{W=yBHRTF¹b¨b¨C�T¨ BE?_oT;n? ;H{:`CBHD�FHl ?_;�D6FEFER_K:D�R_{W;�z,%�9SBH8 ? ;JBHFE9\K:o 9SKW|:9\=�?QBH9\K:o~BH8WD+BYXL@NDsRAVtBH8:DD6FEFER_FIgx7�8:D�FH{:f\D ³b¦b¹b¨b¨C�T¨ BE?AoL;i? BHD6FEl-%�9SBH8�BE8:9\;�=6R_KW;JBHFE{W=aBER_F(?AKW| ?_f\;HRx@WFH9\KLBE;(?l�D�;E;H?_o_DtBHR ;JBE|CD�FHFIg¥ ªw¸ ©W¤T¬L�C¨C�·_�_©!¥Q¬L¨L�!·Q¬:�_¨N¥¹b¨L¨:�T¨ Ës±_¬b¨ ª © ¸ �¤À¢bÎǤ¨L�#�T�W¥³b¦b¹b¨b¨C�T¨&Â6¥CÅ�Ë�® ¢bιb¨b¨:�T¨�ÂaÈ:¥TÎGÂ6Å��n®NÅÆÁbÄ:�T¨:�ÇÈT�C� ­ � ¸ Â6¥CÅAÎ ®.��J�&�J� /101232547684:9<;)=?>A@CB,D,@FEHG�I7 XL@ND&D6cb@WFHDI;H;H9SRTKW;]=6R_KW;H9\;JB�R_VLBYXb@NDÃ�Q?AFE9<?A`:f\D�;�z6BYXb@ND =6R_KW;JBHFE{W=aBER_F>;HJ V^{:K#=aBHRTFE;LKazwV^{WKW=aBE9SRTKBYXb@#DI;MJ^KCZ ?AFEXFKaz�BYXb@NDMNT{#?AKLBH9SO#=6?ABH9\R_K]z ?AKW|ÆBYXb@#D+?A@:@WfS9<=6?ABH9\R_K]gPO�BYXb@NDs=yR_K#;YBEFH{W=yBHRTFJ ´bµCºC�_© KÃ9<;�{W;HD�|m9SKs|:?ABE?3BYXb@#DU|CDI=yf<?AF>?QBE9SRTKW;6g¥Q¬b¨C¤T¬:� ¸!ª �W¥¬bµL«W�)ÂJ¬!Å ¿´b½C¤T¨& ª �#Å É´Cºb�_©Ã ª �#Å É´ )T�b©ÃÂa� ª ¥Q¬&ÂH¬!Å�� ¬!ÅÆÉ):�_¨:¤C�b�GÂ>� ª ¥Q¬&ÂJ´b½:¤T¨& ª �#ÅLÅ��(¬!Å¡É´b»T«b«ÃÂH¬6�s� ª ¥Q¬&ÂH¬NÅbÅ

RQ

Page 73: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

´bµCºC�_©À¿´Cºb�_©Ã ª �#Å ÉÇ´b»T«b«ÃÂH´Cºb�_©Ã ª �#Å��m� ª ¥Q¬&ÂH´L½:¤T¨& ª �NÅbÅbÅ´bµL«W� ¿Ê¨:�W·�¬&ÂH¬bµL«:�)ÂH¬!Å�ÈTÉdzL¦b¹b¨b¨:�_¨& � ��ÍC�T¬¤Ê¬bµL«W�&Ë%�TÅbÅ

O V^{:f\fSX�BYXb@ND�|ÆDycC@:FED�;E;J9\R_K 9<;�? BYXb@ND�|¡?QBER_l+zÃ?AK¡?A`W;JBHF>?_=yBH9\R_K RQ�TD6F(�Q?AFE9\?_`:fSDI; J K:RAB@W?ABJBHD�FHK#; Kyzb?3=6?T;JDtDycC@:FED�;E;J9\R_K %�9SBH8+?AfSBHD�FHKW?ABH9\�_DI;&F>?AK:oT9SK:oiRQ�_D6Fv;J9\l�@:f\Dt@W?ABJBED6FEKW;�J K:RABK:DI;YBED�|CKyz]fSD6B�`:9SK#|C9SKWoT;kR_F�Z ?AFEXs?A@:@:f\9<=6?QBE9SRTK]z!BYXb@#Dn?_`W;YBEFE?T=aBE9SRTK]z!R_FrBYXb@#D�9\KW;YB>?AKLBH9<?QZBH9\R_K�g

»b¹b®L«À¿Ê½:¤T¨& ª �NÅ ÉÀºb�_©!¥Q¬b¨� ª �NÅ�ÉDz ª ¬� ª �NŤT¬:�w��ÂJ¬!Å ¿Ç´LµL«W�L��ÂJ»b¹b®L«�n¬!Å´bµL«W�L�T½:¤T¨ ¿Ç´bµL«W�L�)ÂH½:¤T¨& ª �NÅ��J´TµL«W�:Å´bµL«W�L�T»b¬:�w� ¿À¤T¬:�I��ÂH´bµL«:�#Å¥ ª �W«#�T�C¢A«W¤T¬L¬:�T¨L©Ã ¼ ¤_¨!Åx¿ºC�A©!¥Q¬b¨& ª �NÅ�É»L«L«ÃÂEºC�_©N¥Q¬b¨& ª �NÅ��p� ª ¥Q¬& ¼ ¤T¨!ÅbÅ´bµL«W�L�T :¤T¬ ¿¥ ª �W«#�L�C¢Q«W¤T¬b¬:�_¨L©ÃÂH´bµ_«W�T�T½:¤_¨!ÅÈTÉʳb¦b¹L¨b¨:�T¨&Â�� ��Í:�T¬¡¤ ´bµL«W�L�T :¤T¬vË �_ŤC�_¬&Â>� �m¬6�+«:¤T¬!ÅÆ¿»W�A¬&ÂJ«W¤T¬��+�_«C¬ ª �A©ÃÂH¬!Å��p�#ÅÈTÉʳb¦b¹L¨b¨:�T¨&Â�� ��Í:�T¬¡¤_© ¤C�_¬vË �TÅ�T®L«ÃÂ>� �m¬6�+«:¤T¬6� ¼ ¤T¨!ÅÆ¿» ­ ¥�Âa� ª ¥w¬& ¼ ¤T¨NÅ��p�A«C¬ ª �_©&ÂH¬!Å����WÅ�ɺC¤:¥_�)Â>���s� ª ¥Q¬&Â>¤b�_¬&Â>���n¬6��«W¤T¬!ÅbÅLŠɲC�_¬&Âa� ª ¥w¬&ÂE�C�W·_�GÂ>���(¬!ÅbÅ�� �WÅ¡É»L«L«ÃÂ>���s� ª ¥Q¬&Â>�#ÅLÅ É´b» ­ ¥�Âa� ª ¥Q¬&ÂH´b½C¤T¨& ª �WÅbÅ�� �#ÅÆÉ´!¯�©!¥Q¬&Â>� �s� ª ¥Q¬&ÂJ¬!ÅbÅ´bµL«W�L�T¹b®L«Ê¿¨:�:· �)ÂLÂH´bµL«W�T�L»b¬:�w�ÊÉÀ�T®L«ÃÂ>� �+´LµL«W���m´bµT«W�L�L :¤_¬6�p´bµL«:�L�L½:¤T¨NÅbÅÈTÉʳb¦b¹b¨b¨C�T¨& � �6Í:�T¬¡¤Ê´bµT«W�L�L¹b®T«�Ë �TÅbÅ

O @:FER_oTFE?_l$=yRTKW;H9\;JBE;�R_V]?�fS9<;JBÃRAV!BHRT@CZ |CD�=6f\?_FE?ABH9\R_KW;�zR%�8:9<=>8 ?AFED |:?QB>?rBYXb@#D5|:DyOWK:9SBH9\R_K#;6z;H9SoTKW?QBE{:FHDk|CDI=yf<?AF>?QBH9\R_K#; RTF��Q?Af\{:DU|CDyO#K:9PBE9SRTKW;�g�C�W·T�GÂE���m¬!Å�¿½:¤b�T�C� ° ÂJ½:¤T¨& ª �NÅ�� �#ÅÆɱ ªI¸ ©C¶:�W·_�GÂa� ª ¥w¬& ª �NÅ��(¬!Ŭ:�_«:�C�:·T�GÂ>��� ¬!ÅÆ¿

Page 74: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

�C�:·T�GÂ>���m¬Nšɶ:¤_¬:¤)ÂH´bµbºC�_©�m� ª ¥Q¬&ÂHºC�_©!¥Q¬L¨b¶:�W·T�2ÂHÍC�_©:� �JÍb�_©:��� ª ���H� ª ¥w¬�ÂJ¬!ÅTÅbÅ�� ª �NŬ:�_«:�C�:·T�:¥�ÂH¬b�NÅ ¿´:�A«C¶:�W·T�C¥�Âa� ª ¥w¬&ÂH¬C��ÈTÉʳb¦b¹b¨L¨:�T¨& ����Í:�T¬¡¤Ê¬C�_«:�C�W·_�&Ë �TÅbÅbÅÄ!¥T¢A«C¨C� ¸ ¨:¤w�vÂH¬C�#¥CÅ ¿³:�T�T�#�L�) ª ��� ª ���+¬b�#¥CÅÆÉ b¨C� ¸ ¨:¤w�vÂH¬C�#¥CÅÄ!¥T¢_¬bµT«W�L�¿ÊÄ!¥T¢A«C¨C� ¸ ¨:¤w�vÂH¬:�_«:�L�W·T�b¥�ÂJ¬:�A«C�C�C·T�2ÂH´LµT«W�_�L¹b®T«6��´LµL«W�#ÅbÅLÅ

.��J�&��� > E @ ��� EH2 2 4 684:9<;)=?>A@FB$D,@FEHG�I( K:@:{:B)@WFHRTo_F>?Aln;]|CRrK:RAB)8W?w�TD&BHRr`NDÃV^{:f\f\XkBYXL@ND�|]zA9hg D_g\z_?ABHR_l�9<=&D6cb@WFHDI;H;H9SRTKW;$J �Q?AFE9\?_`:fSDI;6z=yRTKW;JBHFE{W=aBER_F>;p?AK#| fS9SBHD�FE?_f\;LKm?AKW| �Q?_FH9<?A`:f\D |:D�=yf<?AF>?QBE9SRTKW; 9\KÀ?_`W;JBHF>?_=aBE9SRTKW;p?_KW|Ê=�?_;HD?AfSBHD�FHK#?QBH9\�_DI;U=6?_K�RC=6=y{WF %�9SBH8:RT{CBiBYXb@NDm?AKWK:RAB>?QBH9\R_K�gM( KÆ?_|:|:9PBE9SRTK]z)9SK:@W{CB(@WFHRTo_F>?Aln;=6?_Kx=yRTKLBE?A9\KsBE8:D3`W9SKW?_FHX+�TD6F>;J9\R_KW;5RAVÃ;HR_l�D

�Z ?AFEX+=yR_K#;YBEFH{W=yBHRTFE;!J »L«b«LÏ ª © z ´ )L�b©LÏ ª © z´b»L«L«bÏ ª © KazW=�?AK =yRTKLBE?A9\K 9\KCO:csR_@ND6F>?QBER_F5?_@:@:f\9\=�?QBE9SRTKW; J �Q«C»L«b« Kaz#?_KW| ;HR_l�Di;HXbKTB>?_=yBH9<=;H{:oT?_F J ¯ ° Kyg

«C¨:�C¢_¬LµL«W�)ÂH¬NÅ ¿´ )T�b©bÏ ª ©&ÂH¬6�p¬!Å�É´b»T«b«bÏ ª ©&ÂH¬6�p¬!Å b¨:�T´bµT«W�¿¨:�:·¡¬&ÂLÂH¬bµL«W�GÂH¬!Å É «C¨:�b¢_¬bµL«W�GÂH¬!ÅbÅÈTÉʳb¦b¹b¨b¨C�T¨& � �6Í:�T¬¡¤Ê b¨C�T´bµL«W�&Ë �TÅbÅ b¨:�T½:¤_¨Ê¿½:¤_¨& ª �NÅ É´bµT«W�L��ÂH½C¤T¨& ª �#Å��n L¨:�T´bµL«:�#Å b¨:�T :¤_¬Ê¿¥ ª �W«#�L�C¢Q«W¤T¬b¬:�_¨L©ÃÂH b¨b�T½C¤_¨!ÅÉǨ:�W·Æ®&ÂH»L«L«bÏ ª ©ÃÂJ®6�  b¨C�T½:¤T¨!Å ÉǺC�_©N¥Q¬b¨& ª �NÅbÅÈTÉʳb¦b¹L¨b¨:�T¨&Â�� ��Í:�T¬¡¤  b¨:�T :¤_¬vË �TÅ«C¨:�C¢L�_®L«ÃÂ>�#Å ¿�A«b»L«b«ÃÂ>� � ª ���s�#Å�É»L«L«bÏ ª ©ÃÂE�����#Å�ÉÍ:� ¸ ¤T¬ ª �A©ÃÂ>�#Å~ɯ ° Â>���s��� �#Å

 b¨:�T¹b®T«Ç¿¨:�:· �)ÂLÂH»b¹b®L« É ¤T¬:�I��ÂH b¨:�_´bµL«W�#Å É «C¨:�C¢L�_®L«ÃÂ>�#Å~É�T®T«ÃÂ>���� b¨:�_´bµL«W���  b¨:�T :¤_¬6�m b¨:�T½C¤T¨!ÅbÅÈTÉʳb¦b¹b¨b¨C�T¨& � �6Í:�T¬¡¤Ê b¨C�T¹b®L«�Ë �TÅbÅ b¨:�T´bµ#·_�_©Ê¿

*

Page 75: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

´bµbºC�_©Àɨ:�:·¡®&ÂJ´b»L«b«bÏ ª ©ÃÂH®6��´b½:¤_¨& ª �NÅLÅ�ÉÇ´bºC�_©Ã ª �NÅbÅ«C¨:�C¢_¬C�_«:�C�W·_�GÂ>����¬!Å�¿¶:¤_¬:¤)ÂH b¨C�T´bµN·_�A©�m� ª ¥Q¬&ÂEºb�_©!¥Q¬b¨L¶:�W·T�GÂJÍC�_©C���YÍ:�A©:��� ª ���E� ª ¥Q¬)ÂH¬!ÅLÅLÅ�� ª �NÅ¡ÈTɬ:�A«:�C�W·T�2Â>���p¬!ÅÄ!¥T¢ ª ©L«b�C¬ ¿Ä!¥_¢A«C¨:� ¸ ¨:¤w��ÂH¬C�_«:�C�W·A�:¥]ÂY«C¨C�C¢Q¬:�_«b�C�:·T�2ÂJ b¨b�T¹L®L«6�� L¨:�T´bµL«:�#ÅbÅbÅ

.��J�&�'& � 0 � 9�0 ��� E�� D$01E D,;7�8:D3R_{CBE@:{CBtR_V)BH8:D!%v?_FHl�V^{W;J9\R_K BHF>?AKW;JV^R_FEln?QBH9\R_K+9<;5?_oT?A9\Ks?nV^{:f\f\XmBYXb@ND�|+@:FER_oTFE?_l+z`:{CB5=�?AK�9SKs?T|:|C9SBH9\R_Ks=yRTKTB>?A9\K�?_@:@:f\9\=�?QBE9SRTKW;vRAV ÏL� ª �T� ?AKW| ºC¤T¬C¤ g�T®b¬W¢L�_®L«ÃÂ>��� ¬!ÅÆ¿ºC¤_¬:¤)ÂH¬6�m¬�� � ª ¥Q¬&Â>�#ÅLÅ�ÉÏb� ª �T��ÂH¬��+�#Źb®b¬b¹b®T«Ç¿¨:�:· �)ÂLÂH´bµL«W�T�L»b¬:�w�ÊÉÀ�T®L«ÃÂ>� �+´LµL«W���m´bµT«W�L�L :¤_¬6�p´bµL«:�L�L½:¤T¨NÅ�É�T®L¬W¢L�T®L«&Â>���p´bµT«W�#ÅbÅÈTÉʳb¦b¹b¨b¨C�T¨& � �6Í:�T¬¡¤_© ¹L®b¬b¹b®L«vË �TÅbÅÄ!¥T¢L�_�b¬L«b�C¬ ¿Ä!¥_¢A«C¨:� ¸ ¨:¤w��ÂH¬C�_«:�C�W·A�:¥]ÂY«C¨C�C¢Q¬:�_«b�C�:·T�2ÂJ¹b®T¬b¹L®L«6��´LµL«W�#ÅbÅLÅ

.��J�&�� � B$G�9<B�� ;�� � I7�8:DkV^RTFHln?QB =>8:DI=>e_D�FE;ÃV^R_F�BE8:DkBH8:FED6DU;H{:`W;HDyB>;�?AFED�|CDyOWKWD�|+?_;vV^RTfSf\R'% ;�Ä!¥T¢ ª ©L«b�C¬W¢:·A�w�W«W�_©:�_©b¬Æ¿ ª �_ÁC¨:¤A«ÃÂJÄ!¥T¢ ª ©b«b�C¬NÅÄ!¥T¢_¬bµT«W�L�:¢:·A�w�W«W�_©:�_©b¬Æ¿ ª �_ÁC¨:¤A«ÃÂJÄ!¥T¢A¬bµL«W�L�#ÅÄ!¥T¢L�_�b¬L«b�C¬W¢C·_�w�W«W�A©W�A©C¬Æ¿ ª �_ÁC¨C¤_«ÃÂJÄ!¥_¢L�_�C¬L«L�C¬NÅ

Page 76: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� �

� � �� �� � � �-� ��� � ��� � �� �� �� �� �� ��� t���

��� ���� ,# ���� �������7�8:Dsd5?T;JeTD6f\fPZ �]9\`Æ9<;n?~=yR_f\f\D�=aBE9SRTK�R_Vt{CBE9Sf\9SBH9\D�;(V^R_F�BEFE?_KW;JV^R_FEl(9\K:o d5?T;JeTD6f\fv@WFHRTo_F>?Aln;K:R_B�;H@#DI=y9SO#=5V^R_F�%v?_FHl V^{W;H9\R_K]g��sRC|C{:f\D £C¤W¥Q¦:�C�L�b¢_½:¤T¨ ª ¤ ­ �L�:¥ |CD6OWK:D�;�;JBHF>?QBED6o_9\D�;ÃV^R_Fln?AK:9\@:{:f<?QBE9SKWo �Q?AFE9\?_`:fSDI;k9SK�D6cC@:FHDI;H;H9\R_KW; J `#RT{:KW| �Q?AFE9<?A`:f\DnFHD�KW?Al�9\K:oWz2V^FED6Dn�Q?AFE9\?_`:f\DDycbBEFE?T=aBH9\R_K�z2;H{:`W;JBH9SBH{CBE9SRTK]z){:K:9SO#=6?ABH9\R_K Kyg��sRC|C{WfSD £:¤W¥Q¦:�b�b�b¢_´bµT«W�C¢_ b¨C���L�W·I¬ ª �Q© |CDyZOWK:DI; ;JBHF>?QBED6oT9SDI;�V^R_F�|CD�FH9\�b9SK:oUBYXL@ND�;ÃV^FER_l V^{:f\fSX�BYXb@ND�|nD6cb@WFHDI;H;H9SRTKW;Ã?_KW|�V^RTFv;JBHFE9S@W@:9SKWoBYXb@#Dm?AK:K:R_BE?ABH9\R_KW;kV^FER_l BYXb@#DI|�@:FER_oTFE?_l�;�gm� Rb|:{:fSD £C¤W¥Q¦:�C�L�b¢_¶:¤T¬C¤C¢_¶:� °#ª © ª ¬ ª �A©N¥|CD6OWK:D�; ;YBEFE?ABHD�o_9\D�;)V^RTF ;JBHR_FE9\K:oU|:?QB>?kBYXb@#Dt|CD�=6f\?_FE?ABH9\R_KW;�9\Kp?_KW|�FHD6BHFE9SD��b9SK:okBE8:D6l V^FER_l?�;JXbl3`#RTf!BE?A`WfSDTg�!�L�_�#�L�¡£:¤W¥w¦:�C�b�b¢_² ªI­ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_½:¤T¨ ª ¤ ­ �T�:¥£:¤:¥Q¦:�C�b�L¢_´bµL«W�b¢_ b¨C���b�:·Q¬ ª �_©£:¤:¥Q¦:�C�b�L¢_¶:¤T¬:¤b¢_¶:� °#ª © ª ¬ ª �_©#¥ ��� ���� ,# ���� ������������� �: � 7�8:9<;�l�Rb|:{:fSDU|:DyOWK:DI;�;YBEFE?ABHD�o_9\D�; V^R_F�ln?AKW9S@:{Wf\?ABH9\K:o�DycC@:FED�;E;J9\R_KW; %�9SBH8 J^`NR_{WKW|CKv�Q?AFE9PZ?A`WfSDI;�`bXp9\KW;YB>?AKLBH9<?QBE9SKWo ;JD��_D6F>?AfMoTD6K:D�FH9<=k;YBEFE?ABHD�o_9\D�;vV^FER_l BE8:D�!LBEFE?ABHD�o_R�fS9\`:F>?AFEX_g1J"!bD6D} Ñ 9 �\V^R_Fr?AK+9SKLBEFHRC|C{W=yBH9\R_Ks9\KLBHRnBE8:D�;HDi;JBHF>?QBHD�o_9\D�;LKagv7�8:D � ¼ ¤_¨N¥ ;JBHF>?QBED6oT9SDI;�DycbBHF>?_=yB�BH8:DV^FED6D&�Q?AFE9<?A`:f\D�;]V^FHRTl ?_K�DycC@:FED�;E;J9\R_K]g27�8:D �Q¨:�A©W¤w�!� ;JBHF>?QBHD�o_9\D�;MFED6K#?Al�DÃ?Af\f_`NR_{WKW|��Q?AFE9PZ?A`WfSDI; 9\Kx?AKsD6cb@WFHDI;H;H9SRTK�BHR K:D %�{:K:9 NL{:DiKW?_l�D�;�g 7�8:D �b¥w� ­ ¥Q¬ ;JBHF>?QBED6oT9SDI; ;J{W`W;YBE9PBE{CBHDDycC@:FED�;E;H9SRTKW; V^RTFk�w?_FH9<?A`WfSDI;59\K~?_KxD6cb@WFHDI;H;H9SRTKxoT9S�TD6Kx?�f\9\;JBrR_V @W?_9SF>;rRAVÃ�Q?_FH9<?A`:f\D�;k?_KW|DycC@:FED�;E;H9SRTKW;6g 7�8WD3;JBHF>?QBHD�o_X ¬L«L�b© ªQ° µ BHFE9SDI; BERp{:KW9PV^X�B5%vR BYXb@#D3DycC@:FED�;E;J9\R_K�zW@:FERC|C{W=aZ9\K:o�?�;H{:`W;JBH9SBH{CBE9SRTK 9SVv;H{W=6=6D�;E;YV^{Wfhgi7�8WD(oTD6K:D�FH9<=i;JBHF>?QBED6oT9SDI;t?_FHD(@W?AF>?Al�D6BHD6FE9��6D�|%�9PBE8;JBHF>?QBHD�o_9\D�;t9\|:D6KLBH9SV^Xb9SK:os;H{:`CZjBHD�FHln;kFED6@:FED�;HD6KLBH9\K:om�w?_FH9<?A`WfSDI;t?_KW|x`W9SKW|:9SK:os=6R_KW;JBHFE{W=aB>;6g7�8:DI;JDk@W?_FE?_l(D6BHD�F�;JBHF>?QBED6oT9SDI;�?AFEDr|CD6OWK:DI|m{#;J9\K:o�FH{WfSDI;6g�!�L�_�#�L�¡£:¤W¥w¦:�C�b�b¢A½:¤T¨ ª ¤ ­ �L�:¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_§:�T¨L©:�C� � ªI­ ¥w� ­ ¥Q¬ ª ¬L�C¬ ª �_©��L© ªQ°Nª ·A¤T¬ ª �_©¨L�#�T�W¥

�9

Page 77: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

¯L¥Q½:¤T¨�Â6¥CÅ Ëm½:¤T¨�ÂH®!Å�¢bν:¤T¨&Â>È:¥TÎ�½:¤T¨�ÂH®!ÅbŹb®L«C½:¤_¨ Ëm´bµL«:�L��ÂH½:¤_¨&ÂH®!Å�� � Å�¢LνC¤T¨&ÂH®!Źb®L«C½:¤_¨ Ëm½:¤T¨�ÂH®!Å�¢bν:¤T¨&ÂJ®!Źb®L«C½:¤_¨N¥ Ëm½:¤T¨�ÂH®!Å�¢bÎ �[½:¤T¨�ÂH®!Å��¹b®L«bÏb©C� Ëm» ­ ¥]ÂH®N¥ � � � � Å¡¢bÎÇÈI�!¤_«&ÂH¹b®L«C½C¤T¨!Å_Î ®N¥¹b®L«bÏb©C� Ëm»W�_¬�ÂH»L«b«ÃÂy· �p®N¥CÅ��+¬�� �WÅ ¢bÎÇÈI�!¤A«ÃÂH¹b®L«b½:¤T¨!Å_Î ®N¥¹b®L«bÏb©C� Ë�²C�T¬�ÂE�C�W·T�C¥ ���#Å¡¢bÎÇÈ °Nª �A¬:�T¨&ÂH¶C�W·T�_½:¤_¨!Å_Î �C�W·T�C¥¶:�W·T�_½C¤T¨ Ëm½:¤C�_�C� ° ÂH½C¤T¨&ÂH®!Å��p�#Å¢bν:¤T¨&ÂJ®!ůL¥Q´b½:¤_¨&Â6¥CÅ Ëm´b½:¤_¨&ÂH®!Å�¢bδb½:¤_¨&ÂaÈ:¥TÎ ´b½:¤T¨&ÂJ®!ÅbÅ´L«C½:¤T¨ Ëm´b½:¤_¨&ÂH®!Å�¢bδb½:¤_¨&ÂH®!Å´L«C½:¤T¨#¥ Ëm´b½:¤_¨&ÂH®!Å�¢bÎ �[´b½C¤T¨&ÂH®!Å��´L«bÏb©:� Ë*):�T¨C¤C�b�GÂ>¤:¥ �p¬!Å¡¢bÎʤW¥´L«bÏb©:� Ëm´b» ­ ¥�Â>¤W¥ �m�#Å ¢LÎǤW¥

¥Q¬b¨C¤T¬:� ¸!ª �W¥½:¤T¨bÍ:¤I�!�¿Ç¹L®L«C½:¤T¨ � � ½:¤_¨&ÂH®!Å�¢bή �

�T®L« ¼ ¤_¨N¥Æ¿ ° ¨:�b�C¢ ¼ ¤T¨N¥�ÂH¹L®L«C½:¤T¨W¥ �(¹b®L«bÏL©:�NŬL« ¼ ¤T¨#¥ ¿ ° ¨:�b�C¢ ¼ ¤T¨N¥�ÂH´T«C½:¤T¨N¥��n´T«bÏb©:�NÅ�T®L«C¨:�A©W¤w�!�¡¿Ê¨:�_©:¤w�!�)Â�¯T¥Q½:¤T¨6��¹b®L«LÏb©:�NŬL«C¨:�_©:¤w�!� ¿Ê¨:�_©:¤w�!�)Â�¯T¥Q´b½:¤T¨��n´L«LÏb©:�NÅ�T¬b¨:�_©:¤w�!�¡¿ �T®L«C¨:�A©W¤w�!� �n¬L«C¨:�A©W¤w�!��T®L«!¥w� ­ ¥Q¬ ¿ ¥w� ­ ¥Q¬ ª ¬L�C¬:�GÂH´bµL«W�_��ÂH½b¤T¨� ª �#Å�� ª �#Å ÉǽC¤T¨& ª �#Å����T¬b¨C�_©W¤w�!�WŬL«!¥w� ­ ¥Q¬ ¿ ¥w� ­ ¥Q¬ ª ¬L�C¬:�GÂH´b½:¤T¨) ª �WÅ��(¬L«C¨:�_©:¤w�!�#ŬL«!¥w� ­ ¥Q¬����m¿�¥w� ­ ¥Q¬ ª ¬L�b¬:�)ÂH´b½C¤T¨& ª �NÅLÅ�T®L«!¥w� ­ ¥Q¬��LÂ>�:¥Q¬!Å ¿ ¥I«#� ª ¬&Â>�:¥Q¬6� ª �NÅ��s�T®L«!¥I� ­ ¥Q¬¬L«!¥w� ­ ¥Q¬��LÂa�C¥Q¬!Å ¿$¥w«#� ª ¬&Âa�:¥w¬6� ª �#Å���¬L«!¥w� ­ ¥Q¬¬L«b�b© ªw° µÊ¿Ê�L© ªQ° µ&ÂJ´b½:¤T¨& ª �NÅbÅÄ!¥T¢_¨:�A©W¤w�!�C¢C·_�w�W«W�A©W�A©C¬Æ¿ ª �_ÁC¨C¤_«ÃÂ>�T¬L¨:�_©W¤w�N�#Å

�,+ ���� ,# ���� � ����� 1�������� �"�� � ����!�L�_�#�L�¡£:¤W¥w¦:�C�b�b¢A´bµL«W�C¢A b¨:���L�W·w¬ ª �_©ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_§:�T¨L©:�C�~£:¤W¥Q¦:�b�b�b¢_½:¤_¨ ª ¤ ­ �T�W¥£:¤:¥Q¦:�C�b�L¢_Í:�T¨A�N¤C� ª�� � )W¢ � �#�T�W¥¡� ªI­

Page 78: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� �'&��J� 684:9<;���� � @CE�� ��� B��7�8:D ¬bµL«W� ;YBEFE?ABHD�o_X ln?A@#; ?3V^{:fSf\XmBYXL@ND�|+D6cC@:FHDI;H;H9\R_K BER 9SBE;�BYXb@ND_g�!C9SKW=6D�R_K:f\Xm?ABHRTl�;J^�Q?_FH9<?A`:f\D�;�z]=yRTKW;JBHFE{W=aBER_F>;5?AK#|xf\9PBED6F>?Af<; Kt?AFED3?_K:K:R_BHD�|A%�9PBE8xBYXb@ND�;�z�?mfS9SBJBEfSD(BYXb@#D�ln?QZK:9\@:{:f<?QBE9SRTK�9<;�K:D�D�|CDI|pBERn=yR_l�@:{:BHDkBH8WD�FH9\o_8LB�BYXb@#DTg¥Q¬b¨C¤T¬:� ¸!ª �W¥¬bµL«W� ¿Ê¨:�W·�®&Â��C�T¬L´bµL«W�)ÂJ®!ÅbÅ

¨L�#�T�W¥�C�T¬b´bµT«W�)Â6¥CÅ�Ë�´bµT«W�L��ÂH®��p¬!Å¢bÎ ¬�C�T¬b´bµT«W�)Â6¥CÅ�Ë�» ­ ¥�ÂH®N¥ � ¬6�x�WÅ ¢bδ )L�L©ÃÂaÈI�!¤A«ÃÂ6¥CÅ_Î ®N¥ � È:¥_ÎÇ�#Å�C�T¬b´bµT«W�)Â6¥CÅ�Ë�»L«L«ÃÂ>���+�W¥bÅ¢LÎÀÈ_¬L¨bµ& � ©N·w�C¨b¨bµNÅ_Î�´ )L�b©ÃÂH¬#¥�7��p¬��WÅÁbÄ:�T¨:�ÊÈ:¥TÎÊ�Ê¿:Î ´ )L�b©ÃÂH¬#¥:��� ¬!�#Å��È �Nª «#¢_¬:¤ ª �bÎGÂaÈI�N¤_«ÃÂ6¥LÅ_ÎT�W¥���¬#¥:�#ÅÆ¿:Ρ¬N¥�7�C�T¬b´bµT«W�)Â6¥CÅ�Ë+ºC¤:¥_�)Â>��7�� �[»W�_¬�Â>����p¬��x��WÅ �m¤W¥ �NÅ¡¢bÎÊÈ:¥_ÎÇ���C�T¬b´bµT«W�)Â6¥CÅ�Ë+²C�_¬&ÂE�C�W·_�:¥ �m�WÅ ¢bÎÇÈ:¥TÎ ��C�T¬b´bµT«W�)Â6¥CÅ�Ë�´b» ­ ¥�Â>¤W¥����#Å¢bÎ )C�T¨:¤C�b�2Â>¤W¥ �mÈ:¥TÎ �#Å�C�T¬b´bµT«W�)Â6¥CÅ�Ë�´!¯�©!¥Q¬&Â>� �p¬N¥CÅ¡¢bÎÇÈ_¬b¨bµ�ÂH´LÏW�T¬C¤#Å_Î ´L»L«b«ÃÂaÈC¥TΡ���+¬N¥CÅ�C�T¬b´bµT«W�)Â6¥CÅ�Ë+ºC¤_¬:¤)ÂH¬�7��p¬ ��s�W¥CÅ¢bδ )L�b©&Â��[¬�7���� ¬ #Å�C�T¬b´bµT«W�)Â6¥CÅ�ËmÏb� ª �T��ÂH¬����#Å¢bÎ ¬

� �'&���� 684:9<; ] � @ � 919 � � D�:{WfSf\X5BYXb@ND�|k@:FER_oTFE?_ln;N=�?AKk`ND)BH{:FEK:D�|k9\KLBHR�{:KLBYXb@ND�|k@:FER_oTFE?_l�;N`bXt;JBHFE9\@:@:9\K:o�R �UBYXb@ND�;V^FER_l ?Af\f2?QBER_ln;5?_KW|+�Q?AFE9\?_`:f\DU|CD�=6f\?_FE?ABH9\R_KW;�9\Kx?_`W;YBEFE?T=aBE9SRTKW;6g�O f<;HR BH8WD�BYXb@#D3FHDI;J{:fSBE;9\KÊ?A`W;JBHF>?_=yBH9\R_KW;�?AK#|¡=�?_;HD ?AfSBHD�FHKW?ABH9\�_DI;n;J8:RT{:f<|�`ND+BH8WFHR'%�K ? %�?wX_gÊ7�8:D+V^RTfSf\R'%�9SKWoBHF>?AK#;YV^RTFHln?QBE9SRTKm?T=>8:9SD��_DI;ÃBE8:9<;6g¥Q¬b¨C¤T¬:� ¸!ª �W¥¥Q¬b¨ ª «W¢_¬bµL«W�:¥�¿ ­ �T¬b¬:�I�W�b«ÃÂH¬L¨bµ&Â>±T¬L¨ ª «C´�7 ÉÀ±T¬b¨ ª «C´ ÉÀ±T¬b¨ ª «C´ #ÅbÅ¥Q¬b¨ ª «W¢_¬bµL«W�:¥T¢:·_�w�:«W�A©W�Q©C¬Æ¿ ª �_ÁC¨:¤_«&Â6¥Q¬b¨ ª «#¢_¬bµL«:�:¥CÅ

¨L�#�T�W¥±T¬b¨ ª «b´�7�Ë�´LµL«W�L��ÂJ®6�p¬!Å¢bή±T¬b¨ ª «b´ Ë�» ­ ¥�ÂH®N¥��m¬6�s�#Å ¢LÎ » ­ ¥�ÂH®N¥ �mÍC�_©W���+�#űT¬b¨ ª «b´ Ë�»:�_¬&Â>��7��m¬6�s��#Å¢bÎ »:�_¬&Â>��7��pÍ:�_©W� � ��#Å

Page 79: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� �'&��'& 684:9<; � E�� � 9�0�25E ��� B��7�8:Dr|CR_ln?A9\KnRAV]?kV^{WKW=aBE9SRTK 9\;Ã9PB>;&O#FE;JB ?AFEo_{Wl(D�KLB1J �C�w� K&?AKW|(BE8:D5F>?AK:oTD�RAV�?kV^{WKW=aBE9SRTK9<;vBH8:D�FED�;JB RAVG9PB>; ?AFEo_{:l�D�KTB�?AK#|pBE8:D�FED�;H{:fPB�BYXb@ND J ¨:¤_© ¸ � Kag¨L�#�T�W¥�C�w� Ë�´ )T�b©ÃÂ��[¬�7 � ¬N¥�����¬ #Å¡¢bά�7¨:¤_© ¸ � Ë�´ )T�b©ÃÂ��[¬�7����p¬ WÅ¢LÎ ¬ ¨:¤_© ¸ � Ë�´ )T�b©ÃÂ��[¬�7��p¬ � ¬#¥ ����¬ #Å¢bΡ´ )L�b©&Â��[¬ �n¬N¥ ����¬ WÅ

OÇBYXL@ND59<; o_D6KWD6F>?Af\9���D�|�`bX NT{#?AKLBH9SV^Xb9SK:o3RQ�_D�F ?Af\fN9PB>;&V^FED6DtBYXb@#Dt�w?_FH9<?A`WfSDI;6g OÇ@NR_f\Xbl�R_FHZ@:8:9<=rBYXb@#D�9<;�9\KW;JBE?AKLBE9\?ABHD�|m`bXpFED6KW?_l�9SK:o�9SB J BER =yFED�?QBEDkK:D % {:K:9 NL{:D��Q?AFE9\?_`:fSDkKW?_l�D�;LK?AK#| BE8:D6Ksf\D�?w�b9\K:o3R��x9SBE;�R_{:BHD6F NL{W?_KLBH9SOWD6FIg¨L�#�T�W¥�C�_©W�T¨C¤C� ª � � Ë�¬ ¢bÎ ):�T¨:¤C�L�GÂ>¤W¥ �n¬!Å ÁbÄW�T¨:�ÊÈA¬L« ¼ ¤T¨#¥TÎ�¬ ¿CÎǤW¥

¥Q¬b¨C¤T¬:� ¸!ª �W¥ª ©!¥Q¬:¤A©C¬ ª ¤T¬C��¿Ê¬L«C¨:�_©:¤w�!� �p¬L¨bµ& � )C�T¨:¤C�b�2 � �J¬!Å�¢bά � Å

��� ���� ,# ���� ���������1��� ���� � � � � ���� !bD��_D6F>?Af_RAVbBH8:D&BHF>?AKW;JV^R_FEln?QBH9\R_K#;!9SK�BE8:D,%�?AFElÊV^{W;H9\R_KU?Af\o_RTFH9SBH8WlÇo_D�K:D6F>?QBED�DycC@:FED�;E;J9\R_K#;`W?T;JDI| R_KÇBYXL@ND~9SKCV^RTFHln?ABH9\R_K]g�( KÇRTFE|:D6FmBHR?_=6=6D�;E; BE8:D |:?QB>?�BYXb@#D |CD6OWK:9SBH9\R_KW;+?QB?AFE`:9SBHF>?AFEXn@:f<?_=yDI;6zbBE8:D�;HD�?AFED�;YBER_FED�|m9SK+?n;JXbl3`#RTf!BE?A`WfSDTg�!�L�_�#�L�¡£:¤W¥w¦:�C�b�b¢A¶:¤T¬:¤C¢A¶:� °#ª © ª ¬ ª �_©!¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_§:�T¨L©:�C�� ��5�J� ] � B,@ � �1D�� E � E�684�9<;�� ;�� � � ��� B���I7�8:Dk;YBEFE?ABHD�o_X ·A�C�b�L�W·w¬W¢T�C¤T¬C¤C¢T�C� ° ¥ ;JBHR_FED�;ÃD�?T=>8p|:?QB>?i|CD6OWK:9SBH9\R_Km9SKpBH8:Dr@:FER_o_F>?Al 9\KBH8WD ¬LµN·_�_© BE?A`WfSDTgG7�8:D�B>?A`:f\D�ln?A@W;GBE8:D�KW?Al�D�RAV#BH8:D |W?QBE?tBYXb@ND BERrBH8:D�@W?_9SF�R_VWV^RTFHln?AfBYXb@#D�@#?AF>?Al�DyBED6F>;v?_KW|pBH8:DU=6R_KW;JBHFE{W=aBER_F�|CDI=yf<?AF>?QBH9\R_K#;6g¥Q¬b¨C¤T¬:� ¸!ª �W¥·_�C�b�L�:·Q¬W¢T�C¤_¬:¤C¢T�C� ° ¥ ¿ÁbÄ:�T¨:�)ÂaÈC·Q¨:�b¤T¬C�C¢_¬:¤ ­ �L�bÎ ��¬bµ#·_�_©��TÅ ��!¤A«ÃÂH¬b¨bµ�Â>±T¬:�T¨C�T¶:¤T¬:¤A¶:� ° ÅbÅ �ÁbÄ:�T¨:�)ÂaÈA¬:¤ ­ �L�b¢_¦:�TµN¥AÎ ��¬bµN·_�A©��TűT¬:�T¨:�_¶:¤T¬:¤T¶C� ° ¿ ¶C¤T¬:¤)ÂH´bºC�_©ÃÂH®NÅ��+·L¥ � � Å��È_¬C¤ ­ �L�C¢Q«b�C¬WÎ$Â���¬bµN·A�_©����p®��ÇÂ�� ��� ·b¥CÅbÅ

±T¬:�T¨:�_¶:¤T¬:¤T¶C� ° ¿ ¶C¤T¬:¤)ÂH´L»L«b«ÃÂH´bºC�_©ÃÂH®#Å��n¤W¥CÅ�� ·b¥�� � Å��È_¬C¤ ­ �L�C¢Q«b�C¬WÎ$Â���¬bµN·A�_©����p®��ÇÂ>¤:¥ � ·b¥CÅbÅ

Page 80: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��5��� � ; � @ � ;�� � �1D � B���I � @ 0 � � B,@ � ; � 25E @FE ��� B���I� 9\�_D6Ks?�BYXb@NDi=yRTKW;JBHFE{W=aBER_F�J^@NRT;E;H9S`:f\Xm?_@:@:f\9SDI|�BHR ?�f\9\;JB5R_V�?T=aBE{W?AfMBYXb@NDU@W?_FE?_l(D6BHD�FE;LKBH8WDk;JBHF>?QBED6oTX ¸ �T¬W¢:·_�A©!¥Q¬b¨L�N·Q¬:�T¨N¥ @WFHRC|C{W=6D�;�?(fS9<;JB�R_VG=6R_KW;JBHFE{W=aBER_F�|CD�=6f\?_FE?ABH9\R_KW;�J^9\KCZ;JBE?AKLBE9\?ABHD�|pBHR�BE8:DU?_=yBH{W?_fM@W?AF>?Al�D6BHD6F>;LKag¨L�#�T�W¥¸ �T¬W¢:·A�_©!¥Q¬b¨T�!·Q¬:�T¨#¥$Ë´Cºb�_©ÃÂ6·CÅ�¢LÎ ·b¥ÁbÄ:�T¨:�ÇÈ_¬:¤ ­ �L�C¢ ¸ �_¬WÎGÂ���¬LµN·A�_©����m·CÅ�¿:Î�Â�� ��� ·b¥CŸ �T¬W¢:·A�_©!¥Q¬b¨T�!·Q¬:�T¨#¥$Ë´b»T«b«ÃÂH´Cºb�_©ÃÂ6·CÅ�� ¬N¥CÅ¡¢bÎÇÈ_¬L«N¥w� ­ ¥Q¬:Î Â>¤W¥ �m¬#¥ � ·L¥CÅÁbÄ:�T¨:�ÇÈ_¬:¤ ­ �L�C¢ ¸ �_¬WÎ�Â��6¬bµN·_�_©���� ·CÅ�¿:Î�Â>¤W¥ � ·b¥bÅ

� 9\�_D6K BH8:DrKW?Al�DtRAV�?i=6R_KW;JBHFE{W=yBHR_Fv?AKW| 9PB>; |:?ABE?UBYXL@ND5@WFHRC|C{W=6D BE8:Dtf\9<;YBvRAV�?AFEo_{Wl(D�KLBBYXb@#DI;�RAV2BH8:DU=6R_KW;JBHFE{W=yBHR_FIg¥Q¬b¨C¤T¬:� ¸!ª �W¥¸ �T¬W¢:·A�_©!¥Q¬b¨T�!·Q¬:�T¨:¢L¤_¨ ¸ ¢_¬LµT«W�:¥ ¿Â ª ��� ¸ �T¬W¢:·A�_©!¥Q¬b¨T�!·Q¬:�T¨#¥CÅ � ¸ �T¬:¢:·_�_©!¥w¬b¨L�!·Q¬C�T¨

¨L�#�T�W¥¸ �T¬W¢:·A�_©!¥Q¬b¨T�!·Q¬:�T¨ ËÂ6·��x¤T¨Q��¥CÅ�¢bάN¥ÁbÄ:�T¨:�ÇÈ ° �T¬#·wÄÃÂEºC�A©!¥Q¬b¨b¶C�W·_�G ª ��� ª ��� ·�� ¬N¥bÅbÅAÎ ¤_¨A��¥

Page 81: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� �

� ����� � �� �� � �� �� �

�n��� ���� ,# ���� ��� �����������< 7�8:Ds;HXLKLB>?QcÆ|CD6OWK:9SBH9\R_K¡RAVtdt?_;He_D6f\f�|CDyO#K:D�;�ln?AKbX�RT@#D�FE?ABH9\R_KW;�?_;(`:9\KW?_FHX Jh=y{:FEFH9\D�| KR_@ND6F>?QBE9SRTKW;�g �WR_F BE8:DU@:{WFH@NRT;HDURAV)BEFE?_KW;YV^RTFHln?ABH9\R_K+?AK

�Z ?AFEXpFED6@:FED�;HD6KLBE?ABH9\R_K�9\;5l�R_FED=yRTKb�_D6KW9SD�KTBIg ( K~BH8:9<;i=>8#?A@CBED6FU?+K:RTFHln?Af\9���?QBE9SRTK R_Vv`W9SKW?_FHX BHR

�Z ?AFEX FHD�@:FED�;HD6KLBE?ABH9\R_K9<;i;H@#DI=y9SOWD�|Mg 7�8:9\;iK:R_FEln?Af\9��I?QBE9SRTK~9<;i?T=>8:9\D6�_DI| 9SK B5%vR @:8#?_;HD�;�g8( K BH8:DpOWFE;JBi@:8#?_;HD`:9\KW?AFEXiRT@#D�FE?ABH9\R_KW;�AFED ln?A@:@ND�|(BER�BH8:D�9SF

�Z[?_FHX(=yRT{:KLBHD6FE@W?_FJB>;6g&( KnBH8:Dt;JDI=yR_K#|�@:8W?_;HD_z=y{WFHFE9SDI|n?A@:@WfS9<=6?ABH9\R_KW;ÃRAV�;H{W=>8

�Z ?AFEX3?A@W@:fS9<=6?ABH9\R_KW; ?AFED {:KW=6{:FEFH9\D�|MzL9jg DTgSzLBH8WDt?AFEo_{Wl(D�KLBf\9\;JBE; ?_FHDk=yRTfSf<?A@#;JDI|Mg

�!�L�_�#�L�¡£:¤W¥w¦:�C�b�b¢AÍ:�T¨A�!¤b� ª � �ª �W«:�T¨b¬N¥¡� ª�­ £C¤W¥Q¦:�C�L�b¢_§:�T¨T©W�C�¥Q¬b¨C¤T¬:� ¸!ª �W¥©W�T¨A�!¤b� ª � �¡¿¬:�A«:�C�_Áb©&ÂH¬b¨bµ&ÂE±_� ­ ¬b¨b¤W·w¬ ª �A©C£b¤W·Q¦¡ÈTÉ � TÍÇÉ Ï TÍÇÉ�¯ ° LºC¤W¥_�WÅbÅ���b©N·w�C¨b¨bµ

¨L�#�T�W¥Ï TÍqË�»L«L«bÏ ª ©ÃÂE��7��m��#Å¡¢bÎ »T«b«ÃÂ>��7�� �Y�� �NÅÏ TÍqË�´b»T«b«bÏ ª ©&Â>��7��p��#Å¡¢bδb»L«b«ÃÂE��7�� �Y�� �NÅÏ TÍqË�´ )T�b©bÏ ª ©&ÂH¬�7��n¬ #Å¡¢bδ )L�b©ÃÂ��[¬�7����n¬ #ÅÏ TÍqË2�A«b»L«b«ÃÂ>�47����_«�s��WÅ¢LÎ »L«L«ÃÂH½:¤T¨�ÂJÏ ª ©��Q«ÃÂ>�_«NÅbÅ�� �Y��7��s�� �Nű_� ­ ¬b¨C¤W·Q¬ ª �A©C£:¤W·Q¦ Ë»L«L«bÏ ª ©ÃÂE��7�� ÍC� ¸ ¤T¬ ª �_©ÃÂ>��WÅbÅ�¢LÎ »L«L«ÃÂH½:¤T¨�ÂJÏ ª ©��Q«ÃÂ��Q¢��TÅbÅ�� �Y�47��s�� �NÅ� TÍqË�Í:� ¸ ¤T¬ ª �A©ÃÂ>�#Å�¢bΡ»L«b«ÃÂH½C¤T¨&Â��Q¢��TÅ�� � � �Nů ° LºC¤:¥_� ˯ ° Â>��7��+�� � �#Å¡¢bÎ

Page 82: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

ºC¤:¥_�)Â>��7����[»W�_¬�ÂEºC�A©N¥Q¬L¨&Â���´b¨_�W�4�TÅ��YÍ:�Q©W� �E��WÅ��»W�_¬&ÂHºC�_©!¥Q¬L¨&Â���):¤b�:¥A���_Å��JÍb�_©:���H�#Å��NÅ� RTFHln?_fS9��69\K:o(K:D�;JBHDI|�?_@:@:f\9\=�?QBE9SRTKW;�RAVGKCZ[?_FHXm=yR_K#;YBEFH{W=yBHRTFE;¥Q¬b¨C¤T¬:� ¸!ª �W¥�b©!·w�C¨L¨bµ ¿Ê¬:�_«C�C�_Áb©ÃÂJ¨:�_«W�b¤_¬& � ©#·w�b¨b¨LµNÅbÅ

¨L�#�T�W¥� ©!·w�C¨L¨bµ Ë�´ )L�b©ÃÂ�� ���p¬!Å¢bά� ©!·w�C¨L¨bµ Ë�´L»L«b«ÃÂH¬�� � �NÅ¡¢bά� ©!·w�C¨L¨bµ Ë�»T«b«ÃÂ>��� � �NÅ¡¢bÎÇ�� ©!·w�C¨L¨bµ Ë�» ­ ¥�Â�� ���m¬6�s�#Å ¢LÎÇ�� ©!·w�C¨L¨bµ Ë�» ­ ¥�ÂH®N¥��m¬�7���» ­ ¥�ÂJµN¥ �m¬ ��s�#ÅLÅ¢Lλ ­ ¥�ÂaÈ:·A�_©!·TÎ$ÂH®N¥ ��µN¥CÅ��+¬�7��x�WÅ� ©!·w�C¨L¨bµ Ë�´ )L�b©ÃÂH¬#¥�7��p´ )T�b©ÃÂH¬N¥ ��p¬!ÅbÅ¡¢bδ )L�L©ÃÂaÈ:·_�A©!·TÎGÂH¬#¥�7��(¬N¥�#Å��m¬!Å� ©!·w�C¨L¨bµ Ë�»T«b«ÃÂH»L«L«Ã ° �p¤T¨ ¸ ¥�7_Å��+¤T¨ ¸ ¥ #Å�¢bλL«b«Ã ° �sÈ:·_�_©!·_ÎGÂ>¤T¨ ¸ ¥�7�� ¤T¨ ¸ ¥�WÅbÅ� ©!·w�C¨L¨bµ Ë�´L»L«b«ÃÂH´L»L«b«Ã ° �m¤T¨ ¸ ¥�7TÅ���¤_¨ ¸ ¥�#Å�¢LÎ ´b»T«b«Ã ° �sÈC·_�_©!·TÎ2Â>¤T¨ ¸ ¥�7��p¤_¨ ¸ ¥�#ÅLÅ� ©!·w�C¨L¨bµ��:Ën´ )L�b©ÃÂH¬#¥ �p¬!Å¢bδb»L«b«ÃÂJ´b»b¨b¨:�AÁ�mÈC·_�_©!·TÎ2ÂH¬N¥ � �j¬!�NÅbÅ� ©!·w�C¨L¨bµ Ë�´L»L«b«ÃÂH´L»b¨b¨:�_Á6� ¬N¥CÅ¡¢bδ )L�L©ÃÂaÈ ª © ª ¬WÎ ¬#¥ � Èb�L¤W¥Q¬:Î�¬N¥CÅ

¥Q¬b¨C¤T¬:� ¸!ª �W¥Ä!¥T¢A©W�_¨A�!¤C� ª�� �C¢:·_�I�W«:�_©C�_©b¬�¿ ª �_ÁC¨:¤A«ÃÂJ©W�T¨Q�!¤C� ª � �WÅ

�+Q

Page 83: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� �

� � � � ��� � ��� �� �

�n��� ���� ,# ���� � ����� �"H� 1"$#�:RTFkBH8:Dp@:{:FE@#RL;JD�RAVvBH8WD %v?_FHl V^{#;J9\R_K~BHF>?AK#;YV^RTFHln?QBE9SRTK]zM@:FER_oTFE?_l�;k?_FHD�FED NL{:9\FHDI|sBHR`NDmV^{WfSf\X�BYXb@#DI|Mzv9hg D_g\z&V^RTF(D��_D�FHX�;H{:`#D6cC@:FHDI;H;H9\R_KÆ9SB ;J8WR_{:f<| `NDs@#RL;H;H9\`:fSDmBHR~9\KCV^D6Fn9SBE;BYXb@#D %�9SBH8:RT{CB�FHD6V^D6FED6KW=6D5BERn|CD�=6f\?_FE?ABH9\R_KW; 9SKmBH8WDk=6R_KLBHD6cbB�g�!b9\KW=yD %�FE9PBE9SK:o(V^{:f\f\XnBYXb@#DI|@:FER_oTFE?_l�;v9<; {:KLBEFE?T=aBE?_`:f\DkV^R_F 8b{:ln?AK#;6zN?(BYXL@ND�=>8WD�=>e_D�F 9<; |CDyO#K:D�|�BE8W?QB BE{:FEKW;5?�@W?_FJZBH9<?Af\f\X+BYXL@ND�|x@:FER_o_F>?Al J^9\K BE8:D Ä!¥_¢ ª ©b«b�b¬ V^R_FEl�?ABLK59SKLBER�? V^{:fSf\XsBYXb@ND�| @WFHRTo_F>?Al J^9\KBH8WD ÄN¥T¢_¬bµL«:�L� V^R_FEln?QBLKyg�!�L�_�#�L�¡£:¤W¥w¦:�C�b�b¢A´bµL«W�W·IÄW�W·w¦ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_§:�T¨L©:�C�~£:¤W¥Q¦:�b�b�b¢T² ª�­ � ªI­¥Q¬b¨C¤T¬:� ¸!ª �W¥�!¤ ª ©À¿ ª �_ÁC¨:¤A«ÃÂH¬N·T¢��!�L�T�#�T�#ŬN·T¢I�!�T�T�#�L�¡¿Ê³:�L�_�#�L�) ª ��� ª ����´:�A«C¶:�W·T�C¥�ÂH¬bµL«:�W·wÄW�C·Q¦!ÅLŬN·T¢I�!�T�T�#�L�¡¿Ê b¨:� ¸ ¨:¤w��ÂJ´:�_«C¶:�:·T�:¥�ÂY¬bµT«W�:·IÄW�C·Q¦NÅbŬbµL«W�W·IÄW�W·Q¦ ¿ÁbÄ:�T¨:�)Â6·A�C�b�L�W·w¬W¢T�C¤T¬b¤C¢_�b� ° ¥CÅ �ÁbÄ:�T¨:�)Â6·A�C�b�L�W·w¬W¢:¥ ªw¸ ©W¤_¬T�C¨C�W¥ ¿:ÎÊ�_© ¼ Å���!¤A«ÃÂH¬b¨bµ�Â>¤_©b©W�_¬:¤T¬:�C¢A�C� °  � �_© ¼ ÅbÅTÅ

72R_@CZ[fSD��_D�f!;H9\o_KW?ABH{:FED�;¥Q¬b¨C¤T¬:� ¸!ª �W¥·_�C�b�L�:·Q¬W¢:¥ ªI¸ ©W¤T¬L�b¨:�:¥ ¿°Nª �_¬:�T¨& ¸ �T¬W¢:¥ ªw¸ ©W¤T¬_�C¨C�WÅ��·_�A©!·_¤T¬

¨L�#�T�W¥¸ �T¬W¢:¥ ªw¸ ©W¤T¬T�C¨:��Ë

� �

Page 84: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

± ªI¸ ©C¶:�W·_�G ° ¥ �n¬!Å¢bÎÊÈI�!¤_«Ã � ° ¢bÎ Â ° ��¬��6Å � ÅAÎ ° ¥ÁbÄ:�T¨:�ÇÈ��C�_©:�T¨:¤C� ª�� �CÎ ¬ ¿:Ρ¬��¸ �T¬W¢:¥ ªw¸ ©W¤T¬T�C¨:��˶:¤_¬:¤)ÂH¬6�x·L¥ � � Å ¢LÎÈI�N¤_«ÃÂ�8:·��m¬N¥)Ë ºC�_©N¥Q¬b¨b¶:�:·T�G � � � �a· �Y¬#¥CÅ �

�AÂ6· � ÈGÂ>È_Í ª �bÎA¬N¥ ���[¬ ÈTÉ �[´ )L�L©ÃÂH¬N¥ � ¬!ÅbÅ�� �C�_©:�T¨:¤C� ª�� �CÎ�Â6ÅbÅ � Å_ÎÇ·L¥�t9\;JBHFE9S`W{CBH9\K:o�BYXb@#DI;�RQ�_D�F `NRC|C9\D�;�R_VG�Q?Af\{:D�|CD6OWK:9SBH9\R_KW;¥ ªw¸ ©W¤T¬L�C¨C�·_�_©!¥Q¬L¨L�!·Q¬:�_¨N¥´:�A© ¼ Ë�¹b®T« �¡² ª ¥Q¬�ÂH b¨:�L�)Â��Y±T¬b¨ ª © ¸ �(´bµT«W� �NÅbÅ�¢LÎ ¹b®T«¥Q¬b¨C¤T¬:� ¸!ª �W¥¬N·T¢T�T®L«Ç¿Ê¨:�W·�®&ÂH¬N·�ÂJ®!ÅÆÈTÉÇ�C� ­ � ¸ � � �#´:�A© ¼ ÈTÉÇ�C� ­ � ¸ ŨL�#�T�W¥� �#´C�_© ¼ Ëm´:�_© ¼ ÂE���+�_© ¼ Å¡¢bÎÊ�¤_©b©:�T¬:¤T¬:�b¢T�C� ° ÂE�_© ¼ Š˽:¤b�T�C� ° ÂJ½:¤T¨& ° Å��n�#Å ¢Lν:¤b�T�C� ° ÂJ½:¤T¨& ° Å�� È_¬N·T¢L�_®L«#Î�´:�_© ¼ ÂH´bµL«:�L��Â>����¬!Å�� ÈL�A© ¼ ÎGÂ�ÅLÅbÅÁbÄ:�T¨:�ÊÈb�L�L�T¦L�b« � ª ©!¥Q¬:¤A©C¬ ª ¤T¬C�CÎG ° �pÈL�_© ¼ ÎGÂ�ÅbÅ ¿:Î ¬¬N·�Ây¥CÅ�Ë�´:�A© ¼ ÂH´bµT«W�L��ÂH´LµL«W�T�)Â>� �(¬!Å��+Í:�_©:�#Å��+�_© ¼ Å¢LÎ ´:�A© ¼ ÂH´bµT«W�L��Â>� �n¬!Å�� �A© ¼ ŬN·�Ây¥CÅ�Ë�´:�A© ¼ ÂH´bµT«W�L��ÂH½C¤T¨&ÂJ®NÅ��(¬��#Å��s�_© ¼ Å¢LÎÈ_¬T«!¥w� ­ ¥w¬WÎ Â6¥ ­ ¥ �m´bµL«W�T��ÂH½:¤T¨�ÂH®!Å���¬�7TÅbÅÁbÄ:�T¨:�ÊÈb�L�L�T¦L�b« � ª ©!¥Q¬:¤A©C¬ ª ¤T¬C�CÎGÂH®6� �_© ¼ Å�¿CÎ ¬�7��È6�A ª ���JÍ:�A©W�#Å�� � � � � ÈTÉʬL«b�b© ªQ° µWÎ �QÂH¬�7��m¬��WÅ��Ê¿:Î ¥ ­ ¥¬N·�Ây¥CÅ�Ë�´:�A© ¼ ÂH´bµT«W�L��ÂEºb�_©!¥w¬L¨&ÂJ®!Å��n¬!�#Å��s�_© ¼ Å�¢LÎÈ_¬T«!¥w� ­ ¥w¬WÎ Â6¥ ­ ¥ �m´bµL«W�T��ÂEºC�_©N¥Q¬b¨&ÂH®NÅ��(¬�7TÅbÅÁbÄ:�T¨:�ÊÈb�L�L�T¦L�b« � ª ©!¥Q¬:¤A©C¬ ª ¤T¬C�CÎGÂH®6� �_© ¼ Å�¿CÎ ¬�7��È6�A ª ���JÍ:�A©W�#Å�� � � � � ÈTÉʬL«b�b© ªQ° µWÎ �QÂH¬�7��m¬��WÅ��Ê¿:Î ¥ ­ ¥¬N·�Ây¥CÅ�Ë�´:�A© ¼ ÂH´bµT«W�L��ÂE² ª ¬&Â6¯�©C¬�ÂH®#ÅbÅ�� � Å��s�_© ¼ Å¡¢bδbµT«W�L��ÂE² ª ¬&Â�¯I©b¬&ÂH®NÅLÅ��(´CºC�_©ÃÂ��T¯I©C¬��_ÅbŬN·�Ây¥CÅ�Ë�´:�A© ¼ ÂH´bµT«W�L��ÂH»T«b«ÃÂE� � �:¥CÅ���¬!Å�� �_© ¼ Å�¢LÎÈ_¬T«!¥w� ­ ¥w¬WÎ Â6¥ ­ ¥ �m»L«b«ÃÂE� � �+�W¥ �yÅbÅÁbÄ:�T¨:�È:¥TΡ´:�_© ¼ ÂH´bµL«:�L��Â>����Í:�_©:�#Å��s�_© ¼ Å ¿CÎÇ� � �È_¬bµL«:�CÎ� �s¿:Ρ´ )L�b©ÃÂJ¬N¥ �m¬��6Å �ÈI�!¤_«& �_®À¢bÎÊÈ:¥TÎA´:�_© ¼ ÂJ´bµL«W�L�)ÂH®6�JÍb�_©:�#Å��H�_© ¼ Å �¡Å_Î �W¥¡¿:ÎÇ�:¥ � �ÈI�!¤_«&ÂH¬bµL«W�WÅ_Î��W¥ �s¿CÎ ¬N¥ � �È �Nª «b¨& ª �NÅ ��ÂH¬L«L�b© ªQ° µÀÈ_ÉÇ�b� ­ � ¸ Â�� ��¬bµL«:�W¥��C�¡©W�_¬�!¤_¬N·wÄ�Ë �TÅ � )L»!¯Q²NÅ_Î

� *

Page 85: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

ÂJ¬N¥ ��¬N¥ �6ÅÆ¿:Î ¥ ­ ¥¬N·�Ây¥CÅ�Ë�´:�A© ¼ ÂH´bµT«W�L��ÂH» ­ ¥�ÂJ®#¥ �(¬6�x�WÅ���´ )L�b©ÃÂJ¬N¥ �p¬��yÅbÅ��s�_© ¼ Å¡¢bλ ­ ¥�ÂHµN¥ �m±b�w�!�)ÂJ¬��6Å��+ÈC¥TÎ ´C�_© ¼ ÂH´LµL«W�L��ÂE���n¬ �6Å�� È:·_�_©N·TÎGÂ>�_© ¼ � � �_© ¼ ÅbÅLÅÁbÄ:�T¨:�ÊÈ �Nª «Ã ��ÂH®6�Y¬!Å¡¢bÎ ´LµL«W�L��ÂJ®6�J¬!Å � Å_ÎGÂH®#¥ �m¬N¥CÅÆ¿:εN¥ �ÈI�!¤A«ÃÂ6¥w«#� ª ¬&ÂH½:¤_¨bÍ:¤w�#���(¬bµL«W�#ÅLÅ_Î�µN¥�¿:ÎÊ�_© ¼ �¬N·�Ây¥CÅ�Ë�´:�A© ¼ ÂH´bµT«W�L��ÂEºb¤W¥_�GÂE���n¤C�_¬N¥CÅ��m¬!Å��s�_© ¼ Å¡¢bκC¤:¥_�)Â>� � ��¤C�_¬N¥ �6ÅÁbÄ:�T¨:�ÊÈ:¥Tδ:�_© ¼ ÂH´bµL«:�L��Â>����Í:�_©:�#Å��+�_© ¼ Å�¿CÎÇ� � �È_¬bµT«W�CÎ� �s¿:ά�� �ÈI�!¤A«Ã �L¤C�A¬Ç¢bÎÇÈ:¥TΡ´:�_© ¼ ÂH´bµL«W�T��Â>¤C�_¬��n´ )T�b©ÃÂ��[¬ � ��� ¬NÅbÅ��s�_© ¼ Å � Å_ΤC�_¬N¥�¿:ÎʤC�_¬N¥ �¬N·�Ây¥CÅ�Ë�´:�A© ¼ ÂH´bµT«W�L��ÂH»:�_¬&ÂHºb�_©N¥Q¬T¨&Â6·LÅ��(¬����s�#Å��+´ )L�b©&Â��[¬�7���� ¬ #ÅLÅ��s�_© ¼ Å¡¢bλW�A¬&ÂEºC�_©N¥Q¬b¨&Â6·bÅ��n±b�w�!�)ÂJ¬�7TÅ��+ÈC¥TÎ ´C�_© ¼ ÂH´LµL«W�L��ÂE���n¬ #Å��s�_© ¼ ÅLŬN·�Ây¥CÅ�Ë�´:�A© ¼ ÂH´bµT«W�L��ÂH»:�_¬&ÂJ»T«b«&ÂEºL�_©!¥I¬b¨�Â6·bÅ��(®N¥CÅ���¬�� �x�#Å��´ )L�b©ÃÂ��j¬�7����p¬ #ÅbÅ��+�_© ¼ Å¡¢bλW�A¬&ÂH»L«b«&ÂEºC�_©!¥w¬b¨&Ây·bÅ��(µN¥CÅ��s±b�w�N�)ÂH¬�7TÅ��ÈC¥TΡ´:�_© ¼ ÂJ´bµL«W�L�)Â>��� ¬ #Å�� È:·_�_©N·TÎ�Â>�_© ¼ � �+�_© ¼ ÅLÅbÅÁbÄ:�T¨:�ÊÈ ¸ �_¬W¢:·_�_©N¥Q¬b¨L�!·w¬:�T¨W¢_¤T¨ ¸ ¢A¬LµL«C�W¥_Î Â6· ��¬�7TÅÆ¿:άN¥ �È �Nª «Ã ��ÂH®6�Y¬!Å¡¢bÎ ´LµL«W�L��ÂJ®6�J¬!Å � Å_ÎGÂH®#¥ �m¬N¥CÅÆ¿:εN¥ �ÈI�!¤A«ÃÂ6¥w«#� ª ¬&ÂH½:¤_¨bÍ:¤w�#���(¬bµL«W�#ÅLÅ_Î�µN¥�¿:ÎÊ�_© ¼ �

�TÑ

Page 86: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� ���

� <� � �� �� � � �� �� �

���m�6� ������ ��� ������� ��!�L�_�#�L� )W¢A»L�C® ª � ª ¤T¨bµª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢_§:�T¨L©:�C�¨L�#�T�W¥³b¦b´ )L�L© Ë ÂJ®6��µ!Å ¢LÎ ´ )T�b©ÃÂH®6�mµNųb¦b´ )L�L©�7�Ë ÂJ®6��µ!Å ¢LÎ ´ )T�b©ÃÂ��[® ���pµ!ųb¦b»L«b« Ë Â ° �s�W¥CÅ¢bΡ»L«b«Ã ° � �:¥Cųb¦b»L«b«�7 Ë Â ° �s�#Å ¢LÎ »L«L«Ã ° � �Y� �NÅ©W�_Á#¢_¬ ¼ ¤T¨ÌË®�¢bΡ´b½:¤T¨&ÂE¤#Å ÁbÄW�T¨C��©W�_Á ¿:ÎǤ©W�_Á#¢_¬LµL«W�L�:¢ ¼ ¤T¨ ˬ�¢bΡ´bµL«W�L�)ÂH½:¤T¨&ÂJ®!Å���¬!ÅÆÁLÄW�T¨:�¡©W�_ÁÀ¿:ήºC�w�W«qË ° � ¸ Å¡¢bλ ­ ¥]ÂH®6�m¬6�+»L«b«Ã ° �m»L«b«Ã ¸ �m®!ÅbÅbÅÁbÄ:�T¨:�ÇÈ_¬bµL«:� �m¶:�w�MÎ ¸ ¿:ά �+©:�_ÁÀ¿:Î ®¯Q�C�_©C¬ ª ¬bµÌˬ�¢bΡ» ­ ¥�Â��j´bµL«W�L�)ÂH½:¤T¨&ÂJ®!Å��(¬!Å���� ±L�w�!�)ÂH¬NÅ��m´bµL«W�T��ÂH½:¤T¨�ÂH®!Å���¬!ÅbÅÁbÄ:�T¨:�¡©W�_ÁÀ¿:ή

¥Q¬b¨C¤T¬:� ¸!ª �W¥¼ ¤C�A�W� ¿¨:�:·¡®&ÂJ´bµL«W�L�)ÂH½:¤T¨& ª �NÅxɲ ª ¬& ª �NŠɺC�_©!¥w¬b¨& ª �#Å�� ª �#Å�É» ­ ¥� ª ��� ª ��� ª �#ÅbÅ

�:9

Page 87: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ª ©W�b¤_¨Ê¿ ÂJ®6��¬!Å��ÈL¤_¬A�!�W¥Q¬C�_©!·_�) ½:¤T¨&ÂY®!ÅLÅAÎ ¬ �ÈA©:�T¬&ÂJ�b©C�C�T¨:¤ ­ ¥� ®!ÅTÅ_Î~¬

�b©:�C�T¨C¤ ­ ¥�Â6¥bÅ ¿À�_©!·_�T¬b��ÂH»L«b«& ª ����» ­ ¥� ª ��� ª ���s�_©N·_�T¬C��ÂJ½:¤T¨&Â6¥bÅbÅbÅbÅbÅ���m�,� ��� � � � ���� � /21 �v�)%%.3'�� 1s4y�50�!�L�_�#�L� )W¢ � �#�L�W¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢T² ªI­ )W¢_³:¤A« �C�_© )W¢_»L�C® ª � ª ¤T¨Lµ����� ���J� ��I � @FE � ��� B��7E��1=�� 919�2 � � E ��� B��uvDyB>? FED�|C{W=yBH9\R_K]g ��{WfSD ÏW�_¬:¤!�A©W� |CD6OWK:D�;tBE8:D(?_@:@:f\9\=�?QBE9SRTK RAV ? V^{:KW=yBH9\R_K BERm9SBE;tOWF>;JB?AFEo_{Wl(D�KLB�g�� {:fSD Ï:�T¬:¤ FED�|C{W=6D�;&?_Kn?A@:@:f\9<=6?QBE9SRTKiV^RTFÃ?_;&l�?_KbXi?AFEo_{:l�D�KTB>;�?_;�@NRT;E;H9S`:f\D_zBE?_eb9SK:o�?_=�=yR_{WKTBtRAV&BE8:DUV ?T=aBrBH8W?AB5BH8WD6FED3ln?wX�`#D3V^D %vD6FtV^R_FEln?Af]BE8W?AK~?_=yBH{W?_f2@W?_FE?_l(ZDyBED6F>;6zGR_FiBH8:DpRABH8WD6F %�?wX ?_FHRT{:KW|Mg+7�8:Dp;JBHF>?QBED6oTX ¨:�W¥w¬W¢ �Nª « l�?ABE=>8:DI;kV^R_FEln?Af %�9PBE8?_=yBH{W?_fC@W?AF>?Al�D6BHD6F>;)?AKW|(@:FERC|C{W=6D�;GBH8WD FHDI;YB�f\9\;JBE;&RAVNV^R_FEl�?_fC@W?AF>?Al�D6BHD6F>; µN¥ J^D�l(@:BYXi9\K=6?T;JDkR_V);E?QBE{:FE?ABH9\R_K Kyz:?_=yBH{W?_f]@W?AF>?Al�D6BHD6F>; ­ ¥ z#?AKW|�?n;J{W`W;YBE9PBE{CBH9\R_K ¥ ­ ¥ ln?A@:@W9SK:o�V^RTFJZln?Af!BER ?_=aBE{W?Af!@W?_FE?_l�DyBHD�FE;�g�7�8:DkFH{WfSDI;�R_K:f\Xp?A@W@:fSXp9PVGV^R_F�DI?_=>8m?_FHoT{:l�D6KLB�D69SBH8:D�F�BH8:D?_=yBH{W?_f!@W?AF>?Al�DyBED6Fv9\;�?3�Q?Af\{:DrR_FvBH8:DrV^RTFHln?AfN@W?_FE?_l(D6BHD�F 9<;�fS9\K:DI?AF�9SKmBH8WDt`NRC|CX_g �5RABHDBH8#?QBi?AKbX D�l�@CBYX ?_`W;YBEFE?T=aBE9SRTKxR_FU?_@:@:f\9\=�?QBE9SRTK %�9\fSf�`NDp=6fSDI?AK:DI|x{:@ `bXsBE8:D � ©N·w�C¨b¨bµFE{:fSDI;6g¨L�#�T�W¥ÏW�T¬:¤!�Q©W� Ë»L«L«ÃÂH» ­ ¥]Â��[® �h®#¥ ����¬6�s�#Å�� �Y¤ �[¤W¥��NÅ�¢bλL«L«ÃÂH» ­ ¥]ÂH®N¥ �n¬6� ÈT�T®L«!¥w� ­ ¥Q¬WÎ Â��[®!��� �Y¤ ���s�#ÅbÅ��s¤W¥CÅÁbÄ:�T¨:�ÇÈ ¼ ¤C�Q�W�CΤÊÉ Èb� ª ©W�b¤T¨:Î ÂH®6� �#ÅÏW�T¬:¤ÌË»L«L«ÃÂH» ­ ¥]ÂH®N¥ �n¬6�x�WÅ��s¤W¥CÅ¢bλL«L«ÃÂH» ­ ¥]ÂHµN¥ �n¬6� ÈT�T®L«!¥w� ­ ¥Q¬WÎ Ây¥ ­ ¥ �+�#ÅLÅ�� ­ ¥CÅÁbÄ:�T¨:�ÇÈ_¨:�W¥w¬W¢ �Nª «& ª �NÅ_Î ÂH®N¥�� ¤:¥CÅÆ¿:Î�ÂJµN¥ � ­ ¥ � ¥ ­ ¥bÅ��ÂaÈb� �#ª «ÃÂb ª ��� ¼ ¤C�Q�W�WÅxÉ Â )N¥Q¬6� ª �NÅ���� ª ©W�b¤T¨NÅ_Î�Â6¥ ­ ¥��+�#ÅbÅ

� cbBED6KW;H9SRTKW?Af\9SBYX¹b¬:¤ Ë» ­ ¥�ÂH®N¥ �m¬��s»L«L«ÃÂ>���m®N¥bÅbÅ¡¢bÎÇ�ÁbÄ:�T¨:�ÇÈb� �Nª «ÃÂJ©W�T¬� ª ©MÅbÅAÎ ÂJ®N¥ �s�#Å

( K:f\9SKW9SK:o¯I©#�Ì˲C�_¬&Â��[½:¤b�T�C� ° ÂJ½:¤T¨&ÂH®#Å��n��7TÅ���� ���[´bµL«:�L��ÂH½:¤_¨&ÂH®!Å��J¬!Å��#Å ¢LβC�_¬&Â��[½:¤b�T�C� ° ÂJ½:¤T¨&ÂH®#Å��n��7TÅ���� ���JÈL�T¬L¨:�_©W¤w�N�CÎÆ�47��NÅ

�tD�?_|+=6Rb|:DrD�fS9\l�9SK#?QBH9\R_K� �

Page 88: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

¶:�b¤L� ˲C�_¬&Â��[½:¤b�T�C� ° ÂJ½:¤T¨&ÂH®#Å��n��7TÅ���� ��#Å¡¢bÎÇ��ÁbÄ:�T¨:�ÇÈA©W�T¬� ª ©MÅ_Î�ÂH½:¤T¨&ÂJ®!Å�����WÅ����� ����� 684:9<; ��I � @FE � ��� B �7E���= 684�9<; � 9�9�2 � � E � � B��´LÏW�T¬:¤ÌË´!¯�©!¥Q¬&ÂH´L» ­ ¥�Â>¤:¥ �p�WÅ���¬N¥CÅ¢bÎÀÈA¬L«!¥w� ­ ¥Q¬WÎ�ÂE¤W¥ ��¬N¥ � �#Å´b¹b¬:¤ÌË´b» ­ ¥�Â>¤W¥��m´!¯I©!¥Q¬�Â>����¤W¥bÅbÅ¡¢bÎÇ�ÁbÄ:�T¨:�ÇÈb� �Nª «ÃÂJ©W�T¬� ª ©MÅbÅAÎ ÂE¤W¥ �s�#Å´LÏW�T¬:¤ÌË´b»T«b«Ã ):�_¨:¤C�b�GÂE¤W¥ ��¬!Å���¬N¥CÅ¡¢bÎÇÈ_¬L«!¥I� ­ ¥Q¬WÎ�Â>¤W¥ ��¬N¥ ��¬!Å

����� ���'& � EHI ;� ?_;HD�;J@ND�=69\?_fS9���?ABH9\R_KºC¤W¥_�Lºb�_©!¥Q¬b¨ ˺C¤:¥_�)ÂH´bµT«W�L��ÂEºb�_©!¥Q¬b¨)Â6·bÅ���¬NÅ��x¤:¥CÅ¡¢bÎÇ�ÁbÄ:�T¨:�ÇÈ ° �T¬#·wÄà»:�_¬&ÂEºC�A©!¥w¬b¨)Â6·CÅ�� � �x�#ÅLÅ_Î ¤W¥ºC¤W¥_�Lºb�_©!¥Q¬b¨ ˺C¤:¥_�)ÂH»L«L«ÃÂH´bµL«:�L��ÂEºC�Q©!¥w¬L¨&Ây·CÅ��+·w¬!Å��s�W¥CÅ��+¤:¥CÅ ¢LÎÈL�_®L«!¥w� ­ ¥Q¬WÎ ÂH®#¥ �s�W¥ �s�#ÅÁbÄ:�T¨:�ÇÈ ° �T¬#·wÄà»:�_¬&ÂH»L«L«ÃÂHºC�Q©!¥Q¬T¨&Ây·CÅ���®#¥CÅ���¬6�s�#ÅbÅ_Î ¤W¥��ÂaÈb� ª ¥Q¬& ¼ ¤b�A�W�#Å_Î �W¥�É�ÈL� �Nª «ÃÂ>� ª ©W�b¤_¨!Å_Î�ÂH®N¥ �s�#ÅLÅ

O @W@:fS9<=6?ABH9\R_Ks|C9<;YBEFH9\`:{CBED�;�RQ�TD6F�=6?T;JDºC¤W¥_�T¶ ª ¥Q¬C² Ë»L«L«ÃÂEºC¤W¥A�)Â>���p¤W¥CÅ��s�W¥CÅ¢bκC¤W¥A�)Â>���+¤W¥ �6ÅÁbÄ:�T¨:�ÇÈb� �Nª «ÃÂH»b¨A�W»L«b«:²NÅAÎ ÂE¤W¥ �s�W¥CÅ�¿:Î ¤W¥ �»b¨A�#»L«L«:²ÌËÂH»:�_¬&Â6· �m¬��x�#Å�� �:¥CÅ¡¢bÎ »:�_¬&Â6· �m¬��s»L«L«ÃÂ>���+�W¥bÅbźC¤W¥_�T¶ ª ¥Q¬ � ËLË»L«L«Ã ° �x¥I«#� ª ¬W¢ ° �T¬N·wÄ& ºC¤W¥Q�)Â>��� ¤:¥CÅbÅ�� Â>�:¥�7��+�W¥�WÅbÅ�¢b¢bÎ

� ºb¤W¥_�)Â>� �sÈb� �Nª «&ÂH»W�_¬b»T«b« � Å_Î�Â>¤:¥ �  ° �s�W¥�7��s�W¥ #ÅbÅbÅ»W�_¬b»L«L« � ËÂH»:�_¬&Â6· �m¬��x�#Å��Ê ° �s�W¥�7��s�W¥�WÅbÅ¡¢bλW�A¬&Â6· �m¬6�+»L«b«& ° �sÈ:·_�A©!·_¤T¬WÎ � �W¥�7���� � ���E�W¥ �NÅbÅ

����� ���� � E � E E��1=�� 0 � 23==6?ABE?AZj`:{W9Sf<| V^{#;J9\R_K

�TÐ

Page 89: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

ºC¤T¬:¤_ÏL� ª �T� Ë»L«L«ÃÂEºC¤T¬C¤)ÂH¬�7��n¬ �� ° ¥CÅ�� �hÏb� ª �T�)ÂH¬�7�� ¸ Å��NÅ¡¢bλL«L«ÃÂH´!¯I©N¥Q¬& ¸ � �[¬ �#Å�� ° ¥CÅ;H@#DI=y9<?Af\9 �I?QBH9\R_K�RAV)?�=6?QB>?�?A@:@:f\9\D�|mBHRn?n=yRTKW;JBHFE{W=aBER_FºC¤T¬:¤Lºb�_©!¥Q¬b¨ Ë»L«L«ÃÂEºC¤T¬C¤)ÂH¬�7��n¬ �� ° ¥CÅ�� �j´bµL«W�L�)ÂEºC�_©!¥w¬b¨&Â6·CÅ���¬ �6Å��NÅ�¢bÎ °ÁbÄ:�T¨:�ÈG ¸ �T¬:¢:·_�_©!¥w¬b¨L�!·Q¬b�T¨#¥�� ª �NÅ��

�Nª « ):�T¬N·wÄ& ÂEºC�A©!¥Q¬L¨L¶:�:·T�� � � � �a· � � Å�� ° ÅbÅAÎ ÂJ¬�7�� ° ¥CźC¤T¬:¤Lºb�_©!¥Q¬b¨ Ë»L«L«ÃÂEºC¤T¬C¤)ÂH¬�7��n¬ �� ° ¥CÅ�� �j»L«b«ÃÂH´LµL«W�L��ÂHºC�_©!¥Q¬L¨�Â6·LÅ��(¬��6Å��s�W¥CÅ��NÅ¡¢bλL«L«Ã ° �sÈ �#ª «ÃÂH³b¦L»L«b«�7TÅAÎ� ° ¥ � �+�W¥CÅbÅÁbÄ:�T¨:�ÈG ¸ �T¬:¢:·_�_©!¥w¬b¨L�!·Q¬b�T¨#¥�� ª �NÅ�� �Nª «!)C�T¬N·wÄàÂEºC�_©N¥Q¬b¨L¶C�:·T�� � � � �a· � � Å�� ° ÅbÅÎGÂH¬�7�� ° ¥CÅ��È_¹N·TÎ�ÂH¬�7��+ºC¤T¬:¤)ÂJ¬�7��m¬ �� ° ¥bÅ�� ·CÅ¡¿CÎ ° ¥ �

���m�"+ ��� �� � � ��� � ��!�L�_�#�L� )W¢T± ª �W«#� ªQ° µª �W«:�T¨b¬N¥ ):¢ � �#�L�:¥�£:¤W¥Q¦C�C�b�b¢_ÍC�T¨A�!¤C� ª � � °Nª ®L«:� ª ©C¬W¢A¬b¨:¤ ¼ �_¨#¥_¤L�!b9\l�@:fS9SO#=�?QBH9\R_K+R_V2DycC@:FED�;E;H9SRTKW;v{W;J9\K:o(BH8WD�`W?_;H9\=rFE{:f\D�;�R_V�BH8WDU=6?Af<=y{WfS{W;�g¥Q¬b¨C¤T¬:� ¸!ª �W¥­ ¤W¥ ª · � ¨L�#�L�:¥�¿ÏW�_¬:¤ Éǹb¬C¤ÇÉ Â�¯I©#���m¶:�b¤L�NÅÆÉÊ´b¹b¬:¤ ÉÊ´LÏW�T¬C¤ÊɺC¤:¥_�LºC�_©N¥Q¬b¨ ÉǺC¤W¥_�_¶ ª ¥Q¬C²¡ÉÀºC¤:¥_�T¶ ª ¥w¬ � É � ©!·w�C¨L¨bµ­ ¤W¥ ª ·_¢:·_¤T¬:¤�¿ÀºC¤_¬:¤LºC�_©N¥Q¬b¨ÉǺC¤T¬C¤_Ïb� ª �_�É ­ ¤W¥ ª · � ¨L�#�L�W¥­ ¤W¥ ª ·_¢_¬bµN·_�A© ¿ ­ ¤W¥ ª · � ¨L�#�L�:¥¥ ª �W«#� ªQ° µ ¿ ª ©b©W�T¨Q�!�W¥Q¬& ­ ¤W¥ ª ·A¢:·_¤A¬:¤WÅ¥ ª �W«#� ªQ° µ��m¿ ª ©b©:�T¨A�!�W¥w¬& ­ ¤W¥ ª ·T¢_¬TµN·A�_©!Å

Page 90: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� ��������� � �

� � � � ��� � � �� �� �� � �-� ��� � ��� � �� �� �

�i�3�6� �������� � ������.U'+0��:.i��� %�'+* .U4�4 ���x's%>��% .('+0�!�L�_�#�L� )W¢A³:¤ ª ©ª �W«:�T¨b¬N¥ ):¢_´b¨:¤_©N¥¥Q¬b¨C¤T¬:� ¸!ª �W¥�!¤ ª ©À¿ ª �_ÁC¨:¤A«ÃÂH¬:�_«LÁC¨:¤_«ÃÂJ³:¤ ª ©NÅbŬ:�_«bÁC¨C¤_«ÃÂ6¥CÅ ¿Ç³:�T�T�#�L�) ª ��� ª ���s´C�_«C¶:�W·_�:¥�Â6¥CÅLÅ~ÉÊ b¨:� ¸ ¨:¤w��ÂH´C�_«C¶:�W·_�:¥�Ây¥bÅbų:¤ ª ©À¿À�T¬b¨:�_©:¤w�!� �ÁbÄW�T¨:�GÂ6·_�C�b�T�W·Q¬W¢T�b¤T¬C¤C¢A�C� ° ¥CÅ �¯I© ª ¬ ) �¨:�_«W�b¤_¬&ÂH´b¨:¤A©!¥ ° �T¨Q�#¶C�W·A��È_ÉÊÍC�T¨A�#¶!Å �¹b® ª ¬ )

¨L�#�T�W¥¯I© ª ¬ ) Ë�#¥ ¢bÎ Â�� ��� � ���s�W¥CŹb® ª ¬ ) ËÂE�W¥�7��+�#¥��� � �#Å¢LÎÀÈ_¨C� ¼ �T¨N¥A�CÎ��#¥�´b¨:¤_©!¥ ° �T¨A�#¶C�W·T� ËÂE�W¥�7��+�#¥��� � � � ½:¤C�T�C� ° ÂH½:¤T¨�ÂJ©W¤w�!�WÅ��E�:Å �p�#¥ �#Å�¢bÎÂ��[� � �p�#¥�7���� � � � � �#¥� ���+�#¥ #ÅÁbÄ:�T¨:�ÈT�C� ­ � ¸  � ��¬L¨:¤_©!¥ ° �T¨Q� ª © ¸ Ë �TÅAΡ©:¤w�!� �È ª �T¨& ª ©#� ª ©:�) � �#¥!7TÅ ��¥_¤Tµ� � � ª ©#� ª ©W�T���TÅ��´b¨C¤_©!¥ ° �_¨A� � ¥_¤Tµ� � ��¬L¨:¤_©!¥ ° �T¨A�!�L���TÅbÅ_Î��À¿CÎÊ� �

���

Page 91: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

Í:�T¨A�#¶ ËÂE�W¥�7��+�#¥��� � � � �W¥ �NÅ¡¢bÎ�ÂE�#¥�7�� � � �n�#¥� ���s�W¥ #Å¥Q¬b¨C¤T¬:� ¸!ª �W¥ª ©#� ª ©:�)Â[�#¦:�A© ¼ Å ¿�!¤_©bµb¬C��Â�¯�©#� ª ©W�GÂ[�W¦:�A© ¼ ÅTÅ��m¥ ª �W«#� ªQ° µ

¨L�#�T�W¥¯I©#� ª ©:�)Â[�#¦:�A© ¼ Å Ë´bµT«W�L��ÂH½C¤T¨&ÂH®!Å�� ¬!Å¡¢bÎÇÈ_¬L«!¥I� ­ ¥Q¬ �m�T¬b¨:�_©:¤w�!�CÎ Ây¥ ­ ¥ �+�#ÅÁbÄ:�T¨:� �#¦:�_© ¼ � ° �T¬N·IÄà½:¤b�T�C� ° ÂJ½:¤_¨&ÂJ®NÅ��n�#ÅbÅ �xÈQ©W�T¬& ª ©MÅ_Î ÂH½C¤T¨&ÂH®!Å����#Å��È_¬L«b�L© ªQ° µWÎ �AÂaÈ_¬bµT«W�CΡ���+¬!Å��Ê¿:Î ¥ ­ ¥

�i�3�,� ��� � � ��� �� �Æ��.U'+0 � .i��� %6'+* .3'+� ���x's%>��% .('�!�L�_�#�L� )W¢A´b¨:¤_©!¥ª �W«:�T¨b¬N¥ ):¢ � �#�L�:¥ )W¢_¶LµL©W¤w� ª · � �#�L�:¥ )W¢TºC¤T¬C¤#¯I©C¬b¨C�

):¢L±_«#� ª ¬ )W¢L± ª �W«#� ªw° µ ):¢ � © ° �b�T�!LBEFE?ABHD6oTX ´b¨C¤_©!¥ ° �_¨A� � D�li`NRC|C9SDI;rBH8:Dn`#?_;H9\=(9<|CD�?mRAV BH8:D %�?AFEl V^{W;H9SRTKxBEFE?_KW;YV^RTFHln?AZBH9\R_K�g �G9SF>;JB 9SKLBHFERC|C{W=6DkBH8:DU`W{:9Sf<|bZ =6?ABE?(9\|:D6KLBH9SBYXm9\K�BH8:Di`#RC|CX�RAVGBH8:DkV^{WKW=aBE9SRTK |CDyOWKW9PZBH9\R_K�gm7�8:D�K ;J@:f\9SB�BH8:D `NRC|CX~9SKLBHR ? %�F>?A@W@#D�FU?AKW| ? %vR_FEe_D6FIg�� K:V^R_f<|~BH8:D %�F>?A@:@ND6F9\KmBE8:D<%vR_FEe_D6FvBER(RT`CBE?_9SKs? %vR_FEe_D6F BH8#?QB 9<;�FHDI=y{:F>;H9S�TD�%�9SBH8+FED�;H@#DI=aB�BHR�9SBE;HD6fSVYg �tD6FE9S�TD? =�?QBE?_l�R_FE@:8:9<;Jl V^FHRTl�BH8:D�|CDyOWKW9PBE9SRTK RAV�BE8:D %vR_FEe_D�F�g �G9SK#?Af\fSXTz�{:KCV^R_f<| BE8:D BEFE?_KW;YZV^R_FEl�D�| %vR_FEe_D6Fr`W?T=>e 9SK `NRC|CXxR_V BE8:D %�FE?_@:@ND6FIg 7�8:Dn9SKLBED6FEl(DI|C9<?QBHD�FED�;H{:fSBE;kRAVvBH8W9\;BHF>?AK#;YV^RTFHln?QBE9SRTKm?_FHD�=yf\D�?_K:D�|m{:@+`bXp;H9Sl�@:f\9PV^Xb9\K:o�BH8WD6l+g¥Q¬b¨C¤T¬:� ¸!ª �W¥´b¨:¤_©!¥ ° �T¨A� �p¿¯I©b¬b¨:�_Ïb� ª �T�bºC¤_¬:¤ �¥ ª �W«#� ªQ° µ �±_«W� ª ¬LÏW�T�LµCºL  �� © ° �C�T��7 ª © �� ª ��� ¥ ª �W«#� ªQ° µ �³:¤T¦:�Lºb¤T¬:¤_ÏW�T�Lµ!� �� © ° �C�T� ª ©�7 �¥ ª �W«#� ªQ° µ

7�8:D�BEFE?_KW;YV^RTFHln?ABH9\R_K(FH{:f\D ?A`NRQ�_D�;H{W=6=6D6DI|:;�9SVNBE8:D�V^{:KW=yBH9\R_K |CD6OWK:9SBH9\R_Kn9SBÃ9<;&?A@:@WfS9\D�|3BHR9<;G?5V^{:KW=yBH9\R_KiBH8W?AB�=6R_KW;H{:l�D�;G?r|:?QB>?5;JBHFE{W=aBE{:FHD�?AK#|U@:FERC|C{W=yDI;2?tK:D % R_K:DTg27�8:D�FED�;H{:fSB%�9\fSf)`ND(? V^{:KW=aBE9SRTK |CD6OWK:9SBH9\R_K RAV�BH8WDiV^RTFHl » ­ ¥]Â�$ $ $ � Ïb� ª �T�)Â�$ $ $ ºC¤_¬:¤2Â�$ $ $aÅ $ $ $aÅbÅ g7�8:Dv`W?_;H9<=)BHF>?AKW;JV^R_FEln?QBE9SRTKW;MBE8W?QB % D 8W?w�_D |CDyOWKWD�|i=�?AKi?_f\;HR5|CDI?Af %�9PBE8UV^{:K#=aBH9\R_K#;�BE8W?QBD69SBH8WD6F�=yRTKW;J{Wl(D����p@:FHRC|C{#=yD�?m|:?ABE?�;YBEFH{#=aBH{WFHDTg�O =6R_KW;H{:l�D6F�%�9\fSf�`NDiBEFE?_KW;JV^R_FEl(DI|BHR3? ºb¤T¬:¤ ?_KW|�?�@:FERC|C{W=yD�F�BHR3? ÏL� ª �T� g27�8:D5|:DyOWK:9SBH9\R_K#;&`ND6f\R'%�V ?T=aBER_F&RT{CB&BH8WD `W?_;H9<=BHF>?AK#;YV^RTFHln?QBE9SRTKW;�V^FER_lÌBE8:D�@:9S@ND6f\9\K:D(?_`#RQ�TDi9\KLBHR BEFE?_KW;JV^R_FEl�?ABH9\R_KW; BH8W?ABk?T=>8:9\D6�_DiBH8:DBH8WFHD�Dreb9\KW|:;�R_V2BEFE?_KW;JV^R_FEl�?ABH9\R_K]g

���

Page 92: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

7�8:D�BEFE?_KW;JV^R_FEl�?ABH9\R_K ´b¨:¤A©!¥ ° �T¨Q� BEFH9\D�;t?Af\f]BH8WFHD�D�BHF>?AKW;JV^R_FEln?QBE9SRTKW;6g �G9SF>;JB59PBtBHFE9SDI;�BHR9\KTBEFHRC|C{#=yD�?i`W{:9Sf<|+?AKW|m=6?ABE? %�FE?_@:@:9\K:oUBE8:D�`NRb|:X RAV2BH8:DrV^{:KW=yBH9\R_K]gH([VGBH8#?QB ;J{#=6=yD�D�|:;BH8WDkV^{:KW=aBE9SRTK+9\;�?AB fSDI?_;JB�?(@:FERC|C{W=6D6F�RAV�?�|:?QB>?(;JBHFE{W=yBH{:FED�?AKW|m@#RL;H;H9\`:fSXm?(=6R_KW;H{:l�D6F?_;�%vD6f\fjg � BH8:D�F %�9<;JDr9SB l(9\o_8LB RTK:fSXp`#DU?�=yRTKW;H{:l�D6FIg´b¨:¤_©!¥ ° �T¨A� ¿ÂbÂ6¯I©C¬b¨:�AÏb� ª �T�LºC¤T¬:¤ �¥ ª �W«#� ªQ° µ �ÂEºC�_©!¥I�_�!�T¨b L¨:�L�T�!·Q�T¨ÈTÉÊ b¨:�L�_�!·_�T¨ÈTÉÊÍ:�_© � �W·w�C¨N¥ ªw¼ �T b¨C�L�_�!·Q�T¨!ÅTÅÈ_ÉÀºC�A©!¥w�_�!�_¨!Å��¥ ª �W«#� ªQ° µ

OÆ=6R_KW;H{:l�D6F��w@WFHRC|C{W=6D6F�=�?AKU`ND&BE{:FEK:D�|�9\KLBHR ºb¤T¬:¤ V^RTFHl `bXrOWF>;YB2;H@:f\9PBHBH9\K:otBH8:D `#RC|CX�?QBBH8WDÃ=6?T;JD)DycC@:FED�;E;H9SRTKr?_KW|tBH8:D�KkBHF>?AKW;JV^R_FEl�9SK:ovBE8:DÃ;H@:fS9SB�R��3|CDyO#K:9PBE9SRTK<%�9PBE8 ÏW�T�Lµb´:�Lºb¤T¬:¤ gºC�_©!¥w�A�!�T¨b b¨C�L�T�!·_�_¨�¿±_«W� ª ¬LÏW�T�LµCºL  �ÏW�T�Lµb´:�Lºb¤T¬:¤

7�8:Dr;YBEFE?ABHD6oTX ÏW�L�Lµb´C�LºC¤T¬:¤ BE?AeTD�;ÃBH8:Dr|CDyO#K:9PBE9SRTKW;vRAVMBE8:D�%�F>?A@W@#D�F ?AK#| % RTFHeTD6F�V^{WKW=aZBH9\R_K#;6g,([B {WKCV^R_f<|:;�BE8:D<%�FE?_@:@ND6F�9\K+BH8:D<%vR_FEe_D�F�zC;H9Sl�@:f\9PO#D�;�BE8:D�FHDI;J{WfPB5?_KW| BE8:D6K+BEFH9\D�;BHRxV^{W;HD BH8WD %vR_FEe_D6F<%�9SBH8ÆBH8:D�=yRT@LX V^{:KW=yBH9\R_K J ºC¤_¬:¤)Â6·�7���$ $ $ �a·w©MÅ Kagp7�8WDpFED�;H{:fPB39\;{:KCV^RTf\|:D�|�9SK�BE8:D<%�FE?_@:@ND6FvBHRnRT`CBE?_9SKmBH8:D�KWD % |CDyOWKW9PBE9SRTK�R_V�BE8:DkV^{:KW=yBH9\R_K]gÏW�L�Lµb´C�LºC¤T¬:¤�¿� © ° �C�T��7 ª © �� ª ��� ¥ ª �W«#� ªQ° µ �±_«#� ª ¬TÏW�L�Lµb C¤C�b���

� © ° �C�_��7 ª © ��� ª ��� ¥ ª �:«#� ªQ° µ �³:¤T¦C�LºC¤T¬:¤AÏW�L�Lµ!� �� © ° �C�_� ª ©�7�� �

� © ° �C�T�� ª ©�77�8:D(`#RC|CXxRAV ?m@:FERb|:{W=yD�Fk=�?AK:KWRABk`#D3BH{:FEK:DI|x9\KLBHR+? ºC¤T¬:¤ g�7�8:D�FHD6V^R_FED!%vR_FEe_D�FE;5?AFED;H@:fS9SB R��xBHRn=6?ABE=>8mBH8:DU;JBE?ABH9<=k@W?AF>?Al�DyBED6F>;ÃR_V2BE8:DkV^{:KW=yBH9\R_K]g b¨:�L�T�N·_�T¨ ¿±_«W� ª ¬LÏW�T�Lµb  �� © ° �C�T��7 ª © �� ª ��� ¥ ª �W«#� ªQ° µ �±_«#� ª ¬TÏW�L�Lµb  �

� © ° �C�_��7 ª © ��� ª ��� ¥ ª �:«#� ªQ° µ � �²C�T¬ � © ° �C�T� ª ©�7�� �²b�T¬ � © ° �C�T� ª ©�7

( Ki=�?_;HD&RAVW?5@:FHRC|C{#=yD6F�BH8W?AB29<;�KWRAB2FED�=6{:F>;J9\�_D)BE8:D6FEDÃ9<;�KWRABH8W9SK:o5BHRr|CR5?QV BED6FG9SKLBEFHRC|C{W=69SKWoBH8WD ­ � ª �T�:¢C·_¤T¬:¤ ?_KW|�;J9\l�@:fS9SV^Xb9SKWoWgÍ:�_© � �:·w�C¨N¥ ªI¼ �T b¨:�T�T�N·_�A¨Æ¿ª �

�+Q

Page 93: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

( K BE8:Dn=6?T;JD3RAVv?m=yRTKW;J{Wl(D�F�zM9jg D_g\z]? V^{:K#=aBH9\R_K BH8#?QB�=yR_K#;J{:l�DI;r?�|:?ABE?_;JBHFE{W=yBH{:FED_z!`:{CB|CRbD�;kKWRABU@:FERC|C{W=yDn?�K:D %�RTK:D_zMBE8:Dn`:{:9\f<|bZ[=�?QB>?m9\KLBHFERC|C{W=aBE9SRTKxV ?_9Sf<;�z�`:{CB�BE8:DnFED�;JBkR_VBH8WDkBHF>?AKW;JV^R_FEln?QBH9\R_Km9\;vBE8:DU;E?Al�D�?_;�9\KmBE8:DU=6?T;JDkR_VG?n=yRTKW;H{:l�D6FHZj@:FERC|C{W=6D6FIgºC�_©!¥w�A�!�T¨ ¿ÀºC�_©!¥w�A�!�T¨b b¨C�L�T�!·_�A¨

�i�3�"+ ������� � � � � ��� � ���]'(�G��. /21 � %6'+*���.r�G. � .i� ��� %y0 � 0�!�L�_�#�L� )W¢_ºC¤T¬:¤#¯�©C¬b¨:�ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢AÏb� ª �_�:¢Tºb¤_¬:¤ £:¤W¥Q¦:�b�b�b¢T² ª�­¨L�#�T�W¥³b¦LÏb� ª �T�bºC¤T¬C¤ Ë� ¢bÎ�Ïb� ª �T�)ÂH¬�7��p´L» ­ ¥�Â��j¬ ���p» ­ ¥� ° ¥���±b�w�!�GÂH¬ #Å��»L«b«ÃÂEºb¤T¬:¤)ÂH¬�7�� ¬ � ° ¥CÅ�� �Y� �NÅLÅbÅbÅÁbÄ:�T¨:�¡©W�_Á#¢A¬ ¼ ¤T¨ ¿CÎ ¬ ��xÈA¬bµL«W�CÎ�Ç¿:Ρ¬�7 �È ¸ �T¬:¢:·_�_©!¥w¬b¨L�!·Q¬C�T¨#¥TÎ~¬�7 ¿:Î ·A�C�W·_�:¥ �Èb� �Nª «ÃÂH» ­ ¥QºC�_©!¥Q¬L¨!ÅAÎ�Â6·A�b�W·T�:¥ �ÂJ¬�7���¬ #ÅbÅÆ¿:Î ° ¥» ­ ¥AºC�A©!¥Q¬b¨ÌËÂEºb�_©!¥Q¬b¨L¶:�W·T�G � � � � · �+¬N¥CÅ��ÊÂJ¬�7���¬ #ÅbÅ�¢LÎ ´bµT«W�L��ÂH½C¤T¨& ° Å��n´ )T�b©ÃÂH¬N¥ � �p¬ #ÅLÅÁbÄ:�T¨:�¡©W�_ÁÀ¿:Î ° �xÈI�!¤_«ÃÂJ¬b¨bµ& ¬�7 ���[¬ WÅbÅQÎ ¬#¥¿:άN¥ �

¥Q¬b¨C¤T¬:� ¸!ª �W¥¯I©C¬b¨:�AÏb� ª �T�LºC¤T¬:¤ ¿Ç½C¤C�T�C� °  ª ��� �L©:�C�T¨W¢T¤ ­ ¥�ÂH³L¦LÏb� ª �T�bºb¤_¬C¤#ÅTÅ�b©:�C�T¨:¢L¤ ­ ¥�Ây¥CÅ ¿Ê¨:�W·Æ®&ÂbÂJ» ­ ¥� ª ��� ª ����®!Å�ÉÊ´b» ­ ¥� ª ���p®!ÅLÅ ÈTÉ ¥CÅ

�i�3� � ��� � � ����� ���+0��G��. �v�)%�'+* ����� ��� 0G0G%%.3'+0�!�L�_�#�L� )W¢T±_«#� ª ¬ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢AÏb� ª �_�:¢Tºb¤_¬:¤ £:¤W¥Q¦:�b�b�b¢T² ª�­�&��� �J� / 0 � � ��� B��7> E @CE G�; � ; @ I7�8:D~FH{WfSD »W�b�A :¤T¨:¤w�]¥ BHF>?AKW;JV^R_FEln;m?ÆV^{:KW=yBH9\R_K |CDyOWKW9PBE9SRTKÀ9\KLBHR�BH8:D f\9\;JBsRAVUV^RTFHln?Af@W?_FE?_l(D6BHD�FE;vRAV2BH8:DkV^{WKW=aBE9SRTK]g¨L�#�T�W¥»W�b�_ :¤_¨:¤w��¥�Ëm½:¤C�_�C� ° ÂH½C¤T¨& ° Å��n» ­ ¥�ÂH®N¥ �m¬�� �WÅbÅ ¢LÎ ®N¥

7�8:D(FH{WfSD ·_¤b�b�b¢L¤T¨ ¸ ¥ FED�=6R_oTK:9 ��D�;t?m=�?Af\f);H9SBHD(RAV ? V^{:KW=aBE9SRTK ° ?_KW|+BEFE?_KW;YV^RTFHln;t9PBrBHRBH8WD�fS9<;YB R_VG?_FHoT{:l�D6KLBE;�R_V�BH8WDkV^{:KW=aBE9SRTK]g·_¤C�b�b¢T¤T¨ ¸ ¥�Âj�#¦ ° Å Ë�»T«b«ÃÂH´bµT«W�L��ÂH½C¤T¨& ° Å���¬NÅ��s�W¥CÅ¡¢bÎÊ�W¥�ÁLÄW�T¨:���#¦ ° ¿:Î °

� �

Page 94: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

�&��� ��� � B ��� I � E ��� � / 0 � � ��� B �7> E @FEHG�; � ; @CI7�8:D3FH{:f\D Í:�_©W±T¬C¤T¬ ª ·Q C¤T¨:¤w��¥ |CD�FH9\�_DI;�BE8:D3f\9<;YBrRAV&K:RTKCZ[;JBE?ABH9<=U@W?_FE?_l�DyBHD�FE; RAVÃ?nV^{WKW=aZBH9\R_Kx`LX�B>?Aeb9SKWo BH8WDif\9\;JBrR_VÃ?Af\f2@#?AF>?Al�DyBED6F>; ?AKW| D6f\9Sl�9\KW?QBE9SK:omBH8WRT;HD�BH8W?ABk?_FHDi@W?_;E;JDI|�_D�FH`#?QBH9\l�BER(FED�=6{:F>;J9\�_Dk=6?_fSf<;�RAVGBH8:DkV^{WKW=aBE9SRTK]g¨L�#�T�W¥Í:�_©W±T¬C¤T¬ ª ·Q C¤T¨:¤w��¥$˽:¤b�T�C� ° ÂJ½:¤T¨& ° Å��n» ­ ¥�ÂH®N¥��m¬6�x�WÅbÅ¡¢bÎ ®#¥ �ÁbÄ:�T¨:�ÇÈ:·_�C�L�L�W·Q¬&Ây·_¤C�b�b¢T¤T¨ ¸ ¥M � ° ÅbÅAÎ �Ç¿CÎʤ_¨ ¸ ¥b¥ �ÈA©W�_©W¢:¥Q¬:¤T¬ ª ·TÎ Â�� ����®N¥ � ¤T¨ ¸ ¥b¥CÅ ¿:ήN¥ �

¥Q¬b¨C¤T¬:� ¸!ª �W¥©W�_©#¢:¥w¬:¤T¬ ª ·�¿Ç¨:�A«W�b¤T¬&ÂJÍ:�_©W±T¬C¤T¬ ª ·!7 È_ÉÇÍ:�A©W±T¬:¤T¬ ª ·� ÈTÉ Í:�A©W±T¬:¤T¬ ª · #Å

¨L�#�T�W¥Í:�_©W±T¬C¤T¬ ª ·�7 Ë ÂHµ#¥ � � ��� � Å¢bÎÀÈA¨:� ¼ �T¨#¥_�CÎ µ#¥Í:�_©W±T¬C¤T¬ ª ·� Ë ÂHµ#¥ � �[®b¬ �Ê´LµL«W�L��ÂJ½:¤T¨&ÂH®NÅ��n¬NÅ �n®N¥ ���s¤T¨ ¸ ¥b¥CÅ�¢bÎÂHµ#¥ ��®N¥ � ÈI�!¤_«&ÂH´W�WÅ_Î�¤T¨ ¸ ¥b¥bÅÁbÄ:�T¨:�ÊÈI�!¤A«Ã �[®L¬ � � �NÅ_Î ¤T¨ ¸ ¥L¥Í:�_©W±T¬C¤T¬ ª · Ë ÂHµ#¥ � �[® �p®N¥ ��� ¤_¨ ¸ ¥b¥CÅ�¢LÎÂ��j® �nµN¥ ���+®#¥ � È��!¤_«ÃÂH¬L¨bµ&ÂH´W�:ÅbÅ_Î�¤T¨ ¸ ¥L¥CÅ

�&��� �'& ��I � @FE � ��� B��7B�� ���:91@F;&I I � B��7�8:DrFH{WfSD ±A«#� ª ¬b¹L®L«C¨ ;H@:f\9PB�?AKpD6cC@:FHDI;H;H9\R_K � 9SKm?UK:D % V^{:KW=yBH9\R_Km|:DyOWK:9SBH9\R_K %�9PBE8 � ?_;`NRb|:Xm?AK#|m?�=6?_fSf]BHR(BH8W?AB�V^{:KW=yBH9\R_K�BHRnFED6@:f<?_=6D5BE8:D�DycC@:FED�;E;H9SRTK]zb9hg D_g\z

� ¢bÎ� ° ®#¥ � ° ¿ �_®N¥¢bÎÊ�#Å7�8:DkV^{:K#=aBH9\R_Ks?_`W;YBEFE?T=aB>; RQ�TD6FvBH8WD��w?_FH9<?A`WfSDI; 9\K �#¦L®N¥ g¨L�#�T�W¥±_«#� ª ¬L¹b®L«C¨&Âj�#¦b®N¥CÅ Ë� ¢bÎ�ÂH»L«b«ÃÂJ´bµL«W�L�)ÂH½:¤T¨& ° Å��(¬!Å��+®N¥CÅ��+½C¤C�T�C� ° ÂH½:¤T¨& ° Å�� ­ �L�LµNÅbÅÁbÄ:�T¨:� �#¦b®N¥�¿:ήN¥ �m©W�AÁ ¿CÎ ° �ÈL�T¬b¨C�_©W¤w�!�bÎ » ­ ¥]ÂH®N¥ �+±b�I�!�)ÂaÈ_¬LµL«W�CÎÆ�#Å��s�#Å�¿:Î ­ �L�Lµ �È_¬bµL«:�CÎ ­ �L�LµÇ¿:ά

�&��� �� � 9�2 � ��� @FE 919<; @� 9\�_D6K ?p;JBHF>?QBHD�o_XmV^R_Fk;J@WfS9SBJBE9SK:o+?AKxDycC@:FED�;E;J9\R_Ks9\K ?m=6?Af\f)?AKW| ?m|CDyO#K:9PBE9SRTK]z!BH8WD3FE{:f\D±_«#� ª ¬LÏW�L�Tµ ;J@:f\9SBE; BH8:DkD6cb@WFHDI;H;H9SRTKn9SKpBH8:Dk`NRC|CXnRAV2?UV^{:KW=yBH9\R_K+|CDyOWKW9PBE9SRTK BH8#?QB�;J9SBE;v9\KBH8WDr?_FHoT{:l�D6KLBÃRAV�BH8:D Ïb� ª �T� D6cC@:FHDI;H;H9\R_Kn{:KW|:D6F�9PB>;vfSDI?_|C9\K:oU�Q?Af\{:Dk?AKW|nBYXL@NDk?A`W;JBHF>?_=yZBH9\R_K#;6g

� *

Page 95: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

¨L�#�T�W¥±_«#� ª ¬TÏW�L�Lµ&Ây¥w«#� ª ¬NŠ˽:¤b�T�C� ° ÂJ½:¤T¨&ÂH®NÅ�� ­ �L�Lµ!Å¡¢bÎ �[½:¤b�T�C� ° ÂJ½:¤T¨&ÂH®NÅ�� ­ �L�Lµ��6Å��m�C� ° �ÁbÄ:�T¨:�ÇÈA�b©:�b�T¨W¢L¤ ­ ¥T¢ ­ � ª �T�)Â6¥�«#� ª ¬�¿CÎ�Â>� �s�b� ° Å�� �Y�#ÅAÎ ­ �L�LµÇ¿:Î ­ �L�Lµ��

¥Q¬b¨C¤T¬:� ¸!ª �W¥�b©:�C�T¨:¢L¤ ­ ¥T¢ ­ � ª �T�)Â6¥I«#� ª ¬NÅ ¿¨:�:·¡®&ÂLÂH» ­ ¥� ª ��� ª ����®!Å¡ÉÊ´b» ­ ¥� ª ���m®NÅ�ÉÊÏb� ª �_�� ª ���+¥w«#� ª ¬!ÅbÅ�ÈTÉ�¥w«#� ª ¬!Å

�&��� �h� � ; B,@C=1; @ � �1D � � ; � @FD$0�G�;�� � I7�8:DkFE{:fSD ±_«#� ª ¬CºC¤W¥A�T¹b®L«C¨ ;J@:f\9SBE;�?AKmDycC@:FED�;E;J9\R_K��Y{W;YB�f\9SeTD ±_«#� ª ¬L¹b®L«C¨ zA`:{CB�@:{CB>;vBH8:D?AFEo_{Wl(D�KLB�BH8W?AB59\;59SK#;J@ND�=yBHD�| `LXmBH8WDi=6?T;JDU;JBE?ABHD6l�D�KTBt9SKsBE8:DUD6cb@WFHDI;H;H9SRTK�OWFE;JB59\K+BH8:Df\9\;JB RAVG�w?_FH9<?A`WfSDI;vBH8W?AB 9\;�?_`W;YBEFE?T=aBED�|mRQ�_D6FIg¨L�#�T�W¥±_«#� ª ¬bºC¤W¥_�T¹L®L«C¨&Â[�W¦b®#¥CÅ�Ë� ¢bÎÊÈL±_«#� ª ¬b¹b®L«C¨� �[®N¥CÅAÎ �ÁbÄ:�T¨:�ÇÈ � �b�_¨C�C�T¨b»L¨ ¸ ¥TÎ Â>��� ÈI�#¦L®N¥TÎGÂ�ÅLÅ�¿:ήN¥� �b�T¨C�b�T¨b»b¨ ¸ ¥ ËÂ>� �s®N¥bÅ¢LÎ � � �n®N¥ � �ÁbÄ:�T¨:�ÇÈ:·_¤W¥A� ¼ ¤T¨WÎ��Ç¿:Î � � ÈT� ªw°b° Î�ÂH®N¥ � � � �NÅÆ¿:ήN¥ �

¥Q¬b¨C¤T¬:� ¸!ª �W¥·_¤W¥_� ¼ ¤T¨Ê¿ �A©!·_�T¬C�) ºC¤W¥A�)Â�� �Ê´bµT«W�L��ÂH½C¤T¨& � Å�� � Å�� � ÅbÅ � � �

�&��� � . � 9�2 � � � B G � � E ��� B���I7�8:Dr`:{:9\f\|:9SK:o(`:f\RC=>eb;&V^R_F�;H@:fS9SBJBE9SKWoUV^{:KW=yBH9\R_KW;�=�?AKp`NDk=yR_l3`:9\K:D�|n9\Kp�Q?_FH9\R_{W;$%v?wXC;�� ºL ;JBE?AK#|:;vV^R_F � RTKW;J{Wl(D�F ���&FERC|C{W=yD�F�z   ;JBE?_KW|:;vV^R_F��&FERb|:{W=yD�F�g¥Q¬b¨C¤T¬:� ¸!ª �W¥±_«#� ª ¬TÏW�L�LµCºT ¿ÁbÄ:�T¨:�)ÂHÍC�_©W±T¬:¤_¬ ª ·Q :¤A¨:¤I�]¥~¿CÎ ¼ ¥bÅ��±_«W� ª ¬LÏW�T�Lµ&Â>±_«W� ª ¬CºC¤C¥_�_¹L®L«b¨&Â�� ¼ ¥LÅbű_«#� ª ¬TÏW�L�LµCºT :¤C�b��¿ÁbÄ:�T¨:�)ÂH»:�b�_ :¤T¨C¤w��¥~¿:Î ¼ ¥CÅ��±_«W� ª ¬LÏW�T�Lµ&Â>±_«W� ª ¬CºC¤C¥_�_¹L®L«b¨&Â�� ¼ ¥LÅbű_«#� ª ¬TÏW�L�Lµb ¿ÁbÄ:�T¨:�)ÂHÍC�_©W±T¬:¤_¬ ª ·Q :¤A¨:¤I�]¥~¿CÎ ¼ ¥bÅ��±_«W� ª ¬LÏW�T�Lµ&Â>±_«W� ª ¬b¹b®_«C¨�Â�� ¼ ¥CÅTÅ

�TÑ

Page 96: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

±_«#� ª ¬TÏW�L�Lµb C¤C�b��¿ÁbÄ:�T¨:�)ÂH»:�b�_ :¤T¨C¤w��¥~¿:Î ¼ ¥CÅ��±_«W� ª ¬LÏW�T�Lµ&Â>±_«W� ª ¬b¹b®_«C¨�Â�� ¼ ¥CÅTÅ�i�3� � ����� � ��� � �:" � �: � � � � � 4y� � �5'(�)%�'+* � � � ����. � .�"

�)%%.3' � � � .i��� ��!�L�_�#�L� )W¢A¶bµL©W¤w� ª · � �#�T�W¥ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢T² ªI­�&���j���J� � ; � ; @FE ��� B �7B � � 4 � EHG � � � 0�25;)I¨L�#�T�W¥¶bµL© � �W�L�W¥�ËÂH¬�� ¸ � ·CÅ¢bÎ ÂHµN¥ � � ¥��+¨:�:¥CÅÁbÄ:�T¨:�È_¹N·TÎ�ÂH¬�� ¸ �~·CÅÆ¿:ÎÊ�W¥ �ÈI�!¤_«ÃÂJ¬bµL«W� �+¥w«#� ª ¬&ÂE�C�w� �n©W�_ÁW¢_¬bµL«W�T�:¢ ¼ ¤T¨��n¨:¤A© ¸ � �p©W�AÁ#¢_¬bµL«:�L�:¢ ¼ ¤_¨!ÅbÅ���b© �#ª «#Î�W¥¡¿:Î ÂHµN¥ � � ¥CÅ �È �Nª «Ã ª �NÅ_Î$ÂaÈ �Nª «&ÂH³b¦b»L«L«�7 �s¥ ª �W«#� ªw° µ!Å_Î$Â>�W¥ ��µN¥CÅ�� � ¥CÅÆ¿:Î ¨:�:¥

�&���j����� � 919�2 � � E ��� B � B�� � 4 �1EHG � � � 0123;)I¨L�#�T�W¥»L«b«C¶bµT© � �#�L�GÂ[�#¦b¨W�C¥CÅ�Ë»L«L«Ã ° �mµ!Å¢bÎ �ÁbÄ:�T¨:�ÇÈ_»L«b«b¶bµL© � �W�L� �LÂ[�W¦b¨:�:¥LÅ_Î~»L«b«Ã ° �mµ!Å�¿:Î �»L«b«C¶bµT© � �#�L�GÂ[�#¦b¨W�C¥CÅ�Ë´bµT«W�L��ÂHµ��m¬!Å¡¢bÎ �ÁbÄ:�T¨:�ÇÈ_»L«b«b¶bµL© � �W�L� �LÂ[�W¦b¨:�:¥LÅ_Î~´bµL«W�T��ÂHµ6�p¬NÅ¡¿:Î �»L«b«C¶bµT© � �#�L� �LÂ[�#¦b¨:�:¥bÅ�Ë+� ¢bÎ � �ÁbÄ:�T¨:�ÇÈb� �Nª «!):�T¬N·IÄÃÂ�¯L¥ � �#�T� � � �6Å_Î�ÂaÈI�#¦L¨W�:¥TÎGÂ6Å��m�#ůL¥ � �#�T� ËÂbÂ>� ��¨!Å��+¬!Å¡¢bÎ ¨ÁbÄ:�T¨:�ÇÈL���T�:¤C�G �´bµL«W�L�)Â>��� � Å¢bÎÊ� � Å_Î �AÂa� �Y¬!Å��

¥Q¬b¨C¤T¬:� ¸!ª �W¥�#¥ ª �W«W� ªQ° µ&Âj�#¦b¨W�:¥bÅ ¿ ª ©b©:�T¨A�!�W¥w¬&ÂH»L«b«b¶bµL© � �#�T�)Âj�W¦b¨C�:¥CÅ~ÈTÉ ­ ¤W¥ ª · � ¨L�#�T�W¥CÅ

�:9

Page 97: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

�&���j���'& � B���I � @C0 � ��� B��7B�� / 0 � � ��� B � �LB,@ � B �1I � @C0 � � B,@¨L�#�T�W¥³b¦b£qËÂEºb�_©!¥Q¬b¨L¶:�W·T�G � � � � · �+¬N¥CÅ��Ê ¸ �s���s¬NÅbÅ¡¢bÎÄÁbÄ:�T¨:�È_¶bµL© � �#�L�W¥TÎ$ÂH¬6� ¸ �~·CÅ�¿:Î�ÂJµN¥ � � ¥ ��¨W�:¥bÅ��

�[´bµL«W�T��ÂEºC�_©N¥Q¬b¨&Â6·LÅ��(´ )L�b©&ÂH¬N¥ �p¬NÅbÅ¡¿CÎ ·w¬ �ÈT�#¥ ª �:«#� ªQ° µ� �[¨W�:¥LÅ_λ ­ ¥� � ¥ �mÍ:�_©W� �m»L«b«ÃÂaÈT�T¬b¨:�_©:¤w�!�CÎ �����[»T«b«ÃÂ6·Q¬��pµN¥CÅ��#ÅbÅ ¿:Î¡Ä ���� ·wÄW�W·Q¦ ª © ¸ ¬LÄW¤_¬Ç¤C�b�µN¥�Ä:¤ ¼ � ­ �b�_©Ê¨C�_ÁC¨ ª ¬L¬:�_©ÈA©W�T¬&ÂE�_©!·_�T¬b��Â�8_µ�Ë ½:¤T¨&ÂJµ!Å��ÁbÄW�T¨:�GÂaÈ ° �T¬#·wÄÃÂH´bµT«W�T��ÂJ½C¤T¨) µNÅ�� ª �WÅbÅ_Î~µN¥CÅ � Å���C� ­ � ¸  ����³b¦b£ ° ¤ ª �L�T� Ë �TÅbÅ_Î�Ä

�&���j���� � B���I � @C0 � ��� B��7B�� � E � EHG�B,@F9 � � I G� R_K#;YBEFH{W=yB =6?QB>?(`LXm=yR_l�@NRT;H9PBE9SRTKmR_VG`NRC|CXpR_V&%vR_FEe_D�F %�9SBH8s=6R_@bX =6?ABE?3V^{:KW=yBH9\R_K¨L�#�T�W¥³:¤T¦:�Lºb¤T¬:¤_ÏW�T�Lµ ˽:¤b�T�C� ° ÂJ½:¤T¨& ¸ Å��p�WÅ ¢bν:¤C�_�C� ° ÂH½C¤T¨& ¸ Å��nºb¤T¬:¤)ÂH¬�7��m¬ ��mÄ!¥CÅLÅÁbÄ:�T¨:�ÇÈ_¬bµL«:�CÎ�Ç¿CÎ ¬ ¸ �È:¥w«#� ª ¬&ÂE�C�I� � ¨:¤A© ¸ �#Å_Î�¬ ¸ ¿CÎ�ÂH¬�7���¬ #Å��È ¸ �T¬:¢:·_�_©!¥w¬b¨L�!·Q¬C�T¨#¥TÎ~¬�7 ¿:Î ·A�C�W·_�:¥ �Èb� �Nª «ÃÂH³b¦b£NÅ_Î�Â6·Q�C�W·T�:¥��¡ÂH´bµL«:�L��ÂH½:¤_¨& ¸ Å���¬ ¸ Å�� � �s¬�7_ÅbÅÆ¿:Î�Ä!¥

�i�3� � ������� � � �� ��� �5'+� ��.r��% .(' . � - . � 0 �A��. � � .r�).� � � 0

�!�L�_�#�L� )W¢A³:¤_« �C�A©ª �W«:�T¨b¬N¥ £:¤:¥Q¦:�C�b�L¢T² ªI­� 9\�_D6K BE8:Dm|W?QBE?ABYXb@#Dp=6R_KW;JBHFE{W=yBHR_F ´ z�BH8:Dm;YBEFE?ABHD6oTX ¹ o_D�K:D6F>?QBED�;kBE8:Dpln?A@ V^{WKW=aBE9SRTKRQ�_D�F ´ g ¹ 9<;i?_@:@:f\9SDI| BHRx?+@W?_9SF ÂE�_© ¼ ��¬!Å R_V�?_K D6Kb�b9SFER_K:l�D�KTB �_© ¼ ?_KW| ?+BYXb@#D ¬ g7�8:D�D�KL�b9\FHRTK:l�D6KLB�l�?_@W;�BYXb@ND�;vBHR�V^{WKW=aBE9SRTKW;vBHRn`NDU?A@:@WfS9\D�|mBHR(BE8W?QB�BYXb@ND_g¥Q¬b¨C¤T¬:� ¸!ª �W¥¹ ¿Ç¨:�W·Æ®&ÂH¹��ÇÈTÉʹ�7ÆÈTÉʹ )ÂH®NÅbÅ

¨L�#�T�W¥¹�� ËÂ>�_© ¼ �m¬!Å ¢LÎ ¸ÁbÄW�T¨C�ÊÈb�L�b�T¦T�b«#Î�ÂH¬6�s�_© ¼ ÅÆ¿:Î ¸¹�7 ËÂ>�_© ¼ �m´b½:¤T¨&ÂE¤#ÅbÅ�¢bÎÊÈW¯Q�b�_©C¬ ª ¬LµWÎÆ´b½:¤_¨&Â>¤#Å

� �

Page 98: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

¹�7 ËÂ>�_© ¼ �m´CºC�_©ÃÂE¤#ÅbÅ�¢bÎÊÈW¯Q�b�_©C¬ ª ¬LµWÎÆ´CºC�A©ÃÂ>¤#Ź�7 ËÂ>�_© ¼ �m´b»L«b«ÃÂJ¬N·_�_©� ¬N¥CÅbÅ¡¢bÎÇÈW¯Q�C�A©C¬ ª ¬bµ:Î ´b»L«L«ÃÂH¬N·_�A©� ¬N¥bÅÁbÄW�T¨C�ÊÈA©W�T¬&Â>� �Nª «!)C�T¬N·wÄÃÂ>�L�L�T¦T�L«MÅTÅ_Î�ÂH¬N¥ �s�_© ¼ Ź )Â6¥CÅ�ËÂ>�_© ¼ �m´b»L«b«ÃÂJ¬N·_�_©� ¬N¥CÅbÅ¡¢bλL«b«ÃÂ>È_³b¦b³:¤A«bÏW�L�Lµ:Î ÂJ´b»L«b«ÃÂJ¬N·_�_©�n¬N¥CÅ���¨N¥bÅ�� ° ¥CÅÁbÄW�T¨C�ÊÈb� �Nª « ):�T¬N·wÄ&Âa�L�b�T¦T�b«!Å_Î�ÂH¬#¥ �s�_© ¼ Å��

��� ¬TÄ ª ¥~� ªw¸ Äb¬¡� ª ¥b¥��C�b�_«:�T¨Ç�w� ­ �T�b�C�L�¡¨C�W·w�C¨N¥ ª �_© È_¨ �Nª «&Â6¥CÅ_Î ÂE�_© ¼ ��¬N¥CÅÆ¿:Î ° ¥ �ÈI�!¤_«ÃÂJ¬bµL«W� � ¨:¤_© ¸ �WÅ_Î ° ¥�¿:ΨN¥¨L�#�T�W¥¹N· ËÂH¬6� ¸ �~·CÅ¢bÎÈG ª ��� ¸ �T¬W¢:·A�_©!¥Q¬b¨T�!·Q¬:�T¨C¢L¤T¨ ¸ ¢A¬bµT«:�W¥LÅ��(¨ �Nª «ÃÂJ¹!Å_Î Â��QÂH¬6� ¸ Å���� Â6·��+¬NÅbÅ

�&��� .��J� � ; � ; @FE ��� �1D � E 9 /10 � � ��� B��1I7�8:DkFE{:fSD ³b¦b³:¤A«bÏW�L�Lµ oTD6K:D�FE?ABHD�; BE8:Dk9Sl�@:f\D6l�D6KLB>?QBH9\R_K+R_VG?(ln?A@mV^{:KW=aBE9SRTK]z:ln?A@W@:9SKWo? �À¤W¥ �w?_fS{WD�BHRi? � ­ ¥ �Q?Af\{:D_g)7�8:D�9\l(@WfSD�l(D�KLBE?QBE9SRTKn9\;&9SK�BED6FEl�;&RAVM`:{:9\f\|n?_KW|�=6?ABE?:gÂE� ¤:¥ � ­ ¥CÅ¢bÎ�G ° 7 ËbË+¤�7�¢bÎ ­ 7TÅ $ $ $¡Â ° ©qËbË+¤_©�¢bÎ ­ ©MÅ�ËbË ÂH� ¤W¥¢bÎ � ­ ¥CÅ¢bέ � ª �_� � � ­ ¥��� � � ¤À¢bÎ �:·�7 $ $ $ ·w©�¢bÎ ·A¤T¬:¤� �ʤ:¥ � �Y¤ �) ¸ 7���$ $ $ � ¸ ©NÅbÅ

7�8:D ¸!ª ?AFEDUV^{:KW=yBH9\R_KW;rBE8W?QBU?_@:@:f\X+BH8:D(@W?AF>?Al�D6BHD6FtV^{:KW=yBH9\R_KW; ° 9\K BE8:Dn?A@:@WFHRT@:FH9<?QBED%�?wX_g �:RTF�fS9<;YB>;�% D�oTDyBÂE² ª ¥Q¬ ­ � ­ �yÅ ¢bÎ�G ° ËbË ­ ¢bÎ ­ �6Å ËbË¡ÂE² ª ¥Q¬ ­ ¢bÎ ² ª ¥w¬ ­ �6Å¡¢bέ � ª �T�� ² ª ¥Q¬ ­ � �� � �¤ ¢bÎ �:·�7¡·�À¢bη_¤T¬:¤6� ² ª ¥Q¬ ­ � �Y¤ �)Â6·�7�� �®Ç®N¥Ê¢LÎ ·�G ° ®!Å]ÂH®#¥CÅbÅbÅ

¨L�#�T�W¥³b¦b³:¤_«LÏW�L�LµÌËÂH´L»L«b«ÃÂH¬#·_�_©�n¬N¥CÅ���¬N¥ �yÅ¢Lλ ­ ¥� ° ¥ �+±L�w�!�)ÂH´ )L�b©ÃÂ��j´b»L«b«ÃÂY¬N·_�Q©�(¬N¥CÅ����m´L»L«b«ÃÂH¬#·_�_©�p¬#¥ �6ÅbÅbÅ��Ïb� ª �T��ÂH´L»L«b«ÃÂH¬#·_�_©6��¬N¥ �yÅ��´b» ­ ¥�Â>¤��m» ­ ¥�Â6·b¥ �+±L�w�!�)Â>¤WÅ��mºC¤T¬C¤)ÂH´b»L«L«ÃÂH¬N·_�A©�(¬N¥CÅ��s¤�� ¸ ¥CÅbÅLÅbÅbÅÁbÄ:�T¨:�©W�_Á#¢_¬ ¼ ¤T¨ ¿:Îʤ �È �Nª «ÃÂJ³b¦b´ )L�L©�7 �(©W�_Á#¢_¬LµL«W�L�:¢ ¼ ¤T¨!Å_Î�ÂH¬#¥ ��¬N¥ �6ÅÆ¿:Î ° ¥ �È �Nª «Ã ª �NÅ_Î$ÂH¬N¥ � ° ¥CÅ�¿:Î �_© ¼ � �

� �AÂH´b»T«b«ÃÂH¬N·A�_©��¬N¥CÅ�� ÈW¯Q�b�_©C¬ ª ¬LµWÎ�¤#Å �p�_© ¼ � �Ê¿:Î �_© ¼ �È ¸ �T¬W¢C·_�_©!¥Q¬L¨L�!·Q¬:�A¨N¥_Î ´b»L«L«ÃÂH¬N·_�A©� ¬N¥bÅ�¿CÎ ·A�b�W·T�:¥ �Èb� �Nª «&ÂH³b¦ �NÅ �n�b© �#ª «#Î�Â6·A�b�W·T�:¥ ��Â>�_© ¼ �+¤WÅbÅ¡¿CÎ�Â6·L¥ � ¸ ¥Cųb¦ � Ë

�TÐ

Page 99: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

ÂEºb�_©!¥Q¬b¨L¶:�W·T�G � � � � · �+¬N¥CÅ��ÊÂE�_© ¼ �m¨:�:¥CÅbÅ¡¢bΠ° �s» ­ ¥�ÂH®N¥ �m±b�w�!�)ÂJ¨:�W¥CÅ�� »L«b«Ã ° �sÈ �Nª «ÃÂJ³b¦b»L«b«�7TÅ_Î ÂJÄ!¥ ��®N¥CÅLÅbÅbÅÁbÄ:�T¨:�ÇÈ_¨ �Nª «ÃÂH¹!Å_Î�Â>�_© ¼ �m¬#¥CÅ¡¿CΡÄN¥ �ÈI�!¤_«&ÂH¬bµL«W���s¥w«#� ª ¬&ÂE�C�I� �p¨:¤_© ¸ �#ÅbÅ��n�b© �Nª «WÎÆÄ!¥¿CÎ�ÂE�b�w��¥ �m¨:¤A©!¥CÅ��ÈI�!¤_«&ÂJ©W�_Á#¢A¬bµL«W�L�C¢ ¼ ¤T¨#Å_Î �C�w��¥�¿:ήN¥ �ÈA©W�_ÁW¢_¬bµL«W�T�:¢ ¼ ¤T¨:Î ´ )L�b©ÃÂH¨C¤_©!¥ �p¨C�W¥CÅÆ¿:Î °

Page 100: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

� � �� �� � � � � ���

}S�y�<%:%:%�g ;YBEFE?ABHD�o_RAZ[f<?AK:oT{W?AoTD_g R_FEoWg} * �<%:%:%�g =6;�g {W{]g KWf �Q@#D�R_@:f\D �Q�L9<;E;JD�F �A;H|bV * �bg} Ñ ��O5KW|CFED %���g O @:@ND6fjg�� ������� ������������� ��������������� �����ag � ?Ali`WFH9<|Co_D �5K:9\�_D6F>;H9PBYX

�ÃFHDI;H;�z!� � � * g} 9 �U��g � g� #gI�Q?_K3|CD�K3uvFE?_KW|MzQdUgROigQ|CD! TR_KWoWz �)g�"kfS9\KLB�zA?AK#| �)g OUg � f\9S�b9\D6FIg �$# =69SD�KLB?_K:K:RAB>?QBED�|pBHD6FEln;6g!% �'&(���)���+*-,/. �+�102��30(*5476�82��* �93*:�0(*6z Ñ Q � * � ��; * � �_z *RQ Q+Q g} �w�U� ?_FHe � g� #g=<&?AK+|CD6K+uvFE?_KW|p?_KW| � D6f<=yR><59<;E;JD�F�g � D6K:D�FE?ABH9\R_KpR_V�V^RTFHln?QBHBHD�FE; V^R_F=6R_KLBHD6cLBHZhV^FED6Dpf\?_K:o_{W?_o_DI;6g@?A�CBED �+�����2�102�� ����� ����% �F&(���)� �+*�6!�=�G��H*(* �9��=�I���J

B@*:��� �KJ ��� �L�GMQzM�FJJ� K �S� ; 9 �Tz� L?AKb{W?_FHXs� � �TÐ g} Ð � ��gQ��gwuv{:F>;YB>?Af\fL?_KW|N #g �r?AFEf\9SK:o_BHRTK]g OÆBHF>?AK#;YV^RTFHln?QBE9SRTKW?AfT;JXC;JBHD6l V^RTFG|CD��_D�fSRT@:9SKWoFED�=6{:FE;H9\�_Dr@:FHRTo_F>?Aln;�gPO ��� �9�H��� �F&Q����*R?A�CBsz *�9 JY� K � 9:9�;CÐ z#� � g} �S��g �Ug � 8:9\K]g !C?QV^DpV^{W;J9\R_KÆRAV�V^{:KW=yBH9\R_KW?_f D6cC@:FHDI;H;H9\R_KW;�gT?A�CBVUWX���Y. �G����Z* �(�az�CJY� K �S�T� ;F*RQ z)� � �+* g �&FERb=6D6DI|C9SKWoT;rRAVvBH8:Dx� � � * O � � � RTKCV^D6FED6KW=6D�R_K��]9<;J@�?_KW|�W{:KW=aBE9SRTKW?Af �ÃFHRTo_F>?Al�l�9SKWoWg

} � �U��g �:RTebeL9\K:oL?:g[U[�G�\�G�J^] �+J_* �����?`� � ���9����=�>302�>g �&8 �ÇBH8WD�;H9\;�zL7�%vD6KLBED � K:9\�_D�FJZ;H9PBYXTzM� ���+* g} � ����?T;H=�?Af �:F>?_|:DyBx?AK#| �t?_K:9SD�f3��DÆ�baD6BE?wX_D�F�g � R_l�@:9\f\?ABH9\R_K RAV�V^{:KW=yBH9\R_KW?_fif<?AKCZoT{W?AoTD�;�`bX~@:FHRTo_F>?Al BHF>?AKW;JV^R_FEln?QBH9\R_K�gc?A�CBdD �+�����:�_0:�� �G��� �G�/. � �+� �+�G�A�>����

Ue���=�G���K�1*2�N���Jf%�Mg�9�Z*2�A�azM� Ñ JJ� K � * � ; �:�_z= T?_Kb{W?AFEX+� � � �_g}S� Q ��O5KW|CFED %h _RT8:K � 9Sf\fjgh�i��*(�L�kjA*�& ���L*9�9�Z���� ���l& ���nm ����op�9� �9302�Sqr�s�H02�� ���H���tU[�G��o

�_���:��*9�ag �Ã8 � BH8WD�;H9\;�z � K:9\�_D�FE;H9SBYX RAV � f\?T;JoTR'%�z� L?AKb{W?_FHXs� � �TÐ g}S�_�y��O5KW|CX � 9Sf\fhzH TR_8:K �2?A{:KW=>8b`:{WFHXTzW?AKW| !C9Sl�R_K �Ãg �)D�XLBHR_K� TR_K:DI;6g�O$;H8:RTFJB5=6{CB BHR|CD6V^R_FED�;JBE?ABH9\R_K]g ( K O FE�L9\KW|MzMDI|C9SBHR_FIzeqi�s�0:�� �G����[. � �+� �+���>�>����nUe���=�G���K�1*2�u���J

� ������s�Z* �`? �+0L�s��p*(0:��� �L*fv3qW.R�[?�w x_y2zQzW@W?_o_D�; *+*AÑ�; *AÑ * g O � � �ÃFHDI;H;�z!� ���_Ñ g}S� * �U7kgWdt?AoT9SK:R#g{?|�$���Z*�� ���930(�G�i. � �+� �+�G�A�>����fUe�����_���:��*6g �Ã8 � BE8:D�;H9\;�z �5K:9\�_D6F>;H9PBYXR_V � |:9SKb`:{:FEo_8�zM� � � g}S� Ñ �A}GgGd {]z dUg ( %v?T;H?_eL9jz)?AKW| � gG7G?AeTD69<=>8:9hg �tD6FE9\�L9\K:o~;YBEFH{W=yBH{:F>?Af 8bXLf\R_l�RTFH@:8W9\;Hln;V^FER_lÀFHDI=y{:F>;J9\�_D�|CD6OWK:9SBH9\R_KW;�g�?A�CB~%s���).$U[?�m�m ����30(*9�az Ñ � J Ð K � AÑg; �+* zy�x?wXi� ���_Ð g

�ÃFHRC=yD�D�|C9\K:oL;kRAV�BH8WD ( KLBHD�FHKW?ABH9\R_KW?_f � R_K:V^D6FED6KW=6DnR_K �W{:KW=aBE9SRTKW?Af �&FER_oTFE?_l(l�9\K:oJ ( � � ��� �TÐ Kyz �&8:9\f\?T|CD6f\@:8:9<?:g

���

Page 101: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

}S� 9 ����?ABHFE9\=69\? _RT8W?AK:K�g O KÌ9\l(@WfSD�l(D�KLBE?QBE9SRTK R_V %�?AFEl V^{W;H9SRTK]g O5�Q?A9\f\?_`:fSD ?QBV BE@ � � �IV BE@]g =�;JDTg RTo_9jg DI|C{ �Q@:{:` �Q@W?_=�;JR_V B � %�V �Cz#� � � g}S�I�w�U�sD�FH9 �YK |:Db TR_K:oTD_g O @:FEDyBJBYXLZ[@:FE9SKLBHD�FÆV^RTFD6�_D�FHX�RC=6=�?_;H9SRTK]g ( K�(Y?_K �:D�FJZoT{W;JRTK]zc TR_KW?ABH8W?_K � FE?wXTz ?AKW|Ì�]RT{:9<;JD !C=yR_BJBIz D�|C9SBHRTFE;�z . � �-0(*(*LJG����G� �F& ����*

� �JS�9���p* �9��G�� �G��G�H%�M���� ���(��s� ���/� �����9� �9��0:����=�>% �F&(���)� �+*�6!�=�G��H*(* �9��=� D � �G� �v(� �g%�6 D ������� zQz��]9\l�D6FE9\=>e!z ( FED6f<?AKW|Mze _{:KWD * Q Q+Q g!7�DI=>8:K:9<=6?Af�FED6@NR_FHB�z �5K:9\�_D6F>;H9PBYXR_Ve�~R_f\fSRTK:o_RTK:oWz O {#;YBEFE?_fS9<?:g

}S� Ð � TR_8:K��2?A{:KW=>8b`:{WFHXr?AKW|�7�9\l�!b8:D�?_FE|]g��~?_FHlÀV^{W;H9SRTK � �tD6FE9S�b9\K:o�`:{:9\f\|CZ[=�?QBE?T;MV^FER_lFED�=6{:FE;H9\�_D�|CDyO#K:9PBE9SRTKW;�g'( K�!!g6�&g �)D6XLBHRTKS _RTK:D�;�z6DI|C9PBER_FIz�qi�s�0:�� ����G��. � �+� �+�G�A�>����Ue���=�G���K�1*2�^���HJ�� �G� �H�s�p* �5? �L0L�s��p*(0:��� �+* v3qW.R�[?�w x��(zQzÃ@W?_o_DI; Ñ � 9�;bÑ *AÑ g O � ��ÃFHDI;H;�zs _{:KWD(� � � �Cg

}S� �Uu�?_;s��{CBJBE9Se ?AKW| � D�f\=6RY<59<;H;HD6FIg !b@#DI=y9SO#=6?ABH9\R_K RAV�FED %�FE9PBE9SK:o ;JBHF>?QBED6o_9\D�;�g ( K��g �)g&Oig�!bD�fSf\9SKWeNz)DI|C9PBER_FIz � �J �9���p* �9��G�� �G��G����������F� �L� ���\����*IDH��* ���9Ml���J. �L�_0:��30(* �F& ?`� �1*� �+��30 %G��*(02 �!0L�G�� �G���5v3?R%sq� {%=jQqAw x��Fzwz � fSDI=aBEFHRTK:9\=�� RTFHeC;H8:R_@#;9\K � R_l�@:{CBE9SK:o#z:uvD6FEfS9\K]z � RQ�TD6l3`#D�F�� � � g !b@:FE9SKWo_D6FHZp<�D6FEf\?_oWg

}S� � � � gN� ?Af<=yRTfSl+g d5R_l�R_l�RTFH@:8W9\;Hln;�?AKW|+@:FER_l�R_BE?A`W9Sf\9PBYXTg,( KlB@������*:�5�G��302� �F&`. � �Go� �+��� � �G���9� �9��02�� ���#zr�TR_f\{:l�D Ñ �ÆRAVuU[*(0:��� �+*�m ���Z*9� �� � �G� �H�s�p* �T%H0:3*2�H0(*yz@W?_o_DI; ÑTÑ � ;bÑ 9 g�!b@:FE9SK:oTD6FHZ�<�D�FHf<?Ao#z!� � ��� g

}S� � � � gi #g]� ?Af<=yRTfSl+g �r?QBE?+;JBHFE{W=aBE{:FED�;k?AKW|~@:FER_oTFE?_lÌBHF>?AKW;JV^R_FEln?QBH9\R_K�gu%H0:3*:�0(* �F&� ������s�Z* �`. � �L� �+�G�A�>����_z]� 9 � * �_� ; * � z O {:oT{W;JBU� � �+Q g

} *RQ � � g]�sD69 �YD6FIzG� g �:RTeLeb9\K:oT?Wz�?AK#| �Ug ��?QBED6F>;JRTK]g �:{:KW=yBH9\R_KW?_f&@:FER_oTFE?_l(l�9\K:o8%�9PBE8`W?_KW?AK#?_;�z]fSD�KW;HD�;�z�D6Kb�TD6f\R_@ND�;U?_KW|~`W?AFE`#DI| %�9SFED_g ( K ��gC Wg2��g�d {Wo_8:DI;6zGD�|C9SBHRTF�zqi�s�0:�� �G��G�C. � �L� �L���>�A��=�T�G�J/� �G� �H�s�p* �>? �+0(�=��Z*(02��� �+*cv�qW.R�[?cw x��(zQz��TR_f\{:l�D� *AÑ RAV[U[*(0:��� �+*!m �G�p*2�t�� � �G� �H�s�p* �t%H0:3*:�0(*yzT@W?AoTD�;�� *�9�; � 9 9 g !b@:FE9SK:oTD6FHZ�<�D�FHf<?Ao#zO5{:o_{W;JB�� ��� �_g

} * �y�U�Na?_; �6f-aR � aD6l�D6BH8]gY�$���Z��� �������=X�9���`�g�:*(J . � �+� �+�G� D �+�G����& ���9�f���� ����& ���5m �G��o%� �930:�Wqi�s�0:�� �G��G�U[�G�������_��*9�ag �Ã8 � BH8WD�;H9\;�z � K:9\�_D�FE;H9SBYX RAV � f\?T;JoTR'%�z * Q Q+Q g

} * * �S� 9\fSf ��?_FJB>?A9\K]g�7�8:D ©W� °NªI­ `#D�KW=>8:ln?AFEe ;H{:9SBHD RAVx8#?_;He_D6f\fp@WFHRTo_F>?Aln;6g ( K #gL�2?A{:K#=>8L`W{:FHX�?AK#| �)gC��g�!:?AKW;HR_l+zbD�|C9SBHRTFE;�z�qr�s�H02�� ���H����. � �L� �L���>�A��=�Azb@W?_o_D�;� � � ;F*RQ * g�!C@:FH9\K:oTD6FHZ�<�D�FHf<?Ao#z#� � �+* g

} *AÑ ��!b9\l�R_K �)D6XLBHRTKn TR_K:DI;6z� TR_8WKmd {Wo_8:DI;6zCD6B5?Afjg � D6@NR_FHB�R_V�BE8:D�@:FER_o_F>?Al�l�9\K:oif<?AKCZoT{W?AoTDrdt?_;He_D6f\f � � gC?(K:RTKCZ[;JBHFE9<=aB�zC@W{:FHD�fSX V^{:KW=aBE9SRTKW?Af�f\?_K:o_{W?_o_DTz �WD6`:FE{W?_FHXs� � � � g} *�9 ��!b9\l�R_K��&g �)D�XLBHR_K> _RTK:D�;�?_KW|> _RT8:K(�2?A{:K#=>8L`W{:FHXTg � Kb`NRwcbDI|i�Q?_fS{:DI;�?_;GOWF>;JB�=6f\?T;H;=69PBE9 ��D6KW;39SK�?sK:R_K:Z[;JBHFE9\=yBiV^{:K#=aBH9\R_K#?Afvf\?_K:o_{W?_o_DTgM( K ��gW Wg)��g)d {:oT8:D�;�z�D�|C9SBHRTF�z

qi�s�0:�� �G��G�C. � �L� �L���>�A��=�T�G�J/� �G� �H�s�p* �>? �+0(�=��Z*(02��� �+*cv�qW.R�[?cw x��(zQz��TR_f\{:l�D� *AÑ RAV[U[*(0:��� �+*!m �G�p*2�t�� � �G� �H�s�p* �t%H0:3*:�0(*yzT@W?AoTD�; ÐTÑ_Ðg;CÐ_ÐTÐ g !b@:FE9SK:oTD6FHZ�<�D�FHf<?Ao#z!bD�@CBHD�li`ND6F�� � � �Tg

} * �w��!b9\l�R_K �&g �)D6XLBER_K TR_K:DI;+?AKW| OUg �&g���g !:?AKLBHRL;6g O BHF>?AK#;YV^RTFHln?QBE9SRTKCZ[`W?_;HD�|RT@CBH9\l�9\;HD6F(V^R_Fndt?_;He_D6f\fjg %H0:3*2�H0(* �'&T� ������s�Z* �u. � �L� �+���>�A��=�Az Ñ+* JY� ;bÑ K � Ñ�; 9 z!bD�@CBHD�li`ND6F�� � � � g

} *AÐ �U7�9\l !b8:D�?_FE|Ç?AKW|À�]D6RTK:9<|:?_; �:D6oL?AF>?_;�g O V^R_f<| V^R_F+?Af\fk;JDI?_;HR_KW;�g ( K O5FH�b9\KW|MzDI|C9PBER_FIz{qi�s�0:�� �G��G�P. � �L� �+�G�A�>��������HJY� ������s�Z* ��? �+0(�=��Z*(02��� �+*lv3qW.R�[?�w x1y9zQz@W?_o_DI; *_Ñ_Ñ�; *�9 * z � R_@ND6K:8W?_o_D�K]z �5D�K:ln?AFEe!zM� � �TÑ g O � � �&FED�;E;6g���

Page 102: Warm Fusion in Stratego A Case Study in the Generation of Program Transformation Systems

} * ��O5eL9\8:9\e_R 7G?AeQ?AKWRx?AKW| � FH9\e � D69 �YD6FIg !b8:R_FHBE=6{CB3|CD6V^R_FED�;JBE?ABH9\R_K 9SK�=6?Af<=y{Wf\?ABH9\R_KW?_fV^RTFHl+g'( K�!!gI�&g��)D�XLBHR_K:Zp TR_K:DI;6z6D�|C9SBHRTF�zGqr�s�H02�� ���H���G. � �L� �L���>�A��=� ���HJN� �G� �H�s�p* �? �+0(�=��Z*(02��� �+*uv�qW.R�[?cw x��(zQz !C?AK �t9SD�o_RWz � ?_fS9SV^R_FEK:9<?:zs T{:K:Dn� ��� �:g

} * � ��O5KW|CFED % 72R_f\l�?T=>8x?AK#| �t9SK:R � fS9\�Q?:g �:FER_l � �ÆBHR8O5|:? ��!LBEFHRTK:o_f\XLZhBYXb@ND�|sf<?AKCZoT{W?AoTD39\KLBHD6FER_@ND6F>?A`W9Sf\9PBYXx�L9<?s;HR_{:F>=yD(BHF>?AK#;Jf<?QBE9SRTK]gcO ��� �9��G� �'&Nqi�s�0:�� ����G�C. � �Go� �+���>�>����_z � J 9 K � Ñ_ÐK; 9 � * z1 T{:f\X � ��� � g

} * � �S<3g!72{:F>=>8:9\K]gr7�8WD3=yRTKW=yD�@CBkRAVÃ?p;H{:@ND6F>=yRTl(@W9Sf\D6FIgS?A�CB D �+�G���:�_0:�� ����� ���@. � �Go� �+���>�>����5U[�G���_���:��*9�N���HJ5%Mg�(�Z*:�N�az � J Ñ K � * �+*g;bÑ+*_Ð z#� � �TÐ g

} Ñ Q � � D6f<=yRQ<59<;H;HD6FIg !:=6?AKWK:D6FEfSDI;H;)oTD6K:D�FE?_fS9��6DI|bZ � � @#?AF>;J9\K:oWg#7�DI=>8:K:9<=6?Af ��D6@NR_FHB � �'Q z�ÃFHRTo_F>?Al�l�9SK:o ��D�;HD�?_FE=>8 � FHRT{:@]z �5K:9S�TD6F>;J9SBYXnRAVHO ln;JBHD�FE|:?_l+z� _{:f\Xx� � � g

} Ñ �y� � D6f<=yRl<59<;H;HD6FIg�%M����Z�:8TjA* �$����� �G� & ���nUe���=�G���K�1*�. � ��� ����ML�����_g �&8 � BE8:D�;H9<;6z�5K:9S�TD6F>;J9SBYXnRAVHO ln;JBHD�FE|:?_l+z !bD6@CBED6l3`#D�FU� ��� g

} Ñ+* � � D6f<=yR�<t9\;E;HD6FIg�!LBHF>?QBED6oT9\=i@W?QBHBHD6FEK~l�?ABE=>8:9\K:o#g�( K �)g �5?_FHD�KW|CF>?AK~?AKW| ��g���{W;H9PZK:R'%�9SBE=>8�zAD�|C9SBHRTFE;�z��`*2� �9������� D�*(0(�=����2��*2�`���HJR?!�_�� 30L�G�� �G���Nv�� D�?�w x1x9zQz_�TR_f\{:l�D� Ð_Ñ ��R_VU[*(0:��� �L*�m ���Z*2�P��c� ������s�Z* �)%r023*:�0(*6zQ@W?AoTD�; Ñ+Qg; 9:9 zw72FHD�KTBERWz ([BE?_fSXTzG _{WfSX� � � � g�!C@:FH9\K:oTD6FHZ�<�D�FHf<?Ao#g} Ñ_Ñ � � D6f<=yRt<59<;E;JD�F�gCDH��*{%�� �+�G�p*p� �{U� �L���9MQg ( KW;YBE9PBE{CBHD RAVF( KCV^RTFHln?ABH9\R_KU?AK#| � R_l�@:{CBE9SK:o

!C=69SD�KW=yDI;6z �5K:9\�_D6F>;H9PBED69SB � BHFED�=>8LB�z ��BHFED�=>8LBIz:7�8:D � D6BH8:D�FHf<?AKW|W;6zM� � � � g} Ñ 9 � � D6f<=yR�<t9\;E;HD6FIgb�2?AK:oT{W?AoTD&9\KW|CD6@ND6K#|CD6KLB)BHF>?w�_D�FE;E?Af<;MV^RTFG@WFHRTo_F>?AlÀBHF>?AKW;JV^R_FEln?QBH9\R_K�g( K5 _RT8W?AK> _D�{:FE9SK:o#zAD�|:9PBER_FIz � � ��g�+� �(� ���@� *:�* �930t. � �L� �+�G�A�>�����v � �). � ����� zQz

�)RTKTBEDU|CD3��9Sln?Wz �)RTFJBE{:oT?_fhz� T{:f\X Рz * Q Q Q gW72D�=>8:K:9<=6?_f���D�@#RTFJB � � Z � !LZ *RQ+Q Q ZE� � z�5K:9S�TD6F>;J9SBHD�9PB � BHFED�=>8LB�g

} Ñ �w� � D6f<=yRf<59<;E;JD�F5?AKW|@}!9SK:D6ZjD�fPZ O `W9\|C9\K:DiuvD�KW?A9<;H;E?:g O$=6R_FEDrf<?AKWo_{W?_o_DkV^R_F5FHD %�FH9SBH9\K:oWg6!� *L0:� � ����30�m �G�p*2�`��YD��* ���+*:��30(�G�$� ������s�Z* �R%H0:3*:�0(*yzM�w�Cz !bD�@CBHD�li`ND6Fk� ��� � g)( K� gH"k9SF>=>8:K:D�Ft?_KW|xdigH"k9\F>=>8:K:D6FIzWDI|C9SBHR_F>;�z �ÃFHRC=6D6D�|:9SK:oL; R_V�BH8:D !bD�=6R_KW|( KTBED6FEKW?QZBE9SRTKW?Afr�~R_FEeC;J8:RT@pRTK � D %�FE9PBE9SK:on��R_o_9<=r?AKW|�9SBE; O5@:@:f\9\=�?QBH9\R_K#;<J�� � �&O � � � Kyg

} Ñ_Ð � � D6f<=yRl<59<;H;HD6FIz�}N9\K:DyZ[D6fSZ O5`:9<|C9SKWD u D�KW?A9<;E;H?Wzv?_KW| O KW|CFED % 72R_f\l�?T=>8]gÇuv{:9\f\|:9SK:o@:FER_oTFE?_l/R_@CBE9Sl�9��6D�FE; %�9SBH8ÇFHD %�FH9SBH9\K:o�;YBEFE?ABHD�o_9\D�;�g7?A�CB %=���).$Ue? m m ����30(*9�azÑ:9 JY� K �\� Ñ�; *AÐ z� T?_KL{#?AFEX � ��� � g �&FERb=6D6DI|C9SKWoT;)RAVNBH8WD ( KLBHD6FEKW?ABH9\R_KW?_f � R_KCV^D�FHD�KW=yD�RTK�W{:KW=aBE9SRTKW?Af �ÃFHRTo_F>?Al�l�9SKWo J ( � � ��� ��� Kag

} Ñ ���Ã8:9Sf\9\@ � ?_|Cf\D6FIg �tDyV^RTFHDI;YB>?QBE9SRTK �t7�F>?AKW;JV^R_FEl�9SKWop@:FER_oTFE?_l�;5BHR+D�fS9\l�9SKW?ABHD(BHFED6DI;6gDH��* � �+*2��30(���P� �G� �H�s�p* �Q%H0:3*:�0(*yz QÑ � *AÑ � ;F*�9�� zW� � � Q g

� Q+Q