xxx 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502
  1. acfsfbnf.red: if gor eq 'or then (
  2. acfsfbnf.red: ) else % [gor eq 'and]
  3. acfsfbnf.red: if r1 eq r2 then 'keep else 'drop;
  4. acfsfgs.red: if phi eq 'inctheo then return 'inctheo;
  5. acfsfgs.red: if phi eq 'inctheo then return 'inctheo;
  6. acfsfgs.red: if phi eq 'inctheo then return 'inctheo;
  7. acfsfgs.red: if phi eq 'inctheo then return 'inctheo;
  8. acfsfgs.red: if rl_op(f) eq 'and then acfsf_gsd(f,atl) else acfsf_gsc(f,atl)
  9. acfsfgs.red: if rl_op(f) eq 'and then acfsf_gsc(f,atl) else acfsf_gsd(f,atl);
  10. acfsfgs.red: if atl eq 'inctheo or acfsf_gsinctheop(atl) then
  11. acfsfgs.red: if (cl_atfp f) or (rl_op f eq 'or) then % degenerated cnf
  12. acfsfgs.red: if gprem eq 'false then return 'false;
  13. acfsfgs.red: return w eq 'false
  14. acfsfgs.red: if (w := acfsf_gsdis!-type rl_argn phi) eq 'impl then
  15. acfsfgs.red: else if w eq 'noneq then
  16. acfsfgs.red: else << % [if w eq 'equal then]
  17. acfsfgs.red: if op eq 'neq then return 'impl;
  18. acfsfgs.red: if w eq 'impl then return 'impl;
  19. acfsfgs.red: if op eq 'equal and w eq 'equal then return 'equal;
  20. acfsfgs.red: if rprod eq 'true then <<
  21. acfsfgs.red: if w eq 'true then <<
  22. acfsfgs.red: if natl eq 'true then <<
  23. acfsfgs.red: if w eq 'true then
  24. acfsfgs.red: if w eq 'true then return 'true;
  25. acfsfgs.red: if w eq 'true then
  26. acfsfgs.red: if w eq 'true then return 'true;
  27. acfsfgs.red: if a eq 'equal then
  28. acfsfgs.red: else if a eq 'cequal then
  29. acfsfgs.red: else if a eq 'neq then
  30. acfsfgs.red: (if w eq 'equal then
  31. acfsfgs.red: else if w eq 'neq then
  32. acfsfgs.red: if (op eq 'neq) or (flag and op eq 'equal) then return nil;
  33. acfsfgs.red: if (rl_tvalp nat) or (op eq 'equal) or (null !*rlgsrad) then
  34. acfsfmisc.red: if r eq 'equal then 'neq
  35. acfsfmisc.red: else if r eq 'neq then 'equal
  36. acfsfmisc.red: r1 eq r2 or r1 eq 'equal;
  37. acfsfmisc.red: if acfsf_op atf eq 'neq and
  38. acfsfmisc.red: if vl eq 'fvarl then
  39. acfsfmisc.red: while (not domainp a) and (mvar a eq v) and dgcd neq 1 do <<
  40. acfsfmisc.red: if not domainp w and null red w and mvar w eq v then
  41. acfsfmisc.red: if acfsf_op at eq 'equal then
  42. acfsfmisc.red: if acfsf_op a eq 'equal and quotf(c,acfsf_arg2l a) then <<
  43. acfsfmisc.red: return a eq 'found
  44. acfsfmisc.red: if acfsf_op a eq 'neq and quotf(acfsf_arg2l a,c) then <<
  45. acfsfmisc.red: return a eq 'found
  46. acfsfqe.red: if car qblk eq 'ex then
  47. acfsfqe.red: fl := if rl_op f eq 'or then rl_argn f else {f};
  48. acfsfqe.red: if acfsf_op at eq 'equal then
  49. acfsfsiat.red: if rel eq 'equal then return acfsf_simplequal(lhs,sop);
  50. acfsfsiat.red: if rel eq 'neq then return acfsf_simplneq(lhs,sop)
  51. acfsfsiat.red: if rel eq 'equal then null lhs
  52. acfsfsiat.red: else if rel eq 'neq then not null lhs
  53. acfsfsism.red: a := if op eq 'and then car atl else acfsf_negateat car atl;
  54. acfsfsism.red: if cdr w eq 'false then <<
  55. acfsfsism.red: acfsf_0mk2(acfsf_clnegrel(car entry,op eq 'and),
  56. acfsfsism.red: if w eq 'false then return 'false;
  57. acfsfsism.red: if w eq 'true then return db;
  58. acfsfsism.red: if w eq 'true then <<
  59. acfsfsism.red: >> else if w eq 'false then <<
  60. acfsfsism.red: if a eq 'false then return 'false;
  61. acfsfsism.red: if a eq 'true then return db;
  62. acfsfsism.red: if w eq 'false then return 'false;
  63. acfsfsism.red: % [w eq r1]
  64. acfsfsism.red: if r1 eq r2 then r1 else 'false;
  65. acfsfsism.red: if r1 eq 'equal and r2 eq 'equal then
  66. acfsfsism.red: 'equal . (r1 eq 'equal);
  67. cl.red: (rl_tvalp f) or (cl_atfp f) or (rl_op f eq 'and and cl_ncflp rl_argn f)
  68. cl.red: or ((rl_op f eq 'or) and cl_dnfp1 rl_argn f);
  69. cl.red: ((rl_op car fl eq 'and) and (cl_ncflp rl_argn car fl))) and
  70. cl.red: (rl_tvalp f) or (cl_atfp f) or (rl_op f eq 'or and cl_ncflp rl_argn f)
  71. cl.red: or ((rl_op f eq 'and) and cl_cnfp1 rl_argn f);
  72. cl.red: ((rl_op car fl eq 'or) and (cl_ncflp rl_argn car fl))) and
  73. cl.red: or ((rl_op f eq 'and) and cl_cnfp1 rl_argn f) or
  74. cl.red: ((rl_op f eq 'or) and cl_dnfp1 rl_argn f);
  75. clbnf.red: if w eq 'keep1 then
  76. clbnf.red: else if w eq 'keep2 then
  77. clbnf.red: while l1 and l2 and car l1 eq car l2 do <<
  78. clbnf.red: gand := if gor eq 'or then 'and else 'or;
  79. clbnf.red: if op eq gor then
  80. clbnf.red: if op eq gand then <<
  81. clbnf.red: if op eq gand then
  82. clbnf.red: if rl_op subf eq gand then subf else rl_mkn(gand,{subf}))
  83. clbnf.red: if w eq 'break then
  84. clbnf.red: return rl_mkn(gor,{rl_mkn(gand,{cl_cflip('true,gor eq 'or)})});
  85. clbnf.red: return rl_mkn(gor,{rl_mkn(gand,{cl_cflip('true,gor eq 'or)})});
  86. clbnf.red: % [l] is as a g-DNF equivalent to ['true] in case of ['gor eq 'or]
  87. clbnf.red: % and equivalent to ['false] in case ['gor eq 'and]. The lists are
  88. clbnf.red: if w eq 'break then <<
  89. clbnf.red: % case of ['gor eq 'or] and equivalent to ['false] in case ['gor eq
  90. clbnf.red: if w eq 'break then <<
  91. clbnf.red: if flg eq 'break then
  92. clbnf.red: % case of ['gor eq 'or] and equivalent to ['false] in case ['gor eq
  93. clbnf.red: % equivalent to ['true] in the case ['gor eq 'or] or to ['false] in
  94. clbnf.red: % the case ['gor eq 'and].
  95. clbnf.red: while ll and ((w := cl_subandcut(c, car ll,gor)) eq 'keep1) do
  96. clbnf.red: if w eq 'keep2 then return (nil . ll);
  97. clbnf.red: if w eq 'break then
  98. clbnf.red: if w eq 'keep2 then <<
  99. clbnf.red: >> else if w eq 'keep1 then <<
  100. clbnf.red: if w eq 'keep1 then return state;
  101. clbnf.red: if at eq 'drop then
  102. clbnf.red: if w eq 'keep2 then
  103. clmisc.red: if op eq 'and then 'or
  104. clmisc.red: else if op eq 'or then 'and
  105. clmisc.red: else if op eq 'all then 'ex
  106. clmisc.red: else if op eq 'ex then 'all
  107. clmisc.red: else if op eq 'true then 'false
  108. clmisc.red: else if op eq 'false then 'true
  109. clmisc.red: if rl_var f eq oldv then
  110. clmisc.red: rl_gsd(at,atl) eq 'true or rl_multsurep(at,atl)
  111. clmisc.red: rl_simpl(at,atl,-1) eq 'true or rl_multsurep(at,atl);
  112. clmisc.red: if w eq q then
  113. clnf.red: if op eq 'impl then
  114. clnf.red: if op eq 'repl then
  115. clnf.red: if op eq 'equiv then
  116. clnf.red: if op eq 'not then
  117. clnf.red: if op eq 'impl then
  118. clnf.red: if op eq 'repl then
  119. clnf.red: if op eq 'equiv then
  120. clnf.red: if (null cdr e) or (rl_op phi eq rl_op car e) then
  121. clnf.red: if rl_op car l1 eq 'all then onlyex := nil;
  122. clnf.red: if rl_op car l2 eq 'ex then onlyall := nil
  123. clnf.red: if car phi1 eq car phi2 then
  124. clnf.red: while rl_op f eq a do <<
  125. clnf.red: if op eq 'ex then
  126. clnf.red: if op eq 'all then
  127. clnf.red: if op eq 'ex then
  128. clnf.red: if op eq 'all then
  129. clnf.red: if op eq 'or then <<
  130. clnf.red: if op eq 'and then <<
  131. clnf.red: if var eq rl_var phi then
  132. clnf.red: if w eq 'true then <<
  133. clnf.red: >> else if w eq 'inctheo then
  134. clnf.red: if w eq 'true then <<
  135. clqe.red: if f eq 'inctheo then return 'inctheo;
  136. clqe.red: if q eq 'ex then
  137. clqe.red: % [q eq 'all]
  138. clqe.red: if vlv eq length cvl then
  139. clqe.red: if cl_covl car w eq 'break then <<
  140. clqe.red: if elimres eq 'true then <<
  141. clqe.red: if rl_op elimres eq 'or then
  142. clqe.red: else if op eq 'not then
  143. clqe.red: else if op eq 'impl then
  144. clqe.red: else if op eq 'repl then
  145. clqe.red: else if op eq 'equiv then
  146. clqe.red: if op eq 'and then
  147. clqe.red: if op eq 'or then
  148. clqe.red: if q eq 'ex then
  149. clqe.red: if w eq 'failed then <<
  150. clqe.red: if w eq 'failed then return 'failed;
  151. clqe.red: if car csol eq 'failed then return 'failed;
  152. clqe.red: else if rl_op f eq 'and then
  153. clqe.red: else if rl_op f eq 'or then
  154. clqe.red: if car grv1 eq 'failed or car grv2 eq 'failed then
  155. clqe.red: tag := if car grv1 eq 'gignore then
  156. clqe.red: else if car grv2 eq 'gignore then
  157. clqe.red: if car grv1 eq 'gignore and car grv2 eq 'gignore then
  158. clqe.red: else if car grv1 eq 'gignore then grv2
  159. clqe.red: else if car grv2 eq 'gignore then grv1
  160. clsimpl.red: if atl eq 'inctheo then
  161. clsimpl.red: if w eq 'false then return 'inctheo;
  162. clsimpl.red: if w eq 'false then <<
  163. clsimpl.red: if atf eq 'inctheo then
  164. clsimpl.red: if op eq 'not then <<
  165. clsimpl.red: if op eq 'impl then
  166. clsimpl.red: if op eq 'repl then
  167. clsimpl.red: if op eq 'equiv then
  168. clsimpl.red: if newknowl eq 'false then return 'false;
  169. clsimpl.red: if rl_op f eq 'not then rl_arg1 f else rl_mk1('not,f);
  170. clsimpl.red: gtrue := cl_cflip('true,gand eq 'and);
  171. clsimpl.red: if a eq gfalse then <<
  172. clsimpl.red: if rl_op a eq gand then <<
  173. clsimpl.red: break := cl_cflip('false,op eq 'and);
  174. clsimpl.red: if newknowl eq 'false then return {break};
  175. clsimpl.red: if wop eq break then <<
  176. clsimpl.red: >> else if wop eq op then <<
  177. clsimpl.red: if newknowl eq 'false then <<
  178. clsimpl.red: if a eq break then return {break};
  179. clsimpl.red: if prem eq 'false or concl eq 'true then
  180. clsimpl.red: if prem eq 'true then
  181. clsimpl.red: else if concl eq 'false then
  182. clsimpl.red: else if prem eq 'false or concl eq 'true then
  183. clsimpl.red: if lhs eq 'true then
  184. clsimpl.red: else if rhs eq 'true then
  185. clsimpl.red: else if lhs eq 'false then
  186. clsimpl.red: else if rhs eq 'false then
  187. clsimpl.red: if knowl eq 'false then <<
  188. clsimpl.red: if at eq 'break then
  189. clsimpl.red: if op eq 'or then <<
  190. clsimpl.red: if op eq 'or then
  191. clsimpl.red: if atl eq 'inctheo then
  192. clsimpl.red: sicd := if c eq 'true then
  193. clsimpl.red: if w eq 'false then
  194. clsimpl.red: return {cl_cflip(res,op eq 'and)};
  195. clsimpl.red: if res eq 'inctheo then % Das hatte man auch frueher
  196. clsimpl.red: return cl_cflip('false,op eq 'and); % wissen koennen.
  197. clsimpl.red: if op eq 'or then
  198. clsimpl.red: if knowl eq 'false then <<
  199. clsimpl.red: if at eq 'break then
  200. clsimpl.red: if op eq 'and then
  201. clsimpl.red: else % We know [op eq 'or]
  202. clsimpl.red: if w eq 'false then % What happens with atoms neq false ???
  203. clsimpl.red: if w eq 'false then return 'false;
  204. clsimpl.red: if knowl eq 'false then
  205. clsimpl.red: if car p eq 'delete or car p eq 'ignore then
  206. clsimpl.red:% if car p eq 'ignore then % We ignore ['ignore]!
  207. clsimpl.red:% else if car p eq 'delete then
  208. clsimpl.red: else if car p eq 'add then
  209. dvfsfmisc.red: if op eq 'equal then
  210. dvfsfmisc.red: if op eq 'neq then
  211. dvfsfmisc.red: if op eq 'div then
  212. dvfsfmisc.red: if op eq 'sdiv then
  213. dvfsfmisc.red: if op eq 'assoc then
  214. dvfsfmisc.red: if op eq 'nassoc then
  215. dvfsfmisc.red: if gor eq 'or then (
  216. dvfsfmisc.red: ) else % [gor eq 'and]
  217. dvfsfmisc.red: if not (op eq 'assoc or op eq 'nassoc) then
  218. dvfsfmisc.red: if op eq 'assoc and (sop eq 'and or null sop) then
  219. dvfsfmisc.red: if op eq 'nassoc and (sop eq 'or or null sop) then
  220. dvfsfmisc.red: rl_smkn(if op eq 'assoc then 'and else 'or,
  221. dvfsfmisc.red: where dvfsf_p!*=fac) eq fu
  222. dvfsfmisc.red: op := if u eq 'false then 'nassoc else 'assoc;
  223. dvfsfmisc.red: return rl_smkn(if u eq 'false then 'or else 'and,
  224. dvfsfmisc.red: else if mvar f eq ' p then
  225. dvfsfqe.red: if op eq 'neq then
  226. dvfsfqe.red: if op eq 'assoc then
  227. dvfsfqe.red: if op eq 'nassoc then
  228. dvfsfqe.red: if (c := cl_simpl(c,nil,-1)) eq 'false then
  229. dvfsfsiat.red: if op eq 'equal or op eq 'neq then
  230. dvfsfsiat.red: return if op eq 'sdiv or op eq 'nassoc then 'false else 'true;
  231. dvfsfsiat.red: if op eq 'sdiv then return 'false;
  232. dvfsfsiat.red: if op eq 'nassoc then return dvfsf_safield('neq,rhs,sop);
  233. dvfsfsiat.red: if op eq 'sdiv or op eq 'nassoc then
  234. dvfsfsiat.red: if op eq 'assoc then
  235. dvfsfsiat.red: % We know [op eq 'div] now.
  236. dvfsfsiat.red: junct := if op eq 'sdiv or op eq 'nassoc then 'and else 'or;
  237. dvfsfsiat.red: if junct eq 'and then <<
  238. dvfsfsiat.red: if natf1 eq 'false then return 'false;
  239. dvfsfsiat.red: % We know [junct eq 'or].
  240. dvfsfsiat.red: if natf1 eq 'true then return natf1;
  241. dvfsfsiat.red: if op eq 'or and (at eq 'true or f eq 'true) then
  242. dvfsfsiat.red: else if op eq 'and and (at eq 'false or f eq 'false) then
  243. dvfsfsiat.red: else if (at eq 'true) or (at eq 'false) then
  244. dvfsfsiat.red: else if (f eq 'true) or (f eq 'false) then
  245. dvfsfsiat.red: if (op eq 'assor or op eq 'nassoc) and ordp(rhs,lhs) then
  246. dvfsfsiat.red: if op eq 'assoc then
  247. dvfsfsiat.red: if op eq 'nassoc then
  248. dvfsfsiat.red: if op eq 'sdiv then
  249. dvfsfsiat.red: % We know [op eq 'div] now.
  250. dvfsfsiat.red: if op eq 'equal then
  251. dvfsfsiat.red: else % [op eq 'neq]
  252. dvfsfsiat.red: return if op eq 'equal then 'false else 'true;
  253. dvfsfsiat.red: junct := if op eq 'equal then 'or else 'and;
  254. dvfsfsiat.red: if w eq 'failed then
  255. dvfsfsiat.red: return if op eq 'nassoc then 'false else 'true;
  256. dvfsfsiat.red: if op eq 'assoc then
  257. dvfsfsiat.red: else if op eq 'nassoc then
  258. dvfsfsiat.red: else if op eq 'div then
  259. dvfsfsiat.red: else if op eq 'sdiv then
  260. dvfsfsiat.red: if op eq 'assoc then
  261. dvfsfsiat.red: else if op eq 'nassoc then
  262. dvfsfsiat.red: else if op eq 'div then
  263. dvfsfsiat.red: else if op eq 'sdiv then
  264. dvfsfsiat.red: return null cdr w and car w eq 'p
  265. dvfsfsiat.red: if w eq 'failed then
  266. dvfsfsiat.red: if w eq 'failed then
  267. dvfsfsiat.red: if w eq 'failed then
  268. dvfsfsiat.red: else if op eq 'assoc or op eq 'nassoc then
  269. dvfsfsiat.red: else if op eq 'div then
  270. dvfsfsiat.red: else if op eq 'sdiv then
  271. dvfsfsiat.red: if not(not(domainp lhs) and mvar lhs eq 'p and ldeg lhs = 1
  272. dvfsfsiat.red: if op eq 'equal then 'false else 'true
  273. dvfsfsiat.red: dvfsf_mk2(if op eq 'equal then 'nassoc else 'assoc,
  274. dvfsfsiat.red: if op eq 'sdiv then <<
  275. dvfsfsiat.red: if op eq 'div then <<
  276. dvfsfsism.red: if (oop eq 'equal or oop eq 'neq) and nop neq 'equal and nop neq 'neq and
  277. dvfsfsism.red: if (nop eq 'equal or nop eq 'neq) and oop neq 'equal and oop neq 'neq and
  278. dvfsfsism.red: if rold eq rnew then
  279. dvfsfsism.red: else if rold eq 'neq then
  280. dvfsfsism.red: if rnew eq 'equal then
  281. dvfsfsism.red: else if rnew eq 'sdiv or rnew eq 'nassoc then
  282. dvfsfsism.red: else if rold eq 'sdiv then
  283. dvfsfsism.red: if rnew eq 'neq or rnew eq 'div or rnew eq 'nassoc then
  284. dvfsfsism.red: else if rold eq 'div then
  285. dvfsfsism.red: if rnew eq 'sdiv or rnew eq 'assoc or rnew eq 'equal then
  286. dvfsfsism.red: else if rnew eq 'nassoc then
  287. dvfsfsism.red: else if rold eq 'assoc then
  288. dvfsfsism.red: if rnew eq 'sdiv or rnew eq 'nassoc then
  289. dvfsfsism.red: else if rnew eq 'div then
  290. dvfsfsism.red: else if rnew eq 'equal then
  291. dvfsfsism.red: else % [rnew eq 'neq]
  292. dvfsfsism.red: else if rold eq 'equal then
  293. dvfsfsism.red: if rnew eq 'neq or rnew eq 'sdiv or rnew eq 'nassoc then
  294. dvfsfsism.red: else if rold eq 'nassoc then
  295. dvfsfsism.red: if rnew eq 'sdiv then
  296. dvfsfsism.red: else if rnew eq 'assoc or rnew eq 'equal then
  297. dvfsfsism.red: else if rnew eq 'div then
  298. dvfsfsism.red: else % [rnew eq 'neq]
  299. dvfsfsism.red: if rold eq 'div then
  300. dvfsfsism.red: if rnew eq 'sdiv then
  301. dvfsfsism.red: else if rnew eq 'div then
  302. dvfsfsism.red: else if rnew eq 'assoc then
  303. dvfsfsism.red: else if rnew eq 'nassoc then
  304. dvfsfsism.red: else if rold eq 'sdiv then
  305. dvfsfsism.red: if rnew eq 'div or rnew eq 'sdiv or rnew eq 'assoc then
  306. dvfsfsism.red: else if rnew eq 'nassoc then
  307. dvfsfsism.red: else if rold eq 'nassoc then
  308. dvfsfsism.red: if rnew eq 'sdiv then
  309. dvfsfsism.red: else if rnew eq 'div then
  310. dvfsfsism.red: else if rold eq 'assoc then
  311. dvfsfsism.red: if rnew eq 'sdiv then
  312. dvfsfsism.red: else if rnew eq 'div then
  313. lto.red: if l then if car l eq x then cdr l else car l . delq(x,cdr l);
  314. lto.red: else if u eq car v then
  315. lto.red: % list, such that [not(car v eq u)]. Returns a list. The first
  316. lto.red: else if u eq cadr v then
  317. ofsf.red: if r eq 'leq then 'lessp else if r eq 'geq then 'greaterp else r;
  318. ofsfbnf.red: if gor eq 'or then (
  319. ofsfbnf.red: ) else % [gor eq 'and]
  320. ofsfbnf.red: if gor eq 'or then
  321. ofsfgs.red: if phi eq 'inctheo then return 'inctheo;
  322. ofsfgs.red: if phi eq 'inctheo then return 'inctheo;
  323. ofsfgs.red: if phi eq 'inctheo then return 'inctheo;
  324. ofsfgs.red: if phi eq 'inctheo then return 'inctheo;
  325. ofsfgs.red: if rl_op(f) eq 'and then ofsf_gsd(f,atl) else ofsf_gsc(f,atl)
  326. ofsfgs.red: if rl_op(f) eq 'and then ofsf_gsc(f,atl) else ofsf_gsd(f,atl);
  327. ofsfgs.red: if atl eq 'inctheo or ofsf_gsinctheop(atl) then
  328. ofsfgs.red: if (cl_atfp f) or (rl_op f eq 'or) then % degenerated cnf
  329. ofsfgs.red: if gprem eq 'false then return 'false;
  330. ofsfgs.red: return w eq 'false
  331. ofsfgs.red: if (w := ofsf_gsdis!-type rl_argn phi) eq 'impl then
  332. ofsfgs.red: else if w eq 'noneq then
  333. ofsfgs.red: else << % [if w eq 'equal then]
  334. ofsfgs.red: if op eq 'neq then return 'impl;
  335. ofsfgs.red: if w eq 'impl then return 'impl;
  336. ofsfgs.red: if op eq 'equal and w eq 'equal then return 'equal;
  337. ofsfgs.red: if rprod eq 'true then <<
  338. ofsfgs.red: if w eq 'true then <<
  339. ofsfgs.red: if natl eq 'true then <<
  340. ofsfgs.red: if w eq 'true then
  341. ofsfgs.red: if w eq 'true then return 'true;
  342. ofsfgs.red: if w eq 'true then
  343. ofsfgs.red: if w eq 'true then return 'true;
  344. ofsfgs.red: if a eq 'equal then
  345. ofsfgs.red: else if a eq 'cequal then
  346. ofsfgs.red: else if a eq 'neq then
  347. ofsfgs.red: (if w eq 'equal then
  348. ofsfgs.red: else if w eq 'neq then
  349. ofsfgs.red: if (op eq 'neq) or (flag and op eq 'equal) then return nil;
  350. ofsfgs.red: if (rl_tvalp nat) or (op eq 'equal) or (null !*rlgsrad) then
  351. ofsfmisc.red: if r eq 'equal then 'neq
  352. ofsfmisc.red: else if r eq 'neq then 'equal
  353. ofsfmisc.red: else if r eq 'leq then 'greaterp
  354. ofsfmisc.red: else if r eq 'lessp then 'geq
  355. ofsfmisc.red: else if r eq 'geq then 'lessp
  356. ofsfmisc.red: else if r eq 'greaterp then 'leq
  357. ofsfmisc.red: if ofsf_op at eq 'equal then
  358. ofsfmisc.red: if ofsf_op a eq 'equal and quotf(c,ofsf_arg2l a) then <<
  359. ofsfmisc.red: return a eq 'found
  360. ofsfmisc.red: if ofsf_op a eq 'neq and quotf(ofsf_arg2l a,c) then <<
  361. ofsfmisc.red: return a eq 'found
  362. ofsfopt.red: if junct eq 'break then
  363. ofsfopt.red: if junct eq 'pbase then
  364. ofsfopt.red: else if junct eq 'break then
  365. ofsfopt.red: if v eq z then <<
  366. ofsfopt.red: if ofsf_op a eq 'equal and v memq ofsf_varlat a then <<
  367. ofsfopt.red: if w eq 'false then return 'false;
  368. ofsfopt.red: if w eq 'true then return nil;
  369. ofsfopt.red: if op eq 'and then
  370. ofsfopt.red: if car w eq 'lb then <<
  371. ofsfopt.red: >> else if car w eq 'ub then <<
  372. ofsfopt.red: if op eq 'equal then return 'equal . sol;
  373. ofsfopt.red: if ofsf_xor(op eq 'geq,minusf lc u) then return 'lb . sol;
  374. ofsfopt.red: if not (op eq 'equal or ofsf_xor(op eq 'geq,minusf lc u)) then
  375. ofsfopt.red: if atf eq 'false then return nil;
  376. ofsfopt.red: if ans eq 'break then return {simp '(minus infinity),nil};
  377. ofsfqe.red: if cdr w eq 'false then
  378. ofsfqe.red: if cdr w eq 'false then
  379. ofsfqe.red: if r eq 'equal or r eq 'neq then
  380. ofsfqe.red: (if r eq 'equal then w else cl_nnfnot w)
  381. ofsfqe.red: if r eq 'leq or r eq 'lessp then
  382. ofsfqe.red: else % [r eq 'geq or r eq 'greaterp]
  383. ofsfqe.red: w := if r eq 'leq then
  384. ofsfqe.red: while not domainp w and mvar w eq 'ofsf_sqrt do <<
  385. ofsfqe.red: if cdr w eq 'false then
  386. ofsfqe.red: w := if op eq 'equal or op eq 'neq then numr w else multf(numr w,denr w);
  387. ofsfqe.red: if op eq 'equal or op eq 'neq then
  388. ofsfqe.red: if op eq 'equal then
  389. ofsfqe.red: else % [op eq 'neq]
  390. ofsfqe.red: while not domainp lhs and mvar lhs eq v do <<
  391. ofsfqe.red: an := if inf eq 'minf and not evenp ldeg f then
  392. ofsfqe.red: if cdr w eq 'false then
  393. ofsfqe.red: if cdr w eq 'false then
  394. ofsfqe.red: if cdr w eq 'false then
  395. ofsfqe.red: if cdr w eq 'false then
  396. ofsfqe.red: if cdr w eq 'false then
  397. ofsfqe.red: if cdr w eq 'false then
  398. ofsfqe.red: if op eq 'equal or op eq 'neq then
  399. ofsfqe.red: if degreef(f,v) eq 0 then
  400. ofsfqe.red: if car w eq 'failed then return w;
  401. ofsfqe.red: if r eq 'equal or r eq 'neq then
  402. ofsfqe.red: else if r eq 'lessp or r eq 'greaterp then
  403. ofsfqe.red: if w eq 'failed then
  404. ofsfqe.red: if car w eq 'onequot then <<
  405. ofsfqe.red: >> else if car w eq 'tworoot then <<
  406. ofsfqe.red: cl_simpl(f,theo,-1) eq 'true;
  407. ofsfqe.red: if ldeg x eq 2 then <<
  408. ofsfqe.red: return if not domainp x and mvar x eq v then
  409. ofsfqe.red: if a eq 'failed or null nzf then return nil;
  410. ofsfqe.red: if car grv1 eq 'failed then
  411. ofsfqe.red: if car grv2 eq 'failed then
  412. ofsfqe.red: not(car grv eq 'failed) and not(car grv eq 'gignore) and
  413. ofsfqe.red: cadar grv eq 'lin and caddar grv eq 'con and % Linear, concrete coeff.
  414. ofsfqe.red: if w eq 'failed then return '(failed . nil);
  415. ofsfqe.red: if tag eq 'gen then v := "!" . v;
  416. ofsfqe.red: if null cdr eset and caar eset eq 'ofsf_qesubcq then
  417. ofsfqe.red: else if cl_simpl(ofsf_0mk2('equal,u),theo,-1) eq 'false then
  418. ofsfqe.red: w := if sub eq 'ofsf_qesubi then <<
  419. ofsfqe.red: >> else if sub eq 'ofsf_qesubcq then
  420. ofsfqe.red: else if sub eq 'ofsf_qesubcr1 then
  421. ofsfqe.red: else if sub eq 'ofsf_qesubcqme then
  422. ofsfqe.red: else if sub eq 'ofsf_qesubcqpe then
  423. ofsfqe.red: else if sub eq 'ofsf_qesubcrme1 then
  424. ofsfqe.red: else if sub eq 'ofsf_qesubcrpe1 then
  425. ofsfqe.red: rl_mkn(if op eq 'ex then 'and else 'impl,{gamma,car w})
  426. ofsfqe.red: if vl eq 'fvarl then
  427. ofsfqe.red: if w eq 'odd and null oddp then
  428. ofsfqe.red: while (not domainp a) and (mvar a eq v) and dgcd neq 1 do <<
  429. ofsfqe.red: if dgcd > 0 and oddp eq 'odd then <<
  430. ofsfqe.red: if not domainp w and null red w and mvar w eq v then
  431. ofsfqe.red: else if f eq at then
  432. ofsfqe.red: if op eq 'neq then
  433. ofsfqe.red: if op eq 'equal then <<
  434. ofsfqe.red: if op eq 'leq then <<
  435. ofsfqe.red: if op eq 'geq then <<
  436. ofsfqe.red: if op eq 'lessp then <<
  437. ofsfqe.red: if op eq 'greaterp then <<
  438. ofsfsiat.red: if rel eq 'equal then return ofsf_simplequal(lhs,sop);
  439. ofsfsiat.red: if rel eq 'neq then return ofsf_simplneq(lhs,sop);
  440. ofsfsiat.red: if rel eq 'leq then return ofsf_simplleq(lhs,sop);
  441. ofsfsiat.red: if rel eq 'geq then return ofsf_simplgeq(lhs,sop);
  442. ofsfsiat.red: if rel eq 'lessp then return ofsf_simpllessp(lhs,sop);
  443. ofsfsiat.red: if rel eq 'greaterp then return ofsf_simplgreaterp(lhs,sop)
  444. ofsfsiat.red: if w eq 'stsq then return 'false;
  445. ofsfsiat.red: if ww eq 'stsq then return 'false;
  446. ofsfsiat.red: if ww eq 'tsq then return ofsf_tsqsplequal ff;
  447. ofsfsiat.red: if w eq 'tsq then return ofsf_tsqsplequal lhs
  448. ofsfsiat.red: if w eq 'stsq then return 'true;
  449. ofsfsiat.red: if ww eq 'stsq then return 'true;
  450. ofsfsiat.red: if ww eq 'tsq then return ofsf_tsqsplneq ff;
  451. ofsfsiat.red: if w eq 'tsq then return ofsf_tsqsplneq lhs
  452. ofsfsiat.red: if (s1 := sfto_tsqsumf lhs) eq 'stsq then % necessary?
  453. ofsfsiat.red: if (s2 := sfto_tsqsumf w) eq 'stsq then
  454. ofsfsiat.red: if !*rlsiexpla or (!*rlsiexpl and (sop eq 'or)) then
  455. ofsfsiat.red: if !*rlsiexpla or (!*rlsiexpl and (sop eq 'or)) then
  456. ofsfsiat.red: if !*rlsiexpla or (!*rlsiexpl and (sop eq 'and)) then
  457. ofsfsiat.red: if (s1 := sfto_tsqsumf lhs) eq 'stsq then % necessary?
  458. ofsfsiat.red: if (s2 := sfto_tsqsumf w) eq 'stsq then
  459. ofsfsiat.red: if !*rlsiexpla or (!*rlsiexpl and (sop eq 'and)) then
  460. ofsfsiat.red: if rel eq 'equal then null lhs
  461. ofsfsiat.red: else if rel eq 'neq then not null lhs
  462. ofsfsiat.red: else if rel eq 'leq then minusf lhs or null lhs
  463. ofsfsiat.red: else if rel eq 'geq then not minusf lhs
  464. ofsfsiat.red: else if rel eq 'lessp then minusf lhs
  465. ofsfsiat.red: else if rel eq 'greaterp then not (minusf lhs or null lhs)
  466. ofsfsism.red: a := if op eq 'and then car atl else ofsf_negateat car atl;
  467. ofsfsism.red: if cdr w eq 'false then <<
  468. ofsfsism.red: if op eq 'and then
  469. ofsfsism.red: else % [op eq 'or]
  470. ofsfsism.red: if w eq 'neq then
  471. ofsfsism.red: if car ne eq 'lessp then
  472. ofsfsism.red: % We know [car ne eq 'greaterp].
  473. ofsfsism.red: if w eq 'neq then
  474. ofsfsism.red: if car ne eq 'lessp then
  475. ofsfsism.red: % We know [car ne eq 'greaterp]!
  476. ofsfsism.red: % We know [car ne eq 'equal].
  477. ofsfsism.red: ofsf_0mk2(ofsf_clnegrel(car entry,op eq 'and),numr addsq(parasq,cdr entry));
  478. ofsfsism.red: if w eq 'false then return 'false;
  479. ofsfsism.red: if w eq 'true then return db;
  480. ofsfsism.red: if w eq 'true then <<
  481. ofsfsism.red: >> else if w eq 'false then <<
  482. ofsfsism.red: if a eq 'false then return 'false;
  483. ofsfsism.red: if a eq 'true then return db;
  484. ofsfsism.red: if w eq 'false then return 'false;
  485. ofsfsism.red: if r1 eq w then return 'true;
  486. redlog.red: if nop eq 'and then 'true else 'false
  487. redlog.red: x eq 'ex or x eq 'all;
  488. redlog.red: x eq 'or or x eq 'and;
  489. redlog.red: rl_junctp x or x eq 'not;
  490. redlog.red: x eq 'impl or x eq 'repl or x eq 'equiv;
  491. redlog.red: x eq 'true or x eq 'false;
  492. rlami.red: if u eq 'true or u eq 'false then
  493. rlami.red: if w eq 'logical or w eq 'equation or w eq 'scalar then
  494. rlami.red: if u eq 'fvarl then 'fvarl else rl_a2s!-varl u;
  495. rlami.red: if f eq 'inctheo then rederr "inconsistent theory" else rl_mk!*fof f;
  496. rlami.red: if res eq 'inctheo then
  497. rlami.red: if res eq 'inctheo then
  498. rlami.red: if res eq 'inctheo then
  499. rlami.red: if res eq 'infeasible then
  500. rlami.red: if !*mode eq 'symbolic then
  501. rlami.red: if !*mode eq 'symbolic then