rlsched.red 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. % ----------------------------------------------------------------------
  2. % $Id: rlsched.red,v 1.47 2003/10/21 15:23:47 gilch Exp $
  3. % ----------------------------------------------------------------------
  4. % Copyright (c) 1995-1999 Andreas Dolzmann and Thomas Sturm
  5. % ----------------------------------------------------------------------
  6. % $Log: rlsched.red,v $
  7. % Revision 1.47 2003/10/21 15:23:47 gilch
  8. % Added services rlhqe and rlghqe.
  9. %
  10. % Revision 1.46 2003/08/28 13:48:54 seidl
  11. % Added service rlcadproj.
  12. %
  13. % Revision 1.45 2003/08/19 09:30:56 seidl
  14. % Introduced blackbox "bsatp" (bound satisfiability predicate).
  15. %
  16. % Revision 1.44 2003/08/12 14:15:42 seidl
  17. % Added blackbox rl_b2atl.
  18. %
  19. % Revision 1.43 2003/07/11 17:16:09 sturm
  20. % New service rlqnum (number of quantifiers).
  21. %
  22. % Revision 1.42 2003/06/11 08:47:19 dolzmann
  23. % Added black boxes rl_qssimpl and rl_qssiadd.
  24. %
  25. % Revision 1.41 2003/06/04 06:11:14 dolzmann
  26. % Added black box rl_qssusuat.
  27. %
  28. % Revision 1.40 2003/06/03 11:22:37 dolzmann
  29. % Added black boxes rl_qsconsens, rl_qstrycons, rl_qsimpltestccl,
  30. % rl_qssubsumep, rl_qstautp used for the quine simplication.
  31. %
  32. % Revision 1.39 2003/06/01 14:44:19 seidl
  33. % Added blackboxes rl_b2terml (bound to term list) and rl_simplb (simplify
  34. % bound).
  35. %
  36. % Revision 1.38 2003/05/27 07:33:25 dolzmann
  37. % Introduced new black box rl_qssub.
  38. %
  39. % Revision 1.37 2003/05/23 16:02:07 dolzmann
  40. % Added black-box rl_qscsaat
  41. %
  42. % Revision 1.36 2003/05/21 09:05:21 dolzmann
  43. % Added service rlquine.
  44. %
  45. % Revision 1.35 2003/02/02 22:19:32 seidl
  46. % Changed interface for service cad.
  47. %
  48. % Revision 1.34 2003/01/29 15:24:49 sturm
  49. % Added service rlexpand for context pasf. Had to split pasf_exprng for this.
  50. %
  51. % Revision 1.33 2003/01/29 10:43:43 sturm
  52. % Built clean optional argument interface for rlcad and rlgcad. This was buggy.
  53. %
  54. % Revision 1.32 2003/01/25 11:49:41 sturm
  55. % Changed return value and interface for rlcadporder/ofsf_cadporder and
  56. % rlgcadporder/ofsf_gcadporder. They return a list of variables now.
  57. % s2a conversion is done in the scheduler now. Adapted rlcad/ofsf_cad and
  58. % rlgcad/ofsf_gcad accordingly.
  59. %
  60. % Revision 1.31 2003/01/13 10:01:10 dolzmann
  61. % Added entry points for xopt.
  62. %
  63. % Revision 1.30 2003/01/11 17:58:01 sturm
  64. % Added AM services rlcadporder, rlgcadporder for ofsf.
  65. %
  66. % Revision 1.29 2002/08/23 12:32:01 dolzmann
  67. % Added local quantifier elimination.
  68. %
  69. % Revision 1.28 2002/05/29 11:46:35 sturm
  70. % Provided ofsf_gcad() and corresponding AM interface.
  71. %
  72. % Revision 1.27 2002/05/28 13:22:00 sturm
  73. % Added black box rl_fbqe() and corresponding switch rlqefb.
  74. % That is, for ofsf, rlqe uses rlcad in case of failure now.
  75. %
  76. % Revision 1.26 2002/05/28 13:12:24 seidla
  77. % Added switches rlcadpreponly, rlcadte and rlcadpbfvs, changed default for
  78. % switch rlcadaproj to off.
  79. %
  80. % Revision 1.25 2002/01/25 12:38:53 sturm
  81. % Removed obsolete optional argument [n] from ofsfcad().
  82. %
  83. % Revision 1.24 2002/01/16 13:04:02 seidla
  84. % Imported CAD from rlprojects.
  85. %
  86. % Revision 1.23 1999/03/23 09:23:57 dolzmann
  87. % Changed copyright information.
  88. %
  89. % Revision 1.22 1999/03/21 13:39:11 dolzmann
  90. % Added black boxes rl_susipost, rl_susitf, and rl_susibin.
  91. %
  92. % Revision 1.21 1999/03/19 12:19:06 dolzmann
  93. % Added service rlmkcanonic.
  94. %
  95. % Revision 1.20 1999/03/18 14:08:22 sturm
  96. % Added new service rl_specelim!* in cl_qe for covering the "super
  97. % quadratic special case' for ofsf. This method is toggled by switch
  98. % rlsqsc, which is off by default. Context dvfsf uses cl_specelim which
  99. % is constantly "false." Context acfsf does not use cl_qe at all.
  100. %
  101. % Revision 1.19 1999/01/17 16:32:12 dolzmann
  102. % Added service rl_explats.
  103. %
  104. % Revision 1.18 1997/08/24 16:18:53 sturm
  105. % Added service rl_surep with black box rl_multsurep.
  106. % Added service rl_siaddatl.
  107. %
  108. % Revision 1.17 1997/08/14 10:10:47 sturm
  109. % Renamed rldecdeg to rldecdeg1.
  110. % Added service rldecdeg.
  111. %
  112. % Revision 1.16 1997/08/13 12:46:38 dolzmann
  113. % Introduced service rldecdeg.
  114. %
  115. % Revision 1.15 1996/10/23 12:02:54 sturm
  116. % Added "exceptionlist" paramter to rlgqe and rlgqea. Several quantifier
  117. % blocks are treated correctly now.
  118. %
  119. % Revision 1.14 1996/10/21 06:13:52 dolzmann
  120. % Changed interface for services rlstruct and rlifstruct: Second
  121. % parameter is now optional, default is v.
  122. %
  123. % Revision 1.13 1996/10/17 13:52:25 sturm
  124. % Introduced services rlvarl, rlfvarl, and rlbvarl. Renamed cl_varl to
  125. % cl_varl1 for this.
  126. %
  127. % Revision 1.12 1996/10/07 12:03:57 sturm
  128. % Added fluids for CVS and copyright information.
  129. %
  130. % Revision 1.11 1996/10/01 10:25:19 reiske
  131. % Introduced new service rltnf and related code.
  132. %
  133. % Revision 1.10 1996/09/30 16:57:41 sturm
  134. % Switched to new tableau code.
  135. %
  136. % Revision 1.9 1996/09/29 14:21:29 sturm
  137. % Removed switch rlqeans. Introduced service rlqea instead.
  138. % Also introduced corresponding service rlgqea.
  139. %
  140. % Revision 1.8 1996/09/05 11:17:19 dolzmann
  141. % Changed interface for service rlatb.
  142. % Introduced new services rl_ifacml, rl_struct, rl_ifstruct, rl_termml, and
  143. % rl_terml.
  144. % Introduced new black boxes rl_qefsolset, rl_bettergaussp!*, rl_bestgaussp,
  145. % rl_esetunion, rl_structat, rl_ifstructat, and rl_termmlat.
  146. %
  147. % Revision 1.7 1996/08/01 11:46:18 reiske
  148. % Introduced new services rl_natab, rl_nitab, rl_qeipo, and rl_gentheo.
  149. % Introduced new black boxes rl_a2cdl and rl_getineq.
  150. %
  151. % Revision 1.6 1996/07/13 11:23:05 dolzmann
  152. % Introduced new black box rl_smcpknowl.
  153. %
  154. % Revision 1.5 1996/07/07 14:37:22 sturm
  155. % Introduced new service rl_nnfnot.
  156. % Introduced new black box rl_eqnrhskernels.
  157. %
  158. % Revision 1.4 1996/05/21 17:32:42 sturm
  159. % Added service rl_subfof and black boxes rl_subat, rl_subalchk.
  160. %
  161. % Revision 1.3 1996/05/12 08:28:38 sturm
  162. % Introduced new services rlthsimpl and rlgqe.
  163. %
  164. % Revision 1.2 1996/04/18 14:32:33 sturm
  165. % Fixed bugs in macro calls.
  166. %
  167. % Revision 1.1 1996/03/22 12:18:30 sturm
  168. % Moved and split.
  169. %
  170. % ----------------------------------------------------------------------
  171. lisp <<
  172. fluid '(rl_sched_rcsid!* rl_sched_copyright!*);
  173. rl_sched_rcsid!* :=
  174. "$Id: rlsched.red,v 1.47 2003/10/21 15:23:47 gilch Exp $";
  175. rl_sched_copyright!* :=
  176. "Copyright (c) 1995-1999 by A. Dolzmann and T. Sturm"
  177. >>;
  178. module rlsched;
  179. % Reduce logic component scheduler. Submodule of [redlog]. Service and
  180. % black-box scheduler possibly including AM interface construction.
  181. rl_mkserv('subfof,'(dummy dummy),nil,nil,nil,nil);
  182. rl_mkserv('identifyonoff,'(reval),nil,nil,'null,nil);
  183. rl_mkserv('simpl,'(rl_simp),
  184. '(rl_a2s!-atl rl_a2s!-number),'((list) -1),'rl_s2a!-simpl,T);
  185. rl_mkserv('thsimpl,'(rl_a2s!-atl),nil,nil,'rl_s2a!-atl,T);
  186. rl_mkserv('lthsimpl,'(rl_a2s!-atl),nil,nil,'rl_s2a!-atl,nil);
  187. rl_mkserv('pnf,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  188. rl_mkserv('apnf,'(rl_a2s!-posf),nil,nil,'rl_mk!*fof,T);
  189. rl_mkserv('nnf,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  190. rl_mkserv('nnfnot,'(dummy),nil,nil,nil,nil);
  191. rl_mkserv('cnf,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  192. rl_mkserv('dnf,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  193. rl_mkserv('ex,'(rl_simp),'(rl_a2s!-varl),'((list)),'rl_mk!*fof,T);
  194. rl_mkserv('all,'(rl_simp),'(rl_a2s!-varl),'((list)),'rl_mk!*fof,T);
  195. rl_mkserv('gqe,'(rl_simp),'(rl_a2s!-atl rl_a2s!-varl),'((list)
  196. (list)),'rl_s2a!-gqe,T);
  197. rl_mkserv('gqea,'(rl_simp),'(rl_a2s!-atl rl_a2s!-varl),'((list)
  198. (list)),'rl_s2a!-gqea,T);
  199. rl_mkserv('lqe,'(rl_simp rl_a2s!-atl rl_a2s!-pt),nil,nil,'rl_s2a!-gqe,T);
  200. rl_mkserv('qe,'(rl_simp),'(rl_a2s!-atl),'((list)),'rl_s2a!-simpl,T);
  201. rl_mkserv('qea,'(rl_simp),'(rl_a2s!-atl),'((list)),'rl_s2a!-qea,T);
  202. rl_mkserv('atnum,'(rl_simp),nil,nil,'aeval,T);
  203. rl_mkserv('qnum,'(rl_simp),nil,nil,'aeval,T);
  204. rl_mkserv('gsc,'(rl_simp),'(rl_a2s!-atl),'((list)),'rl_s2a!-simpl,T);
  205. rl_mkserv('gsd,'(rl_simp),'(rl_a2s!-atl),'((list)),'rl_s2a!-simpl,T);
  206. rl_mkserv('gsn,'(rl_simp),'(rl_a2s!-atl),'((list)),'rl_s2a!-simpl,T);
  207. rl_mkserv('opt,'(rl_a2s!-atl rl_a2s!-targfn),
  208. '(rl_a2s!-varl rl_a2s!-number),'((list) 8),'rl_s2a!-opt,T);
  209. rl_mkserv('atl,'(rl_simp),nil,nil,'rl_s2a!-atl,T);
  210. rl_mkserv('atml,'(rl_simp),nil,nil,
  211. function(lambda x; rl_s2a!-ml(x,'rl_mk!*fof)),T);
  212. rl_mkserv('matrix,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  213. rl_mkserv('ifacl,'(rl_simp),nil,nil,'rl_s2a!-terml,T);
  214. rl_mkserv('ifacml,'(rl_simp),nil,nil,
  215. function(lambda x; rl_s2a!-ml(x,'rl_s2a!-term)),T);
  216. rl_mkserv('tab,'(rl_simp rl_a2s!-atl),nil,nil,'rl_mk!*fof,T);
  217. rl_mkserv('atab,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  218. rl_mkserv('itab,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  219. rl_mkserv('qeipo,'(rl_simp),'(rl_a2s!-atl),'((list)),'rl_s2a!-simpl,T);
  220. rl_mkserv('qews,'(rl_simp),'(rl_a2s!-atl),'((list)),'rl_s2a!-simpl,T);
  221. rl_mkserv('gentheo,'(rl_a2s!-atl rl_simp),'(rl_a2s!-varl),'((list)),
  222. 'rl_s2a!-gqe,T);
  223. rl_mkserv('tnf,'(rl_simp rl_a2s!-terml),nil,nil,'rl_mk!*fof,T);
  224. rl_mkserv('terml,'(rl_simp),nil,nil,'rl_s2a!-terml,T);
  225. rl_mkserv('termml,'(rl_simp),nil,nil,
  226. function(lambda x; rl_s2a!-ml(x,'rl_s2a!-term)),T);
  227. rl_mkserv('struct,'(rl_simp),'(rl_a2s!-id),'(v),'rl_s2a!-struct,T);
  228. rl_mkserv('ifstruct,'(rl_simp),'(rl_a2s!-id),'(v),'rl_s2a!-struct,T);
  229. rl_mkserv('varl,'(rl_simp),nil,nil,'rl_s2a!-varl,T);
  230. rl_mkserv('fvarl,'(rl_simp),nil,nil,'rl_s2a!-fbvarl,T);
  231. rl_mkserv('bvarl,'(rl_simp),nil,nil,'rl_s2a!-fbvarl,T);
  232. rl_mkserv('decdeg1,'(rl_simp),'(rl_a2s!-decdeg1),'(fvarl),'rl_s2a!-decdeg1,T);
  233. rl_mkserv('decdeg,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  234. rl_mkserv('explats,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  235. rl_mkserv('mkcanonic,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  236. rl_mkserv('surep,'(dummy dummy),nil,nil,nil,nil);
  237. rl_mkserv('siaddatl,'(dummy dummy),nil,nil,nil,nil);
  238. rl_mkserv('xqe,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  239. rl_mkserv('xqea,'(rl_simp),nil,nil,'rl_s2a!-qea,T);
  240. rl_mkserv('cad,'(rl_simp),'(rl_a2s!-idlist),'((list)),
  241. function(lambda x; rl_mk!*fof cdr x),T);
  242. rl_mkserv('gcad,'(rl_simp),'(rl_a2s!-idlist),'((list)),'rl_s2a!-gqe,T);
  243. rl_mkserv('cadporder,'(rl_simp),nil,nil,'rl_s2a!-idlist,T);
  244. rl_mkserv('gcadporder,'(rl_simp),nil,nil,'rl_s2a!-idlist,T);
  245. rl_mkserv('cadproj,'(rl_simp),'(rl_a2s!-idlist),'((list)),
  246. function(lambda x; rl_s2a!-sflist cdr x),T);
  247. procedure rl_s2a!-sflist(sfll);
  248. % . [sfl] is a list of SF.
  249. begin scalar fl,f;
  250. return 'list . for each fl in sfll collect
  251. 'list . for each f in fl collect prepf f
  252. end;
  253. rl_mkserv('cadswitches,nil,nil,nil,function(lambda x; x),T);
  254. rl_mkserv('expand,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  255. rl_mkserv('hqe,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  256. rl_mkserv('ghqe,'(rl_simp),nil,nil,'rl_s2a!-ghqe,T);
  257. rl_mkserv('quine,'(rl_simp),nil,nil,'rl_mk!*fof,T);
  258. % Black box scheduler.
  259. rl_mkbb('rl_simplat1,2);
  260. rl_mkbb('rl_smupdknowl,4);
  261. rl_mkbb('rl_smrmknowl,2);
  262. rl_mkbb('rl_smcpknowl,1);
  263. rl_mkbb('rl_smmkatl,4);
  264. rl_mkbb('rl_smsimpl!-impl,5);
  265. rl_mkbb('rl_smsimpl!-equiv1,5);
  266. rl_mkbb('rl_negateat,1);
  267. rl_mkbb('rl_varlat,1);
  268. rl_mkbb('rl_varsubstat,3);
  269. rl_mkbb('rl_translat,5);
  270. rl_mkbb('rl_elimset,2);
  271. rl_mkbb('rl_trygauss,5);
  272. rl_mkbb('rl_varsel,3);
  273. rl_mkbb('rl_qemkans,2);
  274. rl_mkbb('rl_ordatp,2);
  275. rl_mkbb('rl_subsumption,3);
  276. rl_mkbb('rl_transform,2);
  277. rl_mkbb('rl_updatr,2);
  278. rl_mkbb('rl_sacat,3);
  279. rl_mkbb('rl_sacatlp,2);
  280. rl_mkbb('rl_bnfsimpl,2);
  281. rl_mkbb('rl_fctrat,1);
  282. rl_mkbb('rl_tordp,2);
  283. rl_mkbb('rl_a2cdl,1);
  284. rl_mkbb('rl_t2cdl,1);
  285. rl_mkbb('rl_subat,2);
  286. rl_mkbb('rl_subalchk,1);
  287. rl_mkbb('rl_eqnrhskernels,1);
  288. rl_mkbb('rl_getineq,2);
  289. rl_mkbb('rl_qefsolset,5);
  290. rl_mkbb('rl_bettergaussp,2);
  291. rl_mkbb('rl_bestgaussp,1);
  292. rl_mkbb('rl_esetunion,2);
  293. rl_mkbb('rl_structat,2);
  294. rl_mkbb('rl_ifstructat,2);
  295. rl_mkbb('rl_termmlat,1);
  296. rl_mkbb('rl_multsurep,2);
  297. rl_mkbb('rl_specelim,5);
  298. rl_mkbb('rl_susipost,2);
  299. rl_mkbb('rl_susitf,2);
  300. rl_mkbb('rl_susibin,2);
  301. rl_mkbb('rl_fbqe,1);
  302. rl_mkbb('rl_qscsaat,1);
  303. rl_mkbb('rl_qssubat,2);
  304. rl_mkbb('rl_qsconsens,3);
  305. rl_mkbb('rl_qstrycons,4);
  306. rl_mkbb('rl_qsimpltestccl,3);
  307. rl_mkbb('rl_qssubsumep,3);
  308. rl_mkbb('rl_qstautp,1);
  309. rl_mkbb('rl_qssusuat,3);
  310. rl_mkbb('rl_qssiadd,4);
  311. rl_mkbb('rl_qssimpl,3);
  312. rl_mkbb('rl_b2terml,2);
  313. rl_mkbb('rl_simplb,2);
  314. rl_mkbb('rl_b2atl,2);
  315. rl_mkbb('rl_bsatp,1);
  316. endmodule; % [rlsched]
  317. end; % of file