kibi-swipl-linux-x64-gnu 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (550) hide show
  1. package/README.md +29 -0
  2. package/bin/swipl +0 -0
  3. package/bin/swipl-win +0 -0
  4. package/build-manifest.json +70 -0
  5. package/lib/cmake/swipl/SWIPLConfig.cmake +21 -0
  6. package/lib/cmake/swipl/SWIPLConfigVersion.cmake +65 -0
  7. package/lib/cmake/swipl/SWIPLTargets-release.cmake +28 -0
  8. package/lib/cmake/swipl/SWIPLTargets.cmake +109 -0
  9. package/lib/swipl/ABI +1 -0
  10. package/lib/swipl/LICENSE +41 -0
  11. package/lib/swipl/README.md +116 -0
  12. package/lib/swipl/app/README.md +25 -0
  13. package/lib/swipl/app/app.pl +87 -0
  14. package/lib/swipl/app/pack.pl +350 -0
  15. package/lib/swipl/app/qlf.pl +521 -0
  16. package/lib/swipl/app/splfr.pl +177 -0
  17. package/lib/swipl/app/sys.pl +310 -0
  18. package/lib/swipl/bin/swipl.home +1 -0
  19. package/lib/swipl/boot/apply.pl +73 -0
  20. package/lib/swipl/boot/attvar.pl +344 -0
  21. package/lib/swipl/boot/autoload.pl +1226 -0
  22. package/lib/swipl/boot/bags.pl +283 -0
  23. package/lib/swipl/boot/dcg.pl +388 -0
  24. package/lib/swipl/boot/dicts.pl +193 -0
  25. package/lib/swipl/boot/dwim.pl +485 -0
  26. package/lib/swipl/boot/engines.pl +152 -0
  27. package/lib/swipl/boot/expand.pl +1628 -0
  28. package/lib/swipl/boot/gc.pl +65 -0
  29. package/lib/swipl/boot/history.pl +304 -0
  30. package/lib/swipl/boot/init.pl +4682 -0
  31. package/lib/swipl/boot/iri.pl +64 -0
  32. package/lib/swipl/boot/license.pl +390 -0
  33. package/lib/swipl/boot/load.pl +81 -0
  34. package/lib/swipl/boot/messages.pl +2521 -0
  35. package/lib/swipl/boot/packs.pl +306 -0
  36. package/lib/swipl/boot/predopts.pl +154 -0
  37. package/lib/swipl/boot/qlf.pl +141 -0
  38. package/lib/swipl/boot/rc.pl +263 -0
  39. package/lib/swipl/boot/syspred.pl +1634 -0
  40. package/lib/swipl/boot/tabling.pl +2321 -0
  41. package/lib/swipl/boot/threads.pl +42 -0
  42. package/lib/swipl/boot/toplevel.pl +2248 -0
  43. package/lib/swipl/boot/topvars.pl +261 -0
  44. package/lib/swipl/boot.prc +0 -0
  45. package/lib/swipl/cmake/swipl.cmake +131 -0
  46. package/lib/swipl/customize/README.md +23 -0
  47. package/lib/swipl/customize/edit +101 -0
  48. package/lib/swipl/customize/init.pl +164 -0
  49. package/lib/swipl/demo/README.md +33 -0
  50. package/lib/swipl/demo/likes.pl +44 -0
  51. package/lib/swipl/doc/packages/examples/chr/bool.chr +281 -0
  52. package/lib/swipl/doc/packages/examples/chr/chrdif.chr +87 -0
  53. package/lib/swipl/doc/packages/examples/chr/chrfreeze.chr +6 -0
  54. package/lib/swipl/doc/packages/examples/chr/family.chr +116 -0
  55. package/lib/swipl/doc/packages/examples/chr/fib.chr +24 -0
  56. package/lib/swipl/doc/packages/examples/chr/fibonacci.chr +31 -0
  57. package/lib/swipl/doc/packages/examples/chr/gcd.chr +28 -0
  58. package/lib/swipl/doc/packages/examples/chr/leq.chr +34 -0
  59. package/lib/swipl/doc/packages/examples/chr/listdom.chr +138 -0
  60. package/lib/swipl/doc/packages/examples/chr/primes.chr +29 -0
  61. package/lib/swipl/doc/packages/examples/http/README.md +98 -0
  62. package/lib/swipl/doc/packages/examples/http/calc.pl +92 -0
  63. package/lib/swipl/doc/packages/examples/http/demo_body.pl +232 -0
  64. package/lib/swipl/doc/packages/examples/http/demo_client.pl +165 -0
  65. package/lib/swipl/doc/packages/examples/http/demo_daemon.pl +38 -0
  66. package/lib/swipl/doc/packages/examples/http/demo_files.pl +50 -0
  67. package/lib/swipl/doc/packages/examples/http/demo_hello.pl +15 -0
  68. package/lib/swipl/doc/packages/examples/http/demo_login.pl +280 -0
  69. package/lib/swipl/doc/packages/examples/http/demo_openid.pl +177 -0
  70. package/lib/swipl/doc/packages/examples/http/demo_pwp.pl +20 -0
  71. package/lib/swipl/doc/packages/examples/http/demo_rest.pl +56 -0
  72. package/lib/swipl/doc/packages/examples/http/demo_threads.pl +52 -0
  73. package/lib/swipl/doc/packages/examples/http/linux-init-script +126 -0
  74. package/lib/swipl/doc/packages/examples/http/pwp/context.pwp +23 -0
  75. package/lib/swipl/doc/packages/examples/http/pwp/index.pwp +25 -0
  76. package/lib/swipl/doc/packages/examples/http/pwp/pwp1.pwp +12 -0
  77. package/lib/swipl/doc/packages/examples/http/pwp/pwp2.pwp +10 -0
  78. package/lib/swipl/doc/packages/examples/http/pwp/pwp3.pwp +25 -0
  79. package/lib/swipl/doc/packages/examples/http/pwp/pwp4.pwp +23 -0
  80. package/lib/swipl/doc/packages/examples/http/pwp/pwp5.pwp +11 -0
  81. package/lib/swipl/doc/packages/examples/http/pwp/pwp6.pwp +3 -0
  82. package/lib/swipl/doc/packages/examples/http/pwp/pwp7.pwp +3 -0
  83. package/lib/swipl/doc/packages/examples/http/pwp/pwp8.pwp +3 -0
  84. package/lib/swipl/doc/packages/examples/http/pwp/pwpdb.pl +12 -0
  85. package/lib/swipl/doc/packages/examples/http/systemd-script.service +18 -0
  86. package/lib/swipl/doc/packages/examples/http/upstart-script.conf +20 -0
  87. package/lib/swipl/doc/packages/examples/plunit/read.pl +17 -0
  88. package/lib/swipl/doc/packages/examples/plunit/simple.pl +33 -0
  89. package/lib/swipl/doc/packages/examples/ssl/client.pl +83 -0
  90. package/lib/swipl/doc/packages/examples/ssl/etc/README +52 -0
  91. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.p12 +0 -0
  92. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-cert.pem +85 -0
  93. package/lib/swipl/doc/packages/examples/ssl/etc/client/client-key.pem +30 -0
  94. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/cacert.pem +82 -0
  95. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/careq.pem +18 -0
  96. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/crlnumber +1 -0
  97. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt +3 -0
  98. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/index.txt.attr +1 -0
  99. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7C.pem +85 -0
  100. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/newcerts/9DC08797A0F63F7D.pem +85 -0
  101. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/private/cakey.pem +30 -0
  102. package/lib/swipl/doc/packages/examples/ssl/etc/demoCA/serial +1 -0
  103. package/lib/swipl/doc/packages/examples/ssl/etc/server/server-cert.pem +85 -0
  104. package/lib/swipl/doc/packages/examples/ssl/etc/server/server-key.pem +30 -0
  105. package/lib/swipl/doc/packages/examples/ssl/https.pl +267 -0
  106. package/lib/swipl/doc/packages/examples/ssl/server.pl +106 -0
  107. package/lib/swipl/include/SWI-Prolog.h +1544 -0
  108. package/lib/swipl/include/SWI-Stream.h +537 -0
  109. package/lib/swipl/include/Yap/YapInterface.h +283 -0
  110. package/lib/swipl/include/sicstus/sicstus.h +452 -0
  111. package/lib/swipl/lib/x86_64-linux/cgi.so +0 -0
  112. package/lib/swipl/lib/x86_64-linux/crypt.so +0 -0
  113. package/lib/swipl/lib/x86_64-linux/crypto4pl.so +0 -0
  114. package/lib/swipl/lib/x86_64-linux/double_metaphone.so +0 -0
  115. package/lib/swipl/lib/x86_64-linux/files.so +0 -0
  116. package/lib/swipl/lib/x86_64-linux/hashstream.so +0 -0
  117. package/lib/swipl/lib/x86_64-linux/http_stream.so +0 -0
  118. package/lib/swipl/lib/x86_64-linux/isub.so +0 -0
  119. package/lib/swipl/lib/x86_64-linux/json.so +0 -0
  120. package/lib/swipl/lib/x86_64-linux/libswipl.so.10 +0 -0
  121. package/lib/swipl/lib/x86_64-linux/mallocinfo.so +0 -0
  122. package/lib/swipl/lib/x86_64-linux/md54pl.so +0 -0
  123. package/lib/swipl/lib/x86_64-linux/memfile.so +0 -0
  124. package/lib/swipl/lib/x86_64-linux/ntriples.so +0 -0
  125. package/lib/swipl/lib/x86_64-linux/pcre4pl.so +0 -0
  126. package/lib/swipl/lib/x86_64-linux/porter_stem.so +0 -0
  127. package/lib/swipl/lib/x86_64-linux/process.so +0 -0
  128. package/lib/swipl/lib/x86_64-linux/prolog_stream.so +0 -0
  129. package/lib/swipl/lib/x86_64-linux/rdf_db.so +0 -0
  130. package/lib/swipl/lib/x86_64-linux/readutil.so +0 -0
  131. package/lib/swipl/lib/x86_64-linux/rlimit.so +0 -0
  132. package/lib/swipl/lib/x86_64-linux/sched.so +0 -0
  133. package/lib/swipl/lib/x86_64-linux/sgml2pl.so +0 -0
  134. package/lib/swipl/lib/x86_64-linux/sha4pl.so +0 -0
  135. package/lib/swipl/lib/x86_64-linux/snowball.so +0 -0
  136. package/lib/swipl/lib/x86_64-linux/socket.so +0 -0
  137. package/lib/swipl/lib/x86_64-linux/ssl4pl.so +0 -0
  138. package/lib/swipl/lib/x86_64-linux/streaminfo.so +0 -0
  139. package/lib/swipl/lib/x86_64-linux/syslog.so +0 -0
  140. package/lib/swipl/lib/x86_64-linux/time.so +0 -0
  141. package/lib/swipl/lib/x86_64-linux/turtle.so +0 -0
  142. package/lib/swipl/lib/x86_64-linux/uid.so +0 -0
  143. package/lib/swipl/lib/x86_64-linux/unix.so +0 -0
  144. package/lib/swipl/lib/x86_64-linux/uri.so +0 -0
  145. package/lib/swipl/lib/x86_64-linux/websocket.so +0 -0
  146. package/lib/swipl/lib/x86_64-linux/zlib4pl.so +0 -0
  147. package/lib/swipl/library/INDEX.pl +1020 -0
  148. package/lib/swipl/library/aggregate.pl +755 -0
  149. package/lib/swipl/library/ansi_term.pl +653 -0
  150. package/lib/swipl/library/apply.pl +426 -0
  151. package/lib/swipl/library/apply_macros.pl +497 -0
  152. package/lib/swipl/library/arithmetic.pl +320 -0
  153. package/lib/swipl/library/assoc.pl +522 -0
  154. package/lib/swipl/library/atom.pl +169 -0
  155. package/lib/swipl/library/backcomp.pl +688 -0
  156. package/lib/swipl/library/base32.pl +291 -0
  157. package/lib/swipl/library/base64.pl +441 -0
  158. package/lib/swipl/library/broadcast.pl +161 -0
  159. package/lib/swipl/library/build/cmake.pl +137 -0
  160. package/lib/swipl/library/build/conan.pl +232 -0
  161. package/lib/swipl/library/build/make.pl +168 -0
  162. package/lib/swipl/library/build/tools.pl +825 -0
  163. package/lib/swipl/library/charsio.pl +195 -0
  164. package/lib/swipl/library/check.pl +1097 -0
  165. package/lib/swipl/library/check_installation.pl +912 -0
  166. package/lib/swipl/library/clp/INDEX.pl +157 -0
  167. package/lib/swipl/library/clp/bounds.pl +2036 -0
  168. package/lib/swipl/library/clp/clp_distinct.pl +263 -0
  169. package/lib/swipl/library/clp/clp_events.pl +92 -0
  170. package/lib/swipl/library/clp/clpb.pl +1896 -0
  171. package/lib/swipl/library/clp/clpfd.pl +7906 -0
  172. package/lib/swipl/library/clp/simplex.pl +1580 -0
  173. package/lib/swipl/library/codesio.pl +182 -0
  174. package/lib/swipl/library/coinduction.pl +183 -0
  175. package/lib/swipl/library/console_input.pl +289 -0
  176. package/lib/swipl/library/csv.pl +611 -0
  177. package/lib/swipl/library/ctypes.pl +161 -0
  178. package/lib/swipl/library/date.pl +370 -0
  179. package/lib/swipl/library/dcg/INDEX.pl +35 -0
  180. package/lib/swipl/library/dcg/basics.pl +514 -0
  181. package/lib/swipl/library/dcg/high_order.pl +227 -0
  182. package/lib/swipl/library/debug.pl +499 -0
  183. package/lib/swipl/library/dialect/bim.pl +186 -0
  184. package/lib/swipl/library/dialect/commons.pl +77 -0
  185. package/lib/swipl/library/dialect/eclipse/test_util_iso.pl +355 -0
  186. package/lib/swipl/library/dialect/hprolog/format.pl +44 -0
  187. package/lib/swipl/library/dialect/hprolog.pl +314 -0
  188. package/lib/swipl/library/dialect/ifprolog.pl +1317 -0
  189. package/lib/swipl/library/dialect/iso/iso_predicates.pl +277 -0
  190. package/lib/swipl/library/dialect/sicstus/README.TXT +1 -0
  191. package/lib/swipl/library/dialect/sicstus/arrays.pl +121 -0
  192. package/lib/swipl/library/dialect/sicstus/block.pl +278 -0
  193. package/lib/swipl/library/dialect/sicstus/lists.pl +167 -0
  194. package/lib/swipl/library/dialect/sicstus/ordsets.pl +52 -0
  195. package/lib/swipl/library/dialect/sicstus/sockets.pl +174 -0
  196. package/lib/swipl/library/dialect/sicstus/system.pl +262 -0
  197. package/lib/swipl/library/dialect/sicstus/terms.pl +57 -0
  198. package/lib/swipl/library/dialect/sicstus/timeout.pl +92 -0
  199. package/lib/swipl/library/dialect/sicstus.pl +582 -0
  200. package/lib/swipl/library/dialect/sicstus4/aggregate.pl +60 -0
  201. package/lib/swipl/library/dialect/sicstus4/between.pl +62 -0
  202. package/lib/swipl/library/dialect/sicstus4/clpfd.pl +75 -0
  203. package/lib/swipl/library/dialect/sicstus4/file_systems.pl +413 -0
  204. package/lib/swipl/library/dialect/sicstus4/lists.pl +274 -0
  205. package/lib/swipl/library/dialect/sicstus4/ordsets.pl +54 -0
  206. package/lib/swipl/library/dialect/sicstus4/samsort.pl +86 -0
  207. package/lib/swipl/library/dialect/sicstus4/sets.pl +124 -0
  208. package/lib/swipl/library/dialect/sicstus4/sockets.pl +164 -0
  209. package/lib/swipl/library/dialect/sicstus4/system.pl +80 -0
  210. package/lib/swipl/library/dialect/sicstus4/terms.pl +89 -0
  211. package/lib/swipl/library/dialect/sicstus4/timeout.pl +43 -0
  212. package/lib/swipl/library/dialect/sicstus4/types.pl +103 -0
  213. package/lib/swipl/library/dialect/sicstus4.pl +200 -0
  214. package/lib/swipl/library/dialect/swi/syspred_options.pl +250 -0
  215. package/lib/swipl/library/dialect/xsb/README.md +20 -0
  216. package/lib/swipl/library/dialect/xsb/basics.pl +318 -0
  217. package/lib/swipl/library/dialect/xsb/consult.pl +87 -0
  218. package/lib/swipl/library/dialect/xsb/curr_sym.pl +57 -0
  219. package/lib/swipl/library/dialect/xsb/error_handler.pl +111 -0
  220. package/lib/swipl/library/dialect/xsb/gensym.pl +53 -0
  221. package/lib/swipl/library/dialect/xsb/gpp.pl +138 -0
  222. package/lib/swipl/library/dialect/xsb/intern.pl +48 -0
  223. package/lib/swipl/library/dialect/xsb/lists.pl +47 -0
  224. package/lib/swipl/library/dialect/xsb/machine.pl +295 -0
  225. package/lib/swipl/library/dialect/xsb/ordsets.pl +53 -0
  226. package/lib/swipl/library/dialect/xsb/setof.pl +54 -0
  227. package/lib/swipl/library/dialect/xsb/source.pl +308 -0
  228. package/lib/swipl/library/dialect/xsb/standard.pl +169 -0
  229. package/lib/swipl/library/dialect/xsb/storage.pl +70 -0
  230. package/lib/swipl/library/dialect/xsb/string.pl +76 -0
  231. package/lib/swipl/library/dialect/xsb/thread.pl +62 -0
  232. package/lib/swipl/library/dialect/xsb/timed_call.pl +158 -0
  233. package/lib/swipl/library/dialect/xsb.pl +688 -0
  234. package/lib/swipl/library/dialect/yap/README.TXT +8 -0
  235. package/lib/swipl/library/dialect/yap.pl +283 -0
  236. package/lib/swipl/library/dialect.pl +123 -0
  237. package/lib/swipl/library/dicts.pl +399 -0
  238. package/lib/swipl/library/dif.pl +426 -0
  239. package/lib/swipl/library/edinburgh.pl +138 -0
  240. package/lib/swipl/library/edit.pl +783 -0
  241. package/lib/swipl/library/error.pl +495 -0
  242. package/lib/swipl/library/exceptions.pl +231 -0
  243. package/lib/swipl/library/explain.pl +543 -0
  244. package/lib/swipl/library/ext/RDF/INDEX.pl +25 -0
  245. package/lib/swipl/library/ext/RDF/rdf.pl +450 -0
  246. package/lib/swipl/library/ext/RDF/rdf_parser.pl +649 -0
  247. package/lib/swipl/library/ext/RDF/rdf_triple.pl +448 -0
  248. package/lib/swipl/library/ext/RDF/rdf_write.pl +701 -0
  249. package/lib/swipl/library/ext/RDF/rewrite_term.pl +177 -0
  250. package/lib/swipl/library/ext/chr/chr/a_star.pl +80 -0
  251. package/lib/swipl/library/ext/chr/chr/binomialheap.pl +142 -0
  252. package/lib/swipl/library/ext/chr/chr/builtins.pl +629 -0
  253. package/lib/swipl/library/ext/chr/chr/chr_compiler_errors.pl +179 -0
  254. package/lib/swipl/library/ext/chr/chr/chr_compiler_options.pl +382 -0
  255. package/lib/swipl/library/ext/chr/chr/chr_compiler_utility.pl +338 -0
  256. package/lib/swipl/library/ext/chr/chr/chr_debug.pl +59 -0
  257. package/lib/swipl/library/ext/chr/chr/chr_hashtable_store.pl +425 -0
  258. package/lib/swipl/library/ext/chr/chr/chr_integertable_store.pl +139 -0
  259. package/lib/swipl/library/ext/chr/chr/chr_messages.pl +176 -0
  260. package/lib/swipl/library/ext/chr/chr/chr_op.pl +53 -0
  261. package/lib/swipl/library/ext/chr/chr/chr_runtime.pl +1016 -0
  262. package/lib/swipl/library/ext/chr/chr/chr_translate.pl +25424 -0
  263. package/lib/swipl/library/ext/chr/chr/clean_code.pl +252 -0
  264. package/lib/swipl/library/ext/chr/chr/find.pl +78 -0
  265. package/lib/swipl/library/ext/chr/chr/guard_entailment.pl +19432 -0
  266. package/lib/swipl/library/ext/chr/chr/listmap.pl +108 -0
  267. package/lib/swipl/library/ext/chr/chr/pairlist.pl +78 -0
  268. package/lib/swipl/library/ext/chr/chr.pl +686 -0
  269. package/lib/swipl/library/ext/clib/INDEX.pl +158 -0
  270. package/lib/swipl/library/ext/clib/cgi.pl +86 -0
  271. package/lib/swipl/library/ext/clib/crypt.pl +44 -0
  272. package/lib/swipl/library/ext/clib/filesex.pl +644 -0
  273. package/lib/swipl/library/ext/clib/hash_stream.pl +119 -0
  274. package/lib/swipl/library/ext/clib/mallocinfo.pl +138 -0
  275. package/lib/swipl/library/ext/clib/md5.pl +68 -0
  276. package/lib/swipl/library/ext/clib/memfile.pl +61 -0
  277. package/lib/swipl/library/ext/clib/process.pl +573 -0
  278. package/lib/swipl/library/ext/clib/prolog_server.pl +157 -0
  279. package/lib/swipl/library/ext/clib/prolog_stream.pl +80 -0
  280. package/lib/swipl/library/ext/clib/rlimit.pl +54 -0
  281. package/lib/swipl/library/ext/clib/sched.pl +85 -0
  282. package/lib/swipl/library/ext/clib/sha.pl +162 -0
  283. package/lib/swipl/library/ext/clib/socket.pl +1102 -0
  284. package/lib/swipl/library/ext/clib/streaminfo.pl +103 -0
  285. package/lib/swipl/library/ext/clib/streampool.pl +136 -0
  286. package/lib/swipl/library/ext/clib/syslog.pl +180 -0
  287. package/lib/swipl/library/ext/clib/time.pl +194 -0
  288. package/lib/swipl/library/ext/clib/udp_broadcast.pl +975 -0
  289. package/lib/swipl/library/ext/clib/uid.pl +220 -0
  290. package/lib/swipl/library/ext/clib/unix.pl +317 -0
  291. package/lib/swipl/library/ext/clib/uri.pl +530 -0
  292. package/lib/swipl/library/ext/clib/uuid.pl +207 -0
  293. package/lib/swipl/library/ext/http/http/INDEX.pl +266 -0
  294. package/lib/swipl/library/ext/http/http/README.md +34 -0
  295. package/lib/swipl/library/ext/http/http/ax.pl +189 -0
  296. package/lib/swipl/library/ext/http/http/dcg_basics.pl +49 -0
  297. package/lib/swipl/library/ext/http/http/graphql.pl +1367 -0
  298. package/lib/swipl/library/ext/http/http/html_decl.pl +416 -0
  299. package/lib/swipl/library/ext/http/http/html_head.pl +654 -0
  300. package/lib/swipl/library/ext/http/http/html_quasiquotations.pl +120 -0
  301. package/lib/swipl/library/ext/http/http/html_write.pl +1425 -0
  302. package/lib/swipl/library/ext/http/http/htmx.pl +139 -0
  303. package/lib/swipl/library/ext/http/http/http_authenticate.pl +364 -0
  304. package/lib/swipl/library/ext/http/http/http_client.pl +412 -0
  305. package/lib/swipl/library/ext/http/http/http_cookie.pl +245 -0
  306. package/lib/swipl/library/ext/http/http/http_cors.pl +176 -0
  307. package/lib/swipl/library/ext/http/http/http_digest.pl +820 -0
  308. package/lib/swipl/library/ext/http/http/http_dirindex.pl +296 -0
  309. package/lib/swipl/library/ext/http/http/http_dispatch.pl +1552 -0
  310. package/lib/swipl/library/ext/http/http/http_dyn_workers.pl +214 -0
  311. package/lib/swipl/library/ext/http/http/http_error.pl +126 -0
  312. package/lib/swipl/library/ext/http/http/http_exception.pl +225 -0
  313. package/lib/swipl/library/ext/http/http/http_files.pl +163 -0
  314. package/lib/swipl/library/ext/http/http/http_header.pl +2820 -0
  315. package/lib/swipl/library/ext/http/http/http_hook.pl +106 -0
  316. package/lib/swipl/library/ext/http/http/http_host.pl +204 -0
  317. package/lib/swipl/library/ext/http/http/http_load.pl +113 -0
  318. package/lib/swipl/library/ext/http/http/http_log.pl +738 -0
  319. package/lib/swipl/library/ext/http/http/http_multipart_plugin.pl +232 -0
  320. package/lib/swipl/library/ext/http/http/http_open.pl +1821 -0
  321. package/lib/swipl/library/ext/http/http/http_openid.pl +1561 -0
  322. package/lib/swipl/library/ext/http/http/http_parameters.pl +504 -0
  323. package/lib/swipl/library/ext/http/http/http_path.pl +380 -0
  324. package/lib/swipl/library/ext/http/http/http_proxy.pl +80 -0
  325. package/lib/swipl/library/ext/http/http/http_pwp.pl +351 -0
  326. package/lib/swipl/library/ext/http/http/http_redis_plugin.pl +332 -0
  327. package/lib/swipl/library/ext/http/http/http_server.pl +105 -0
  328. package/lib/swipl/library/ext/http/http/http_server_files.pl +126 -0
  329. package/lib/swipl/library/ext/http/http/http_server_health.pl +186 -0
  330. package/lib/swipl/library/ext/http/http/http_session.pl +1040 -0
  331. package/lib/swipl/library/ext/http/http/http_sgml_plugin.pl +137 -0
  332. package/lib/swipl/library/ext/http/http/http_stream.pl +376 -0
  333. package/lib/swipl/library/ext/http/http/http_unix_daemon.pl +989 -0
  334. package/lib/swipl/library/ext/http/http/http_wrapper.pl +559 -0
  335. package/lib/swipl/library/ext/http/http/hub.pl +600 -0
  336. package/lib/swipl/library/ext/http/http/js_write.pl +461 -0
  337. package/lib/swipl/library/ext/http/http/mimepack.pl +224 -0
  338. package/lib/swipl/library/ext/http/http/mimetype.pl +276 -0
  339. package/lib/swipl/library/ext/http/http/term_html.pl +797 -0
  340. package/lib/swipl/library/ext/http/http/thread_httpd.pl +1181 -0
  341. package/lib/swipl/library/ext/http/http/web/css/dirindex.css +24 -0
  342. package/lib/swipl/library/ext/http/http/web/css/openid.css +57 -0
  343. package/lib/swipl/library/ext/http/http/web/icons/back.png +0 -0
  344. package/lib/swipl/library/ext/http/http/web/icons/c.png +0 -0
  345. package/lib/swipl/library/ext/http/http/web/icons/compressed.png +0 -0
  346. package/lib/swipl/library/ext/http/http/web/icons/folder.png +0 -0
  347. package/lib/swipl/library/ext/http/http/web/icons/generic.png +0 -0
  348. package/lib/swipl/library/ext/http/http/web/icons/layout.png +0 -0
  349. package/lib/swipl/library/ext/http/http/web/icons/openid-logo-square.png +0 -0
  350. package/lib/swipl/library/ext/http/http/web/icons/openid-logo-tiny.png +0 -0
  351. package/lib/swipl/library/ext/http/http/websocket.pl +729 -0
  352. package/lib/swipl/library/ext/http/http/yadis.pl +205 -0
  353. package/lib/swipl/library/ext/json/INDEX.pl +36 -0
  354. package/lib/swipl/library/ext/json/http/INDEX.pl +16 -0
  355. package/lib/swipl/library/ext/json/http/http_json.pl +490 -0
  356. package/lib/swipl/library/ext/json/http/js_grammar.pl +53 -0
  357. package/lib/swipl/library/ext/json/http/json.pl +48 -0
  358. package/lib/swipl/library/ext/json/http/json_convert.pl +48 -0
  359. package/lib/swipl/library/ext/json/json.pl +1215 -0
  360. package/lib/swipl/library/ext/json/json_convert.pl +681 -0
  361. package/lib/swipl/library/ext/json/json_grammar.pl +349 -0
  362. package/lib/swipl/library/ext/json/json_rpc_client.pl +423 -0
  363. package/lib/swipl/library/ext/json/json_rpc_common.pl +104 -0
  364. package/lib/swipl/library/ext/json/json_rpc_server.pl +489 -0
  365. package/lib/swipl/library/ext/json/json_schema.pl +2111 -0
  366. package/lib/swipl/library/ext/nlp/INDEX.pl +15 -0
  367. package/lib/swipl/library/ext/nlp/double_metaphone.pl +86 -0
  368. package/lib/swipl/library/ext/nlp/isub.pl +162 -0
  369. package/lib/swipl/library/ext/nlp/porter_stem.pl +50 -0
  370. package/lib/swipl/library/ext/nlp/snowball.pl +97 -0
  371. package/lib/swipl/library/ext/pcre/INDEX.pl +17 -0
  372. package/lib/swipl/library/ext/pcre/pcre.pl +974 -0
  373. package/lib/swipl/library/ext/plunit/INDEX.pl +20 -0
  374. package/lib/swipl/library/ext/plunit/plunit.pl +2631 -0
  375. package/lib/swipl/library/ext/plunit/test_wizard.pl +249 -0
  376. package/lib/swipl/library/ext/semweb/semweb/INDEX.pl +288 -0
  377. package/lib/swipl/library/ext/semweb/semweb/rdf11.pl +2106 -0
  378. package/lib/swipl/library/ext/semweb/semweb/rdf11_containers.pl +299 -0
  379. package/lib/swipl/library/ext/semweb/semweb/rdf_cache.pl +278 -0
  380. package/lib/swipl/library/ext/semweb/semweb/rdf_compare.pl +132 -0
  381. package/lib/swipl/library/ext/semweb/semweb/rdf_db.pl +3468 -0
  382. package/lib/swipl/library/ext/semweb/semweb/rdf_edit.pl +1145 -0
  383. package/lib/swipl/library/ext/semweb/semweb/rdf_http_plugin.pl +274 -0
  384. package/lib/swipl/library/ext/semweb/semweb/rdf_library.pl +1021 -0
  385. package/lib/swipl/library/ext/semweb/semweb/rdf_litindex.pl +1035 -0
  386. package/lib/swipl/library/ext/semweb/semweb/rdf_ntriples.pl +422 -0
  387. package/lib/swipl/library/ext/semweb/semweb/rdf_persistency.pl +1576 -0
  388. package/lib/swipl/library/ext/semweb/semweb/rdf_portray.pl +182 -0
  389. package/lib/swipl/library/ext/semweb/semweb/rdf_prefixes.pl +681 -0
  390. package/lib/swipl/library/ext/semweb/semweb/rdf_sandbox.pl +153 -0
  391. package/lib/swipl/library/ext/semweb/semweb/rdf_turtle.pl +54 -0
  392. package/lib/swipl/library/ext/semweb/semweb/rdf_turtle_write.pl +1587 -0
  393. package/lib/swipl/library/ext/semweb/semweb/rdf_zlib_plugin.pl +52 -0
  394. package/lib/swipl/library/ext/semweb/semweb/rdfa.pl +1510 -0
  395. package/lib/swipl/library/ext/semweb/semweb/rdfs.pl +475 -0
  396. package/lib/swipl/library/ext/semweb/semweb/sparql_client.pl +643 -0
  397. package/lib/swipl/library/ext/semweb/semweb/turtle.pl +455 -0
  398. package/lib/swipl/library/ext/sgml/DTD/HTML4.dcl +88 -0
  399. package/lib/swipl/library/ext/sgml/DTD/HTML4.dtd +1092 -0
  400. package/lib/swipl/library/ext/sgml/DTD/HTML4.soc +6 -0
  401. package/lib/swipl/library/ext/sgml/DTD/HTML5.dtd +906 -0
  402. package/lib/swipl/library/ext/sgml/DTD/HTMLlat1.ent +195 -0
  403. package/lib/swipl/library/ext/sgml/DTD/HTMLspec.ent +77 -0
  404. package/lib/swipl/library/ext/sgml/DTD/HTMLsym.ent +241 -0
  405. package/lib/swipl/library/ext/sgml/INDEX.pl +64 -0
  406. package/lib/swipl/library/ext/sgml/c14n2.pl +203 -0
  407. package/lib/swipl/library/ext/sgml/iso_639.pl +631 -0
  408. package/lib/swipl/library/ext/sgml/pwp.pl +705 -0
  409. package/lib/swipl/library/ext/sgml/sgml.pl +815 -0
  410. package/lib/swipl/library/ext/sgml/sgml_write.pl +1003 -0
  411. package/lib/swipl/library/ext/sgml/xpath.pl +620 -0
  412. package/lib/swipl/library/ext/sgml/xsdp_types.pl +232 -0
  413. package/lib/swipl/library/ext/ssl/INDEX.pl +60 -0
  414. package/lib/swipl/library/ext/ssl/crypto.pl +1015 -0
  415. package/lib/swipl/library/ext/ssl/http/INDEX.pl +5 -0
  416. package/lib/swipl/library/ext/ssl/http/http_ssl_plugin.pl +296 -0
  417. package/lib/swipl/library/ext/ssl/saml.pl +609 -0
  418. package/lib/swipl/library/ext/ssl/ssl.pl +647 -0
  419. package/lib/swipl/library/ext/ssl/xmldsig.pl +391 -0
  420. package/lib/swipl/library/ext/ssl/xmlenc.pl +354 -0
  421. package/lib/swipl/library/ext/zlib/INDEX.pl +8 -0
  422. package/lib/swipl/library/ext/zlib/zlib.pl +112 -0
  423. package/lib/swipl/library/fastrw.pl +105 -0
  424. package/lib/swipl/library/files.pl +80 -0
  425. package/lib/swipl/library/gensym.pl +111 -0
  426. package/lib/swipl/library/git.pl +1027 -0
  427. package/lib/swipl/library/hashtable.pl +365 -0
  428. package/lib/swipl/library/heaps.pl +252 -0
  429. package/lib/swipl/library/hotfix.pl +239 -0
  430. package/lib/swipl/library/http/jquery.pl +103 -0
  431. package/lib/swipl/library/http/web/js/jquery-3.6.0.min.js +2 -0
  432. package/lib/swipl/library/increval.pl +217 -0
  433. package/lib/swipl/library/intercept.pl +263 -0
  434. package/lib/swipl/library/iostream.pl +237 -0
  435. package/lib/swipl/library/iri_scheme/file.pl +70 -0
  436. package/lib/swipl/library/lazy_lists.pl +481 -0
  437. package/lib/swipl/library/listing.pl +1362 -0
  438. package/lib/swipl/library/lists.pl +860 -0
  439. package/lib/swipl/library/lynx/INDEX.pl +14 -0
  440. package/lib/swipl/library/lynx/format.pl +380 -0
  441. package/lib/swipl/library/lynx/html_style.pl +129 -0
  442. package/lib/swipl/library/lynx/html_text.pl +865 -0
  443. package/lib/swipl/library/lynx/pldoc_style.pl +87 -0
  444. package/lib/swipl/library/macros.pl +451 -0
  445. package/lib/swipl/library/main.pl +1200 -0
  446. package/lib/swipl/library/make.pl +197 -0
  447. package/lib/swipl/library/modules.pl +129 -0
  448. package/lib/swipl/library/nb_rbtrees.pl +267 -0
  449. package/lib/swipl/library/nb_set.pl +203 -0
  450. package/lib/swipl/library/obfuscate.pl +115 -0
  451. package/lib/swipl/library/occurs.pl +241 -0
  452. package/lib/swipl/library/operators.pl +182 -0
  453. package/lib/swipl/library/option.pl +388 -0
  454. package/lib/swipl/library/optparse.pl +966 -0
  455. package/lib/swipl/library/ordsets.pl +518 -0
  456. package/lib/swipl/library/oset.pl +160 -0
  457. package/lib/swipl/library/pairs.pl +187 -0
  458. package/lib/swipl/library/persistency.pl +713 -0
  459. package/lib/swipl/library/pio.pl +47 -0
  460. package/lib/swipl/library/portray_text.pl +277 -0
  461. package/lib/swipl/library/pprint.pl +940 -0
  462. package/lib/swipl/library/predicate_options.pl +975 -0
  463. package/lib/swipl/library/prolog_autoload.pl +233 -0
  464. package/lib/swipl/library/prolog_breakpoints.pl +396 -0
  465. package/lib/swipl/library/prolog_clause.pl +1104 -0
  466. package/lib/swipl/library/prolog_code.pl +416 -0
  467. package/lib/swipl/library/prolog_codewalk.pl +1248 -0
  468. package/lib/swipl/library/prolog_colour.pl +3301 -0
  469. package/lib/swipl/library/prolog_colour.qlf +0 -0
  470. package/lib/swipl/library/prolog_config.pl +154 -0
  471. package/lib/swipl/library/prolog_coverage.pl +1333 -0
  472. package/lib/swipl/library/prolog_debug.pl +404 -0
  473. package/lib/swipl/library/prolog_deps.pl +675 -0
  474. package/lib/swipl/library/prolog_evaluable.pl +234 -0
  475. package/lib/swipl/library/prolog_format.pl +219 -0
  476. package/lib/swipl/library/prolog_history.pl +161 -0
  477. package/lib/swipl/library/prolog_jiti.pl +333 -0
  478. package/lib/swipl/library/prolog_locale.pl +61 -0
  479. package/lib/swipl/library/prolog_metainference.pl +307 -0
  480. package/lib/swipl/library/prolog_pack.pl +3906 -0
  481. package/lib/swipl/library/prolog_profile.pl +346 -0
  482. package/lib/swipl/library/prolog_qlfmake.pl +533 -0
  483. package/lib/swipl/library/prolog_source.pl +1188 -0
  484. package/lib/swipl/library/prolog_stack.pl +794 -0
  485. package/lib/swipl/library/prolog_trace.pl +365 -0
  486. package/lib/swipl/library/prolog_versions.pl +347 -0
  487. package/lib/swipl/library/prolog_wrap.pl +164 -0
  488. package/lib/swipl/library/prolog_xref.pl +3090 -0
  489. package/lib/swipl/library/prolog_xref.qlf +0 -0
  490. package/lib/swipl/library/pure_input.pl +266 -0
  491. package/lib/swipl/library/qpforeign.pl +695 -0
  492. package/lib/swipl/library/qsave.pl +1516 -0
  493. package/lib/swipl/library/quasi_quotations.pl +300 -0
  494. package/lib/swipl/library/quintus.pl +437 -0
  495. package/lib/swipl/library/random.pl +459 -0
  496. package/lib/swipl/library/rbtrees.pl +1153 -0
  497. package/lib/swipl/library/readln.pl +256 -0
  498. package/lib/swipl/library/readutil.pl +304 -0
  499. package/lib/swipl/library/record.pl +544 -0
  500. package/lib/swipl/library/rwlocks.pl +172 -0
  501. package/lib/swipl/library/sandbox.pl +1384 -0
  502. package/lib/swipl/library/semweb/dc.rdfs +198 -0
  503. package/lib/swipl/library/semweb/eor.rdfs +95 -0
  504. package/lib/swipl/library/semweb/owl.owl +287 -0
  505. package/lib/swipl/library/semweb/rdf_library.ttl +90 -0
  506. package/lib/swipl/library/semweb/rdfs.rdfs +251 -0
  507. package/lib/swipl/library/settings.pl +755 -0
  508. package/lib/swipl/library/shell.pl +462 -0
  509. package/lib/swipl/library/shlib.pl +670 -0
  510. package/lib/swipl/library/solution_sequences.pl +439 -0
  511. package/lib/swipl/library/sort.pl +119 -0
  512. package/lib/swipl/library/statistics.pl +541 -0
  513. package/lib/swipl/library/streams.pl +118 -0
  514. package/lib/swipl/library/strings.pl +469 -0
  515. package/lib/swipl/library/system.pl +95 -0
  516. package/lib/swipl/library/tables.pl +381 -0
  517. package/lib/swipl/library/tableutil.pl +771 -0
  518. package/lib/swipl/library/tabling.pl +42 -0
  519. package/lib/swipl/library/terms.pl +457 -0
  520. package/lib/swipl/library/theme/auto.pl +61 -0
  521. package/lib/swipl/library/theme/dark.pl +455 -0
  522. package/lib/swipl/library/theme/light.pl +45 -0
  523. package/lib/swipl/library/thread.pl +810 -0
  524. package/lib/swipl/library/thread_pool.pl +508 -0
  525. package/lib/swipl/library/threadutil.pl +574 -0
  526. package/lib/swipl/library/tty.pl +316 -0
  527. package/lib/swipl/library/ugraphs.pl +644 -0
  528. package/lib/swipl/library/unicode/INDEX.pl +6 -0
  529. package/lib/swipl/library/unicode/blocks.pl +414 -0
  530. package/lib/swipl/library/url.pl +1129 -0
  531. package/lib/swipl/library/utf8.pl +145 -0
  532. package/lib/swipl/library/varnumbers.pl +221 -0
  533. package/lib/swipl/library/vm.pl +251 -0
  534. package/lib/swipl/library/wfs.pl +205 -0
  535. package/lib/swipl/library/when.pl +263 -0
  536. package/lib/swipl/library/writef.pl +278 -0
  537. package/lib/swipl/library/www_browser.pl +251 -0
  538. package/lib/swipl/library/yall.pl +574 -0
  539. package/lib/swipl/library/zip.pl +211 -0
  540. package/lib/swipl/swipl.home +1 -0
  541. package/lib/vendor/libcrypto.so.3 +0 -0
  542. package/lib/vendor/libpcre2-8.so.0 +0 -0
  543. package/lib/vendor/libssl.so.3 +0 -0
  544. package/lib/vendor/libz.so.1 +0 -0
  545. package/licenses/OpenSSL-LICENSE.txt +177 -0
  546. package/licenses/PCRE2-COPYING +5 -0
  547. package/licenses/README.md +12 -0
  548. package/licenses/SWI-Prolog-LICENSE +41 -0
  549. package/licenses/zlib-LICENSE +22 -0
  550. package/package.json +27 -0
@@ -0,0 +1,60 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ WWW: http://www.swi-prolog.org
4
+ Copyright (c) 2021, SWI-Prolog Solutions b.v.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions
9
+ are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+
14
+ 2. Redistributions in binary form must reproduce the above copyright
15
+ notice, this list of conditions and the following disclaimer in
16
+ the documentation and/or other materials provided with the
17
+ distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ POSSIBILITY OF SUCH DAMAGE.
31
+ */
32
+
33
+ :- module(sicstus4_aggregate,
34
+ [ term_variables/3, % +Term, +Vars0, -Vars
35
+ % This predicate is built-in on SWI.
36
+ % We re-export it here to avoid warnings when SICStus code
37
+ % explicitly imports it from library(aggregate).
38
+ forall/2 % :Generator, :Goal
39
+ ]).
40
+ :- reexport('../../aggregate').
41
+
42
+ :- multifile sicstus4:rename_module/2.
43
+
44
+ sicstus4:rename_module(aggregate, sicstus4_aggregate).
45
+
46
+ /** <module> SICStus 4 library(aggregate).
47
+
48
+ @see https://sicstus.sics.se/sicstus/docs/4.6.0/html/sicstus/lib_002daggregate.html
49
+ */
50
+
51
+ %! term_variables(+Term, +Vars0, -Vars) is det.
52
+ %
53
+ % Vars is the union of Vars0 and all variables that occur in Term.
54
+ % This is not the same as SWI-Prolog's built-in term_variables/3 -
55
+ % the argument order is different and this predicate is guaranteed
56
+ % to return a list without duplicates.
57
+
58
+ term_variables(Term, Vars0, Vars) :-
59
+ system:term_variables(Term, TermVars, Vars0),
60
+ sort(TermVars, Vars).
@@ -0,0 +1,62 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ WWW: http://www.swi-prolog.org
4
+ Copyright (c) 2021, SWI-Prolog Solutions b.v.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions
9
+ are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+
14
+ 2. Redistributions in binary form must reproduce the above copyright
15
+ notice, this list of conditions and the following disclaimer in
16
+ the documentation and/or other materials provided with the
17
+ distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ POSSIBILITY OF SUCH DAMAGE.
31
+ */
32
+
33
+ :- module(between,
34
+ [ between/3, % +Lower, +Upper, -Number
35
+ gen_nat/1, % ?N
36
+ gen_int/1, % ?I
37
+ numlist/2 % ?Upper, ?List
38
+ ]).
39
+ :- reexport(library(lists), [numlist/3]).
40
+
41
+ /** <module> SICStus 4 library(between).
42
+
43
+ @tbd This library is incomplete.
44
+ As of SICStus 4.6.0, the following predicates are missing:
45
+
46
+ * repeat/1
47
+ * numlist/5
48
+
49
+ @see https://sicstus.sics.se/sicstus/docs/4.6.0/html/sicstus.html/lib_002dbetween.html
50
+ */
51
+
52
+ gen_nat(N) :- between(0, inf, N).
53
+
54
+ gen_int(I) :-
55
+ nonvar(I), !,
56
+ must_be(integer, I).
57
+ gen_int(0).
58
+ gen_int(I) :-
59
+ between(1, inf, N),
60
+ (I = N ; I is -N).
61
+
62
+ numlist(Upper, List) :- numlist(1, Upper, List).
@@ -0,0 +1,75 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ WWW: http://www.swi-prolog.org
4
+ Copyright (c) 2021, SWI-Prolog Solutions b.v.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions
9
+ are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+
14
+ 2. Redistributions in binary form must reproduce the above copyright
15
+ notice, this list of conditions and the following disclaimer in
16
+ the documentation and/or other materials provided with the
17
+ distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ POSSIBILITY OF SUCH DAMAGE.
31
+ */
32
+
33
+ :- module(sicstus4_clpfd,
34
+ [ domain/3,
35
+ (table)/3,
36
+ op(760, yfx, #<=>),
37
+ op(750, xfy, #=>),
38
+ op(750, yfx, #<=),
39
+ op(700, xfx, in_set)
40
+ ]).
41
+ :- reexport('../../clp/clpfd').
42
+ :- reexport('../../clp/clpfd',
43
+ [ (#<==>)/2 as (#<=>),
44
+ (#==>)/2 as (#=>),
45
+ (#<==)/2 as (#<=),
46
+ fd_inf/2 as fd_min,
47
+ fd_sup/2 as fd_max,
48
+ tuples_in/2 as (table)
49
+ ]).
50
+
51
+ :- multifile sicstus4:rename_module/2.
52
+
53
+ sicstus4:rename_module(clpfd, sicstus4_clpfd).
54
+
55
+ /** <module> SICStus 4 library(clpfd)
56
+
57
+ @tbd This library is incomplete and is missing various features
58
+ supported by SICStus library(clpfd).
59
+ @see https://sicstus.sics.se/sicstus/docs/4.6.0/html/sicstus.html/lib_002dclpfd.html
60
+ */
61
+
62
+ :- op(760, yfx, user:(#<=>)).
63
+ :- op(750, xfy, user:(#=>)).
64
+ :- op(750, yfx, user:(#<=)).
65
+ :- op(700, xfx, user:(in_set)).
66
+
67
+ domain(Vars, Min, Max) :- Vars ins Min..Max.
68
+
69
+ %! table(+Tuples, +Extension, +Options).
70
+ %
71
+ % @tbd No options are supported yet. Fails if Options is not
72
+ % empty.
73
+
74
+ table(Tuples, Extension, []) :-
75
+ table(Tuples, Extension).
@@ -0,0 +1,413 @@
1
+ /* Part of SWI-Prolog
2
+
3
+ WWW: http://www.swi-prolog.org
4
+ Copyright (c) 2021, SWI-Prolog Solutions b.v.
5
+ All rights reserved.
6
+
7
+ Redistribution and use in source and binary forms, with or without
8
+ modification, are permitted provided that the following conditions
9
+ are met:
10
+
11
+ 1. Redistributions of source code must retain the above copyright
12
+ notice, this list of conditions and the following disclaimer.
13
+
14
+ 2. Redistributions in binary form must reproduce the above copyright
15
+ notice, this list of conditions and the following disclaimer in
16
+ the documentation and/or other materials provided with the
17
+ distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
22
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
23
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
24
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
25
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ POSSIBILITY OF SUCH DAMAGE.
31
+ */
32
+
33
+ :- module(file_systems,
34
+ [ rename_file/2, % +OldName, +NewName
35
+ rename_directory/2, % +OldName, +NewName
36
+
37
+ delete_file/1, % +OldName
38
+ delete_directory/1, % +Directory
39
+ delete_directory/2, % +Directory, +Options
40
+
41
+ directory_exists/1, % +Directory
42
+ directory_exists/2, % +Directory, +Mode
43
+
44
+ make_directory/1, % +Directory
45
+
46
+ file_exists/1, % +File
47
+ file_exists/2, % +File, +Mode
48
+ file_must_exist/1, % +File
49
+ file_must_exist/2, % +File, +Mode
50
+ directory_must_exist/1, % +File
51
+ directory_must_exist/2, % +File, +Mode
52
+
53
+ directory_member_of_directory/2, % -BaseName, -FullName
54
+ directory_member_of_directory/3, % +Directory, -BaseName, -FullName
55
+ directory_member_of_directory/4, % +Directory, +Pattern, -BaseName, -FullName
56
+ file_member_of_directory/2, % -BaseName, -FullName
57
+ file_member_of_directory/3, % +Directory, -BaseName, -FullName
58
+ file_member_of_directory/4, % +Directory, +Pattern, -BaseName, -FullName
59
+ directory_members_of_directory/1, % -Set
60
+ directory_members_of_directory/2, % +Directory, -Set
61
+ directory_members_of_directory/3, % +Directory, +Pattern, -Set
62
+ file_members_of_directory/1, % -Set
63
+ file_members_of_directory/2, % +Directory, -Set
64
+ file_members_of_directory/3, % +Directory, +Pattern, -Set
65
+
66
+ directory_property/2, % +Directory, ?Property
67
+ directory_property/3, % +Directory, ?Property, ?Value
68
+ file_property/2, % +File, ?Property
69
+ file_property/3, % +File, ?Property, ?Value
70
+
71
+ current_directory/1, % -Directory
72
+ current_directory/2 % -Directory, +NewDirectory
73
+ ]).
74
+ :- use_module(library(filesex), [delete_directory_and_contents/1, directory_member/3, set_time_file/3]).
75
+ :- use_module(library(lists), [member/2]).
76
+ :- use_module(system, [datime/2]).
77
+
78
+ /** <module> SICStus 4 library(file_systems).
79
+
80
+ @tbd This library is incomplete.
81
+ As of SICStus 4.6.0, the following predicates are missing:
82
+
83
+ * close_all_streams/0
84
+
85
+ Some predicates don't fully support all options available on SICStus.
86
+ See the documentation for individual predicates for details.
87
+
88
+ The file access modes `execute` and `search` are interpreted
89
+ slightly differently on SICStus and SWI. On SWI, `execute` and
90
+ `search` are equivalent - both can be used with regular files
91
+ and directories and will check execute or search permission
92
+ depending on the file type, not the mode atom.
93
+
94
+ SICStus on the other hand checks the access modes only if the
95
+ file in question has the appropriate type. Checking access mode
96
+ `execute` on a directory or `search` on a regular file is
97
+ equivalent to checking `exist`.
98
+
99
+ This difference affects not just file_exists/2 and
100
+ directory_exists/2 in this library, but also the
101
+ built-in absolute_file_name/3 with the option
102
+ access(Mode).
103
+
104
+ On the other hand, file_property/2 and
105
+ directory_property/2 with properties `executable` and
106
+ `searchable` are *not* affected - here the emulation
107
+ matches the native SICStus behavior.
108
+
109
+ @see https://sicstus.sics.se/sicstus/docs/4.6.0/html/sicstus.html/lib_002dfile_005fsystems.html
110
+ */
111
+
112
+ % Note: Unlike most of SWI's built-in file system predicates,
113
+ % SICStus library(file_systems) draws a strict distinction between files and directories.
114
+ % This means that "file" predicates will operate only on regular files -
115
+ % directories must be manipulated using the corresponding "directory" predicates instead.
116
+ % Because of this,
117
+ % some of SWI's built-in file predicates
118
+ % (that can operate on both files and directories)
119
+ % need to be replaced with versions that throw an error when receiving a non-regular file.
120
+
121
+
122
+ %! rename_file(+OldName, +NewName) is det.
123
+ %
124
+ % Like SWI's built-in rename_file/2, but only works on regular
125
+ % files. To rename directories, rename_directory/2 must be used.
126
+
127
+ rename_file(OldName, NewName) :-
128
+ file_must_exist(OldName),
129
+ system:rename_file(OldName, NewName).
130
+
131
+ %! rename_directory(+OldName, +NewName) is det.
132
+ %
133
+ % Like SWI's built-in rename_file/2, but only works on
134
+ % directories. To rename regular files, rename_file/2 must be used.
135
+
136
+ rename_directory(OldName, NewName) :-
137
+ directory_must_exist(OldName),
138
+ system:rename_file(OldName, NewName).
139
+
140
+
141
+ %! delete_file(+OldName) is det.
142
+ %
143
+ % Like SWI's built-in delete_file/1, but only works on regular
144
+ % files. To delete directories, delete_directory/1 must be used.
145
+
146
+ delete_file(OldName) :-
147
+ file_must_exist(OldName),
148
+ system:delete_file(OldName).
149
+
150
+ % SWI's built-in delete_directory/1 behaves like the one from SICStus library(file_systems).
151
+
152
+ directory_not_empty_error(error(permission_error(delete, directory, _), _)).
153
+
154
+ %! delete_directory(+OldName, +Options) is semidet.
155
+ %
156
+ % Extended verison of delete_directory/1. The only available
157
+ % option is `if_nonempty(Value)`, which controls the behavior
158
+ % when OldName is not empty. Value may be `ignore` (silently
159
+ % succeed without deleting anything), `fail` (silently fail
160
+ % without deleting anything), `error` (throw an error - default
161
+ % behavior), and `delete` (recursively delete the directory and
162
+ % its contents, as if by delete_directory_and_contents/1 from
163
+ % library(filesex)).
164
+
165
+ delete_directory(OldName, []) :- !, delete_directory(OldName).
166
+ delete_directory(OldName, [if_nonempty(ignore)]) :- !,
167
+ catch(delete_directory(OldName), E,
168
+ (directory_not_empty_error(E) -> true ; throw(E))).
169
+ delete_directory(OldName, [if_nonempty(fail)]) :- !,
170
+ catch(delete_directory(OldName), E,
171
+ (directory_not_empty_error(E) -> fail ; throw(E))).
172
+ delete_directory(OldName, [if_nonempty(error)]) :- !, delete_directory(OldName).
173
+ delete_directory(OldName, [if_nonempty(delete)]) :- !, delete_directory_and_contents(OldName).
174
+
175
+
176
+ %! directory_exists(+Directory) is semidet.
177
+ %! directory_exists(+Directory, +Mode) is semidet.
178
+ %
179
+ % True if a directory exists at path Directory and can be accessed
180
+ % according to Mode (defaults to `exist`). Accepts the same access
181
+ % modes as absolute_file_name/3's `access` option.
182
+
183
+ directory_exists(Directory) :- exists_directory(Directory).
184
+ directory_exists(Directory, Mode) :-
185
+ % According to the SICStus 4.6 docs, this is "more or less equivalent".
186
+ absolute_file_name(Directory, _, [file_type(directory), access(Mode), file_errors(fail)]).
187
+
188
+ % SWI's built-in make_directory/1 behaves like the one from SICStus library(file_systems).
189
+
190
+ %! file_exists(+File) is semidet.
191
+ %! file_exists(+File, +Mode) is semidet.
192
+ %
193
+ % True if a regular file exists at path File and can be accessed
194
+ % according to Mode (defaults to `exist`). Accepts the same access
195
+ % modes as absolute_file_name/3's `access` option.
196
+
197
+ file_exists(File) :- exists_file(File).
198
+ file_exists(File, Mode) :-
199
+ % According to the SICStus 4.6 docs, this is "more or less equivalent".
200
+ absolute_file_name(File, _, [access(Mode), file_errors(fail)]).
201
+
202
+ %! file_must_exist(+File) is det.
203
+ %! file_must_exist(+File, +Mode) is det.
204
+ %
205
+ % Ensure that a regular file exists at path File and can be
206
+ % accessed according to Mode (defaults to `exist`). Otherwise an
207
+ % exception is thrown. Accepts the same access modes as
208
+ % absolute_file_name/3's `access` option.
209
+
210
+ file_must_exist(File) :- file_must_exist(File, exist).
211
+ file_must_exist(File, Mode) :-
212
+ % According to the SICStus 4.6 docs, this is "more or less equivalent".
213
+ absolute_file_name(File, _, [access(Mode), file_errors(error)]).
214
+
215
+ %! directory_must_exist(+Directory) is det.
216
+ %! directory_must_exist(+Directory, +Mode) is det.
217
+ %
218
+ % Ensure that a directory exists at path Directory and can be
219
+ % accessed according to Mode (defaults to `exist`). Otherwise an
220
+ % exception is thrown. Accepts the same access modes as
221
+ % absolute_file_name/3's `access` option.
222
+
223
+ directory_must_exist(Directory) :- directory_must_exist(Directory, exist).
224
+ directory_must_exist(Directory, Mode) :-
225
+ % According to the SICStus 4.6 docs, this is "more or less equivalent".
226
+ absolute_file_name(Directory, _, [file_type(directory), access(Mode), file_errors(error)]).
227
+
228
+
229
+ member_of_directory_internal(Directory, BaseName, FullName, Options) :-
230
+ absolute_file_name(Directory, AbsDirectory, [file_type(directory)]),
231
+ directory_member(AbsDirectory, FullName, Options),
232
+ file_base_name(FullName, BaseName).
233
+
234
+ %! directory_member_of_directory(-BaseName, -FullName) is nondet.
235
+ %! directory_member_of_directory(+Directory, -BaseName, -FullName) is nondet.
236
+ %! directory_member_of_directory(+Directory, +Pattern, -BaseName, -FullName) is nondet.
237
+ %! file_member_of_directory(-BaseName, -FullName) is nondet.
238
+ %! file_member_of_directory(+Directory, -BaseName, -FullName) is nondet.
239
+ %! file_member_of_directory(+Directory, +Pattern, -BaseName, -FullName) is nondet.
240
+ %
241
+ % True if Directory contains a directory or regular file
242
+ % (respectively) named BaseName and the file's absolute path is
243
+ % FullName. If Directory is not given, it defaults to the current
244
+ % working directory. If Pattern is given, only succeeds if
245
+ % BaseName also matches that glob pattern.
246
+ %
247
+ % These predicates enumerate all matching files on backtracking.
248
+ % This is also the intended usage pattern. For checking if a
249
+ % specific file/directory exists, or to get its absolute path,
250
+ % it's better to use file_exists/1, directory_exists/1, or
251
+ % absolute_file_name/3.
252
+
253
+ directory_member_of_directory(BaseName, FullName) :-
254
+ directory_member_of_directory((.), BaseName, FullName).
255
+ directory_member_of_directory(Directory, BaseName, FullName) :-
256
+ member_of_directory_internal(Directory, BaseName, FullName, [file_type(directory)]).
257
+ directory_member_of_directory(Directory, Pattern, BaseName, FullName) :-
258
+ member_of_directory_internal(Directory, BaseName, FullName, [file_type(directory), matches(Pattern)]).
259
+
260
+ file_member_of_directory(BaseName, FullName) :-
261
+ file_member_of_directory((.), BaseName, FullName).
262
+ file_member_of_directory(Directory, BaseName, FullName) :-
263
+ member_of_directory_internal(Directory, BaseName, FullName, []),
264
+ % directory_member/3 has no option for filtering out directories...
265
+ \+ directory_exists(FullName).
266
+ file_member_of_directory(Directory, Pattern, BaseName, FullName) :-
267
+ member_of_directory_internal(Directory, BaseName, FullName, [matches(Pattern)]),
268
+ % directory_member/3 has no option for filtering out directories...
269
+ \+ directory_exists(FullName).
270
+
271
+ %! directory_members_of_directory(-Set) is det.
272
+ %! directory_members_of_directory(+Directory, -Set) is det.
273
+ %! directory_members_of_directory(+Directory, +Pattern, -Set) is det.
274
+ %! file_members_of_directory(-Set) is det.
275
+ %! file_members_of_directory(+Directory, -Set) is det.
276
+ %! file_members_of_directory(+Directory, +Pattern, -Set) is det.
277
+ %
278
+ % Unifies Set with a set of BaseName-FullName entries for all
279
+ % directories or regular files (respectively) in Directory. If
280
+ % Directory is not given, it defaults to the current working
281
+ % directory. If Pattern is given, Set only includes entries where
282
+ % BaseName matches that glob pattern.
283
+
284
+ directory_members_of_directory(Set) :-
285
+ directory_members_of_directory((.), Set).
286
+ directory_members_of_directory(Directory, Set) :-
287
+ findall(BaseName-FullName, directory_member_of_directory(Directory, BaseName, FullName), Set).
288
+ directory_members_of_directory(Directory, Pattern, Set) :-
289
+ findall(BaseName-FullName, directory_member_of_directory(Directory, Pattern, BaseName, FullName), Set).
290
+
291
+ file_members_of_directory(Set) :-
292
+ file_members_of_directory((.), Set).
293
+ file_members_of_directory(Directory, Set) :-
294
+ findall(BaseName-FullName, file_member_of_directory(Directory, BaseName, FullName), Set).
295
+ file_members_of_directory(Directory, Pattern, Set) :-
296
+ findall(BaseName-FullName, file_member_of_directory(Directory, Pattern, BaseName, FullName), Set).
297
+
298
+
299
+ %! file_property(+Path, ?Property) is semidet.
300
+ %! file_property(+Path, ?Property, -Value) is semidet.
301
+ %! directory_property(+Path, ?Property) is semidet.
302
+ %! directory_property(+Path, ?Property, -Value) is semidet.
303
+ %
304
+ % True if a regular file or directory (respectively) exists at
305
+ % Path and it has the given property and value. Property may be
306
+ % unbound to backtrack over all available properties. If the Value
307
+ % parameter is omitted, succeeds if Property has value `true`.
308
+ %
309
+ % The following properties are currently supported:
310
+ %
311
+ % * create_timestamp
312
+ % * modify_timestamp
313
+ % * access_timestamp
314
+ % The file/directory's creation/modification/access time as a Unix
315
+ % timestamp (as returned by SWI's set_time_file/3).
316
+ % * create_localtime
317
+ % * modify_localtime
318
+ % * access_localtime
319
+ % The file/directory's creation/modification/access time as a
320
+ % datime/6 term (as returned by datime/2 from SICStus
321
+ % library(system)).
322
+ % * readable
323
+ % * writable
324
+ % * executable
325
+ % * searchable
326
+ % `true` or `false` depending on whether the file/directory is
327
+ % readable/writable/executable/searchable. `executable` is only
328
+ % supported on regular files and `searchable` only on directories.
329
+ % * size_in_bytes
330
+ % The file's size in bytes. Not supported on directories.
331
+ %
332
+ % On Unix systems, `create_timestamp`/`create_localtime` don't
333
+ % return the file's actual creation time, but rather its "ctime"
334
+ % or "metadata change time". This matches the behavior of
335
+ % SICStus 4.6.0.
336
+ %
337
+ % As of SICStus 4.6.0, the following properties are not yet
338
+ % emulated:
339
+ %
340
+ % * set_user_id
341
+ % * set_group_id
342
+ % * save_text
343
+ % * who_can_read
344
+ % * who_can_write
345
+ % * who_can_execute
346
+ % * who_can_search
347
+ % * owner_user_id
348
+ % * owner_group_id
349
+ % * owner_user_name
350
+ % * owner_group_name
351
+
352
+ time_property_name(create_timestamp).
353
+ time_property_name(modify_timestamp).
354
+ time_property_name(access_timestamp).
355
+ time_property_name(create_localtime).
356
+ time_property_name(modify_localtime).
357
+ time_property_name(access_localtime).
358
+
359
+ time_property(create_timestamp, Ctime, _, _, Timestamp) :-
360
+ Timestamp is integer(Ctime).
361
+ time_property(modify_timestamp, _, Mtime, _, Timestamp) :-
362
+ Timestamp is integer(Mtime).
363
+ time_property(access_timestamp, _, _, Atime, Timestamp) :-
364
+ Timestamp is integer(Atime).
365
+ time_property(create_localtime, Ctime, _, _, Datime) :-
366
+ datime(Ctime, Datime).
367
+ time_property(modify_localtime, _, Mtime, _, Datime) :-
368
+ datime(Mtime, Datime).
369
+ time_property(access_localtime, _, _, Atime, Datime) :-
370
+ datime(Atime, Datime).
371
+
372
+ % Properties that are available and implemented identically for files and directories.
373
+ file_or_directory_property(FileOrDirectory, Name, Value) :-
374
+ \+ \+ time_property_name(Name),
375
+ % When backtracking over time properties,
376
+ % call set_time_file once and reuse the values for all properties,
377
+ % so that the different times and timestamp/localtime are consistent with each other.
378
+ set_time_file(FileOrDirectory, [changed(Ctime), modified(Mtime), access(Atime)], []),
379
+ time_property(Name, Ctime, Mtime, Atime, Value).
380
+
381
+ directory_property(Directory, Property) :- directory_property(Directory, Property, true).
382
+
383
+ directory_property(Directory, readable, Value) :-
384
+ directory_exists(Directory, read) -> Value = true ; Value = false.
385
+ directory_property(Directory, writable, Value) :-
386
+ directory_exists(Directory, write) -> Value = true ; Value = false.
387
+ directory_property(Directory, searchable, Value) :-
388
+ directory_exists(Directory, search) -> Value = true ; Value = false.
389
+ directory_property(Directory, Property, Value) :-
390
+ file_or_directory_property(Directory, Property, Value).
391
+
392
+ file_property(File, Property) :- file_property(File, Property, true).
393
+
394
+ file_property(File, readable, Value) :-
395
+ file_exists(File, read) -> Value = true ; Value = false.
396
+ file_property(File, writable, Value) :-
397
+ file_exists(File, write) -> Value = true ; Value = false.
398
+ file_property(File, executable, Value) :-
399
+ file_exists(File, execute) -> Value = true ; Value = false.
400
+ file_property(File, size_in_bytes, Value) :- size_file(File, Value).
401
+ file_property(File, Property, Value) :-
402
+ file_or_directory_property(File, Property, Value).
403
+
404
+
405
+ %! current_directory(-Directory) is det.
406
+ %! current_directory(-Directory, +NewDirectory) is det.
407
+ %
408
+ % Unifies Directory with the current working directory path.
409
+ % In the 2-argument form, also changes the working directory to
410
+ % the path NewDirectory.
411
+
412
+ current_directory(Directory) :- working_directory(Directory, Directory).
413
+ current_directory(Directory, NewDirectory) :- working_directory(Directory, NewDirectory).