home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / hc / hyperx11.sit / HyperX / stack.txt < prev   
Text File  |  1988-02-25  |  7KB  |  219 lines

  1. -- stack: in
  2. -- format: 8 (HyperCard 1)
  3. -- flags: 0x0 (none)
  4. -- protect password hash: 0
  5. -- maximum user level: 5 (scripting)
  6. -- window: Rect(x1=0, y1=0, x2=0, y2=0)
  7. -- screen: Rect(x1=0, y1=0, x2=0, y2=0)
  8. -- card dimensions: w=0 h=0
  9. -- scroll: x=0 y=0
  10. -- background count: 5
  11. -- first background id: 2636
  12. -- card count: 44
  13. -- first card id: 3058
  14. -- list block id: 2246
  15. -- print block id: 3652
  16. -- font table block id: 0
  17. -- style table block id: 0
  18. -- free block count: 21
  19. -- free size: 15776 bytes
  20. -- total size: 122880 bytes
  21. -- stack block size: 6144 bytes
  22. -- created by hypercard version: 0x00000000
  23. -- compacted by hypercard version: 0x00000000
  24. -- modified by hypercard version: 0x00000000
  25. -- opened by hypercard version: 0x00000000
  26. -- patterns[0]: 0x0000000000000000
  27. -- patterns[1]: 0x8000000008000000
  28. -- patterns[2]: 0x8800220088002200
  29. -- patterns[3]: 0x8888222288882222
  30. -- patterns[4]: 0x88AA22AA88AA22AA
  31. -- patterns[5]: 0xCCAA33AACCAA33AA
  32. -- patterns[6]: 0xEEAABBAAEEAABBAA
  33. -- patterns[7]: 0xEEBBBBEEEEBBBBEE
  34. -- patterns[8]: 0xFFBBFFEEFFBBFFEE
  35. -- patterns[9]: 0xFFBBFFFFFFBBFFFF
  36. -- patterns[10]: 0x8010022001084004
  37. -- patterns[11]: 0xFFFFFFFFFFFFFFFF
  38. -- patterns[12]: 0x8822882288228822
  39. -- patterns[13]: 0x1122448811224488
  40. -- patterns[14]: 0xC4800C6843023026
  41. -- patterns[15]: 0xB130031BD8C00C8D
  42. -- patterns[16]: 0xAA00AA00AA00AA00
  43. -- patterns[17]: 0x8822552288225522
  44. -- patterns[18]: 0x8855225588552255
  45. -- patterns[19]: 0x77DD77DD77DD77DD
  46. -- patterns[20]: 0x8000000000000000
  47. -- patterns[21]: 0xAA55AA55AA55AA55
  48. -- patterns[22]: 0x038448300C020101
  49. -- patterns[23]: 0x8244394482010101
  50. -- patterns[24]: 0x8814224188412214
  51. -- patterns[25]: 0x8080413E080814E3
  52. -- patterns[26]: 0x22048C7422179810
  53. -- patterns[27]: 0xBE808808EB088880
  54. -- patterns[28]: 0x25C8328964244C92
  55. -- patterns[29]: 0xA29C41BE2AC914EB
  56. -- patterns[30]: 0x40A00000040A0000
  57. -- patterns[31]: 0x8040200002040800
  58. -- patterns[32]: 0xAA00800088008000
  59. -- patterns[33]: 0xFF80808080808080
  60. -- patterns[34]: 0x081C22C180010204
  61. -- patterns[35]: 0xFF808080FF080808
  62. -- patterns[36]: 0xF87422478F172271
  63. -- patterns[37]: 0xBF00BFBFB0B0B0B0
  64. -- patterns[38]: 0xFF7FBE5DA2418000
  65. -- patterns[39]: 0xFAF5FAF5A050A050
  66. -- checksum: 0x0
  67. ----- HyperTalk script -----
  68. -------------------------------
  69. -- HyperX inference engine   --
  70. -- Written by Ron Evans      --
  71. -- ┬⌐1987 All Rights Reserved --
  72. -- Leave this notice intact  --
  73. -------------------------------
  74. on openStack
  75.   hide menuBar
  76.   go card "Title"
  77.   push this card
  78.   visual effect dissolve
  79.   go to card "HyperX Info"
  80. end openStack
  81.  
  82. on arrowKey
  83.   pass arrowKey
  84. end arrowKey
  85.  
  86. function testFact theFact
  87. push this card
  88. visual effect barn door close
  89. go card "smart"
  90. put "Testing Fact..." into card field "Status"
  91. show card field "Status"
  92. put find(card field "Facts",theFact) into theResult
  93. put item 1 of theResult into theLIne
  94. if theLine <> 0
  95. then put item 2 of line theLine of card field "Facts" into theResult
  96. else put empty into theResult
  97. visual effect barn door open
  98. pop card
  99. return theResult
  100. end testFact
  101.  
  102. function testRule theRule
  103. push this card
  104. visual effect barn door close
  105. go card "Smart"
  106. put "Testing Rule..." into card field "Status"
  107. show card field "Status"
  108. put find(card field "Rules",theRule) into theResult
  109. put item 1 of theResult into theLine
  110. if theLine <> 0
  111. then put item 2 of line theLine of card field "Rules" into theResult
  112. else put empty into theResult
  113. visual effect barn door open
  114. pop card
  115. return theResult
  116. end testRule
  117.  
  118. function forChain theFact
  119. put empty into theResult
  120. put empty into theList
  121. put card field "Rules" of card "Smart" into theList
  122. put "Forward Chaining..." into card field "Status" of card "Smart"
  123. go card "Rule 1"
  124. repeat with thisRule=1 to card field "Rule Count" of card "Smart"
  125.   visual effect scroll left very fast
  126.   find theFact in bkgnd field "Assertions"
  127.   put find(field "Assertions",theFact) into looking
  128.   put testRule(field "Rule Number") into statRule
  129.   if item 1 of looking<>0 and statRule is empty
  130.   then
  131.   put the number of lines in card field "Goal Trail" of card "Smart" into theLine
  132.   put theLine+1 into theLine
  133.   put field "Rule Number" into line theLine of card field "Goal Trail" of card "Smart"
  134.   put "found" into theResult
  135.   exit repeat
  136. end if
  137. if item 1 of find(theList,field "Rule Number")<>0
  138. then exit repeat
  139. else
  140.   put the number of lines in theList into temp
  141.   put field "Rule Number" into line temp of theList
  142. end if
  143. end repeat
  144. return theResult
  145. end forChain
  146.  
  147. function backChain
  148. put "Backward Chaining..." into card field "Status" of card "Smart"
  149. push this card
  150. put the param of 1 into theRule
  151. put the param of 2 into theFact
  152. put card field "Rules" of card "Smart" into Tested
  153. go card "Rule 1"
  154. visual effect scroll left very fast
  155. find theFact in bkgnd field "Conclusion"
  156. if theFact=field "Conclusion" and item 1 of find(Tested,field "Rule Number")=0
  157. then
  158. put field "Rule Number" into theResult
  159. visual effect scroll down
  160. pop card
  161. return theResult
  162. end if
  163. visual effect scroll down
  164. pop card
  165. return empty
  166. end backChain
  167.  
  168. function proveRule theRule
  169. repeat with theLine=1 to the number of lines in bkgnd field "Assertions"
  170.   put line theLine of bkgnd field "Assertions" into theFact
  171.   put testFact(theFact) into theResult
  172.   if theResult=true then next repeat
  173.   if theResult=false
  174.   then return "fail"
  175.   put backChain(theRule,theFact) into theResult
  176.   if theResult is not empty
  177.   then
  178.   put the number of lines in card field "Goal Trail" of card "Smart" into theLine
  179.   put theLine+1 into theLine
  180.   put theResult into line theLine in card field "Goal Trail" of card "Smart"
  181.   return "*"
  182. end if
  183. push this card
  184. visual effect barn door close
  185. go card "Smart"
  186. put "Looking up Question..." into card field "Status"
  187. show card field "Status"
  188. put find(card field "Questions",theFact) into theQuest
  189. if item 1 of theQuest=0
  190. then
  191. visual effect wipe up
  192. go card "Question"
  193. put theFact into field "Fact"
  194. return "?"
  195. else
  196.   put item 1 of theQuest into theQuest
  197.   put item 2 of line theQuest of card field "Questions" into theQuest
  198.   visual effect wipe up
  199.   go theQuest
  200.   return "?"
  201. end if
  202. end repeat
  203. put "Passing Rule..." into card field "Status" of card "Smart"
  204. put field "Conclusion" into card field "Conclusion" of card "Smart"
  205. put the number of lines in card field "Facts" of card "Smart" into numLines
  206. put numLines+1 into theLine
  207. put field "Conclusion" into line theLine of card field "Facts" of card "Smart"
  208. put true into item 2 of line theLine of card field "Facts" of card "Smart"
  209. put the number of lines in card field "Rules" of card "Smart" into theLine
  210. put theLine+1 into theLine
  211. put theRule into line theLine of card field "Rules" of card "Smart"
  212. put "pass" into item 2 of line theLine of card field "Rules" of card "Smart"
  213. return "pass"
  214. end proveRule
  215.  
  216.  
  217.  
  218.  
  219.