if3.golden 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. ********** source program **********
  2. fn main () -> Int {
  3. if ((0 == 0))
  4. if ((0 == 1))
  5. return 1;
  6. else
  7. return 0;
  8. else
  9. return 1;
  10. }
  11. ********** type checking **********
  12. --- step exp Int --->
  13. --- step exp Int --->
  14. ********** type checking complete **********
  15. fn main () -> Int {
  16. if ((0 == 0))
  17. if ((0 == 1))
  18. return 1;
  19. else
  20. return 0;
  21. else
  22. return 1;
  23. }
  24. ********** starting execution **********
  25. ********** initializing globals **********
  26. --- step exp () --->
  27. ********** calling main function **********
  28. {
  29. stack: top{main()<-1>}
  30. heap: fun<main>,
  31. env: main: fun<main>,
  32. }
  33. --- step exp main() --->
  34. {
  35. stack: top{main<-1> :: main()<0>}
  36. heap: fun<main>,
  37. env: main: fun<main>,
  38. }
  39. --- step exp main --->
  40. {
  41. stack: top{fun<main><-1> :: main()<0>}
  42. heap: fun<main>,
  43. env: main: fun<main>,
  44. }
  45. --- handle value fun<main> with main()<1>(fun<main>,) --->
  46. {
  47. stack: top{()<-1> :: main()<1>(fun<main>,)}
  48. heap: fun<main>,
  49. env: main: fun<main>,
  50. }
  51. --- step exp () --->
  52. {
  53. stack: top{()<-1> :: main()<1>(fun<main>,)}
  54. heap: fun<main>,
  55. env: main: fun<main>,
  56. }
  57. --- handle value () with main()<2>(fun<main>,(),) --->
  58. pattern_match((), ())
  59. {
  60. stack: main{if ((0 == 0))
  61. ...
  62. else
  63. ... <-1>} :: top{}
  64. heap: fun<main>,
  65. env: main: fun<main>,
  66. }
  67. --- step stmt if ((0 == 0))
  68. ...
  69. else
  70. ... --->
  71. {
  72. stack: main{if ((0 == 0))
  73. ...
  74. else
  75. <-1> :: return 1;<-1>} :: top{}
  76. heap: fun<main>,
  77. env: main: fun<main>,
  78. }
  79. --- step stmt if ((0 == 0))
  80. ...
  81. else
  82. --->
  83. {
  84. stack: main{(0 == 0)<-1> :: if ((0 == 0))
  85. ...
  86. else
  87. <0> :: return 1;<-1>} :: top{}
  88. heap: fun<main>,
  89. env: main: fun<main>,
  90. }
  91. --- step exp (0 == 0) --->
  92. {
  93. stack: main{0<-1> :: (0 == 0)<0> :: if ((0 == 0))
  94. ...
  95. else
  96. <0> :: return 1;<-1>} :: top{}
  97. heap: fun<main>,
  98. env: main: fun<main>,
  99. }
  100. --- step exp 0 --->
  101. {
  102. stack: main{0<-1> :: (0 == 0)<0> :: if ((0 == 0))
  103. ...
  104. else
  105. <0> :: return 1;<-1>} :: top{}
  106. heap: fun<main>,
  107. env: main: fun<main>,
  108. }
  109. --- handle value 0 with (0 == 0)<1>(0,) --->
  110. {
  111. stack: main{0<-1> :: (0 == 0)<1>(0,) :: if ((0 == 0))
  112. ...
  113. else
  114. <0> :: return 1;<-1>} :: top{}
  115. heap: fun<main>,
  116. env: main: fun<main>,
  117. }
  118. --- step exp 0 --->
  119. {
  120. stack: main{0<-1> :: (0 == 0)<1>(0,) :: if ((0 == 0))
  121. ...
  122. else
  123. <0> :: return 1;<-1>} :: top{}
  124. heap: fun<main>,
  125. env: main: fun<main>,
  126. }
  127. --- handle value 0 with (0 == 0)<2>(0,0,) --->
  128. {
  129. stack: main{true<-1> :: if ((0 == 0))
  130. ...
  131. else
  132. <0> :: return 1;<-1>} :: top{}
  133. heap: fun<main>,
  134. env: main: fun<main>,
  135. }
  136. --- handle value true with if ((0 == 0))
  137. ...
  138. else
  139. <1>(true,) --->
  140. {
  141. stack: main{if ((0 == 1))
  142. ...
  143. else
  144. ... <-1> :: return 1;<-1>} :: top{}
  145. heap: fun<main>,
  146. env: main: fun<main>,
  147. }
  148. --- step stmt if ((0 == 1))
  149. ...
  150. else
  151. ... --->
  152. {
  153. stack: main{(0 == 1)<-1> :: if ((0 == 1))
  154. ...
  155. else
  156. ... <0> :: return 1;<-1>} :: top{}
  157. heap: fun<main>,
  158. env: main: fun<main>,
  159. }
  160. --- step exp (0 == 1) --->
  161. {
  162. stack: main{0<-1> :: (0 == 1)<0> :: if ((0 == 1))
  163. ...
  164. else
  165. ... <0> :: return 1;<-1>} :: top{}
  166. heap: fun<main>,
  167. env: main: fun<main>,
  168. }
  169. --- step exp 0 --->
  170. {
  171. stack: main{0<-1> :: (0 == 1)<0> :: if ((0 == 1))
  172. ...
  173. else
  174. ... <0> :: return 1;<-1>} :: top{}
  175. heap: fun<main>,
  176. env: main: fun<main>,
  177. }
  178. --- handle value 0 with (0 == 1)<1>(0,) --->
  179. {
  180. stack: main{1<-1> :: (0 == 1)<1>(0,) :: if ((0 == 1))
  181. ...
  182. else
  183. ... <0> :: return 1;<-1>} :: top{}
  184. heap: fun<main>,
  185. env: main: fun<main>,
  186. }
  187. --- step exp 1 --->
  188. {
  189. stack: main{1<-1> :: (0 == 1)<1>(0,) :: if ((0 == 1))
  190. ...
  191. else
  192. ... <0> :: return 1;<-1>} :: top{}
  193. heap: fun<main>,
  194. env: main: fun<main>,
  195. }
  196. --- handle value 1 with (0 == 1)<2>(0,1,) --->
  197. {
  198. stack: main{false<-1> :: if ((0 == 1))
  199. ...
  200. else
  201. ... <0> :: return 1;<-1>} :: top{}
  202. heap: fun<main>,
  203. env: main: fun<main>,
  204. }
  205. --- handle value false with if ((0 == 1))
  206. ...
  207. else
  208. ... <1>(false,) --->
  209. {
  210. stack: main{return 0;<-1> :: return 1;<-1>} :: top{}
  211. heap: fun<main>,
  212. env: main: fun<main>,
  213. }
  214. --- step stmt return 0; --->
  215. {
  216. stack: main{0<-1> :: return 0;<0> :: return 1;<-1>} :: top{}
  217. heap: fun<main>,
  218. env: main: fun<main>,
  219. }
  220. --- step exp 0 --->
  221. {
  222. stack: main{0<-1> :: return 0;<0> :: return 1;<-1>} :: top{}
  223. heap: fun<main>,
  224. env: main: fun<main>,
  225. }
  226. --- handle value 0 with return 0;<1>(0,) --->
  227. {
  228. stack: top{0<-1>}
  229. heap: fun<main>,
  230. env: main: fun<main>,
  231. }
  232. result: 0