home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / prolog / brklyprl.lha / Emulator / Benchmarks / queens.w < prev    next >
Encoding:
Text File  |  1989-04-14  |  4.2 KB  |  291 lines

  1. procedure  main/0
  2.  
  3. _417:
  4.     put_constant  &4,X1
  5.     put_variable_x  X2,X2
  6.     call  run/2,0
  7.     fail
  8.  
  9.  
  10. procedure  size/1
  11.  
  12. _651:
  13.     get_constant  &4,X1
  14.     proceed
  15.  
  16.  
  17. procedure  int/1
  18.  
  19.     switch_on_term  _1117,fail,fail
  20. _1123:
  21.     try_me_else  _1128,1
  22. _1132:
  23.     get_constant  &1,X1
  24.     proceed
  25. _1128:
  26.     retry_me_else  _1151
  27. _1155:
  28.     get_constant  &2,X1
  29.     proceed
  30. _1151:
  31.     retry_me_else  _1174
  32. _1178:
  33.     get_constant  &3,X1
  34.     proceed
  35. _1174:
  36.     trust_me_else  fail
  37. _1201:
  38.     get_constant  &4,X1
  39.     proceed
  40. _1117:
  41.     switch_on_constant  7,_1221
  42. _1221:
  43.     &4
  44.     _1201
  45.     &3
  46.     _1178
  47.     &2
  48.     _1155
  49.     &1    tcdr
  50.     _1132
  51.  
  52.  
  53. procedure  run/2
  54.  
  55. _1738:
  56.     get_variable_y  Y1,X2
  57.     call  get_solutions/2,1
  58.     put_value_y  Y1,X1
  59.     execute_proc  inform/1
  60.  
  61.  
  62. procedure  get_solutions/2
  63.  
  64. _2144:
  65.     get_variable_x  X3,X2
  66.     put_nil  X2
  67.     execute_proc  solve/3
  68.  
  69.  
  70. procedure  newsquare/2
  71.  
  72.     switch_on_term  _3502,_3503,fail
  73. _3508:
  74.     try_me_else  _3513,2
  75. _3502:
  76.     get_nil  X1
  77.     get_structure  square/2,X2,2
  78.     unify_constant  &1
  79.     unify_variable_x  X1
  80.     execute_proc  int/1
  81. _3513:
  82.     trust_me_else  fail
  83. _3503:
  84.     get_list  X1
  85.     unify_variable_x  X5
  86.     unify_variable_y  Y1
  87.     get_structure  square/2,X5,2
  88.     unify_variable_y  Y5
  89.     unify_variable_y  Y4
  90.     get_structure  square/2,X2,2
  91.     unify_variable_y  Y3
  92.     unify_variable_y  Y2
  93.     put_value_y  Y3,X1
  94.     put_value_y  Y5,X2
  95.     put_constant  +,X3
  96.     put_constant  &1,X4
  97.     escape  is/4
  98.     put_value_y  Y2,X1
  99.     call  int/1,5
  100.     put_value_y  Y5,X1
  101.     put_value_y  Y4,X2
  102.     put_value_y  Y3,X3
  103.     put_value_y  Y2,X4
  104.     call  _dummy_0/4,3
  105.     put_value_y  Y3,X1
  106.     put_value_y  Y2,X2
  107.     put_value_y  Y1,X3
  108.     execute_proc  safe/3
  109.  
  110.  
  111. procedure  _dummy_0/4
  112.  
  113. _4406:
  114.     try_me_else  _4411,4
  115. _4415:
  116.     call  threatened/4,0
  117.     cut
  118.     fail
  119. _4411:
  120.     trust_me_else  fail
  121. _4440:
  122.     proceed
  123.  
  124.  
  125. procedure  safe/3
  126.  
  127. _5626:
  128.     try_me_else  _5631,3
  129. _5635:
  130.     get_nil  X3
  131.     proceed
  132. _5631:
  133.     trust_me_else  fail
  134. _5656:
  135.     get_variable_y  Y3,X1
  136.     get_variable_y  Y2,X2
  137.     get_list  X3
  138.     unify_variable_x  X5
  139.     unify_variable_y  Y1
  140.     get_structure  square/2,X5,2
  141.     unify_variable_x  X3
  142.     unify_variable_x  X4
  143.     call  _dummy_1/4,3
  144.     put_value_y  Y3,X1
  145.     put_value_y  Y2,X2
  146.     put_value_y  Y1,X3
  147.     execute_proc  safe/3
  148.  
  149.  
  150. procedure  _dummy_1/4
  151.  
  152. _6299:
  153.     try_me_else  _6304,4
  154. _6308:
  155.     get_variable_x  X5,X1
  156.     get_variable_x  X6,X2
  157.     put_value_x  X3,X1
  158.     put_value_x  X4,X2
  159.     put_value_x  X5,X3
  160.     put_value_x  X6,X4
  161.     call  threatened/4,0
  162.     cut
  163.     fail
  164. _6304:
  165.     trust_me_else  fail
  166. _6393:
  167.     proceed
  168.  
  169.  
  170. procedure  threatened/4
  171.  
  172. _8083:
  173.     try_me_else  _8088,4
  174. _8092:
  175.     get_value_x  X3,X1
  176.     cut
  177.     proceed
  178. _8088:
  179.     retry_me_else  _8115
  180. _8119:
  181.     get_value_x  X4,X2
  182.     cut
  183.     proceed
  184. _8115:
  185.     retry_me_else  _8142
  186. _8146:
  187.     get_variable_x  X5,X1
  188.     get_variable_x  X6,X2
  189.     get_variable_x  X7,X3
  190.     get_variable_y  Y2,X4
  191.     put_variable_y  Y1,X1
  192.     put_value_x  X5,X2
  193.     put_constant  -,X3
  194.     put_value_x  X6,X4
  195.     escape  is/4
  196.     put_variable_x  X1,X1
  197.     put_value_x  X7,X2
  198.     put_constant  -,X3
  199.     put_value_y  Y2,X4
  200.     escape  is/4
  201.     put_unsafe_value  Y1,X8
  202.     get_variable_y  Y1,X8
  203.     put_value_y  Y1,X8
  204.     get_value_x  X1,X8
  205.     cut
  206.     proceed
  207. _8142:
  208.     trust_me_else  fail
  209. _8329:
  210.     get_variable_x  X5,X1
  211.     get_variable_x  X6,X2
  212.     get_variable_x  X7,X3
  213.     get_variable_y  Y2,X4
  214.     put_variable_y  Y1,X1
  215.     put_value_x  X5,X2
  216.     put_constant  +,X3
  217.     put_value_x  X6,X4
  218.     escape  is/4
  219.     put_variable_x  X1,X1
  220.     put_value_x  X7,X2
  221.     put_constant  +,X3
  222.     put_value_y  Y2,X4
  223.     escape  is/4
  224.     put_unsafe_value  Y1,X8
  225.     get_variable_y  Y1,X8
  226.     put_value_y  Y1,X8
  227.     get_value_x  X1,X8
  228.     cut
  229.     proceed
  230.  
  231.  
  232. procedure  solve/3
  233.  
  234. _9588:
  235.     try_me_else  _9593,3
  236. _9597:
  237.     get_list  X2
  238.     unify_variable_x  X2
  239.     unify_variable_x  X4
  240.     get_structure  square/2,X2,2
  241.     unify_value_x  X1
  242.     unify_variable_x  X2
  243.     get_list  X3
  244.     unify_variable_x  X3
  245.     unify_variable_x  X8
  246.     get_value_x  X4,X8
  247.     get_structure  square/2,X3,2
  248.     unify_value_x  X1
  249.     unify_value_x  X2
  250.     execute_proc  size/1
  251. _9593:
  252.     trust_me_else  fail
  253. _9722:
  254.     get_variable_y  Y2,X1
  255.     get_variable_y  Y3,X2
  256.     get_variable_y  Y1,X3
  257.     put_value_y  Y3,X1
  258.     put_variable_y  Y4,X2
  259.     call  newsquare/2,4
  260.     put_list  X2
  261.     unify_unsafe_value_write  Y4
  262.     unify_variable_write_x  X8
  263.     get_value_y  Y3,X8
  264.     put_value_y  Y2,X1
  265.     put_value_y  Y1,X3
  266.     execute_proc  solve/3
  267.  
  268.  
  269. procedure  inform/1
  270.  
  271.     switch_on_term  _10511,_10512,fail
  272. _10517:
  273.     try_me_else  _10522,1
  274. _10511:
  275.     get_nil  X1
  276.     escape  nl/0
  277.     escape  nl/0
  278.     proceed
  279. _10522:
  280.     trust_me_else  fail
  281. _10512:
  282.     get_list  X1
  283.     unify_variable_x  X1
  284.     unify_variable_x  X2
  285.     escape  write/1
  286.     escape  nl/0
  287.     put_value_x  X2,X1
  288.     execute_proc  inform/1
  289.  
  290.  
  291.